* refactor: move streaming helper to `streaming/sse.ts`
* feat: add streamSSE's export in streaming handler
* feat: move `stream` and `streamText` to streaming helper
* chore: add deprecated expression for `c.stream` and `c.streamText`
* fix: use `stream` helper in streamSSE
* refactor: move `streamText` to `text.ts`
* test: add some case to `stream` and `streamText`
* test: refactor `streamSSE` case for uniformity
* chore: denoify
* fix: update jsdoc's deprecated description, simplify `c.stream` and `c.streamText`
* fix: match the header notation with that of `streamSSE
* chore: denoify
* refactor: remove unnecesary export
* feat(dev): Introduce "dev" helper
* feat(dev): Expose "dev" helper
* refactor: Use "named function" in some middleware.
* feat: `app.showRoutes()` is now deprecated. Use `showRoutes()` in `helper` instead.
* refactor: export RouterRoute interface for utility
* refactor: remove captureRouteStackTrace, add inspectRoutes
`captureRouteStackTrace` will be implemented after some more thought.
Instead, I added `inspectRoutes` to get routes as data.
* test: add tests for helper/dev/index.ts
* fix: run `format:fix`
* refactor: use named functions for middleware
* chore: denoify
* docs: tweaks deprecation warning message
* refactor(dev): Simplification of showList options
* chore: denoify
* 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): Fixed a problem when multiple children are added directly under Suspense.
* refactor: Use `raw()` helper as constructor of `HtmlEscapedString`.
* chore: denoify.
* feat(jsx): Support async component.
* chore: denoify
* feat: Support nested async components.
* chore: denoify
* Remove unintended file from commit.
* test(jsx): Add test for html tagged template strings.
* feat: Introduce streaming API with `Suspense` and `use`.
* chore: denoify
* "use" receives only Promise.
* feat: Support multiple calls and nested calls to "use".
* refactor: tweaks replacement script.
* test: Add test for replacement result of streaming
* chore: denoify
* test: Add test "Complex fallback content"
* refactor: Add "typescript-eslint/no-explicit-any".
* Use jsdom instead of happy-dom due to ci failure.
* test: update test data for suspense.
* refactor: Remove excessive exports
* refactor: Changed initialization of `useContexts[]` to clarify intent.
* perf: improve `renderToReadableStream()` performance.
* chore: denoify
* pref: Shortened the output JS a bit.
* pref: Delete unneeded condition
* docs(jsx/streaming): Add `@experimental` flag to streaming API.
* fix(jsx/streadming): fix loop when using fullfilled Promise with null or undefined.
* fix(jsx/streaming): Catch unhandledRejection to avoid streaming not being closed.
* chore(jsx/streaming): Add entries for jsx/streaming to package.json.
* chore: denoify
* feat(jsx/streaming): Support the Async Component inside Suspense.
* chore: denoify
* feat(jsx/streaming): remove implementation of `use()`.
* fix: error to retrieve cookie
TypeError: Cannot read properties of undefined (reading 'split')
* add a test and denoify
---------
Co-authored-by: Yusuke Wada <yusuke@cloudflare.com>