* feat(utils/stream): enable to abort streaming manually
* feat(utils/stream): prevent multiple aborts, and enable to get the abort status
* fix(streaming): call `stream.abort()` explicitly when request is aborted
* test: add tests for streaming
* docs(stream): add comments
* test: add --allow-net to deno test command in ci.yml
* test(streaming): update test code
* test(stream): retry flaky test up to 3 times at "bun"
* test(streaming): refactor test to use afterEach
* fix(streaming): in bun, `c` is destroyed when the request is returned, so hold it until the end of streaming
* refactor(streaming): tweaks code layout
* feat(jsx/dom): Introduce document metadata integration for compatibility with React 19
* test(jsx/dom): add test for "ref as a prop"
* refactor: tweaks element selector
* feat(jsx/dom): implement " Cleanup functions for refs" for compatibility with React 19
* feat(jsx/dom): implement `useDeferredValue()`
* refactor(jsx): insert metadata into head synchronously
* feat(jsx/dom): introduce form and related hooks
* feat(jsx): sort by precedence in documentMetadataTag
* feat(jsx): enable to specify action attribute as function
* fixup! feat(jsx): enable to specify action attribute as function
* refactor: refactor file layout
* feat(jsx): de-dupe tags
* feat(jsx): accept crossOrigin as crossorigin
* feat(jsx/dom): inprement blocking and precedence feature for jsx/dom
* feat(jsx): export new hooks
* fix(jsx/dom): fix some bugs in jsx/dom/hooks
* fix(jsx/dom): fix useOptimistic hook
* fix(jsx/dom): fix signature of useActionState
* fix(jsx): fix type declaration for HtmlEscapedCallback
* refactor(jsx): improve importing of intrinsic element components
* feat(jsx): support permalink for useActionState
* fix(jsx): fix composeRef cleanup in intrinsic element components
* fix(jsx): remove blocking attribute from DOM node
* fix(jsx/dom): preserve HTMLElement for meta data if it will be unmounted
* fix(jsx/dom): fix de-dupe logic in `documentMetadataTag`
* fix(jsx/dom): fix precedence logic in `documentMetadataTag`
* feat(jsx): add React 19 compatibility attributes
* fix(jsx): Handle NodeListOf<HTMLElement> as an iterable
* test: tweaks test data
* fix(jsx/dom): fix precedence logic in `documentMetadataTag`
* fix(jsx/dom): fix meta data tag insertion behavior
* fix(jsx/dom): set next node recursively for all previous nodes
* refactor(jsx/dom): use better variable names and types in form component
* fix(jsx/dom): fix meta data tag insertion behavior
* fix(jsx): improve document meta tag behavior in jsx
* test(jsx/dom): add tests for intrinsic-element/components
* fix(jsx/dom): fix `use()` hook wrong behavior
* test(jsx/dom): add tests for hooks
* test(jsx): add tests new hooks for form
* fix(jsx): update current state synchronously if no actions are provided
* test(jsx): add tests for new hooks for form handling
* docs(jsx): add documentation for hooks
* test(jsx): Update test
* refactor(jsx/hooks): remove unused constant
* feat(jsx): improve compatibility with React 19 (precedence / special behavior)
* feat(jsx/dom): improve compatibility with title element mount/unmount behavior
* feat(jsx): support async function for useTransition
* fix(jsx/dom): method is always 'post' when data is present
* feat(jsx): support formAction for input and button elements
* feat(jsx/dom): support suspense with child counter
* feat(jsx/dom): enable to handle async error in useTransition
* fix: handle multiple cookies in streaming responses
This fix does address that cookies have to be handled
specially in lambda responses.
Fixes #2921
* test: check cookie handling
* refactor(aws-lambda): merge custom-context into types so they are excluded from coverage
* refactor: custom-context.ts is not needed since it is hidden by reexport
* feat(jsr): reduce slow types (#2369)
* feat(jsr): reduce slow types
* fix: use allow function
* chore: format code
* chore: denoify
* add `deno.json`
* add `jsr-dry-run` command for CI
* don't put `JSX` on `global`
* fix test settings for deno
* don't use `dynamicClass`
* don't declare `ExecutionContext` in `global`
* goodbye denoify
* exports `./middleware`
* exports `./helper`
* exports each helper and middleware
* remove the `awslambda` implementation which is not enough
* feat(jsr): remove helper.ts and middleware.ts (#2667)
* feat(jsr): remove helper.ts and middleware.ts
* fix: fix test
* dont' use `SuperClass`
Co-authored-by: Taku Amano <taku@taaas.jp>
* feat(jsr): delete `mod.ts` (#2669)
* rename `deno.json` to `jsr.json`
* lint
* remove slow type in lambda adapter
* fixed runtime test for deno
* export all utils
* add a GitHub action to publish the package to JSR
* fixed declaring `ContextVariableMap`
* fixed the type error
* include `jsr.json` in `jsr.json`
* update `jsr.json`
---------
Co-authored-by: Shotaro Nakamura <79000684+nakasyou@users.noreply.github.com>
Co-authored-by: Taku Amano <taku@taaas.jp>
* Headers can be undefined on ALB
* Delegate headers from multiValueHeaders
* Add test
* Assert header values
* format
* Make multiValueHeaders optional so it can be omitted
* Avoid Object.entries when undefined
* Write tests in runtime_tests
* feat(jsx/dom): rewrite renderer to use virtual tree
* test(deno): add runtime_tests/deno/deno.json in order to allow `document`, `Element`, etc.
* refactor(jsx/dom): Removed redundant `map()` calls
* refactor(jsx/dom): tweaks getNextChildren for reduce code size
* refactor(jsx/dom): optimize findInsertBefore
* refactor(jsx/dom): optimize `build()`
* refactor(jsx/dom): reuse oldChild even in text nodes.
* feat(jsx/dom): handle promise rejection in use()
* feat(jsx): The result of using Suspense and use() is now the same as React's renderToReadableStream().
* chore: denoify
* test(deno): "dom.iterable" is required for 'Headers.entries()'
* feat: pass context to onNotFound callback in serveStatic
* chore: denoify
* test: update notFoundHandler's callback expect
* feat: add Env generics for serveStatic to support `c.env` type in callback handler
* feat: add Env generics for serveStatic to support c.env type in cloudflare workers module's callback handler
* feat(jsx/streaming): Support Suspense in non-streaming mode.
* feat(jsx): Introduce ErrorBoundary component.
* chore: denoify
* feat: Support ErrorBoundary[fallbackRender].
* chore: denoify
* Rename utils.ts to components.ts
* refactor: export the ErrorBoundary component from the top level.
* fix: tweaks `resolveStream` to work with nested components
* refactor: Import `childrenToString` from `components.ts`
* fix: return immediately if the element is not found
* test: add test for jsx/components
* fix: run `npm run format:fix`
* chore: denoify
* fix(jsx/streaming): Fix for renderToReadableStream(promise: Promise<HtmlEscapedString>).
* feat(jsx): Define jsxTemplate/jsxAttr/jsxEscape for "@jsx precompile" of Deno 1.38
* chore: denoify
* fix(jsx/streaming): some times jsxDEV is called with null props.
* test(deno-jsx): Add runtime tests for JSX by Deno.
* test: Refactor import map.
* test: Added @jsxImportSource to avoid type warnings