* fix(jsx/dom): find "insertBefore" node from next node list if not found
* fix(jsx/dom): remove redundant applyProps() call
* chore: denoify
* test(jsx/dom): fix type error in test
* feat(ssg): add ssgParams middleware
* chore: add test code
* chore: `yarn denoify`
* fix(codestyle): import order
* chore: Ran pretter to pass CI test
* chore: reran denoify to pass CI test
* feat: Remove hybrid feature from `ssgParams`
* feat: Add context argment to generateParams
* chore: Format code
* chore: denoify
* fix: module not found error when running on Deno
* refactor: remove argment `options`
* chore: denoify
* refactor: add test for `ssgParams`
* fix: syntax error
* chore: denoify
* chore: format code
* chore: denoify
* refactor(jsx): export components and hook function from top level 'hono/jsx'
* docs(jsx/hooks): add comment to useState
* refactor(jsx/hooks): remove redundant if statement
* refactor(jsx/dom): remove redundant temporary variable
* refactor(jsx/dom): use already calculated offset value instead of container.childNodes.length
* refactor(jsx/dom): Omit the else clause for shorten
* refactor(jsx/dom): remove unnecessary null check
* docs(jsx/dom): add note about text node update
* chore: denoify
* 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(jsx/dom): provide jsx-runtime and jsx-dev-runtime via jsx/dom
* refactor(jsx/dom): Enable to import dom specific Suspense and ErrorBoundary from hono/jsx/dom
* test(jsx/dom): remove unused test. await component is not supported.
* feat(jsx/dom): support old style jsx
JSXNode from old style jsx sometimes has no props.
* chore: denoify
* test(jsx/dom): Run tests for hono/jsx/jsx-runtime and hono/jsx/dom/jsx-runtime
* test(jsx/dom): tests for Suspense and ErrorBoundary both for common and dom
* feat(jsx/dom): support old style jsx
JSXNode from old style jsx sometimes has no props.
* chore: denoify
* chore(vitest): fix typo
* 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: SSG works without `node:path`
* chore: denoify
* chore: pretter
* chore: move `joinPath` and `dirname` functions
* chore: format code
* chore: denoify
* feat: add more test code
* fix: forgot remove `console.log`
* fix(ssg): Invalid joined path
If `/test` and `/test2` joined, joined path should be `/test/test2`
* chore: denoify