hono 4.4.5 → 4.5.0-rc.1

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.
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var client_exports = {};
20
20
  __export(client_exports, {
21
21
  createRoot: () => createRoot,
22
+ default: () => client_default,
22
23
  hydrateRoot: () => hydrateRoot
23
24
  });
24
25
  module.exports = __toCommonJS(client_exports);
@@ -61,6 +62,10 @@ const hydrateRoot = (element, reactNode, options = {}) => {
61
62
  root.render(reactNode);
62
63
  return root;
63
64
  };
65
+ var client_default = {
66
+ createRoot,
67
+ hydrateRoot
68
+ };
64
69
  // Annotate the CommonJS export names for ESM import in node:
65
70
  0 && (module.exports = {
66
71
  createRoot,
@@ -21,6 +21,7 @@ __export(dom_exports, {
21
21
  Children: () => import_children.Children,
22
22
  ErrorBoundary: () => import_components.ErrorBoundary,
23
23
  Fragment: () => import_jsx_runtime.Fragment,
24
+ StrictMode: () => import_jsx_runtime.Fragment,
24
25
  Suspense: () => import_components.Suspense,
25
26
  cloneElement: () => cloneElement,
26
27
  createContext: () => import_context2.createContext,
@@ -120,6 +121,7 @@ var dom_default = {
120
121
  cloneElement,
121
122
  Children: import_children.Children,
122
123
  Fragment: import_jsx_runtime.Fragment,
124
+ StrictMode: import_jsx_runtime.Fragment,
123
125
  flushSync: import_render.flushSync,
124
126
  createPortal: import_render.createPortal
125
127
  };
@@ -128,6 +130,7 @@ var dom_default = {
128
130
  Children,
129
131
  ErrorBoundary,
130
132
  Fragment,
133
+ StrictMode,
131
134
  Suspense,
132
135
  cloneElement,
133
136
  createContext,
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var server_exports = {};
26
+ __export(server_exports, {
27
+ default: () => server_default,
28
+ renderToReadableStream: () => renderToReadableStream,
29
+ renderToString: () => renderToString,
30
+ version: () => import__.default
31
+ });
32
+ module.exports = __toCommonJS(server_exports);
33
+ var import_streaming = require("../streaming");
34
+ var import__ = __toESM(require("./"), 1);
35
+ const renderToString = (element, options = {}) => {
36
+ if (Object.keys(options).length > 0) {
37
+ console.warn("options are not supported yet");
38
+ }
39
+ const res = element?.toString() ?? "";
40
+ if (typeof res !== "string") {
41
+ throw new Error("Async component is not supported in renderToString");
42
+ }
43
+ return res;
44
+ };
45
+ const renderToReadableStream = async (element, options = {}) => {
46
+ if (Object.keys(options).some((key) => key !== "onError")) {
47
+ console.warn("options are not supported yet, except onError");
48
+ }
49
+ if (!element || typeof element !== "object") {
50
+ element = element?.toString() ?? "";
51
+ }
52
+ return (0, import_streaming.renderToReadableStream)(element, options.onError);
53
+ };
54
+ var server_default = {
55
+ renderToString,
56
+ renderToReadableStream,
57
+ version: import__.default
58
+ };
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ renderToReadableStream,
62
+ renderToString,
63
+ version
64
+ });
@@ -21,6 +21,7 @@ __export(jsx_exports, {
21
21
  Children: () => import_children.Children,
22
22
  ErrorBoundary: () => import_components.ErrorBoundary,
23
23
  Fragment: () => import_base.Fragment,
24
+ StrictMode: () => import_base.Fragment,
24
25
  Suspense: () => import_streaming.Suspense,
25
26
  cloneElement: () => import_base.cloneElement,
26
27
  createContext: () => import_context.createContext,
@@ -63,6 +64,7 @@ var jsx_default = {
63
64
  version: import_base.reactAPICompatVersion,
64
65
  memo: import_base.memo,
65
66
  Fragment: import_base.Fragment,
67
+ StrictMode: import_base.Fragment,
66
68
  isValidElement: import_base.isValidElement,
67
69
  createElement: import_base.jsx,
68
70
  cloneElement: import_base.cloneElement,
@@ -97,6 +99,7 @@ var jsx_default = {
97
99
  Children,
98
100
  ErrorBoundary,
99
101
  Fragment,
102
+ StrictMode,
100
103
  Suspense,
101
104
  cloneElement,
102
105
  createContext,
@@ -38,7 +38,12 @@ var hydrateRoot = (element, reactNode, options = {}) => {
38
38
  root.render(reactNode);
39
39
  return root;
40
40
  };
41
+ var client_default = {
42
+ createRoot,
43
+ hydrateRoot
44
+ };
41
45
  export {
42
46
  createRoot,
47
+ client_default as default,
43
48
  hydrateRoot
44
49
  };
@@ -84,6 +84,7 @@ var dom_default = {
84
84
  cloneElement,
85
85
  Children,
86
86
  Fragment,
87
+ StrictMode: Fragment,
87
88
  flushSync,
88
89
  createPortal
89
90
  };
@@ -91,6 +92,7 @@ export {
91
92
  Children,
92
93
  ErrorBoundary,
93
94
  Fragment,
95
+ Fragment as StrictMode,
94
96
  Suspense,
95
97
  cloneElement,
96
98
  createContext,
@@ -0,0 +1,33 @@
1
+ // src/jsx/dom/server.ts
2
+ import { renderToReadableStream as renderToReadableStreamHono } from "../streaming.js";
3
+ import version from ".//index.js";
4
+ var renderToString = (element, options = {}) => {
5
+ if (Object.keys(options).length > 0) {
6
+ console.warn("options are not supported yet");
7
+ }
8
+ const res = element?.toString() ?? "";
9
+ if (typeof res !== "string") {
10
+ throw new Error("Async component is not supported in renderToString");
11
+ }
12
+ return res;
13
+ };
14
+ var renderToReadableStream = async (element, options = {}) => {
15
+ if (Object.keys(options).some((key) => key !== "onError")) {
16
+ console.warn("options are not supported yet, except onError");
17
+ }
18
+ if (!element || typeof element !== "object") {
19
+ element = element?.toString() ?? "";
20
+ }
21
+ return renderToReadableStreamHono(element, options.onError);
22
+ };
23
+ var server_default = {
24
+ renderToString,
25
+ renderToReadableStream,
26
+ version
27
+ };
28
+ export {
29
+ server_default as default,
30
+ renderToReadableStream,
31
+ renderToString,
32
+ version
33
+ };
package/dist/jsx/index.js CHANGED
@@ -30,6 +30,7 @@ var jsx_default = {
30
30
  version: reactAPICompatVersion,
31
31
  memo,
32
32
  Fragment,
33
+ StrictMode: Fragment,
33
34
  isValidElement,
34
35
  createElement: jsx,
35
36
  cloneElement,
@@ -63,6 +64,7 @@ export {
63
64
  Children,
64
65
  ErrorBoundary,
65
66
  Fragment,
67
+ Fragment as StrictMode,
66
68
  Suspense,
67
69
  cloneElement,
68
70
  createContext,
@@ -24,3 +24,8 @@ export declare const createRoot: (element: HTMLElement | DocumentFragment, optio
24
24
  * @returns Root object has `render` and `unmount` methods
25
25
  */
26
26
  export declare const hydrateRoot: (element: HTMLElement | DocumentFragment, reactNode: Child, options?: RootOptions) => Root;
27
+ declare const _default: {
28
+ createRoot: (element: HTMLElement | DocumentFragment, options?: RootOptions) => Root;
29
+ hydrateRoot: (element: HTMLElement | DocumentFragment, reactNode: Child, options?: RootOptions) => Root;
30
+ };
31
+ export default _default;
@@ -14,7 +14,7 @@ import { createPortal, flushSync } from './render';
14
14
  export { render } from './render';
15
15
  declare const createElement: (tag: string | ((props: Props) => JSXNode), props: Props | null, ...children: Child[]) => JSXNode;
16
16
  declare const cloneElement: <T extends JSXNode | JSX.Element>(element: T, props: Props, ...children: Child[]) => T;
17
- export { reactAPICompatVersion as version, createElement as jsx, useState, useEffect, useRef, useCallback, use, startTransition, useTransition, useDeferredValue, startViewTransition, useViewTransition, useMemo, useLayoutEffect, useInsertionEffect, useReducer, useId, useDebugValue, createRef, forwardRef, useImperativeHandle, useSyncExternalStore, Suspense, ErrorBoundary, createContext, useContext, memo, isValidElement, createElement, cloneElement, Children, Fragment, DOMAttributes, flushSync, createPortal, };
17
+ export { reactAPICompatVersion as version, createElement as jsx, useState, useEffect, useRef, useCallback, use, startTransition, useTransition, useDeferredValue, startViewTransition, useViewTransition, useMemo, useLayoutEffect, useInsertionEffect, useReducer, useId, useDebugValue, createRef, forwardRef, useImperativeHandle, useSyncExternalStore, Suspense, ErrorBoundary, createContext, useContext, memo, isValidElement, createElement, cloneElement, Children, Fragment, Fragment as StrictMode, DOMAttributes, flushSync, createPortal, };
18
18
  declare const _default: {
19
19
  version: string;
20
20
  useState: {
@@ -23,7 +23,7 @@ declare const _default: {
23
23
  };
24
24
  useEffect: (effect: () => void | (() => void), deps?: readonly unknown[] | undefined) => void;
25
25
  useRef: <T_2>(initialValue: T_2 | null) => import("../hooks").RefObject<T_2>;
26
- useCallback: <T_3 extends (...args: unknown[]) => unknown>(callback: T_3, deps: readonly unknown[]) => T_3;
26
+ useCallback: <T_3 extends Function>(callback: T_3, deps: readonly unknown[]) => T_3;
27
27
  use: <T_4>(promise: Promise<T_4>) => T_4;
28
28
  startTransition: (callback: () => void) => void;
29
29
  useTransition: () => [boolean, (callback: () => void) => void];
@@ -64,6 +64,7 @@ declare const _default: {
64
64
  toArray: (children: Child) => Child[];
65
65
  };
66
66
  Fragment: (props: Record<string, unknown>) => JSXNode;
67
+ StrictMode: (props: Record<string, unknown>) => JSXNode;
67
68
  flushSync: (callback: () => void) => void;
68
69
  createPortal: (children: Child, container: HTMLElement, key?: string | undefined) => Child;
69
70
  };
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @module
3
+ * This module provides APIs for `hono/jsx/server`, which is compatible with `react-dom/server`.
4
+ */
5
+ import type { Child } from '../base';
6
+ import version from './';
7
+ export interface RenderToStringOptions {
8
+ identifierPrefix?: string;
9
+ }
10
+ /**
11
+ * Render JSX element to string.
12
+ * @param element JSX element to render.
13
+ * @param options Options for rendering.
14
+ * @returns Rendered string.
15
+ */
16
+ declare const renderToString: (element: Child, options?: RenderToStringOptions) => string;
17
+ export interface RenderToReadableStreamOptions {
18
+ identifierPrefix?: string;
19
+ namespaceURI?: string;
20
+ nonce?: string;
21
+ bootstrapScriptContent?: string;
22
+ bootstrapScripts?: string[];
23
+ bootstrapModules?: string[];
24
+ progressiveChunkSize?: number;
25
+ signal?: AbortSignal;
26
+ onError?: (error: unknown) => string | void;
27
+ }
28
+ /**
29
+ * Render JSX element to readable stream.
30
+ * @param element JSX element to render.
31
+ * @param options Options for rendering.
32
+ * @returns Rendered readable stream.
33
+ */
34
+ declare const renderToReadableStream: (element: Child, options?: RenderToReadableStreamOptions) => Promise<ReadableStream<Uint8Array>>;
35
+ export { renderToString, renderToReadableStream, version };
36
+ declare const _default: {
37
+ renderToString: (element: Child, options?: RenderToStringOptions) => string;
38
+ renderToReadableStream: (element: Child, options?: RenderToReadableStreamOptions) => Promise<ReadableStream<Uint8Array>>;
39
+ version: {
40
+ version: string;
41
+ useState: {
42
+ <T>(initialState: T | (() => T)): [T, (newState: T | ((currentState: T) => T)) => void];
43
+ <T_1 = undefined>(): [T_1 | undefined, (newState: T_1 | ((currentState: T_1 | undefined) => T_1 | undefined) | undefined) => void];
44
+ };
45
+ useEffect: (effect: () => void | (() => void), deps?: readonly unknown[] | undefined) => void;
46
+ useRef: <T_2>(initialValue: T_2 | null) => import("./").RefObject<T_2>;
47
+ useCallback: <T_3 extends Function>(callback: T_3, deps: readonly unknown[]) => T_3;
48
+ use: <T_4>(promise: Promise<T_4>) => T_4;
49
+ startTransition: (callback: () => void) => void;
50
+ useTransition: () => [boolean, (callback: () => void) => void];
51
+ useDeferredValue: <T_5>(value: T_5) => T_5;
52
+ startViewTransition: (callback: () => void) => void;
53
+ useViewTransition: () => [boolean, (callback: () => void) => void];
54
+ useMemo: <T_6>(factory: () => T_6, deps: readonly unknown[]) => T_6;
55
+ useLayoutEffect: (effect: () => void | (() => void), deps?: readonly unknown[] | undefined) => void;
56
+ useInsertionEffect: (effect: () => void | (() => void), deps?: readonly unknown[] | undefined) => void;
57
+ useReducer: <T_7, A>(reducer: (state: T_7, action: A) => T_7, initialArg: T_7, init?: ((initialState: T_7) => T_7) | undefined) => [T_7, (action: A) => void];
58
+ useId: () => string;
59
+ useDebugValue: (_value: unknown, _formatter?: ((value: unknown) => string) | undefined) => void;
60
+ createRef: <T_8>() => import("./").RefObject<T_8>;
61
+ forwardRef: <T_9, P = {}>(Component: (props: P, ref?: import("./").RefObject<T_9> | undefined) => import("../base").JSX.Element) => (props: P & {
62
+ ref?: import("./").RefObject<T_9> | undefined;
63
+ }) => import("../base").JSX.Element;
64
+ useImperativeHandle: <T_10>(ref: import("./").RefObject<T_10>, createHandle: () => T_10, deps: readonly unknown[]) => void;
65
+ useSyncExternalStore: <T_11>(subscribe: (callback: (value: T_11) => void) => () => void, getSnapshot: () => T_11, getServerSnapshot?: (() => T_11) | undefined) => T_11;
66
+ Suspense: import("./").FC<import("./").PropsWithChildren<{
67
+ fallback: any;
68
+ }>>;
69
+ ErrorBoundary: import("./").FC<import("./").PropsWithChildren<{
70
+ fallback?: Child;
71
+ fallbackRender?: import("../components").FallbackRender | undefined;
72
+ onError?: import("../components").ErrorHandler | undefined;
73
+ }>>;
74
+ createContext: <T_12>(defaultValue: T_12) => import("./").Context<T_12>;
75
+ useContext: <T_13>(context: import("./").Context<T_13>) => T_13;
76
+ memo: <T_14>(component: import("./").FC<T_14>, propsAreEqual?: (prevProps: Readonly<T_14>, nextProps: Readonly<T_14>) => boolean) => import("./").FC<T_14>;
77
+ isValidElement: (element: unknown) => element is import("./").JSXNode;
78
+ createElement: (tag: string | ((props: import("../base").Props) => import("./").JSXNode), props: import("../base").Props | null, ...children: Child[]) => import("./").JSXNode;
79
+ cloneElement: <T_15 extends import("./").JSXNode | import("../base").JSX.Element>(element: T_15, props: import("../base").Props, ...children: Child[]) => T_15;
80
+ Children: {
81
+ map: (children: Child[], fn: (child: Child, index: number) => Child) => Child[];
82
+ forEach: (children: Child[], fn: (child: Child, index: number) => void) => void;
83
+ count: (children: Child[]) => number;
84
+ only: (_children: Child[]) => Child;
85
+ toArray: (children: Child) => Child[];
86
+ };
87
+ Fragment: (props: Record<string, unknown>) => import("./").JSXNode;
88
+ StrictMode: (props: Record<string, unknown>) => import("./").JSXNode;
89
+ flushSync: (callback: () => void) => void;
90
+ createPortal: (children: Child, container: HTMLElement, key?: string | undefined) => Child;
91
+ };
92
+ };
93
+ export default _default;
@@ -26,7 +26,7 @@ export declare const useReducer: <T, A>(reducer: (state: T, action: A) => T, ini
26
26
  export declare const useEffect: (effect: () => void | (() => void), deps?: readonly unknown[]) => void;
27
27
  export declare const useLayoutEffect: (effect: () => void | (() => void), deps?: readonly unknown[]) => void;
28
28
  export declare const useInsertionEffect: (effect: () => void | (() => void), deps?: readonly unknown[]) => void;
29
- export declare const useCallback: <T extends (...args: unknown[]) => unknown>(callback: T, deps: readonly unknown[]) => T;
29
+ export declare const useCallback: <T extends Function>(callback: T, deps: readonly unknown[]) => T;
30
30
  export type RefObject<T> = {
31
31
  current: T | null;
32
32
  };
@@ -9,7 +9,7 @@ import { ErrorBoundary } from './components';
9
9
  import { createContext, useContext } from './context';
10
10
  import { createRef, forwardRef, startTransition, startViewTransition, use, useCallback, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore, useTransition, useViewTransition } from './hooks';
11
11
  import { Suspense } from './streaming';
12
- export { reactAPICompatVersion as version, jsx, memo, Fragment, isValidElement, jsx as createElement, cloneElement, ErrorBoundary, createContext, useContext, useState, useEffect, useRef, useCallback, useReducer, useId, useDebugValue, use, startTransition, useTransition, useDeferredValue, startViewTransition, useViewTransition, useMemo, useLayoutEffect, useInsertionEffect, createRef, forwardRef, useImperativeHandle, useSyncExternalStore, Suspense, Children, DOMAttributes, };
12
+ export { reactAPICompatVersion as version, jsx, memo, Fragment, Fragment as StrictMode, isValidElement, jsx as createElement, cloneElement, ErrorBoundary, createContext, useContext, useState, useEffect, useRef, useCallback, useReducer, useId, useDebugValue, use, startTransition, useTransition, useDeferredValue, startViewTransition, useViewTransition, useMemo, useLayoutEffect, useInsertionEffect, createRef, forwardRef, useImperativeHandle, useSyncExternalStore, Suspense, Children, DOMAttributes, };
13
13
  declare const _default: {
14
14
  version: string;
15
15
  memo: <T>(component: import("./base").FC<T>, propsAreEqual?: (prevProps: Readonly<T>, nextProps: Readonly<T>) => boolean) => import("./base").FC<T>;
@@ -17,6 +17,10 @@ declare const _default: {
17
17
  key?: string | undefined;
18
18
  children?: import("../utils/html").HtmlEscapedString | import("./base").Child;
19
19
  }) => import("../utils/html").HtmlEscapedString;
20
+ StrictMode: ({ children, }: {
21
+ key?: string | undefined;
22
+ children?: import("../utils/html").HtmlEscapedString | import("./base").Child;
23
+ }) => import("../utils/html").HtmlEscapedString;
20
24
  isValidElement: (element: unknown) => element is import("./base").JSXNode;
21
25
  createElement: (tag: string | Function, props: import("./base").Props | null, ...children: (string | number | import("../utils/html").HtmlEscapedString)[]) => import("./base").JSXNode;
22
26
  cloneElement: <T_1 extends import("./base").JSXNode | import("./base").JSX.Element>(element: T_1, props: Partial<import("./base").Props>, ...children: import("./base").Child[]) => T_1;
@@ -33,7 +37,7 @@ declare const _default: {
33
37
  };
34
38
  useEffect: (effect: () => void | (() => void), deps?: readonly unknown[] | undefined) => void;
35
39
  useRef: <T_6>(initialValue: T_6 | null) => import("./hooks").RefObject<T_6>;
36
- useCallback: <T_7 extends (...args: unknown[]) => unknown>(callback: T_7, deps: readonly unknown[]) => T_7;
40
+ useCallback: <T_7 extends Function>(callback: T_7, deps: readonly unknown[]) => T_7;
37
41
  useReducer: <T_8, A>(reducer: (state: T_8, action: A) => T_8, initialArg: T_8, init?: ((initialState: T_8) => T_8) | undefined) => [T_8, (action: A) => void];
38
42
  useId: () => string;
39
43
  useDebugValue: (_value: unknown, _formatter?: ((value: unknown) => string) | undefined) => void;
@@ -17,4 +17,4 @@ export declare const Suspense: FC<PropsWithChildren<{
17
17
  * `renderToReadableStream()` is an experimental feature.
18
18
  * The API might be changed.
19
19
  */
20
- export declare const renderToReadableStream: (str: HtmlEscapedString | Promise<HtmlEscapedString>, onError?: (e: unknown) => void) => ReadableStream<Uint8Array>;
20
+ export declare const renderToReadableStream: (str: HtmlEscapedString | Promise<HtmlEscapedString>, onError?: (e: unknown) => string | void) => ReadableStream<Uint8Array>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "4.4.5",
3
+ "version": "4.5.0-rc.1",
4
4
  "description": "Ultrafast web framework for the Edges",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",
@@ -178,6 +178,11 @@
178
178
  "import": "./dist/jsx/dom/css.js",
179
179
  "require": "./dist/cjs/jsx/dom/css.js"
180
180
  },
181
+ "./jsx/dom/server": {
182
+ "types": "./dist/types/jsx/dom/server.d.ts",
183
+ "import": "./dist/jsx/dom/server.js",
184
+ "require": "./dist/cjs/jsx/dom/server.js"
185
+ },
181
186
  "./jwt": {
182
187
  "types": "./dist/types/middleware/jwt/index.d.ts",
183
188
  "import": "./dist/middleware/jwt/index.js",
@@ -434,6 +439,9 @@
434
439
  "jsx/dom/css": [
435
440
  "./dist/types/jsx/dom/css.d.ts"
436
441
  ],
442
+ "jsx/dom/server": [
443
+ "./dist/types/jsx/dom/server.d.ts"
444
+ ],
437
445
  "jwt": [
438
446
  "./dist/types/middleware/jwt"
439
447
  ],