hono 4.3.11 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +2 -3
  2. package/dist/adapter/aws-lambda/handler.js +12 -9
  3. package/dist/adapter/bun/conninfo.js +21 -0
  4. package/dist/adapter/bun/index.js +2 -0
  5. package/dist/adapter/bun/websocket.js +1 -3
  6. package/dist/adapter/cloudflare-workers/conninfo.js +10 -0
  7. package/dist/adapter/cloudflare-workers/websocket.js +2 -6
  8. package/dist/adapter/deno/conninfo.js +15 -0
  9. package/dist/adapter/deno/index.js +2 -0
  10. package/dist/adapter/lambda-edge/handler.js +3 -3
  11. package/dist/cjs/adapter/aws-lambda/handler.js +12 -9
  12. package/dist/cjs/adapter/bun/conninfo.js +44 -0
  13. package/dist/cjs/adapter/bun/index.js +3 -0
  14. package/dist/cjs/adapter/cloudflare-workers/conninfo.js +33 -0
  15. package/dist/cjs/adapter/cloudflare-workers/websocket.js +2 -6
  16. package/dist/cjs/adapter/deno/conninfo.js +38 -0
  17. package/dist/cjs/adapter/deno/index.js +3 -0
  18. package/dist/cjs/adapter/lambda-edge/handler.js +3 -3
  19. package/dist/cjs/helper/conninfo/index.js +16 -0
  20. package/dist/cjs/helper/ssg/ssg.js +64 -3
  21. package/dist/cjs/helper/streaming/text.js +1 -1
  22. package/dist/cjs/hono-base.js +10 -6
  23. package/dist/cjs/jsx/base.js +5 -2
  24. package/dist/cjs/jsx/dom/client.js +68 -0
  25. package/dist/cjs/jsx/dom/index.js +8 -4
  26. package/dist/cjs/jsx/dom/jsx-dev-runtime.js +6 -20
  27. package/dist/cjs/jsx/dom/render.js +41 -25
  28. package/dist/cjs/jsx/dom/utils.js +15 -0
  29. package/dist/cjs/jsx/hooks/index.js +4 -1
  30. package/dist/cjs/jsx/index.js +8 -4
  31. package/dist/cjs/middleware/jwt/index.js +5 -82
  32. package/dist/cjs/middleware/jwt/jwt.js +111 -0
  33. package/dist/cjs/middleware/secure-headers/index.js +3 -123
  34. package/dist/cjs/middleware/secure-headers/secure-headers.js +150 -0
  35. package/dist/cjs/middleware/timeout/index.js +48 -0
  36. package/dist/cjs/middleware/timing/index.js +5 -89
  37. package/dist/cjs/middleware/timing/timing.js +118 -0
  38. package/dist/cjs/utils/body.js +34 -9
  39. package/dist/cjs/utils/jwt/jws.js +4 -5
  40. package/dist/cjs/utils/jwt/jwt.js +6 -7
  41. package/dist/cjs/utils/url.js +26 -2
  42. package/dist/helper/css/index.js +4 -4
  43. package/dist/helper/html/index.js +1 -1
  44. package/dist/helper/ssg/ssg.js +63 -5
  45. package/dist/helper/streaming/text.js +1 -1
  46. package/dist/hono-base.js +11 -7
  47. package/dist/jsx/base.js +3 -1
  48. package/dist/jsx/dom/client.js +44 -0
  49. package/dist/jsx/dom/css.js +4 -4
  50. package/dist/jsx/dom/index.js +25 -21
  51. package/dist/jsx/dom/jsx-dev-runtime.js +6 -20
  52. package/dist/jsx/dom/render.js +40 -26
  53. package/dist/jsx/dom/utils.js +14 -0
  54. package/dist/jsx/hooks/index.js +4 -2
  55. package/dist/jsx/index.js +22 -18
  56. package/dist/jsx/jsx-runtime.js +1 -1
  57. package/dist/middleware/jsx-renderer/index.js +1 -1
  58. package/dist/middleware/jwt/index.js +1 -78
  59. package/dist/middleware/jwt/jwt.js +85 -0
  60. package/dist/middleware/secure-headers/index.js +1 -121
  61. package/dist/middleware/secure-headers/secure-headers.js +126 -0
  62. package/dist/middleware/timeout/index.js +25 -0
  63. package/dist/middleware/timing/index.js +1 -85
  64. package/dist/middleware/timing/timing.js +92 -0
  65. package/dist/request.js +1 -1
  66. package/dist/router/reg-exp-router/router.js +2 -2
  67. package/dist/router/smart-router/router.js +1 -1
  68. package/dist/router/trie-router/node.js +1 -1
  69. package/dist/types/adapter/aws-lambda/handler.d.ts +3 -3
  70. package/dist/types/adapter/aws-lambda/index.d.ts +4 -0
  71. package/dist/types/adapter/bun/conninfo.d.ts +7 -0
  72. package/dist/types/adapter/bun/index.d.ts +5 -0
  73. package/dist/types/adapter/bun/websocket.d.ts +2 -3
  74. package/dist/types/adapter/cloudflare-pages/index.d.ts +4 -0
  75. package/dist/types/adapter/cloudflare-workers/conninfo.d.ts +2 -0
  76. package/dist/types/adapter/cloudflare-workers/index.d.ts +4 -0
  77. package/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +2 -2
  78. package/dist/types/adapter/cloudflare-workers/serve-static.d.ts +1 -2
  79. package/dist/types/adapter/cloudflare-workers/utils.d.ts +1 -2
  80. package/dist/types/adapter/deno/conninfo.d.ts +7 -0
  81. package/dist/types/adapter/deno/index.d.ts +5 -0
  82. package/dist/types/adapter/lambda-edge/handler.d.ts +1 -2
  83. package/dist/types/adapter/lambda-edge/index.d.ts +4 -0
  84. package/dist/types/adapter/netlify/handler.d.ts +1 -7
  85. package/dist/types/adapter/netlify/index.d.ts +4 -0
  86. package/dist/types/adapter/netlify/mod.d.ts +0 -1
  87. package/dist/types/adapter/vercel/index.d.ts +4 -0
  88. package/dist/types/client/index.d.ts +4 -0
  89. package/dist/types/compose.d.ts +1 -1
  90. package/dist/types/helper/accepts/index.d.ts +4 -0
  91. package/dist/types/helper/adapter/index.d.ts +4 -0
  92. package/dist/types/helper/conninfo/index.d.ts +40 -0
  93. package/dist/types/helper/cookie/index.d.ts +5 -1
  94. package/dist/types/helper/css/index.d.ts +4 -0
  95. package/dist/types/helper/dev/index.d.ts +4 -0
  96. package/dist/types/helper/factory/index.d.ts +4 -0
  97. package/dist/types/helper/html/index.d.ts +4 -0
  98. package/dist/types/helper/ssg/index.d.ts +4 -0
  99. package/dist/types/helper/ssg/ssg.d.ts +6 -3
  100. package/dist/types/helper/streaming/index.d.ts +4 -0
  101. package/dist/types/helper/testing/index.d.ts +4 -0
  102. package/dist/types/helper/websocket/index.d.ts +4 -0
  103. package/dist/types/hono-base.d.ts +15 -15
  104. package/dist/types/http-exception.d.ts +4 -0
  105. package/dist/types/index.d.ts +15 -0
  106. package/dist/types/jsx/base.d.ts +10 -11
  107. package/dist/types/jsx/components.d.ts +1 -1
  108. package/dist/types/jsx/context.d.ts +1 -1
  109. package/dist/types/jsx/dom/client.d.ts +26 -0
  110. package/dist/types/jsx/dom/components.d.ts +2 -2
  111. package/dist/types/jsx/dom/css.d.ts +31 -20
  112. package/dist/types/jsx/dom/index.d.ts +13 -7
  113. package/dist/types/jsx/dom/jsx-dev-runtime.d.ts +5 -1
  114. package/dist/types/jsx/dom/jsx-runtime.d.ts +4 -0
  115. package/dist/types/jsx/dom/render.d.ts +4 -3
  116. package/dist/types/jsx/dom/utils.d.ts +6 -0
  117. package/dist/types/jsx/hooks/index.d.ts +4 -0
  118. package/dist/types/jsx/index.d.ts +13 -7
  119. package/dist/types/jsx/intrinsic-elements.d.ts +629 -630
  120. package/dist/types/jsx/jsx-dev-runtime.d.ts +5 -0
  121. package/dist/types/jsx/jsx-runtime.d.ts +5 -0
  122. package/dist/types/jsx/streaming.d.ts +5 -1
  123. package/dist/types/jsx/types.d.ts +1 -0
  124. package/dist/types/middleware/basic-auth/index.d.ts +35 -0
  125. package/dist/types/middleware/bearer-auth/index.d.ts +33 -0
  126. package/dist/types/middleware/body-limit/index.d.ts +28 -11
  127. package/dist/types/middleware/cache/index.d.ts +29 -0
  128. package/dist/types/middleware/compress/index.d.ts +20 -0
  129. package/dist/types/middleware/cors/index.d.ts +43 -0
  130. package/dist/types/middleware/csrf/index.d.ts +41 -0
  131. package/dist/types/middleware/etag/index.d.ts +24 -0
  132. package/dist/types/middleware/jsx-renderer/index.d.ts +63 -2
  133. package/dist/types/middleware/jwt/index.d.ts +5 -17
  134. package/dist/types/middleware/jwt/jwt.d.ts +48 -0
  135. package/dist/types/middleware/logger/index.d.ts +20 -0
  136. package/dist/types/middleware/method-override/index.d.ts +22 -10
  137. package/dist/types/middleware/powered-by/index.d.ts +4 -0
  138. package/dist/types/middleware/pretty-json/index.d.ts +23 -0
  139. package/dist/types/middleware/secure-headers/index.d.ts +6 -64
  140. package/dist/types/middleware/secure-headers/secure-headers.d.ts +97 -0
  141. package/dist/types/middleware/serve-static/index.d.ts +4 -0
  142. package/dist/types/middleware/timeout/index.d.ts +31 -0
  143. package/dist/types/middleware/timing/index.d.ts +5 -29
  144. package/dist/types/middleware/timing/timing.d.ts +111 -0
  145. package/dist/types/middleware/trailing-slash/index.d.ts +29 -5
  146. package/dist/types/preset/quick.d.ts +4 -0
  147. package/dist/types/preset/tiny.d.ts +4 -0
  148. package/dist/types/request.d.ts +5 -4
  149. package/dist/types/router/linear-router/index.d.ts +4 -0
  150. package/dist/types/router/linear-router/router.d.ts +1 -1
  151. package/dist/types/router/pattern-router/index.d.ts +4 -0
  152. package/dist/types/router/reg-exp-router/index.d.ts +4 -0
  153. package/dist/types/router/reg-exp-router/router.d.ts +1 -1
  154. package/dist/types/router/reg-exp-router/trie.d.ts +1 -1
  155. package/dist/types/router/smart-router/index.d.ts +4 -0
  156. package/dist/types/router/smart-router/router.d.ts +1 -1
  157. package/dist/types/router/trie-router/index.d.ts +4 -0
  158. package/dist/types/router.d.ts +4 -0
  159. package/dist/types/types.d.ts +4 -0
  160. package/dist/types/utils/body.d.ts +61 -3
  161. package/dist/types/utils/buffer.d.ts +4 -0
  162. package/dist/types/utils/color.d.ts +4 -0
  163. package/dist/types/utils/concurrent.d.ts +4 -0
  164. package/dist/types/utils/cookie.d.ts +4 -0
  165. package/dist/types/utils/crypto.d.ts +4 -0
  166. package/dist/types/utils/encode.d.ts +4 -0
  167. package/dist/types/utils/filepath.d.ts +4 -0
  168. package/dist/types/utils/handler.d.ts +4 -0
  169. package/dist/types/utils/html.d.ts +4 -0
  170. package/dist/types/utils/http-status.d.ts +4 -0
  171. package/dist/types/utils/jwt/index.d.ts +4 -0
  172. package/dist/types/utils/jwt/jwt.d.ts +3 -3
  173. package/dist/types/utils/mime.d.ts +4 -0
  174. package/dist/types/utils/stream.d.ts +4 -0
  175. package/dist/types/utils/types.d.ts +4 -0
  176. package/dist/types/utils/url.d.ts +4 -0
  177. package/dist/types/validator/index.d.ts +4 -0
  178. package/dist/types/validator/validator.d.ts +1 -1
  179. package/dist/utils/body.js +34 -9
  180. package/dist/utils/jwt/index.js +1 -1
  181. package/dist/utils/jwt/jws.js +1 -2
  182. package/dist/utils/jwt/jwt.js +5 -5
  183. package/dist/utils/url.js +26 -2
  184. package/package.json +27 -6
  185. package/dist/cjs/adapter/aws-lambda/awslambda.d.js +0 -1
  186. package/dist/cjs/helper.js +0 -44
  187. package/dist/helper.js +0 -18
  188. /package/dist/{adapter/aws-lambda/awslambda.d.js → helper/conninfo/index.js} +0 -0
@@ -25,7 +25,8 @@ __export(base_exports, {
25
25
  isValidElement: () => isValidElement,
26
26
  jsx: () => jsx,
27
27
  jsxFn: () => jsxFn,
28
- memo: () => memo
28
+ memo: () => memo,
29
+ reactAPICompatVersion: () => reactAPICompatVersion
29
30
  });
30
31
  module.exports = __toCommonJS(base_exports);
31
32
  var import_html = require("../helper/html");
@@ -290,6 +291,7 @@ const cloneElement = (element, props, ...children) => {
290
291
  ...children
291
292
  );
292
293
  };
294
+ const reactAPICompatVersion = "18.0.0-hono-jsx";
293
295
  // Annotate the CommonJS export names for ESM import in node:
294
296
  0 && (module.exports = {
295
297
  Fragment,
@@ -299,5 +301,6 @@ const cloneElement = (element, props, ...children) => {
299
301
  isValidElement,
300
302
  jsx,
301
303
  jsxFn,
302
- memo
304
+ memo,
305
+ reactAPICompatVersion
303
306
  });
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var client_exports = {};
20
+ __export(client_exports, {
21
+ createRoot: () => createRoot,
22
+ hydrateRoot: () => hydrateRoot
23
+ });
24
+ module.exports = __toCommonJS(client_exports);
25
+ var import_hooks = require("../hooks");
26
+ var import_render = require("./render");
27
+ const createRoot = (element, options = {}) => {
28
+ let setJsxNode = void 0;
29
+ if (Object.keys(options).length > 0) {
30
+ console.warn("createRoot options are not supported yet");
31
+ }
32
+ return {
33
+ render(jsxNode) {
34
+ if (setJsxNode === null) {
35
+ throw new Error("Cannot update an unmounted root");
36
+ }
37
+ if (setJsxNode) {
38
+ setJsxNode(jsxNode);
39
+ } else {
40
+ (0, import_render.renderNode)(
41
+ (0, import_render.buildNode)({
42
+ tag: () => {
43
+ const [_jsxNode, _setJsxNode] = (0, import_hooks.useState)(jsxNode);
44
+ setJsxNode = _setJsxNode;
45
+ return _jsxNode;
46
+ },
47
+ props: {}
48
+ }),
49
+ element
50
+ );
51
+ }
52
+ },
53
+ unmount() {
54
+ setJsxNode?.(null);
55
+ setJsxNode = null;
56
+ }
57
+ };
58
+ };
59
+ const hydrateRoot = (element, reactNode, options = {}) => {
60
+ const root = createRoot(element, options);
61
+ root.render(reactNode);
62
+ return root;
63
+ };
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {
66
+ createRoot,
67
+ hydrateRoot
68
+ });
@@ -15,7 +15,6 @@ var __copyProps = (to, from, except, desc) => {
15
15
  }
16
16
  return to;
17
17
  };
18
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
19
  var dom_exports = {};
21
20
  __export(dom_exports, {
@@ -45,6 +44,7 @@ __export(dom_exports, {
45
44
  useEffect: () => import_hooks.useEffect,
46
45
  useId: () => import_hooks.useId,
47
46
  useImperativeHandle: () => import_hooks.useImperativeHandle,
47
+ useInsertionEffect: () => import_hooks.useInsertionEffect,
48
48
  useLayoutEffect: () => import_hooks.useLayoutEffect,
49
49
  useMemo: () => import_hooks.useMemo,
50
50
  useReducer: () => import_hooks.useReducer,
@@ -52,7 +52,8 @@ __export(dom_exports, {
52
52
  useState: () => import_hooks.useState,
53
53
  useSyncExternalStore: () => import_hooks.useSyncExternalStore,
54
54
  useTransition: () => import_hooks.useTransition,
55
- useViewTransition: () => import_hooks.useViewTransition
55
+ useViewTransition: () => import_hooks.useViewTransition,
56
+ version: () => import_base.reactAPICompatVersion
56
57
  });
57
58
  module.exports = __toCommonJS(dom_exports);
58
59
  var import_base = require("../base");
@@ -64,7 +65,6 @@ var import_context2 = require("./context");
64
65
  var import_jsx_runtime = require("./jsx-runtime");
65
66
  var import_render = require("./render");
66
67
  var import_render2 = require("./render");
67
- __reExport(dom_exports, require("../types"), module.exports);
68
68
  const createElement = (tag, props, ...children) => {
69
69
  const jsxProps = props ? { ...props } : {};
70
70
  if (children.length) {
@@ -89,6 +89,7 @@ const cloneElement = (element, props, ...children) => {
89
89
  );
90
90
  };
91
91
  var dom_default = {
92
+ version: import_base.reactAPICompatVersion,
92
93
  useState: import_hooks.useState,
93
94
  useEffect: import_hooks.useEffect,
94
95
  useRef: import_hooks.useRef,
@@ -101,6 +102,7 @@ var dom_default = {
101
102
  useViewTransition: import_hooks.useViewTransition,
102
103
  useMemo: import_hooks.useMemo,
103
104
  useLayoutEffect: import_hooks.useLayoutEffect,
105
+ useInsertionEffect: import_hooks.useInsertionEffect,
104
106
  useReducer: import_hooks.useReducer,
105
107
  useId: import_hooks.useId,
106
108
  useDebugValue: import_hooks.useDebugValue,
@@ -148,6 +150,7 @@ var dom_default = {
148
150
  useEffect,
149
151
  useId,
150
152
  useImperativeHandle,
153
+ useInsertionEffect,
151
154
  useLayoutEffect,
152
155
  useMemo,
153
156
  useReducer,
@@ -155,5 +158,6 @@ var dom_default = {
155
158
  useState,
156
159
  useSyncExternalStore,
157
160
  useTransition,
158
- useViewTransition
161
+ useViewTransition,
162
+ version
159
163
  });
@@ -23,30 +23,16 @@ __export(jsx_dev_runtime_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(jsx_dev_runtime_exports);
25
25
  var import_utils = require("../utils");
26
- const JSXNodeCompatPrototype = {
27
- type: {
28
- get() {
29
- return this.tag;
30
- }
31
- },
32
- ref: {
33
- get() {
34
- return this.props?.ref;
35
- }
36
- }
37
- };
26
+ var import_utils2 = require("./utils");
38
27
  const jsxDEV = (tag, props, key) => {
39
28
  if (typeof tag === "string") {
40
29
  (0, import_utils.normalizeIntrinsicElementProps)(props);
41
30
  }
42
- return Object.defineProperties(
43
- {
44
- tag,
45
- props,
46
- key
47
- },
48
- JSXNodeCompatPrototype
49
- );
31
+ return (0, import_utils2.newJSXNode)({
32
+ tag,
33
+ props,
34
+ key
35
+ });
50
36
  };
51
37
  const Fragment = (props) => jsxDEV("", props, void 0);
52
38
  // Annotate the CommonJS export names for ESM import in node:
@@ -20,9 +20,11 @@ var render_exports = {};
20
20
  __export(render_exports, {
21
21
  build: () => build,
22
22
  buildDataStack: () => buildDataStack,
23
+ buildNode: () => buildNode,
23
24
  createPortal: () => createPortal,
24
25
  flushSync: () => flushSync,
25
26
  render: () => render,
27
+ renderNode: () => renderNode,
26
28
  update: () => update
27
29
  });
28
30
  module.exports = __toCommonJS(render_exports);
@@ -32,6 +34,7 @@ var import_context = require("../context");
32
34
  var import_hooks = require("../hooks");
33
35
  var import_utils = require("../utils");
34
36
  var import_context2 = require("./context");
37
+ var import_utils2 = require("./utils");
35
38
  const HONO_PORTAL_ELEMENT = "_hp";
36
39
  const eventAliasMap = {
37
40
  Change: "Input",
@@ -53,6 +56,7 @@ const getEventSpec = (key) => {
53
56
  }
54
57
  return void 0;
55
58
  };
59
+ const toAttributeName = (element, key) => element instanceof SVGElement && /[A-Z]/.test(key) && (key in element.style || key.match(/^(?:o|pai|str|u|ve)/)) ? key.replace(/([A-Z])/g, "-$1").toLowerCase() : key;
56
60
  const applyProps = (container, attributes, oldAttributes) => {
57
61
  attributes ||= {};
58
62
  for (const [key, value] of Object.entries(attributes)) {
@@ -107,14 +111,15 @@ const applyProps = (container, attributes, oldAttributes) => {
107
111
  ;
108
112
  container[key] = value;
109
113
  }
114
+ const k = toAttributeName(container, key);
110
115
  if (value === null || value === void 0 || value === false) {
111
- container.removeAttribute(key);
116
+ container.removeAttribute(k);
112
117
  } else if (value === true) {
113
- container.setAttribute(key, "");
118
+ container.setAttribute(k, "");
114
119
  } else if (typeof value === "string" || typeof value === "number") {
115
- container.setAttribute(key, value);
120
+ container.setAttribute(k, value);
116
121
  } else {
117
- container.setAttribute(key, value.toString());
122
+ container.setAttribute(k, value.toString());
118
123
  }
119
124
  }
120
125
  }
@@ -132,7 +137,7 @@ const applyProps = (container, attributes, oldAttributes) => {
132
137
  value.current = null;
133
138
  }
134
139
  } else {
135
- container.removeAttribute(key);
140
+ container.removeAttribute(toAttributeName(container, key));
136
141
  }
137
142
  }
138
143
  }
@@ -180,6 +185,8 @@ const getNextChildren = (node, container, nextChildren, childrenToRemove, callba
180
185
  const findInsertBefore = (node) => {
181
186
  if (!node) {
182
187
  return null;
188
+ } else if (node.tag === HONO_PORTAL_ELEMENT) {
189
+ return findInsertBefore(node.nN);
183
190
  } else if (node.e) {
184
191
  return node.e;
185
192
  }
@@ -241,7 +248,7 @@ const applyNodeObject = (node, container) => {
241
248
  const callbacks = [];
242
249
  getNextChildren(node, container, next, remove, callbacks);
243
250
  const childNodes = container.childNodes;
244
- let offset = findChildNodeIndex(childNodes, findInsertBefore(node.nN)) ?? findChildNodeIndex(childNodes, next.find((n) => n.e)?.e) ?? childNodes.length;
251
+ let offset = findChildNodeIndex(childNodes, findInsertBefore(node.nN)) ?? findChildNodeIndex(childNodes, next.find((n) => n.tag !== HONO_PORTAL_ELEMENT && n.e)?.e) ?? childNodes.length;
245
252
  for (let i = 0, len = next.length; i < len; i++, offset++) {
246
253
  const child = next[i];
247
254
  let el;
@@ -256,11 +263,14 @@ const applyNodeObject = (node, container) => {
256
263
  applyProps(el, child.props, child.pP);
257
264
  applyNode(child, el);
258
265
  }
259
- if (childNodes[offset] !== el && childNodes[offset - 1] !== child.e && child.tag !== HONO_PORTAL_ELEMENT) {
266
+ if (child.tag === HONO_PORTAL_ELEMENT) {
267
+ offset--;
268
+ } else if (childNodes[offset] !== el && childNodes[offset - 1] !== child.e) {
260
269
  container.insertBefore(el, childNodes[offset] || null);
261
270
  }
262
271
  }
263
272
  remove.forEach(removeNode);
273
+ callbacks.forEach(([, , , , cb]) => cb?.());
264
274
  callbacks.forEach(([, cb]) => cb?.());
265
275
  requestAnimationFrame(() => {
266
276
  callbacks.forEach(([, , , cb]) => cb?.());
@@ -276,7 +286,7 @@ const build = (context, node, topLevelErrorHandlerNode, children) => {
276
286
  }
277
287
  const oldVChildren = node.vC ? [...node.vC] : [];
278
288
  const vChildren = [];
279
- const vChildrenToRemove = [];
289
+ node.vR = [];
280
290
  let prevNode;
281
291
  try {
282
292
  children.flat().forEach((c) => {
@@ -290,24 +300,23 @@ const build = (context, node, topLevelErrorHandlerNode, children) => {
290
300
  child[import_constants.DOM_STASH][2] = import_context.globalContexts.map((c2) => [c2, c2.values.at(-1)]);
291
301
  }
292
302
  let oldChild;
293
- const i = oldVChildren.findIndex((c2) => c2.key === child.key);
303
+ const i = oldVChildren.findIndex(
304
+ isNodeString(child) ? (c2) => isNodeString(c2) : child.key !== void 0 ? (c2) => c2.key === child.key : (c2) => c2.tag === child.tag
305
+ );
294
306
  if (i !== -1) {
295
307
  oldChild = oldVChildren[i];
296
308
  oldVChildren.splice(i, 1);
297
309
  }
298
310
  if (oldChild) {
299
311
  if (isNodeString(child)) {
300
- if (!isNodeString(oldChild)) {
301
- vChildrenToRemove.push(oldChild);
302
- } else {
303
- if (oldChild.t !== child.t) {
304
- oldChild.t = child.t;
305
- oldChild.d = true;
306
- }
307
- child = oldChild;
312
+ if (oldChild.t !== child.t) {
313
+ ;
314
+ oldChild.t = child.t;
315
+ oldChild.d = true;
308
316
  }
317
+ child = oldChild;
309
318
  } else if (oldChild.tag !== child.tag) {
310
- vChildrenToRemove.push(oldChild);
319
+ node.vR.push(oldChild);
311
320
  } else {
312
321
  oldChild.pP = oldChild.props;
313
322
  oldChild.props = child.props;
@@ -329,8 +338,7 @@ const build = (context, node, topLevelErrorHandlerNode, children) => {
329
338
  }
330
339
  });
331
340
  node.vC = vChildren;
332
- vChildrenToRemove.push(...oldVChildren);
333
- node.vR = vChildrenToRemove;
341
+ node.vR.push(...oldVChildren);
334
342
  } catch (e) {
335
343
  if (errorHandler) {
336
344
  const fallbackUpdateFn = () => update([0, false, context[2]], topLevelErrorHandlerNode);
@@ -365,10 +373,14 @@ const buildNode = (node) => {
365
373
  } else if (typeof node === "string" || typeof node === "number") {
366
374
  return { t: node.toString(), d: true };
367
375
  } else {
376
+ if ("vR" in node) {
377
+ node = (0, import_utils2.newJSXNode)({
378
+ tag: node.tag,
379
+ props: node.props,
380
+ key: node.key
381
+ });
382
+ }
368
383
  if (typeof node.tag === "function") {
369
- if (node[import_constants.DOM_STASH]) {
370
- node = { ...node };
371
- }
372
384
  ;
373
385
  node[import_constants.DOM_STASH] = [0, []];
374
386
  } else {
@@ -444,8 +456,7 @@ const update = async (context, node) => {
444
456
  }
445
457
  return promise;
446
458
  };
447
- const render = (jsxNode, container) => {
448
- const node = buildNode({ tag: "", props: { children: jsxNode } });
459
+ const renderNode = (node, container) => {
449
460
  const context = [];
450
461
  context[4] = true;
451
462
  build(context, node, void 0);
@@ -455,6 +466,9 @@ const render = (jsxNode, container) => {
455
466
  replaceContainer(node, fragment, container);
456
467
  container.replaceChildren(fragment);
457
468
  };
469
+ const render = (jsxNode, container) => {
470
+ renderNode(buildNode({ tag: "", props: { children: jsxNode } }), container);
471
+ };
458
472
  const flushSync = (callback) => {
459
473
  const set = /* @__PURE__ */ new Set();
460
474
  currentUpdateSets.push(set);
@@ -480,8 +494,10 @@ const createPortal = (children, container, key) => ({
480
494
  0 && (module.exports = {
481
495
  build,
482
496
  buildDataStack,
497
+ buildNode,
483
498
  createPortal,
484
499
  flushSync,
485
500
  render,
501
+ renderNode,
486
502
  update
487
503
  });
@@ -18,6 +18,7 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var utils_exports = {};
20
20
  __export(utils_exports, {
21
+ newJSXNode: () => newJSXNode,
21
22
  setInternalTagFlag: () => setInternalTagFlag
22
23
  });
23
24
  module.exports = __toCommonJS(utils_exports);
@@ -27,7 +28,21 @@ const setInternalTagFlag = (fn) => {
27
28
  fn[import_constants.DOM_INTERNAL_TAG] = true;
28
29
  return fn;
29
30
  };
31
+ const JSXNodeCompatPrototype = {
32
+ type: {
33
+ get() {
34
+ return this.tag;
35
+ }
36
+ },
37
+ ref: {
38
+ get() {
39
+ return this.props?.ref;
40
+ }
41
+ }
42
+ };
43
+ const newJSXNode = (obj) => Object.defineProperties(obj, JSXNodeCompatPrototype);
30
44
  // Annotate the CommonJS export names for ESM import in node:
31
45
  0 && (module.exports = {
46
+ newJSXNode,
32
47
  setInternalTagFlag
33
48
  });
@@ -30,6 +30,7 @@ __export(hooks_exports, {
30
30
  useEffect: () => useEffect,
31
31
  useId: () => useId,
32
32
  useImperativeHandle: () => useImperativeHandle,
33
+ useInsertionEffect: () => useInsertionEffect,
33
34
  useLayoutEffect: () => useLayoutEffect,
34
35
  useMemo: () => useMemo,
35
36
  useReducer: () => useReducer,
@@ -216,13 +217,14 @@ const useEffectCommon = (index, effect, deps) => {
216
217
  data[index] = void 0;
217
218
  data[2] = effect();
218
219
  };
219
- const data = [deps, void 0, void 0, void 0];
220
+ const data = [deps, void 0, void 0, void 0, void 0];
220
221
  data[index] = runner;
221
222
  effectDepsArray[hookIndex] = data;
222
223
  }
223
224
  };
224
225
  const useEffect = (effect, deps) => useEffectCommon(3, effect, deps);
225
226
  const useLayoutEffect = (effect, deps) => useEffectCommon(1, effect, deps);
227
+ const useInsertionEffect = (effect, deps) => useEffectCommon(4, effect, deps);
226
228
  const useCallback = (callback, deps) => {
227
229
  const buildData = import_render.buildDataStack.at(-1);
228
230
  if (!buildData) {
@@ -356,6 +358,7 @@ const useSyncExternalStore = (subscribe, getSnapshot, getServerSnapshot) => {
356
358
  useEffect,
357
359
  useId,
358
360
  useImperativeHandle,
361
+ useInsertionEffect,
359
362
  useLayoutEffect,
360
363
  useMemo,
361
364
  useReducer,
@@ -15,7 +15,6 @@ var __copyProps = (to, from, except, desc) => {
15
15
  }
16
16
  return to;
17
17
  };
18
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
19
  var jsx_exports = {};
21
20
  __export(jsx_exports, {
@@ -42,6 +41,7 @@ __export(jsx_exports, {
42
41
  useEffect: () => import_hooks.useEffect,
43
42
  useId: () => import_hooks.useId,
44
43
  useImperativeHandle: () => import_hooks.useImperativeHandle,
44
+ useInsertionEffect: () => import_hooks.useInsertionEffect,
45
45
  useLayoutEffect: () => import_hooks.useLayoutEffect,
46
46
  useMemo: () => import_hooks.useMemo,
47
47
  useReducer: () => import_hooks.useReducer,
@@ -49,7 +49,8 @@ __export(jsx_exports, {
49
49
  useState: () => import_hooks.useState,
50
50
  useSyncExternalStore: () => import_hooks.useSyncExternalStore,
51
51
  useTransition: () => import_hooks.useTransition,
52
- useViewTransition: () => import_hooks.useViewTransition
52
+ useViewTransition: () => import_hooks.useViewTransition,
53
+ version: () => import_base.reactAPICompatVersion
53
54
  });
54
55
  module.exports = __toCommonJS(jsx_exports);
55
56
  var import_base = require("./base");
@@ -58,8 +59,8 @@ var import_components = require("./components");
58
59
  var import_context = require("./context");
59
60
  var import_hooks = require("./hooks");
60
61
  var import_streaming = require("./streaming");
61
- __reExport(jsx_exports, require("./types"), module.exports);
62
62
  var jsx_default = {
63
+ version: import_base.reactAPICompatVersion,
63
64
  memo: import_base.memo,
64
65
  Fragment: import_base.Fragment,
65
66
  isValidElement: import_base.isValidElement,
@@ -83,6 +84,7 @@ var jsx_default = {
83
84
  useViewTransition: import_hooks.useViewTransition,
84
85
  useMemo: import_hooks.useMemo,
85
86
  useLayoutEffect: import_hooks.useLayoutEffect,
87
+ useInsertionEffect: import_hooks.useInsertionEffect,
86
88
  createRef: import_hooks.createRef,
87
89
  forwardRef: import_hooks.forwardRef,
88
90
  useImperativeHandle: import_hooks.useImperativeHandle,
@@ -114,6 +116,7 @@ var jsx_default = {
114
116
  useEffect,
115
117
  useId,
116
118
  useImperativeHandle,
119
+ useInsertionEffect,
117
120
  useLayoutEffect,
118
121
  useMemo,
119
122
  useReducer,
@@ -121,5 +124,6 @@ var jsx_default = {
121
124
  useState,
122
125
  useSyncExternalStore,
123
126
  useTransition,
124
- useViewTransition
127
+ useViewTransition,
128
+ version
125
129
  });
@@ -18,90 +18,13 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var jwt_exports = {};
20
20
  __export(jwt_exports, {
21
- decode: () => decode,
22
- jwt: () => jwt,
23
- sign: () => sign,
24
- verify: () => verify
21
+ decode: () => import_jwt.decode,
22
+ jwt: () => import_jwt.jwt,
23
+ sign: () => import_jwt.sign,
24
+ verify: () => import_jwt.verify
25
25
  });
26
26
  module.exports = __toCommonJS(jwt_exports);
27
- var import_cookie = require("../../helper/cookie");
28
- var import_http_exception = require("../../http-exception");
29
- var import_jwt = require("../../utils/jwt");
30
- var import_context = require("../../context");
31
- const jwt = (options) => {
32
- if (!options || !options.secret) {
33
- throw new Error('JWT auth middleware requires options for "secret');
34
- }
35
- if (!crypto.subtle || !crypto.subtle.importKey) {
36
- throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");
37
- }
38
- return async function jwt2(ctx, next) {
39
- const credentials = ctx.req.raw.headers.get("Authorization");
40
- let token;
41
- if (credentials) {
42
- const parts = credentials.split(/\s+/);
43
- if (parts.length !== 2) {
44
- const errDescription = "invalid credentials structure";
45
- throw new import_http_exception.HTTPException(401, {
46
- message: errDescription,
47
- res: unauthorizedResponse({
48
- ctx,
49
- error: "invalid_request",
50
- errDescription
51
- })
52
- });
53
- } else {
54
- token = parts[1];
55
- }
56
- } else if (options.cookie) {
57
- token = (0, import_cookie.getCookie)(ctx)[options.cookie];
58
- }
59
- if (!token) {
60
- const errDescription = "no authorization included in request";
61
- throw new import_http_exception.HTTPException(401, {
62
- message: errDescription,
63
- res: unauthorizedResponse({
64
- ctx,
65
- error: "invalid_request",
66
- errDescription
67
- })
68
- });
69
- }
70
- let payload;
71
- let cause;
72
- try {
73
- payload = await import_jwt.Jwt.verify(token, options.secret, options.alg);
74
- } catch (e) {
75
- cause = e;
76
- }
77
- if (!payload) {
78
- throw new import_http_exception.HTTPException(401, {
79
- message: "Unauthorized",
80
- res: unauthorizedResponse({
81
- ctx,
82
- error: "invalid_token",
83
- statusText: "Unauthorized",
84
- errDescription: "token verification failure"
85
- }),
86
- cause
87
- });
88
- }
89
- ctx.set("jwtPayload", payload);
90
- await next();
91
- };
92
- };
93
- function unauthorizedResponse(opts) {
94
- return new Response("Unauthorized", {
95
- status: 401,
96
- statusText: opts.statusText,
97
- headers: {
98
- "WWW-Authenticate": `Bearer realm="${opts.ctx.req.url}",error="${opts.error}",error_description="${opts.errDescription}"`
99
- }
100
- });
101
- }
102
- const verify = import_jwt.Jwt.verify;
103
- const decode = import_jwt.Jwt.decode;
104
- const sign = import_jwt.Jwt.sign;
27
+ var import_jwt = require("./jwt");
105
28
  // Annotate the CommonJS export names for ESM import in node:
106
29
  0 && (module.exports = {
107
30
  decode,