hono 4.13.13 → 5.0.0-rc.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.
- package/README.md +2 -2
- package/dist/{types/compose.d.ts → compose.d.ts} +1 -0
- package/dist/compose.js +10 -5
- package/dist/{types/context.d.ts → context.d.ts} +15 -15
- package/dist/context.js +79 -47
- package/dist/helper/factory/define-handler.d.ts +150 -0
- package/dist/helper/factory/define-handler.js +165 -0
- package/dist/{types/helper → helper}/factory/index.d.ts +30 -1
- package/dist/helper/factory/index.js +31 -3
- package/dist/{types/helper → helper}/ssg/middleware.d.ts +0 -6
- package/dist/helper/ssg/middleware.js +1 -16
- package/dist/{types/helper → helper}/ssg/ssg.d.ts +0 -12
- package/dist/helper/ssg/ssg.js +0 -3
- package/dist/{types/hono-base.d.ts → hono-base.d.ts} +3 -60
- package/dist/hono-base.js +6 -97
- package/dist/{types/hono.d.ts → hono.d.ts} +1 -1
- package/dist/{types/middleware → middleware}/basic-auth/index.d.ts +4 -3
- package/dist/middleware/basic-auth/index.js +1 -1
- package/dist/{types/middleware → middleware}/bearer-auth/index.d.ts +4 -27
- package/dist/middleware/bearer-auth/index.js +4 -4
- package/dist/middleware/language/language.js +1 -1
- package/dist/middleware/logger/index.js +6 -8
- package/dist/{types/middleware → middleware}/serve-static/index.d.ts +0 -4
- package/dist/{types/preset → preset}/quick.d.ts +1 -1
- package/dist/{types/preset → preset}/tiny.d.ts +1 -1
- package/dist/{types/request.d.ts → request.d.ts} +3 -48
- package/dist/request.js +0 -49
- package/dist/router/linear-router/router.js +4 -6
- package/dist/router/pattern-router/router.js +2 -2
- package/dist/router/reg-exp-router/node.js +1 -1
- package/dist/router/trie-router/node.js +3 -3
- package/dist/utils/buffer.d.ts +11 -0
- package/dist/utils/buffer.js +1 -8
- package/dist/utils/color.d.ts +16 -0
- package/dist/utils/color.js +7 -23
- package/dist/{types/utils → utils}/http-status.d.ts +1 -9
- package/dist/{types/utils → utils}/url.d.ts +0 -5
- package/dist/utils/url.js +1 -11
- package/dist/{types/validator → validator}/validator.d.ts +5 -0
- package/dist/validator/validator.js +46 -49
- package/package.json +209 -350
- package/dist/adapter/aws-lambda/conninfo.js +0 -43
- package/dist/adapter/aws-lambda/handler.js +0 -342
- package/dist/adapter/aws-lambda/index.js +0 -3
- package/dist/adapter/aws-lambda/types.js +0 -1
- package/dist/adapter/bun/conninfo.js +0 -22
- package/dist/adapter/bun/index.js +0 -6
- package/dist/adapter/bun/serve-static.js +0 -30
- package/dist/adapter/bun/server.js +0 -11
- package/dist/adapter/bun/ssg.js +0 -27
- package/dist/adapter/bun/websocket.js +0 -66
- package/dist/adapter/cloudflare-pages/conninfo.js +0 -24
- package/dist/adapter/cloudflare-pages/handler.js +0 -64
- package/dist/adapter/cloudflare-pages/index.js +0 -3
- package/dist/adapter/cloudflare-workers/conninfo.js +0 -7
- package/dist/adapter/cloudflare-workers/index.js +0 -4
- package/dist/adapter/cloudflare-workers/serve-static-module.js +0 -7
- package/dist/adapter/cloudflare-workers/serve-static.js +0 -28
- package/dist/adapter/cloudflare-workers/utils.js +0 -22
- package/dist/adapter/cloudflare-workers/websocket.js +0 -33
- package/dist/adapter/deno/conninfo.js +0 -17
- package/dist/adapter/deno/deno.d.js +0 -1
- package/dist/adapter/deno/index.js +0 -5
- package/dist/adapter/deno/serve-static.js +0 -35
- package/dist/adapter/deno/ssg.js +0 -29
- package/dist/adapter/deno/websocket.js +0 -32
- package/dist/adapter/lambda-edge/conninfo.js +0 -7
- package/dist/adapter/lambda-edge/handler.js +0 -111
- package/dist/adapter/lambda-edge/index.js +0 -3
- package/dist/adapter/netlify/conninfo.js +0 -24
- package/dist/adapter/netlify/handler.js +0 -11
- package/dist/adapter/netlify/index.js +0 -3
- package/dist/adapter/netlify/mod.js +0 -3
- package/dist/adapter/service-worker/handler.js +0 -16
- package/dist/adapter/service-worker/index.js +0 -25
- package/dist/adapter/service-worker/types.js +0 -1
- package/dist/adapter/vercel/conninfo.js +0 -7
- package/dist/adapter/vercel/handler.js +0 -9
- package/dist/adapter/vercel/index.js +0 -3
- package/dist/cjs/_virtual/_rolldown/runtime.js +0 -33
- package/dist/cjs/adapter/aws-lambda/conninfo.js +0 -44
- package/dist/cjs/adapter/aws-lambda/handler.js +0 -352
- package/dist/cjs/adapter/aws-lambda/index.js +0 -7
- package/dist/cjs/adapter/aws-lambda/types.js +0 -0
- package/dist/cjs/adapter/bun/conninfo.js +0 -23
- package/dist/cjs/adapter/bun/index.js +0 -14
- package/dist/cjs/adapter/bun/serve-static.js +0 -31
- package/dist/cjs/adapter/bun/server.js +0 -12
- package/dist/cjs/adapter/bun/ssg.js +0 -29
- package/dist/cjs/adapter/bun/websocket.js +0 -70
- package/dist/cjs/adapter/cloudflare-pages/conninfo.js +0 -25
- package/dist/cjs/adapter/cloudflare-pages/handler.js +0 -67
- package/dist/cjs/adapter/cloudflare-pages/index.js +0 -7
- package/dist/cjs/adapter/cloudflare-workers/conninfo.js +0 -8
- package/dist/cjs/adapter/cloudflare-workers/index.js +0 -7
- package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +0 -8
- package/dist/cjs/adapter/cloudflare-workers/serve-static.js +0 -29
- package/dist/cjs/adapter/cloudflare-workers/utils.js +0 -23
- package/dist/cjs/adapter/cloudflare-workers/websocket.js +0 -34
- package/dist/cjs/adapter/deno/conninfo.js +0 -18
- package/dist/cjs/adapter/deno/deno.d.js +0 -0
- package/dist/cjs/adapter/deno/index.js +0 -10
- package/dist/cjs/adapter/deno/serve-static.js +0 -36
- package/dist/cjs/adapter/deno/ssg.js +0 -31
- package/dist/cjs/adapter/deno/websocket.js +0 -33
- package/dist/cjs/adapter/lambda-edge/conninfo.js +0 -8
- package/dist/cjs/adapter/lambda-edge/handler.js +0 -116
- package/dist/cjs/adapter/lambda-edge/index.js +0 -5
- package/dist/cjs/adapter/netlify/conninfo.js +0 -25
- package/dist/cjs/adapter/netlify/handler.js +0 -12
- package/dist/cjs/adapter/netlify/index.js +0 -5
- package/dist/cjs/adapter/netlify/mod.js +0 -5
- package/dist/cjs/adapter/service-worker/handler.js +0 -17
- package/dist/cjs/adapter/service-worker/index.js +0 -27
- package/dist/cjs/adapter/service-worker/types.js +0 -0
- package/dist/cjs/adapter/vercel/conninfo.js +0 -8
- package/dist/cjs/adapter/vercel/handler.js +0 -10
- package/dist/cjs/adapter/vercel/index.js +0 -5
- package/dist/cjs/client/client.js +0 -145
- package/dist/cjs/client/fetch-result-please.js +0 -67
- package/dist/cjs/client/index.js +0 -7
- package/dist/cjs/client/types.js +0 -0
- package/dist/cjs/client/utils.js +0 -70
- package/dist/cjs/compose.js +0 -51
- package/dist/cjs/context.js +0 -383
- package/dist/cjs/helper/accepts/accepts.js +0 -54
- package/dist/cjs/helper/accepts/index.js +0 -3
- package/dist/cjs/helper/adapter/index.js +0 -41
- package/dist/cjs/helper/conninfo/index.js +0 -0
- package/dist/cjs/helper/conninfo/types.js +0 -0
- package/dist/cjs/helper/cookie/index.js +0 -89
- package/dist/cjs/helper/css/common.js +0 -194
- package/dist/cjs/helper/css/index.js +0 -142
- package/dist/cjs/helper/dev/index.js +0 -53
- package/dist/cjs/helper/factory/index.js +0 -33
- package/dist/cjs/helper/html/index.js +0 -34
- package/dist/cjs/helper/proxy/index.js +0 -122
- package/dist/cjs/helper/route/index.js +0 -128
- package/dist/cjs/helper/ssg/index.js +0 -19
- package/dist/cjs/helper/ssg/middleware.js +0 -65
- package/dist/cjs/helper/ssg/plugins.js +0 -68
- package/dist/cjs/helper/ssg/ssg.js +0 -220
- package/dist/cjs/helper/ssg/utils.js +0 -70
- package/dist/cjs/helper/streaming/index.js +0 -8
- package/dist/cjs/helper/streaming/sse.js +0 -59
- package/dist/cjs/helper/streaming/stream.js +0 -26
- package/dist/cjs/helper/streaming/text.js +0 -12
- package/dist/cjs/helper/streaming/utils.js +0 -16
- package/dist/cjs/helper/testing/index.js +0 -18
- package/dist/cjs/helper/websocket/index.js +0 -56
- package/dist/cjs/hono-base.js +0 -351
- package/dist/cjs/hono.js +0 -29
- package/dist/cjs/http-exception.js +0 -56
- package/dist/cjs/index.js +0 -22
- package/dist/cjs/jsx/base.js +0 -266
- package/dist/cjs/jsx/children.js +0 -19
- package/dist/cjs/jsx/components.js +0 -147
- package/dist/cjs/jsx/constants.js +0 -15
- package/dist/cjs/jsx/context.js +0 -170
- package/dist/cjs/jsx/dom/client.js +0 -56
- package/dist/cjs/jsx/dom/components.js +0 -26
- package/dist/cjs/jsx/dom/context.js +0 -43
- package/dist/cjs/jsx/dom/css.js +0 -153
- package/dist/cjs/jsx/dom/hooks/index.js +0 -65
- package/dist/cjs/jsx/dom/index.js +0 -122
- package/dist/cjs/jsx/dom/intrinsic-element/components.js +0 -306
- package/dist/cjs/jsx/dom/jsx-dev-runtime.js +0 -17
- package/dist/cjs/jsx/dom/jsx-runtime.js +0 -5
- package/dist/cjs/jsx/dom/render.js +0 -525
- package/dist/cjs/jsx/dom/server.js +0 -44
- package/dist/cjs/jsx/dom/utils.js +0 -9
- package/dist/cjs/jsx/hooks/index.js +0 -280
- package/dist/cjs/jsx/index.js +0 -89
- package/dist/cjs/jsx/intrinsic-element/common.js +0 -27
- package/dist/cjs/jsx/intrinsic-element/components.js +0 -138
- package/dist/cjs/jsx/intrinsic-elements.js +0 -0
- package/dist/cjs/jsx/jsx-dev-runtime.js +0 -16
- package/dist/cjs/jsx/jsx-runtime.js +0 -37
- package/dist/cjs/jsx/streaming.js +0 -135
- package/dist/cjs/jsx/types.js +0 -0
- package/dist/cjs/jsx/utils.js +0 -116
- package/dist/cjs/middleware/basic-auth/index.js +0 -100
- package/dist/cjs/middleware/bearer-auth/index.js +0 -97
- package/dist/cjs/middleware/body-limit/index.js +0 -69
- package/dist/cjs/middleware/cache/index.js +0 -173
- package/dist/cjs/middleware/combine/index.js +0 -141
- package/dist/cjs/middleware/compress/index.js +0 -82
- package/dist/cjs/middleware/context-storage/index.js +0 -55
- package/dist/cjs/middleware/cors/index.js +0 -109
- package/dist/cjs/middleware/csrf/index.js +0 -106
- package/dist/cjs/middleware/etag/digest.js +0 -62
- package/dist/cjs/middleware/etag/index.js +0 -79
- package/dist/cjs/middleware/ip-restriction/index.js +0 -168
- package/dist/cjs/middleware/jsx-renderer/index.js +0 -104
- package/dist/cjs/middleware/jwk/index.js +0 -3
- package/dist/cjs/middleware/jwk/jwk.js +0 -122
- package/dist/cjs/middleware/jwt/index.js +0 -9
- package/dist/cjs/middleware/jwt/jwt.js +0 -124
- package/dist/cjs/middleware/language/index.js +0 -7
- package/dist/cjs/middleware/language/language.js +0 -208
- package/dist/cjs/middleware/logger/index.js +0 -51
- package/dist/cjs/middleware/method-not-allowed/index.js +0 -84
- package/dist/cjs/middleware/method-override/index.js +0 -105
- package/dist/cjs/middleware/mount/index.js +0 -71
- package/dist/cjs/middleware/powered-by/index.js +0 -25
- package/dist/cjs/middleware/pretty-json/index.js +0 -41
- package/dist/cjs/middleware/request-id/index.js +0 -3
- package/dist/cjs/middleware/request-id/request-id.js +0 -35
- package/dist/cjs/middleware/secure-headers/index.js +0 -4
- package/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -0
- package/dist/cjs/middleware/secure-headers/secure-headers.js +0 -166
- package/dist/cjs/middleware/serve-static/index.js +0 -62
- package/dist/cjs/middleware/serve-static/path.js +0 -17
- package/dist/cjs/middleware/timeout/index.js +0 -42
- package/dist/cjs/middleware/timing/index.js +0 -7
- package/dist/cjs/middleware/timing/timing.js +0 -189
- package/dist/cjs/middleware/trailing-slash/index.js +0 -89
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/preset/quick.js +0 -19
- package/dist/cjs/preset/tiny.js +0 -16
- package/dist/cjs/request/constants.js +0 -5
- package/dist/cjs/request.js +0 -337
- package/dist/cjs/router/linear-router/index.js +0 -3
- package/dist/cjs/router/linear-router/router.js +0 -97
- package/dist/cjs/router/pattern-router/index.js +0 -3
- package/dist/cjs/router/pattern-router/router.js +0 -42
- package/dist/cjs/router/reg-exp-router/index.js +0 -7
- package/dist/cjs/router/reg-exp-router/matcher.js +0 -21
- package/dist/cjs/router/reg-exp-router/node.js +0 -96
- package/dist/cjs/router/reg-exp-router/prepared-router.js +0 -97
- package/dist/cjs/router/reg-exp-router/router.js +0 -102
- package/dist/cjs/router/reg-exp-router/trie.js +0 -74
- package/dist/cjs/router/smart-router/index.js +0 -3
- package/dist/cjs/router/smart-router/router.js +0 -50
- package/dist/cjs/router/trie-router/index.js +0 -3
- package/dist/cjs/router/trie-router/node.js +0 -135
- package/dist/cjs/router/trie-router/router.js +0 -16
- package/dist/cjs/router/utils.js +0 -5
- package/dist/cjs/router.js +0 -40
- package/dist/cjs/types.js +0 -5
- package/dist/cjs/utils/accept.js +0 -194
- package/dist/cjs/utils/basic-auth.js +0 -21
- package/dist/cjs/utils/body.js +0 -97
- package/dist/cjs/utils/buffer.js +0 -55
- package/dist/cjs/utils/color.js +0 -39
- package/dist/cjs/utils/compress.js +0 -12
- package/dist/cjs/utils/concurrent.js +0 -31
- package/dist/cjs/utils/constants.js +0 -8
- package/dist/cjs/utils/cookie.js +0 -129
- package/dist/cjs/utils/crypto.js +0 -38
- package/dist/cjs/utils/encode.js +0 -37
- package/dist/cjs/utils/filepath.js +0 -27
- package/dist/cjs/utils/handler.js +0 -14
- package/dist/cjs/utils/headers.js +0 -0
- package/dist/cjs/utils/html.js +0 -109
- package/dist/cjs/utils/http-status.js +0 -0
- package/dist/cjs/utils/ipaddr.js +0 -247
- package/dist/cjs/utils/jwt/index.js +0 -15
- package/dist/cjs/utils/jwt/jwa.js +0 -25
- package/dist/cjs/utils/jwt/jws.js +0 -135
- package/dist/cjs/utils/jwt/jwt.js +0 -136
- package/dist/cjs/utils/jwt/types.js +0 -124
- package/dist/cjs/utils/jwt/utf8.js +0 -11
- package/dist/cjs/utils/mime.js +0 -80
- package/dist/cjs/utils/stream.js +0 -89
- package/dist/cjs/utils/types.js +0 -0
- package/dist/cjs/utils/url.js +0 -215
- package/dist/cjs/validator/index.js +0 -3
- package/dist/cjs/validator/utils.js +0 -0
- package/dist/cjs/validator/validator.js +0 -65
- package/dist/types/adapter/aws-lambda/conninfo.d.ts +0 -30
- package/dist/types/adapter/aws-lambda/handler.d.ts +0 -230
- package/dist/types/adapter/aws-lambda/index.d.ts +0 -4
- package/dist/types/adapter/aws-lambda/types.d.ts +0 -183
- package/dist/types/adapter/bun/conninfo.d.ts +0 -10
- package/dist/types/adapter/bun/index.d.ts +0 -6
- package/dist/types/adapter/bun/serve-static.d.ts +0 -8
- package/dist/types/adapter/bun/server.d.ts +0 -11
- package/dist/types/adapter/bun/ssg.d.ts +0 -17
- package/dist/types/adapter/bun/websocket.d.ts +0 -54
- package/dist/types/adapter/cloudflare-pages/conninfo.d.ts +0 -24
- package/dist/types/adapter/cloudflare-pages/handler.d.ts +0 -45
- package/dist/types/adapter/cloudflare-pages/index.d.ts +0 -3
- package/dist/types/adapter/cloudflare-workers/conninfo.d.ts +0 -7
- package/dist/types/adapter/cloudflare-workers/index.d.ts +0 -4
- package/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +0 -7
- package/dist/types/adapter/cloudflare-workers/serve-static.d.ts +0 -21
- package/dist/types/adapter/cloudflare-workers/utils.d.ts +0 -13
- package/dist/types/adapter/cloudflare-workers/websocket.d.ts +0 -7
- package/dist/types/adapter/deno/conninfo.d.ts +0 -10
- package/dist/types/adapter/deno/deno.d.ts +0 -1
- package/dist/types/adapter/deno/index.d.ts +0 -5
- package/dist/types/adapter/deno/serve-static.d.ts +0 -8
- package/dist/types/adapter/deno/ssg.d.ts +0 -17
- package/dist/types/adapter/deno/websocket.d.ts +0 -7
- package/dist/types/adapter/lambda-edge/conninfo.d.ts +0 -7
- package/dist/types/adapter/lambda-edge/handler.d.ts +0 -113
- package/dist/types/adapter/lambda-edge/index.d.ts +0 -3
- package/dist/types/adapter/netlify/conninfo.d.ts +0 -24
- package/dist/types/adapter/netlify/handler.d.ts +0 -7
- package/dist/types/adapter/netlify/index.d.ts +0 -3
- package/dist/types/adapter/netlify/mod.d.ts +0 -3
- package/dist/types/adapter/service-worker/handler.d.ts +0 -18
- package/dist/types/adapter/service-worker/index.d.ts +0 -26
- package/dist/types/adapter/service-worker/types.d.ts +0 -17
- package/dist/types/adapter/vercel/conninfo.d.ts +0 -7
- package/dist/types/adapter/vercel/handler.d.ts +0 -7
- package/dist/types/adapter/vercel/index.d.ts +0 -3
- package/dist/types/package.json +0 -3
- package/dist/types/utils/buffer.d.ts +0 -19
- package/dist/types/utils/color.d.ts +0 -23
- package/dist/{types/client → client}/client.d.ts +0 -0
- package/dist/{types/client → client}/fetch-result-please.d.ts +0 -0
- package/dist/{types/client → client}/index.d.ts +0 -0
- package/dist/{types/client → client}/types.d.ts +1 -1
- package/dist/{types/client → client}/utils.d.ts +0 -0
- package/dist/{types/helper → helper}/accepts/accepts.d.ts +0 -0
- package/dist/{types/helper → helper}/accepts/index.d.ts +0 -0
- package/dist/{types/helper → helper}/adapter/index.d.ts +0 -0
- package/dist/{types/helper → helper}/conninfo/index.d.ts +0 -0
- package/dist/{types/helper → helper}/conninfo/types.d.ts +0 -0
- package/dist/{types/helper → helper}/cookie/index.d.ts +0 -0
- package/dist/{types/helper → helper}/css/common.d.ts +0 -0
- package/dist/{types/helper → helper}/css/index.d.ts +0 -0
- package/dist/{types/helper → helper}/dev/index.d.ts +0 -0
- package/dist/{types/helper → helper}/html/index.d.ts +0 -0
- package/dist/{types/helper → helper}/proxy/index.d.ts +0 -0
- package/dist/{types/helper → helper}/route/index.d.ts +0 -0
- package/dist/{types/helper → helper}/ssg/index.d.ts +0 -0
- package/dist/{types/helper → helper}/ssg/plugins.d.ts +0 -0
- package/dist/{types/helper → helper}/ssg/utils.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/index.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/sse.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/stream.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/text.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/utils.d.ts +0 -0
- package/dist/{types/helper → helper}/testing/index.d.ts +0 -0
- package/dist/{types/helper → helper}/websocket/index.d.ts +0 -0
- package/dist/{types/http-exception.d.ts → http-exception.d.ts} +0 -0
- package/dist/{types/index.d.ts → index.d.ts} +0 -0
- package/dist/{types/jsx → jsx}/base.d.ts +0 -0
- package/dist/{types/jsx → jsx}/children.d.ts +0 -0
- package/dist/{types/jsx → jsx}/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/constants.d.ts +0 -0
- package/dist/{types/jsx → jsx}/context.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/client.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/context.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/css.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/hooks/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/intrinsic-element/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/jsx-dev-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/jsx-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/render.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/server.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/utils.d.ts +0 -0
- package/dist/{types/jsx → jsx}/hooks/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/intrinsic-element/common.d.ts +0 -0
- package/dist/{types/jsx → jsx}/intrinsic-element/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/intrinsic-elements.d.ts +0 -0
- package/dist/{types/jsx → jsx}/jsx-dev-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/jsx-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/streaming.d.ts +0 -0
- package/dist/{types/jsx → jsx}/types.d.ts +0 -0
- package/dist/{types/jsx → jsx}/utils.d.ts +0 -0
- package/dist/{types/middleware → middleware}/body-limit/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/cache/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/combine/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/compress/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/context-storage/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/cors/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/csrf/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/etag/digest.d.ts +0 -0
- package/dist/{types/middleware → middleware}/etag/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/ip-restriction/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jsx-renderer/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwk/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwk/jwk.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwt/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwt/jwt.d.ts +0 -0
- package/dist/{types/middleware → middleware}/language/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/language/language.d.ts +0 -0
- package/dist/{types/middleware → middleware}/logger/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/method-not-allowed/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/method-override/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/mount/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/powered-by/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/pretty-json/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/request-id/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/request-id/request-id.d.ts +0 -0
- package/dist/{types/middleware → middleware}/secure-headers/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/secure-headers/permissions-policy.d.ts +0 -0
- package/dist/{types/middleware → middleware}/secure-headers/secure-headers.d.ts +0 -0
- package/dist/{types/middleware → middleware}/serve-static/path.d.ts +0 -0
- package/dist/{types/middleware → middleware}/timeout/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/timing/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/timing/timing.d.ts +0 -0
- package/dist/{types/middleware → middleware}/trailing-slash/index.d.ts +0 -0
- package/dist/{types/request → request}/constants.d.ts +0 -0
- package/dist/{types/router → router}/linear-router/index.d.ts +0 -0
- package/dist/{types/router → router}/linear-router/router.d.ts +0 -0
- package/dist/{types/router → router}/pattern-router/index.d.ts +0 -0
- package/dist/{types/router → router}/pattern-router/router.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/index.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/matcher.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/node.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/prepared-router.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/router.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/trie.d.ts +0 -0
- package/dist/{types/router → router}/smart-router/index.d.ts +0 -0
- package/dist/{types/router → router}/smart-router/router.d.ts +0 -0
- package/dist/{types/router → router}/trie-router/index.d.ts +0 -0
- package/dist/{types/router → router}/trie-router/node.d.ts +0 -0
- package/dist/{types/router → router}/trie-router/router.d.ts +0 -0
- package/dist/{types/router → router}/utils.d.ts +0 -0
- package/dist/{types/router.d.ts → router.d.ts} +0 -0
- package/dist/{types/types.d.ts → types.d.ts} +1 -1
- /package/dist/{types/utils → utils}/accept.d.ts +0 -0
- /package/dist/{types/utils → utils}/basic-auth.d.ts +0 -0
- /package/dist/{types/utils → utils}/body.d.ts +0 -0
- /package/dist/{types/utils → utils}/compress.d.ts +0 -0
- /package/dist/{types/utils → utils}/concurrent.d.ts +0 -0
- /package/dist/{types/utils → utils}/constants.d.ts +0 -0
- /package/dist/{types/utils → utils}/cookie.d.ts +0 -0
- /package/dist/{types/utils → utils}/crypto.d.ts +0 -0
- /package/dist/{types/utils → utils}/encode.d.ts +0 -0
- /package/dist/{types/utils → utils}/filepath.d.ts +0 -0
- /package/dist/{types/utils → utils}/handler.d.ts +0 -0
- /package/dist/{types/utils → utils}/headers.d.ts +0 -0
- /package/dist/{types/utils → utils}/html.d.ts +0 -0
- /package/dist/{types/utils → utils}/ipaddr.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/index.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/jwa.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/jws.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/jwt.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/types.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/utf8.d.ts +0 -0
- /package/dist/{types/utils → utils}/mime.d.ts +0 -0
- /package/dist/{types/utils → utils}/stream.d.ts +0 -0
- /package/dist/{types/utils → utils}/types.d.ts +0 -0
- /package/dist/{types/validator → validator}/index.d.ts +0 -0
- /package/dist/{types/validator → validator}/utils.d.ts +0 -0
package/dist/cjs/jsx/base.js
DELETED
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils_html = require("../utils/html.js");
|
|
3
|
-
const require_jsx_constants = require("./constants.js");
|
|
4
|
-
const require_jsx_context = require("./context.js");
|
|
5
|
-
const require_jsx_intrinsic_element_common = require("./intrinsic-element/common.js");
|
|
6
|
-
const require_jsx_intrinsic_element_components = require("./intrinsic-element/components.js");
|
|
7
|
-
const require_jsx_utils = require("./utils.js");
|
|
8
|
-
//#region src/jsx/base.ts
|
|
9
|
-
let nameSpaceContext = void 0;
|
|
10
|
-
const getNameSpaceContext = () => nameSpaceContext;
|
|
11
|
-
const toSVGAttributeName = (key) => /[A-Z]/.test(key) && key.match(/^(?:al|basel|clip(?:Path|Rule)$|co|do|fill|fl|fo|gl|let|lig|i|marker[EMS]|o|pai|pointe|sh|st[or]|text[^L]|tr|u|ve|w)/) ? key.replace(/([A-Z])/g, "-$1").toLowerCase() : key;
|
|
12
|
-
const emptyTags = [
|
|
13
|
-
"area",
|
|
14
|
-
"base",
|
|
15
|
-
"br",
|
|
16
|
-
"col",
|
|
17
|
-
"embed",
|
|
18
|
-
"hr",
|
|
19
|
-
"img",
|
|
20
|
-
"input",
|
|
21
|
-
"keygen",
|
|
22
|
-
"link",
|
|
23
|
-
"meta",
|
|
24
|
-
"param",
|
|
25
|
-
"source",
|
|
26
|
-
"track",
|
|
27
|
-
"wbr"
|
|
28
|
-
];
|
|
29
|
-
const booleanAttributes = [
|
|
30
|
-
"allowfullscreen",
|
|
31
|
-
"async",
|
|
32
|
-
"autofocus",
|
|
33
|
-
"autoplay",
|
|
34
|
-
"checked",
|
|
35
|
-
"controls",
|
|
36
|
-
"default",
|
|
37
|
-
"defer",
|
|
38
|
-
"disabled",
|
|
39
|
-
"download",
|
|
40
|
-
"formnovalidate",
|
|
41
|
-
"hidden",
|
|
42
|
-
"inert",
|
|
43
|
-
"ismap",
|
|
44
|
-
"itemscope",
|
|
45
|
-
"loop",
|
|
46
|
-
"multiple",
|
|
47
|
-
"muted",
|
|
48
|
-
"nomodule",
|
|
49
|
-
"novalidate",
|
|
50
|
-
"open",
|
|
51
|
-
"playsinline",
|
|
52
|
-
"readonly",
|
|
53
|
-
"required",
|
|
54
|
-
"reversed",
|
|
55
|
-
"selected"
|
|
56
|
-
];
|
|
57
|
-
const resolveFunctionComponentResult = (result, suspendedContext) => result.then((resolved) => {
|
|
58
|
-
if (typeof resolved !== "string" && !Array.isArray(resolved) && !(resolved instanceof JSXNode)) return resolved;
|
|
59
|
-
const children = Array.isArray(resolved) ? resolved : [resolved];
|
|
60
|
-
const render = () => {
|
|
61
|
-
const buffer = [""];
|
|
62
|
-
childrenToStringToBuffer(children, buffer);
|
|
63
|
-
return buffer.length === 1 ? require_utils_html.raw(buffer[0], buffer.callbacks) : require_utils_html.stringBufferToString(buffer, buffer.callbacks);
|
|
64
|
-
};
|
|
65
|
-
return suspendedContext ? suspendedContext(render) : require_jsx_context.runWithRenderContext(render);
|
|
66
|
-
});
|
|
67
|
-
const childrenToStringToBuffer = (children, buffer) => {
|
|
68
|
-
for (let i = 0, len = children.length; i < len; i++) {
|
|
69
|
-
const child = children[i];
|
|
70
|
-
if (typeof child === "string") require_utils_html.escapeToBuffer(child, buffer);
|
|
71
|
-
else if (typeof child === "boolean" || child === null || child === void 0) continue;
|
|
72
|
-
else if (child instanceof JSXNode) child.toStringToBuffer(buffer);
|
|
73
|
-
else if (typeof child === "number") buffer[0] += child;
|
|
74
|
-
else if (child.isEscaped) {
|
|
75
|
-
buffer[0] += child;
|
|
76
|
-
const callbacks = child.callbacks;
|
|
77
|
-
if (callbacks) {
|
|
78
|
-
buffer.callbacks ||= [];
|
|
79
|
-
buffer.callbacks.push(...callbacks);
|
|
80
|
-
}
|
|
81
|
-
} else if (child instanceof Promise) buffer.unshift("", child);
|
|
82
|
-
else childrenToStringToBuffer(child, buffer);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
const renderChildren = (children) => require_jsx_context.runWithRenderContext(() => {
|
|
86
|
-
const buffer = [""];
|
|
87
|
-
childrenToStringToBuffer(children, buffer);
|
|
88
|
-
return buffer.length === 1 ? require_utils_html.raw(buffer[0], buffer.callbacks) : require_utils_html.stringBufferToString(buffer, buffer.callbacks);
|
|
89
|
-
});
|
|
90
|
-
const isUntrustedObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof JSXNode) && !(value instanceof Promise) && !value.isEscaped && typeof value.toString === "function";
|
|
91
|
-
const renderUntrustedObject = (value) => {
|
|
92
|
-
const stringified = value.toString();
|
|
93
|
-
const escape = (result) => renderChildren([String(result)]);
|
|
94
|
-
return stringified instanceof Promise ? stringified.then(escape) : escape(stringified);
|
|
95
|
-
};
|
|
96
|
-
var JSXNode = class {
|
|
97
|
-
tag;
|
|
98
|
-
props;
|
|
99
|
-
key;
|
|
100
|
-
children;
|
|
101
|
-
isEscaped = true;
|
|
102
|
-
constructor(tag, props, children) {
|
|
103
|
-
if (typeof tag !== "function" && !require_jsx_utils.isValidTagName(tag)) throw new Error(`Invalid JSX tag name: ${tag}`);
|
|
104
|
-
this.tag = tag;
|
|
105
|
-
this.props = props;
|
|
106
|
-
this.children = children;
|
|
107
|
-
}
|
|
108
|
-
get type() {
|
|
109
|
-
return this.tag;
|
|
110
|
-
}
|
|
111
|
-
get ref() {
|
|
112
|
-
return this.props.ref || null;
|
|
113
|
-
}
|
|
114
|
-
toString() {
|
|
115
|
-
const render = () => {
|
|
116
|
-
const buffer = [""];
|
|
117
|
-
this.toStringToBuffer(buffer);
|
|
118
|
-
return buffer.length === 1 ? "callbacks" in buffer ? require_utils_html.resolveCallbackSync(require_utils_html.raw(buffer[0], buffer.callbacks)).toString() : buffer[0] : require_utils_html.stringBufferToString(buffer, buffer.callbacks);
|
|
119
|
-
};
|
|
120
|
-
return require_jsx_context.runWithRenderContext(render);
|
|
121
|
-
}
|
|
122
|
-
toStringToBuffer(buffer) {
|
|
123
|
-
const tag = this.tag;
|
|
124
|
-
const props = this.props;
|
|
125
|
-
let { children } = this;
|
|
126
|
-
buffer[0] += `<${tag}`;
|
|
127
|
-
const normalizeKey = tag === "svg" || nameSpaceContext && require_jsx_context.useContext(nameSpaceContext) === "svg" ? (key) => toSVGAttributeName(require_jsx_utils.normalizeIntrinsicElementKey(key)) : (key) => require_jsx_utils.normalizeIntrinsicElementKey(key);
|
|
128
|
-
for (let [key, v] of Object.entries(props)) {
|
|
129
|
-
key = normalizeKey(key);
|
|
130
|
-
if (!require_jsx_utils.isValidAttributeName(key)) continue;
|
|
131
|
-
if (key === "children") {} else if (key === "style" && typeof v === "object") {
|
|
132
|
-
let styleStr = "";
|
|
133
|
-
require_jsx_utils.styleObjectForEach(v, (property, value) => {
|
|
134
|
-
if (value != null) styleStr += `${styleStr ? ";" : ""}${property}:${value}`;
|
|
135
|
-
});
|
|
136
|
-
buffer[0] += " style=\"";
|
|
137
|
-
require_utils_html.escapeToBuffer(styleStr, buffer);
|
|
138
|
-
buffer[0] += "\"";
|
|
139
|
-
} else if (typeof v === "string") {
|
|
140
|
-
buffer[0] += ` ${key}="`;
|
|
141
|
-
require_utils_html.escapeToBuffer(v, buffer);
|
|
142
|
-
buffer[0] += "\"";
|
|
143
|
-
} else if (v === null || v === void 0) {} else if (typeof v === "number" || v.isEscaped) buffer[0] += ` ${key}="${v}"`;
|
|
144
|
-
else if (typeof v === "boolean" && booleanAttributes.includes(key)) {
|
|
145
|
-
if (v) buffer[0] += ` ${key}=""`;
|
|
146
|
-
} else if (key === "dangerouslySetInnerHTML") {
|
|
147
|
-
if (children.length > 0) throw new Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");
|
|
148
|
-
children = [require_utils_html.raw(v.__html)];
|
|
149
|
-
} else if (v instanceof Promise) {
|
|
150
|
-
buffer[0] += ` ${key}="`;
|
|
151
|
-
buffer.unshift("\"", v);
|
|
152
|
-
} else if (typeof v === "function") {
|
|
153
|
-
if (!key.startsWith("on") && key !== "ref") throw new Error(`Invalid prop '${key}' of type 'function' supplied to '${tag}'.`);
|
|
154
|
-
} else {
|
|
155
|
-
buffer[0] += ` ${key}="`;
|
|
156
|
-
require_utils_html.escapeToBuffer(v.toString(), buffer);
|
|
157
|
-
buffer[0] += "\"";
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (emptyTags.includes(tag) && children.length === 0) {
|
|
161
|
-
buffer[0] += "/>";
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
buffer[0] += ">";
|
|
165
|
-
childrenToStringToBuffer(children, buffer);
|
|
166
|
-
buffer[0] += `</${tag}>`;
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
var JSXFunctionNode = class extends JSXNode {
|
|
170
|
-
toStringToBuffer(buffer) {
|
|
171
|
-
const { children } = this;
|
|
172
|
-
const props = { ...this.props };
|
|
173
|
-
if (children.length) props.children = children.length === 1 ? children[0] : children;
|
|
174
|
-
const res = this.tag.call(null, props);
|
|
175
|
-
if (typeof res === "boolean" || res == null) return;
|
|
176
|
-
else if (res instanceof Promise) {
|
|
177
|
-
if (require_jsx_context.globalContexts.length === 0) buffer.unshift("", resolveFunctionComponentResult(res));
|
|
178
|
-
else buffer.unshift("", resolveFunctionComponentResult(res, require_jsx_context.captureRenderContext()));
|
|
179
|
-
} else if (res instanceof JSXNode) res.toStringToBuffer(buffer);
|
|
180
|
-
else if (Array.isArray(res)) childrenToStringToBuffer(res, buffer);
|
|
181
|
-
else if (typeof res === "number" || res.isEscaped) {
|
|
182
|
-
buffer[0] += res;
|
|
183
|
-
if (res.callbacks) {
|
|
184
|
-
buffer.callbacks ||= [];
|
|
185
|
-
buffer.callbacks.push(...res.callbacks);
|
|
186
|
-
}
|
|
187
|
-
} else require_utils_html.escapeToBuffer(res, buffer);
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
var JSXFragmentNode = class extends JSXNode {
|
|
191
|
-
toStringToBuffer(buffer) {
|
|
192
|
-
childrenToStringToBuffer(this.children, buffer);
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
const jsx = (tag, props, ...children) => {
|
|
196
|
-
props ??= {};
|
|
197
|
-
if (children.length) props.children = children.length === 1 ? children[0] : children;
|
|
198
|
-
const key = props.key;
|
|
199
|
-
delete props["key"];
|
|
200
|
-
const node = jsxFn(tag, props, children);
|
|
201
|
-
node.key = key;
|
|
202
|
-
return node;
|
|
203
|
-
};
|
|
204
|
-
let initDomRenderer = false;
|
|
205
|
-
const jsxFn = (tag, props, children) => {
|
|
206
|
-
if (!initDomRenderer) {
|
|
207
|
-
for (const k in require_jsx_intrinsic_element_common.domRenderers) require_jsx_intrinsic_element_components.components_exports[k][require_jsx_constants.DOM_RENDERER] = require_jsx_intrinsic_element_common.domRenderers[k];
|
|
208
|
-
initDomRenderer = true;
|
|
209
|
-
}
|
|
210
|
-
if (typeof tag === "function") return new JSXFunctionNode(tag, props, children);
|
|
211
|
-
else if (require_jsx_intrinsic_element_components.components_exports[tag]) return new JSXFunctionNode(require_jsx_intrinsic_element_components.components_exports[tag], props, children);
|
|
212
|
-
else if (tag === "svg" || tag === "head") {
|
|
213
|
-
nameSpaceContext ||= require_jsx_context.createContext("");
|
|
214
|
-
return new JSXNode(tag, props, [new JSXFunctionNode(nameSpaceContext, { value: tag }, children)]);
|
|
215
|
-
} else return new JSXNode(tag, props, children);
|
|
216
|
-
};
|
|
217
|
-
const shallowEqual = (a, b) => {
|
|
218
|
-
if (a === b) return true;
|
|
219
|
-
const aKeys = Object.keys(a).sort();
|
|
220
|
-
const bKeys = Object.keys(b).sort();
|
|
221
|
-
if (aKeys.length !== bKeys.length) return false;
|
|
222
|
-
for (let i = 0, len = aKeys.length; i < len; i++) if (aKeys[i] === "children" && bKeys[i] === "children" && !a.children?.length && !b.children?.length) continue;
|
|
223
|
-
else if (a[aKeys[i]] !== b[aKeys[i]]) return false;
|
|
224
|
-
return true;
|
|
225
|
-
};
|
|
226
|
-
const memo = (component, propsAreEqual = shallowEqual) => {
|
|
227
|
-
const wrapper = ((props) => component(props));
|
|
228
|
-
wrapper[require_jsx_constants.DOM_MEMO] = propsAreEqual;
|
|
229
|
-
wrapper[require_jsx_constants.DOM_RENDERER] = component;
|
|
230
|
-
return wrapper;
|
|
231
|
-
};
|
|
232
|
-
const Fragment = ({ children }) => {
|
|
233
|
-
return new JSXFragmentNode("", { children }, Array.isArray(children) ? children : children ? [children] : []);
|
|
234
|
-
};
|
|
235
|
-
const isValidElement = (element) => {
|
|
236
|
-
return !!(element && typeof element === "object" && "tag" in element && "props" in element);
|
|
237
|
-
};
|
|
238
|
-
const cloneElement = (element, props, ...children) => {
|
|
239
|
-
let childrenToClone;
|
|
240
|
-
if (children.length > 0) childrenToClone = children;
|
|
241
|
-
else {
|
|
242
|
-
const c = element.props.children;
|
|
243
|
-
childrenToClone = Array.isArray(c) ? c : [c];
|
|
244
|
-
}
|
|
245
|
-
return jsx(element.tag, {
|
|
246
|
-
...element.props,
|
|
247
|
-
...props
|
|
248
|
-
}, ...childrenToClone);
|
|
249
|
-
};
|
|
250
|
-
const reactAPICompatVersion = "19.0.0-hono-jsx";
|
|
251
|
-
//#endregion
|
|
252
|
-
exports.Fragment = Fragment;
|
|
253
|
-
exports.JSXFragmentNode = JSXFragmentNode;
|
|
254
|
-
exports.JSXNode = JSXNode;
|
|
255
|
-
exports.booleanAttributes = booleanAttributes;
|
|
256
|
-
exports.cloneElement = cloneElement;
|
|
257
|
-
exports.getNameSpaceContext = getNameSpaceContext;
|
|
258
|
-
exports.isUntrustedObject = isUntrustedObject;
|
|
259
|
-
exports.isValidElement = isValidElement;
|
|
260
|
-
exports.jsx = jsx;
|
|
261
|
-
exports.jsxFn = jsxFn;
|
|
262
|
-
exports.memo = memo;
|
|
263
|
-
exports.reactAPICompatVersion = reactAPICompatVersion;
|
|
264
|
-
exports.renderChildren = renderChildren;
|
|
265
|
-
exports.renderUntrustedObject = renderUntrustedObject;
|
|
266
|
-
exports.shallowEqual = shallowEqual;
|
package/dist/cjs/jsx/children.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/jsx/children.ts
|
|
3
|
-
const toArray = (children) => Array.isArray(children) ? children : [children];
|
|
4
|
-
const Children = {
|
|
5
|
-
map: (children, fn) => toArray(children).map(fn),
|
|
6
|
-
forEach: (children, fn) => {
|
|
7
|
-
toArray(children).forEach(fn);
|
|
8
|
-
},
|
|
9
|
-
count: (children) => toArray(children).length,
|
|
10
|
-
only: (_children) => {
|
|
11
|
-
const children = toArray(_children);
|
|
12
|
-
if (children.length !== 1) throw new Error("Children.only() expects only one child");
|
|
13
|
-
return children[0];
|
|
14
|
-
},
|
|
15
|
-
toArray
|
|
16
|
-
};
|
|
17
|
-
//#endregion
|
|
18
|
-
exports.Children = Children;
|
|
19
|
-
exports.toArray = toArray;
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils_html = require("../utils/html.js");
|
|
3
|
-
const require_jsx_constants = require("./constants.js");
|
|
4
|
-
const require_jsx_context = require("./context.js");
|
|
5
|
-
const require_jsx_base = require("./base.js");
|
|
6
|
-
const require_jsx_dom_components = require("./dom/components.js");
|
|
7
|
-
const require_jsx_streaming = require("./streaming.js");
|
|
8
|
-
//#region src/jsx/components.ts
|
|
9
|
-
let errorBoundaryCounter = 0;
|
|
10
|
-
const childrenToString = async (children) => {
|
|
11
|
-
try {
|
|
12
|
-
return children.flat().map(resolveChildEarly);
|
|
13
|
-
} catch (e) {
|
|
14
|
-
if (e instanceof Promise) {
|
|
15
|
-
const resume = require_jsx_context.captureRenderContext();
|
|
16
|
-
await e;
|
|
17
|
-
return resume(() => childrenToString(children));
|
|
18
|
-
} else throw e;
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
const resolveChildEarly = (child) => {
|
|
22
|
-
if (child == null || typeof child === "boolean") return "";
|
|
23
|
-
else if (typeof child === "string" || Array.isArray(child)) return require_jsx_base.renderChildren([child]);
|
|
24
|
-
else if (require_jsx_base.isUntrustedObject(child)) return require_jsx_base.renderUntrustedObject(child);
|
|
25
|
-
else {
|
|
26
|
-
const str = child.toString();
|
|
27
|
-
return str instanceof Promise ? str : require_utils_html.raw(str);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* @experimental
|
|
32
|
-
* `ErrorBoundary` is an experimental feature.
|
|
33
|
-
* The API might be changed.
|
|
34
|
-
*/
|
|
35
|
-
const ErrorBoundary = async ({ children, fallback, fallbackRender, onError }) => {
|
|
36
|
-
if (!children) return require_utils_html.raw("");
|
|
37
|
-
if (!Array.isArray(children)) children = [children];
|
|
38
|
-
const nonce = require_jsx_context.useContext(require_jsx_streaming.StreamingContext)?.scriptNonce;
|
|
39
|
-
let resume;
|
|
40
|
-
const getResume = () => resume ||= require_jsx_context.captureRenderContext();
|
|
41
|
-
let fallbackStrPromise;
|
|
42
|
-
const resolveFallbackStr = () => fallbackStrPromise ||= (async () => {
|
|
43
|
-
const awaitedFallback = await fallback;
|
|
44
|
-
if (awaitedFallback === null || awaitedFallback === void 0) return;
|
|
45
|
-
if (typeof awaitedFallback === "string" || Array.isArray(awaitedFallback)) return getResume()(() => require_jsx_base.renderChildren([awaitedFallback]));
|
|
46
|
-
if (require_jsx_base.isUntrustedObject(awaitedFallback)) return getResume()(() => require_jsx_base.renderUntrustedObject(awaitedFallback));
|
|
47
|
-
const fallbackResult = await getResume()(() => awaitedFallback.toString());
|
|
48
|
-
return require_utils_html.raw(fallbackResult, fallbackResult.callbacks || awaitedFallback.callbacks);
|
|
49
|
-
})();
|
|
50
|
-
const renderFallback = async (error) => {
|
|
51
|
-
const fallbackStr = await resolveFallbackStr();
|
|
52
|
-
return getResume()(async () => {
|
|
53
|
-
onError?.(error);
|
|
54
|
-
const fallbackRes = fallbackStr !== void 0 ? fallbackStr : fallbackRender && require_jsx_base.jsx(require_jsx_base.Fragment, {}, fallbackRender(error)) || "";
|
|
55
|
-
const fallbackResString = await require_jsx_base.Fragment({ children: fallbackRes }).toString();
|
|
56
|
-
return require_utils_html.raw(fallbackResString, fallbackResString.callbacks || fallbackRes.callbacks);
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
let resArray = [];
|
|
60
|
-
try {
|
|
61
|
-
resArray = children.map(resolveChildEarly);
|
|
62
|
-
} catch (e) {
|
|
63
|
-
const resume = getResume();
|
|
64
|
-
if (e instanceof Promise) resArray = [e.then(() => resume(() => childrenToString(children))).catch((e) => renderFallback(e))];
|
|
65
|
-
else resArray = [await renderFallback(e)];
|
|
66
|
-
}
|
|
67
|
-
if (resArray.some((res) => res instanceof Promise)) {
|
|
68
|
-
getResume();
|
|
69
|
-
const index = errorBoundaryCounter++;
|
|
70
|
-
const replaceRe = RegExp(`(<template id="E:${index}"></template>)(.*?)(<!--E:${index}-->)`, "s");
|
|
71
|
-
let caught = false;
|
|
72
|
-
const catchCallback = async ({ error, buffer }) => {
|
|
73
|
-
if (caught) return "";
|
|
74
|
-
caught = true;
|
|
75
|
-
const fallbackResString = await renderFallback(error);
|
|
76
|
-
const fallbackCallbacks = fallbackResString.callbacks;
|
|
77
|
-
if (buffer) {
|
|
78
|
-
buffer[0] = buffer[0].replace(replaceRe, () => fallbackResString);
|
|
79
|
-
return fallbackCallbacks?.length ? require_utils_html.raw("", fallbackCallbacks) : "";
|
|
80
|
-
}
|
|
81
|
-
return require_utils_html.raw(`<template data-hono-target="E:${index}">${fallbackResString}</template><script>
|
|
82
|
-
((d,c,n) => {
|
|
83
|
-
c=d.currentScript.previousSibling
|
|
84
|
-
d=d.getElementById('E:${index}')
|
|
85
|
-
if(!d)return
|
|
86
|
-
do{n=d.nextSibling;n.remove()}while(n.nodeType!=8||n.nodeValue!='E:${index}')
|
|
87
|
-
d.replaceWith(c.content)
|
|
88
|
-
})(document)
|
|
89
|
-
<\/script>`, fallbackCallbacks);
|
|
90
|
-
};
|
|
91
|
-
let error;
|
|
92
|
-
const promiseAll = Promise.all(resArray).catch((e) => error = e);
|
|
93
|
-
return require_utils_html.raw(`<template id="E:${index}"></template><!--E:${index}-->`, [({ phase, buffer, context }) => {
|
|
94
|
-
if (phase === require_utils_html.HtmlEscapedCallbackPhase.BeforeStream) return;
|
|
95
|
-
return promiseAll.then(async (htmlArray) => {
|
|
96
|
-
if (error) throw error;
|
|
97
|
-
htmlArray = htmlArray.flat();
|
|
98
|
-
const content = htmlArray.join("");
|
|
99
|
-
let html = buffer ? "" : `<template data-hono-target="E:${index}">${content}</template><script${nonce ? ` nonce="${nonce}"` : ""}>
|
|
100
|
-
((d,c) => {
|
|
101
|
-
c=d.currentScript.previousSibling
|
|
102
|
-
d=d.getElementById('E:${index}')
|
|
103
|
-
if(!d)return
|
|
104
|
-
d.parentElement.insertBefore(c.content,d.nextSibling)
|
|
105
|
-
})(document)
|
|
106
|
-
<\/script>`;
|
|
107
|
-
if (htmlArray.every((html) => !html.callbacks?.length)) {
|
|
108
|
-
if (buffer) buffer[0] = buffer[0].replace(replaceRe, () => content);
|
|
109
|
-
return html;
|
|
110
|
-
}
|
|
111
|
-
if (buffer) buffer[0] = buffer[0].replace(replaceRe, (_all, pre, _, post) => `${pre}${content}${post}`);
|
|
112
|
-
const callbacks = htmlArray.map((html) => html.callbacks || []).flat();
|
|
113
|
-
if (phase === require_utils_html.HtmlEscapedCallbackPhase.Stream) html = await require_utils_html.resolveCallback(html, require_utils_html.HtmlEscapedCallbackPhase.BeforeStream, true, context);
|
|
114
|
-
let resolvedCount = 0;
|
|
115
|
-
const promises = callbacks.map((c) => (...args) => c(...args)?.then((content) => {
|
|
116
|
-
resolvedCount++;
|
|
117
|
-
if (buffer) {
|
|
118
|
-
if (resolvedCount === callbacks.length) buffer[0] = buffer[0].replace(replaceRe, (_all, _pre, content) => content);
|
|
119
|
-
buffer[0] += content;
|
|
120
|
-
return require_utils_html.raw("", content.callbacks);
|
|
121
|
-
}
|
|
122
|
-
return require_utils_html.raw(content + (resolvedCount !== callbacks.length ? "" : `<script>
|
|
123
|
-
((d,c,n) => {
|
|
124
|
-
d=d.getElementById('E:${index}')
|
|
125
|
-
if(!d)return
|
|
126
|
-
n=d.nextSibling
|
|
127
|
-
while(n.nodeType!=8||n.nodeValue!='E:${index}'){n=n.nextSibling}
|
|
128
|
-
n.remove()
|
|
129
|
-
d.remove()
|
|
130
|
-
})(document)
|
|
131
|
-
<\/script>`), content.callbacks);
|
|
132
|
-
}).catch((error) => catchCallback({
|
|
133
|
-
error,
|
|
134
|
-
buffer
|
|
135
|
-
})));
|
|
136
|
-
return require_utils_html.raw(html, promises);
|
|
137
|
-
}).catch((error) => catchCallback({
|
|
138
|
-
error,
|
|
139
|
-
buffer
|
|
140
|
-
}));
|
|
141
|
-
}]);
|
|
142
|
-
} else return require_jsx_base.Fragment({ children: resArray });
|
|
143
|
-
};
|
|
144
|
-
ErrorBoundary[require_jsx_constants.DOM_RENDERER] = require_jsx_dom_components.ErrorBoundary;
|
|
145
|
-
//#endregion
|
|
146
|
-
exports.ErrorBoundary = ErrorBoundary;
|
|
147
|
-
exports.childrenToString = childrenToString;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/jsx/constants.ts
|
|
3
|
-
const DOM_RENDERER = Symbol("RENDERER");
|
|
4
|
-
const DOM_ERROR_HANDLER = Symbol("ERROR_HANDLER");
|
|
5
|
-
const DOM_STASH = Symbol("STASH");
|
|
6
|
-
const DOM_INTERNAL_TAG = Symbol("INTERNAL");
|
|
7
|
-
const DOM_MEMO = Symbol("MEMO");
|
|
8
|
-
const PERMALINK = Symbol("PERMALINK");
|
|
9
|
-
//#endregion
|
|
10
|
-
exports.DOM_ERROR_HANDLER = DOM_ERROR_HANDLER;
|
|
11
|
-
exports.DOM_INTERNAL_TAG = DOM_INTERNAL_TAG;
|
|
12
|
-
exports.DOM_MEMO = DOM_MEMO;
|
|
13
|
-
exports.DOM_RENDERER = DOM_RENDERER;
|
|
14
|
-
exports.DOM_STASH = DOM_STASH;
|
|
15
|
-
exports.PERMALINK = PERMALINK;
|
package/dist/cjs/jsx/context.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils_html = require("../utils/html.js");
|
|
3
|
-
const require_jsx_constants = require("./constants.js");
|
|
4
|
-
const require_jsx_dom_context = require("./dom/context.js");
|
|
5
|
-
const require_jsx_base = require("./base.js");
|
|
6
|
-
//#region src/jsx/context.ts
|
|
7
|
-
const globalContexts = [];
|
|
8
|
-
let alsProbed = false;
|
|
9
|
-
let asyncLocalStorage;
|
|
10
|
-
let fallbackStore;
|
|
11
|
-
let fallbackRendersInFlight = 0;
|
|
12
|
-
let warnedFallbackDefault = false;
|
|
13
|
-
const loadAsyncLocalStorage = () => {
|
|
14
|
-
if (alsProbed) return asyncLocalStorage;
|
|
15
|
-
alsProbed = true;
|
|
16
|
-
const global = globalThis;
|
|
17
|
-
let AsyncLocalStorage;
|
|
18
|
-
for (const probe of [() => global.process?.getBuiltinModule?.("node:async_hooks")?.AsyncLocalStorage, () => global.process?.mainModule?.require?.("node:async_hooks")?.AsyncLocalStorage]) {
|
|
19
|
-
try {
|
|
20
|
-
AsyncLocalStorage = probe();
|
|
21
|
-
} catch {}
|
|
22
|
-
if (AsyncLocalStorage) break;
|
|
23
|
-
}
|
|
24
|
-
if (AsyncLocalStorage) asyncLocalStorage = new AsyncLocalStorage();
|
|
25
|
-
return asyncLocalStorage;
|
|
26
|
-
};
|
|
27
|
-
const getCurrentStore = () => {
|
|
28
|
-
return loadAsyncLocalStorage()?.getStore() || fallbackStore;
|
|
29
|
-
};
|
|
30
|
-
const warnIfStorelessAccess = () => {
|
|
31
|
-
if (fallbackRendersInFlight > 0 && !warnedFallbackDefault) {
|
|
32
|
-
warnedFallbackDefault = true;
|
|
33
|
-
console.warn("hono/jsx: AsyncLocalStorage is unavailable in this runtime, so useContext() after an await in an async component falls back to the context default value during server-side rendering. To get provided values across await boundaries, use a runtime with AsyncLocalStorage (Node.js >= 20.16, Deno, Bun, or Cloudflare Workers with the nodejs_compat flag).");
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
const getContextValuesIn = (store, context) => {
|
|
37
|
-
if (!store) {
|
|
38
|
-
warnIfStorelessAccess();
|
|
39
|
-
return context.values;
|
|
40
|
-
}
|
|
41
|
-
let values = store.get(context);
|
|
42
|
-
if (!values) {
|
|
43
|
-
values = [context.values[0]];
|
|
44
|
-
store.set(context, values);
|
|
45
|
-
}
|
|
46
|
-
return values;
|
|
47
|
-
};
|
|
48
|
-
const readContextValueIn = (store, context) => {
|
|
49
|
-
if (!store) {
|
|
50
|
-
warnIfStorelessAccess();
|
|
51
|
-
return context.values.at(-1);
|
|
52
|
-
}
|
|
53
|
-
const values = store.get(context);
|
|
54
|
-
return values?.length ? values.at(-1) : context.values[0];
|
|
55
|
-
};
|
|
56
|
-
const captureContextValues = (store) => (store ? globalContexts.filter((c) => store.has(c)) : globalContexts).map((c) => [c, readContextValueIn(store, c)]);
|
|
57
|
-
const resumeWithContextValues = (callback, store, contexts) => runWithRenderContext(() => {
|
|
58
|
-
const currentStore = getCurrentStore();
|
|
59
|
-
const valuesPerContext = contexts.map(([context, value]) => {
|
|
60
|
-
const values = getContextValuesIn(currentStore, context);
|
|
61
|
-
values.push(value);
|
|
62
|
-
return values;
|
|
63
|
-
});
|
|
64
|
-
const popContextValues = () => {
|
|
65
|
-
valuesPerContext.forEach((values) => {
|
|
66
|
-
values.pop();
|
|
67
|
-
});
|
|
68
|
-
};
|
|
69
|
-
try {
|
|
70
|
-
const result = callback();
|
|
71
|
-
if (result instanceof Promise) return result.finally(popContextValues);
|
|
72
|
-
popContextValues();
|
|
73
|
-
return result;
|
|
74
|
-
} catch (e) {
|
|
75
|
-
popContextValues();
|
|
76
|
-
throw e;
|
|
77
|
-
}
|
|
78
|
-
}, store);
|
|
79
|
-
/**
|
|
80
|
-
* Establish the request-scoped context store for a render.
|
|
81
|
-
*
|
|
82
|
-
* `resumeStore` continues a suspended subtree in the same store on the fallback
|
|
83
|
-
* path (ignored when `AsyncLocalStorage` is available, where isolation is
|
|
84
|
-
* automatic).
|
|
85
|
-
*
|
|
86
|
-
* Without `AsyncLocalStorage` a render can't be followed across `await`, so the
|
|
87
|
-
* store lives in `fallbackStore` only during synchronous work (mirroring
|
|
88
|
-
* React's request storage). Reading context after `await` then finds no store
|
|
89
|
-
* and falls back to the default value — never another request's value.
|
|
90
|
-
*/
|
|
91
|
-
const runWithRenderContext = (callback, resumeStore) => {
|
|
92
|
-
if (getCurrentStore()) return callback();
|
|
93
|
-
const store = resumeStore ?? /* @__PURE__ */ new WeakMap();
|
|
94
|
-
const storage = loadAsyncLocalStorage();
|
|
95
|
-
if (storage) return storage.run(store, callback);
|
|
96
|
-
fallbackStore = store;
|
|
97
|
-
let result;
|
|
98
|
-
try {
|
|
99
|
-
result = callback();
|
|
100
|
-
} finally {
|
|
101
|
-
fallbackStore = void 0;
|
|
102
|
-
}
|
|
103
|
-
if (!warnedFallbackDefault && result instanceof Promise) {
|
|
104
|
-
fallbackRendersInFlight++;
|
|
105
|
-
result = result.finally(() => {
|
|
106
|
-
fallbackRendersInFlight--;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
return result;
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* Capture the current render store and return a resumer that re-establishes it
|
|
113
|
-
* around a deferred continuation (e.g. a re-render after a suspended promise
|
|
114
|
-
* settles). Shared by every suspension point so none reimplements it.
|
|
115
|
-
*/
|
|
116
|
-
const captureRenderContext = () => {
|
|
117
|
-
const store = getCurrentStore();
|
|
118
|
-
const contexts = captureContextValues(store);
|
|
119
|
-
return (callback) => resumeWithContextValues(callback, store, contexts);
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* Create a context whose value can be provided with `<Context.Provider>` and
|
|
123
|
-
* read with {@link useContext}.
|
|
124
|
-
*
|
|
125
|
-
* Server-side renders are isolated per request, so a provided value never leaks
|
|
126
|
-
* into a concurrent request — even across `await` in an async component, when
|
|
127
|
-
* `AsyncLocalStorage` is available (Node.js >= 20.16, Deno, Bun, Cloudflare
|
|
128
|
-
* Workers with `nodejs_compat`). Without it, reading context after `await`
|
|
129
|
-
* returns the default value; synchronous components and `use()`-based
|
|
130
|
-
* suspension are unaffected.
|
|
131
|
-
*/
|
|
132
|
-
const createContext = (defaultValue) => {
|
|
133
|
-
const values = [defaultValue];
|
|
134
|
-
const context = ((props) => {
|
|
135
|
-
const contextValues = getContextValuesIn(getCurrentStore(), context);
|
|
136
|
-
contextValues.push(props.value);
|
|
137
|
-
let rendered;
|
|
138
|
-
try {
|
|
139
|
-
rendered = typeof props.children === "string" ? require_jsx_base.renderChildren([props.children]) : require_jsx_base.isUntrustedObject(props.children) ? require_jsx_base.renderUntrustedObject(props.children) : props.children ? (Array.isArray(props.children) ? new require_jsx_base.JSXFragmentNode("", {}, props.children) : props.children).toString() : require_utils_html.raw("");
|
|
140
|
-
} catch (e) {
|
|
141
|
-
contextValues.pop();
|
|
142
|
-
throw e;
|
|
143
|
-
}
|
|
144
|
-
if (rendered instanceof Promise) return rendered.finally(() => contextValues.pop()).then((resString) => require_utils_html.raw(resString, resString.callbacks));
|
|
145
|
-
else {
|
|
146
|
-
contextValues.pop();
|
|
147
|
-
return require_utils_html.raw(rendered);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
context.values = values;
|
|
151
|
-
context.Provider = context;
|
|
152
|
-
context[require_jsx_constants.DOM_RENDERER] = require_jsx_dom_context.createContextProviderFunction(values);
|
|
153
|
-
globalContexts.push(context);
|
|
154
|
-
return context;
|
|
155
|
-
};
|
|
156
|
-
/**
|
|
157
|
-
* Read the current value of a context created with {@link createContext}.
|
|
158
|
-
*
|
|
159
|
-
* Safe to call from async components after `await`. See {@link createContext}
|
|
160
|
-
* for the per-runtime isolation guarantees.
|
|
161
|
-
*/
|
|
162
|
-
const useContext = (context) => {
|
|
163
|
-
return readContextValueIn(getCurrentStore(), context);
|
|
164
|
-
};
|
|
165
|
-
//#endregion
|
|
166
|
-
exports.captureRenderContext = captureRenderContext;
|
|
167
|
-
exports.createContext = createContext;
|
|
168
|
-
exports.globalContexts = globalContexts;
|
|
169
|
-
exports.runWithRenderContext = runWithRenderContext;
|
|
170
|
-
exports.useContext = useContext;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
Object.defineProperties(exports, {
|
|
2
|
-
__esModule: { value: true },
|
|
3
|
-
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
-
});
|
|
5
|
-
const require_jsx_dom_render = require("./render.js");
|
|
6
|
-
const require_jsx_hooks_index = require("../hooks/index.js");
|
|
7
|
-
//#region src/jsx/dom/client.ts
|
|
8
|
-
/**
|
|
9
|
-
* Create a root object for rendering
|
|
10
|
-
* @param element Render target
|
|
11
|
-
* @param options Options for createRoot (not supported yet)
|
|
12
|
-
* @returns Root object has `render` and `unmount` methods
|
|
13
|
-
*/
|
|
14
|
-
const createRoot = (element, options = {}) => {
|
|
15
|
-
let setJsxNode = void 0;
|
|
16
|
-
if (Object.keys(options).length > 0) console.warn("createRoot options are not supported yet");
|
|
17
|
-
return {
|
|
18
|
-
render(jsxNode) {
|
|
19
|
-
if (setJsxNode === null) throw new Error("Cannot update an unmounted root");
|
|
20
|
-
if (setJsxNode) setJsxNode(jsxNode);
|
|
21
|
-
else require_jsx_dom_render.renderNode(require_jsx_dom_render.buildNode({
|
|
22
|
-
tag: () => {
|
|
23
|
-
const [_jsxNode, _setJsxNode] = require_jsx_hooks_index.useState(jsxNode);
|
|
24
|
-
setJsxNode = _setJsxNode;
|
|
25
|
-
return _jsxNode;
|
|
26
|
-
},
|
|
27
|
-
props: {}
|
|
28
|
-
}), element);
|
|
29
|
-
},
|
|
30
|
-
unmount() {
|
|
31
|
-
setJsxNode?.(null);
|
|
32
|
-
setJsxNode = null;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Create a root object and hydrate app to the target element.
|
|
38
|
-
* In hono/jsx/dom, hydrate is equivalent to render.
|
|
39
|
-
* @param element Render target
|
|
40
|
-
* @param reactNode A JSXNode to render
|
|
41
|
-
* @param options Options for createRoot (not supported yet)
|
|
42
|
-
* @returns Root object has `render` and `unmount` methods
|
|
43
|
-
*/
|
|
44
|
-
const hydrateRoot = (element, reactNode, options = {}) => {
|
|
45
|
-
const root = createRoot(element, options);
|
|
46
|
-
root.render(reactNode);
|
|
47
|
-
return root;
|
|
48
|
-
};
|
|
49
|
-
var client_default = {
|
|
50
|
-
createRoot,
|
|
51
|
-
hydrateRoot
|
|
52
|
-
};
|
|
53
|
-
//#endregion
|
|
54
|
-
exports.createRoot = createRoot;
|
|
55
|
-
exports.default = client_default;
|
|
56
|
-
exports.hydrateRoot = hydrateRoot;
|