@demiurgejs/core 0.2.0-beta.2 → 0.2.0-beta.4

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 (232) hide show
  1. package/README.md +13 -11
  2. package/bin/demiurge.mjs +30 -12
  3. package/dist/adapter/testing.js.map +1 -1
  4. package/dist/browser/file-router.d.ts +388 -5
  5. package/dist/browser/file-router.d.ts.map +1 -1
  6. package/dist/browser/focus.d.ts +20 -0
  7. package/dist/browser/focus.d.ts.map +1 -0
  8. package/dist/browser/index.d.ts +7 -1
  9. package/dist/browser/index.d.ts.map +1 -1
  10. package/dist/browser/mutation-action.d.ts +81 -0
  11. package/dist/browser/mutation-action.d.ts.map +1 -0
  12. package/dist/chunks/document-shell-CpJnFtSC.js +36 -0
  13. package/dist/chunks/document-shell-CpJnFtSC.js.map +1 -0
  14. package/dist/chunks/env-startup-DOBYWlZD.js +257 -0
  15. package/dist/chunks/env-startup-DOBYWlZD.js.map +1 -0
  16. package/dist/chunks/{image-codec-BGTx_t5K.js → image-codec-BmzWnH6W.js} +2 -2
  17. package/dist/chunks/{image-codec-BGTx_t5K.js.map → image-codec-BmzWnH6W.js.map} +1 -1
  18. package/dist/chunks/{images-B9MqcjSA.js → images-BQ80950B.js} +99 -91
  19. package/dist/chunks/images-BQ80950B.js.map +1 -0
  20. package/dist/chunks/index-BVk9zWbe.js +832 -0
  21. package/dist/chunks/index-BVk9zWbe.js.map +1 -0
  22. package/dist/chunks/manifest-vO6c0G0W.js +19 -0
  23. package/dist/chunks/manifest-vO6c0G0W.js.map +1 -0
  24. package/dist/chunks/plugin-BQgMiHxa.js +1827 -0
  25. package/dist/chunks/plugin-BQgMiHxa.js.map +1 -0
  26. package/dist/chunks/session-store-ChModVcq.js +92 -0
  27. package/dist/chunks/session-store-ChModVcq.js.map +1 -0
  28. package/dist/chunks/static-files-ehaD1kE7.js +51 -0
  29. package/dist/chunks/static-files-ehaD1kE7.js.map +1 -0
  30. package/dist/chunks/{streaming-BQ1bykDo.js → streaming-BEbPN7Uk.js} +163 -163
  31. package/dist/chunks/streaming-BEbPN7Uk.js.map +1 -0
  32. package/dist/chunks/testing-DueXbMo4.js +4167 -0
  33. package/dist/chunks/testing-DueXbMo4.js.map +1 -0
  34. package/dist/chunks/vite-DO70kZA6.js +259 -0
  35. package/dist/chunks/vite-DO70kZA6.js.map +1 -0
  36. package/dist/cli.d.ts +17 -25
  37. package/dist/cli.d.ts.map +1 -1
  38. package/dist/cli.js +159 -124
  39. package/dist/cli.js.map +1 -1
  40. package/dist/config/define.d.ts +3 -0
  41. package/dist/config/define.d.ts.map +1 -0
  42. package/dist/config/index.d.ts +7 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/config/index.js +78 -0
  45. package/dist/config/index.js.map +1 -0
  46. package/dist/config/load.d.ts +12 -0
  47. package/dist/config/load.d.ts.map +1 -0
  48. package/dist/config/types.d.ts +64 -0
  49. package/dist/config/types.d.ts.map +1 -0
  50. package/dist/config/validate.d.ts +9 -0
  51. package/dist/config/validate.d.ts.map +1 -0
  52. package/dist/config/vite.d.ts +12 -0
  53. package/dist/config/vite.d.ts.map +1 -0
  54. package/dist/data/cache.d.ts +10 -0
  55. package/dist/data/cache.d.ts.map +1 -1
  56. package/dist/data/idempotency.d.ts.map +1 -1
  57. package/dist/data/index.d.ts +3 -1
  58. package/dist/data/index.d.ts.map +1 -1
  59. package/dist/data/testing.d.ts.map +1 -1
  60. package/dist/data/testing.js +94 -72
  61. package/dist/data/testing.js.map +1 -1
  62. package/dist/data/tiered.d.ts +7 -0
  63. package/dist/data/tiered.d.ts.map +1 -0
  64. package/dist/deployment/testing.d.ts +25 -0
  65. package/dist/deployment/testing.d.ts.map +1 -0
  66. package/dist/deployment/testing.js +171 -0
  67. package/dist/deployment/testing.js.map +1 -0
  68. package/dist/document/deferred-scripts.d.ts.map +1 -1
  69. package/dist/document/hydration.d.ts +9 -0
  70. package/dist/document/hydration.d.ts.map +1 -1
  71. package/dist/document/index.d.ts +5 -2
  72. package/dist/document/index.d.ts.map +1 -1
  73. package/dist/document/metadata.d.ts +8 -0
  74. package/dist/document/metadata.d.ts.map +1 -1
  75. package/dist/document/navigation.d.ts +28 -0
  76. package/dist/document/navigation.d.ts.map +1 -0
  77. package/dist/document/render.d.ts +3 -1
  78. package/dist/document/render.d.ts.map +1 -1
  79. package/dist/document/seo.d.ts.map +1 -1
  80. package/dist/document/trusted-types.d.ts +10 -0
  81. package/dist/document/trusted-types.d.ts.map +1 -0
  82. package/dist/edge/assets.d.ts.map +1 -1
  83. package/dist/edge/index.js +55 -73
  84. package/dist/edge/index.js.map +1 -1
  85. package/dist/index.d.ts +15 -13
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +2078 -573
  88. package/dist/index.js.map +1 -1
  89. package/dist/internal/testing.js +11 -11
  90. package/dist/kv/index.d.ts +4 -0
  91. package/dist/kv/index.d.ts.map +1 -1
  92. package/dist/kv/index.js +180 -60
  93. package/dist/kv/index.js.map +1 -1
  94. package/dist/kv/rate-limit-store.d.ts +8 -0
  95. package/dist/kv/rate-limit-store.d.ts.map +1 -0
  96. package/dist/kv/session-store.d.ts +20 -0
  97. package/dist/kv/session-store.d.ts.map +1 -0
  98. package/dist/kv/store.d.ts.map +1 -1
  99. package/dist/manifest.d.ts +10 -0
  100. package/dist/manifest.d.ts.map +1 -0
  101. package/dist/node/http.d.ts.map +1 -1
  102. package/dist/node/image.d.ts.map +1 -1
  103. package/dist/node/index.d.ts +3 -0
  104. package/dist/node/index.d.ts.map +1 -1
  105. package/dist/node/index.js +251 -178
  106. package/dist/node/index.js.map +1 -1
  107. package/dist/node/serve.d.ts +47 -0
  108. package/dist/node/serve.d.ts.map +1 -0
  109. package/dist/node/static.d.ts.map +1 -1
  110. package/dist/node/streaming.d.ts.map +1 -1
  111. package/dist/platform/fonts.d.ts.map +1 -1
  112. package/dist/platform/image-url.d.ts.map +1 -1
  113. package/dist/platform/images.d.ts.map +1 -1
  114. package/dist/platform/index.d.ts +5 -1
  115. package/dist/platform/index.d.ts.map +1 -1
  116. package/dist/platform/observability.d.ts +2 -1
  117. package/dist/platform/observability.d.ts.map +1 -1
  118. package/dist/platform/url.d.ts +19 -0
  119. package/dist/platform/url.d.ts.map +1 -0
  120. package/dist/platform/web-vitals-client.d.ts +32 -0
  121. package/dist/platform/web-vitals-client.d.ts.map +1 -0
  122. package/dist/platform/web-vitals.d.ts +78 -0
  123. package/dist/platform/web-vitals.d.ts.map +1 -0
  124. package/dist/redis/index.d.ts +4 -0
  125. package/dist/redis/index.d.ts.map +1 -1
  126. package/dist/redis/index.js +209 -54
  127. package/dist/redis/index.js.map +1 -1
  128. package/dist/redis/rate-limit-store.d.ts +8 -0
  129. package/dist/redis/rate-limit-store.d.ts.map +1 -0
  130. package/dist/redis/session-store.d.ts +9 -0
  131. package/dist/redis/session-store.d.ts.map +1 -0
  132. package/dist/redis/store.d.ts.map +1 -1
  133. package/dist/route/index.d.ts +2 -2
  134. package/dist/route/index.d.ts.map +1 -1
  135. package/dist/route/middleware.d.ts.map +1 -1
  136. package/dist/route/mutation.d.ts +97 -0
  137. package/dist/route/mutation.d.ts.map +1 -0
  138. package/dist/route/response.d.ts.map +1 -1
  139. package/dist/route/types.d.ts +6 -1
  140. package/dist/route/types.d.ts.map +1 -1
  141. package/dist/router/index.d.ts +1 -1
  142. package/dist/router/index.d.ts.map +1 -1
  143. package/dist/router/manifest.d.ts +9 -0
  144. package/dist/router/manifest.d.ts.map +1 -1
  145. package/dist/router/navigation-data.d.ts +9 -1
  146. package/dist/router/navigation-data.d.ts.map +1 -1
  147. package/dist/routing/generate.d.ts +3 -0
  148. package/dist/routing/generate.d.ts.map +1 -1
  149. package/dist/routing/index.d.ts +3 -1
  150. package/dist/routing/index.d.ts.map +1 -1
  151. package/dist/routing/locale.d.ts +43 -0
  152. package/dist/routing/locale.d.ts.map +1 -0
  153. package/dist/routing/types.d.ts +12 -0
  154. package/dist/routing/types.d.ts.map +1 -1
  155. package/dist/security/cookie-session.d.ts +43 -0
  156. package/dist/security/cookie-session.d.ts.map +1 -0
  157. package/dist/security/cookies.d.ts +26 -0
  158. package/dist/security/cookies.d.ts.map +1 -0
  159. package/dist/security/csrf.d.ts +1 -1
  160. package/dist/security/csrf.d.ts.map +1 -1
  161. package/dist/security/env-startup.d.ts +15 -0
  162. package/dist/security/env-startup.d.ts.map +1 -0
  163. package/dist/security/env.d.ts +25 -6
  164. package/dist/security/env.d.ts.map +1 -1
  165. package/dist/security/fetch-metadata.d.ts +29 -0
  166. package/dist/security/fetch-metadata.d.ts.map +1 -0
  167. package/dist/security/index.d.ts +14 -2
  168. package/dist/security/index.d.ts.map +1 -1
  169. package/dist/security/policy.d.ts.map +1 -1
  170. package/dist/security/rate-limit.d.ts +6 -3
  171. package/dist/security/rate-limit.d.ts.map +1 -1
  172. package/dist/security/report.d.ts.map +1 -1
  173. package/dist/security/request.d.ts.map +1 -1
  174. package/dist/security/session-manager.d.ts +32 -0
  175. package/dist/security/session-manager.d.ts.map +1 -0
  176. package/dist/security/session-store.d.ts +51 -0
  177. package/dist/security/session-store.d.ts.map +1 -0
  178. package/dist/security/testing.d.ts +10 -0
  179. package/dist/security/testing.d.ts.map +1 -0
  180. package/dist/security/testing.js +145 -0
  181. package/dist/security/testing.js.map +1 -0
  182. package/dist/security/types.d.ts +73 -3
  183. package/dist/security/types.d.ts.map +1 -1
  184. package/dist/server/document-shell.d.ts.map +1 -1
  185. package/dist/server/errors.d.ts +1 -0
  186. package/dist/server/errors.d.ts.map +1 -1
  187. package/dist/server/index.d.ts +2 -1
  188. package/dist/server/index.d.ts.map +1 -1
  189. package/dist/server/not-found.d.ts +1 -0
  190. package/dist/server/not-found.d.ts.map +1 -1
  191. package/dist/server/render-tree.d.ts.map +1 -1
  192. package/dist/server/request-handler.d.ts +10 -2
  193. package/dist/server/request-handler.d.ts.map +1 -1
  194. package/dist/server/request-metadata.d.ts +1 -0
  195. package/dist/server/request-metadata.d.ts.map +1 -1
  196. package/dist/server/ssr.d.ts +2 -0
  197. package/dist/server/ssr.d.ts.map +1 -1
  198. package/dist/static/index.d.ts +2 -0
  199. package/dist/static/index.d.ts.map +1 -1
  200. package/dist/static/index.js +380 -363
  201. package/dist/static/index.js.map +1 -1
  202. package/dist/static/preview.d.ts.map +1 -1
  203. package/dist/static/vercel.d.ts +11 -2
  204. package/dist/static/vercel.d.ts.map +1 -1
  205. package/dist/static-files.d.ts +12 -0
  206. package/dist/static-files.d.ts.map +1 -1
  207. package/dist/type-guards.d.ts +19 -0
  208. package/dist/type-guards.d.ts.map +1 -0
  209. package/dist/vite/env-boundary.d.ts +14 -0
  210. package/dist/vite/env-boundary.d.ts.map +1 -0
  211. package/dist/vite/index.d.ts +8 -3
  212. package/dist/vite/index.d.ts.map +1 -1
  213. package/dist/vite/index.js +22 -1196
  214. package/dist/vite/index.js.map +1 -1
  215. package/dist/vite/plugin.d.ts +8 -1
  216. package/dist/vite/plugin.d.ts.map +1 -1
  217. package/dist/vite/policy-verification.d.ts.map +1 -1
  218. package/dist/vite/route-audit.d.ts +50 -0
  219. package/dist/vite/route-audit.d.ts.map +1 -0
  220. package/package.json +19 -6
  221. package/dist/chunks/document-shell-D1xo6cEA.js +0 -35
  222. package/dist/chunks/document-shell-D1xo6cEA.js.map +0 -1
  223. package/dist/chunks/images-B9MqcjSA.js.map +0 -1
  224. package/dist/chunks/request-metadata-D5NrT8ks.js +0 -642
  225. package/dist/chunks/request-metadata-D5NrT8ks.js.map +0 -1
  226. package/dist/chunks/static-files-DUjHw-4H.js +0 -11
  227. package/dist/chunks/static-files-DUjHw-4H.js.map +0 -1
  228. package/dist/chunks/streaming-BQ1bykDo.js.map +0 -1
  229. package/dist/chunks/testing-B_iMFYz_.js +0 -3321
  230. package/dist/chunks/testing-B_iMFYz_.js.map +0 -1
  231. package/dist/route/action.d.ts +0 -33
  232. package/dist/route/action.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sources":["../../src/deployment/testing.ts"],"sourcesContent":["// A deployment conformance kit proves the provider translation and the\n// production artifact, not the framework. The adapter contract in\n// `../adapter/testing` proves an adapter's in-process behavior against a\n// `Request`/`Response` pair it controls. A deployment sits one layer further\n// out: a real process, behind a real provider, answering real HTTP. The\n// probes here run against a live origin, and each one proves one behavior a\n// deployment integration can claim to support.\n//\n// Every integration selects only the probes that its execution model\n// supports. A process runtime can prove `readiness`. A platform that recycles\n// instances between requests cannot. The claims map keeps that selection\n// honest the same way the adapter contract does. A probe with no matching\n// claim, or a claim with no matching probe, fails the suite.\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type DeploymentCapability =\n | \"clientAddress\"\n | \"readiness\"\n | \"repeatedHeaders\"\n | \"requestUrl\"\n | \"securityHeaders\"\n | \"sharedCache\"\n | \"staticAssets\"\n | \"streaming\";\n\nexport type DeploymentClaims = Record<DeploymentCapability, boolean>;\n\nexport type DeploymentReadinessHost = {\n afterShutdown: () => MaybePromise<Response>;\n ready: () => MaybePromise<Response>;\n shutdown: () => MaybePromise<void>;\n};\n\nexport type DeploymentSharedCacheHost = {\n readFromPeer: (key: string) => MaybePromise<Response>;\n writeFromOrigin: (key: string, value: string) => MaybePromise<Response>;\n};\n\n// One probe per capability. A probe reaches the deployment the way a real\n// client would, over the network, and the contract reads the result. Every\n// probe may be called more than once.\nexport type DeploymentContractProbes = {\n clientAddress?: (forwardedFor: string) => MaybePromise<Response>;\n readiness?: () => MaybePromise<DeploymentReadinessHost>;\n repeatedHeaders?: () => MaybePromise<Response>;\n requestUrl?: (pathname: string, search: string) => MaybePromise<Response>;\n securityHeaders?: () => MaybePromise<Response>;\n sharedCache?: () => MaybePromise<DeploymentSharedCacheHost>;\n staticAssets?: () => MaybePromise<Response>;\n streaming?: () => MaybePromise<Response>;\n};\n\nconst contractCapabilities = [\n \"clientAddress\",\n \"readiness\",\n \"repeatedHeaders\",\n \"requestUrl\",\n \"securityHeaders\",\n \"sharedCache\",\n \"staticAssets\",\n \"streaming\",\n] as const satisfies readonly DeploymentCapability[];\n\nconst noncePattern = /'nonce-([^']+)'/;\n\nexport async function verifyDeploymentContract(\n claims: DeploymentClaims,\n probes: DeploymentContractProbes,\n) {\n for (const capability of contractCapabilities) {\n const declared = claims[capability];\n const probe = probes[capability];\n\n assert(\n typeof declared === \"boolean\",\n `a deployment must declare capability \"${capability}\" as a boolean`,\n );\n assert(\n !declared || Boolean(probe),\n `capability \"${capability}\" is declared true and needs a probe that proves it`,\n );\n assert(\n declared || !probe,\n `capability \"${capability}\" has a probe but the deployment declares it false`,\n );\n }\n\n if (probes.requestUrl) {\n await verifyRequestUrlContract(probes.requestUrl);\n }\n\n if (probes.clientAddress) {\n await verifyClientAddressContract(probes.clientAddress);\n }\n\n if (probes.streaming) {\n await verifyStreamingContract(probes.streaming);\n }\n\n if (probes.repeatedHeaders) {\n await verifyRepeatedHeadersContract(probes.repeatedHeaders);\n }\n\n if (probes.staticAssets) {\n await verifyStaticAssetsContract(probes.staticAssets);\n }\n\n if (probes.securityHeaders) {\n await verifySecurityHeadersContract(probes.securityHeaders);\n }\n\n if (probes.sharedCache) {\n await verifySharedCacheContract(probes.sharedCache);\n }\n\n if (probes.readiness) {\n await verifyReadinessContract(probes.readiness);\n }\n}\n\n// A provider sits in front of the process and rewrites the request before\n// the application ever sees it. The pathname and query string the\n// application reports back must be the ones the client asked for. Not an\n// internal rewrite target, a proxy's own path, or a stale default.\nasync function verifyRequestUrlContract(\n probe: NonNullable<DeploymentContractProbes[\"requestUrl\"]>,\n) {\n const pathname = \"/deployment-contract/request-url-probe\";\n const search = `?probe=${Date.now()}`;\n const response = await probe(pathname, search);\n const reported = await readJson(response, \"the request-url probe\");\n\n assert(\n reported.pathname === pathname,\n `the deployment must report the client's request pathname, and it reported ${JSON.stringify(reported.pathname)} instead of ${JSON.stringify(pathname)}`,\n );\n assert(\n reported.search === search,\n `the deployment must report the client's request query string, and it reported ${JSON.stringify(reported.search)} instead of ${JSON.stringify(search)}`,\n );\n}\n\n// A provider terminates the client's TCP connection and forwards the request\n// over its own connection to the process. Without a forwarded-header\n// translation, every request would appear to originate from the provider\n// itself instead of the client that sent it.\nasync function verifyClientAddressContract(\n probe: NonNullable<DeploymentContractProbes[\"clientAddress\"]>,\n) {\n const first = `203.0.113.${1 + Math.floor(Math.random() * 200)}`;\n const second = `198.51.100.${1 + Math.floor(Math.random() * 200)}`;\n const firstReported = await readJson(await probe(first), \"the client-address probe\");\n const secondReported = await readJson(await probe(second), \"the client-address probe\");\n\n assert(\n firstReported.address === first,\n `the deployment must translate the forwarded client address, and it reported ${JSON.stringify(firstReported.address)} instead of ${JSON.stringify(first)}`,\n );\n assert(\n secondReported.address === second,\n `the deployment must translate the forwarded client address, and it reported ${JSON.stringify(secondReported.address)} instead of ${JSON.stringify(second)}`,\n );\n}\n\n// A streamed body reaches the client before the render finishes, so it\n// arrives as more than one chunk. A provider that buffers the whole response\n// before forwarding it fails this, even when the application itself streams.\nasync function verifyStreamingContract(\n probe: NonNullable<DeploymentContractProbes[\"streaming\"]>,\n) {\n const response = await probe();\n\n assert(\n Boolean(response.body),\n \"a streaming response must expose a readable body stream\",\n );\n\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n let chunks = 0;\n let body = \"\";\n\n while (true) {\n const chunk = await reader.read();\n\n if (chunk.done) {\n break;\n }\n\n chunks += 1;\n body += decoder.decode(chunk.value, { stream: true });\n }\n\n body += decoder.decode();\n\n assert(body.length > 0, \"a streaming response must deliver a body\");\n assert(\n chunks > 1,\n \"a streaming response must deliver its body in more than one chunk\",\n );\n\n const cancelled = await probe();\n\n try {\n await cancelled.body?.cancel();\n } catch (error) {\n throw contractError(\n `a streaming response body must accept cancellation, and it failed with ${describe(error)}`,\n );\n }\n}\n\n// A provider that folds multiple response headers of the same name into one\n// comma-joined value corrupts `Set-Cookie`. It is defined to never combine\n// that way. This probe proves the deployment forwards repeated headers as\n// distinct values instead of merging them.\nasync function verifyRepeatedHeadersContract(\n probe: NonNullable<DeploymentContractProbes[\"repeatedHeaders\"]>,\n) {\n const response = await probe();\n const cookies = typeof response.headers.getSetCookie === \"function\"\n ? response.headers.getSetCookie()\n : [];\n\n assert(\n cookies.length >= 2,\n `a deployment must forward every Set-Cookie header as a distinct value, and it reported ${cookies.length}`,\n );\n\n const names = cookies.map((cookie) => cookie.split(\"=\")[0]);\n\n assert(\n new Set(names).size === names.length,\n \"a deployment must forward every declared cookie without dropping or duplicating one\",\n );\n}\n\n// A static asset served through the production artifact must stay byte\n// identical across requests and carry the long-lived, immutable cache header\n// a fingerprinted filename promises. A provider that regenerates or\n// revalidates the asset on every request breaks that promise even when the\n// bytes still match.\nasync function verifyStaticAssetsContract(\n probe: NonNullable<DeploymentContractProbes[\"staticAssets\"]>,\n) {\n const first = await probe();\n\n assert(first.ok, `a static asset request must succeed, and it returned ${first.status}`);\n\n const cacheControl = (first.headers.get(\"cache-control\") ?? \"\").toLowerCase();\n\n assert(\n cacheControl.includes(\"immutable\") && cacheControl.includes(\"max-age\"),\n `a fingerprinted static asset must carry an immutable, long-lived cache-control header, and it carried ${JSON.stringify(cacheControl)}`,\n );\n\n const firstBody = await first.text();\n const second = await probe();\n const secondBody = await second.text();\n\n assert(\n firstBody === secondBody,\n \"a repeated static asset request must return the same bytes\",\n );\n}\n\n// A nonce is single use. Two responses cannot share one, and the document\n// must carry the value the header declares. Security headers that protect\n// against framing or MIME sniffing must survive the trip through the\n// provider unchanged.\nasync function verifySecurityHeadersContract(\n probe: NonNullable<DeploymentContractProbes[\"securityHeaders\"]>,\n) {\n const first = await probe();\n const second = await probe();\n const firstNonce = readCspNonce(first);\n const secondNonce = readCspNonce(second);\n\n assert(\n Boolean(firstNonce),\n \"a security-headers response must declare a content-security-policy nonce source\",\n );\n assert(\n Boolean(secondNonce) && secondNonce !== firstNonce,\n \"every response must carry a freshly generated nonce\",\n );\n\n const document = await first.text();\n\n assert(\n document.includes(`nonce=\"${firstNonce}\"`),\n \"the rendered document must carry the nonce its header declares\",\n );\n await second.body?.cancel();\n\n assert(\n (first.headers.get(\"x-content-type-options\") ?? \"\").toLowerCase() === \"nosniff\",\n \"a security-headers response must carry x-content-type-options nosniff\",\n );\n}\n\n// A cache is shared, not per instance, when a write on one instance is\n// visible from another. This is the one probe in the suite that reaches two\n// separate connections into the deployment. It is the only behavior a\n// single connection cannot distinguish from an in-process cache.\nasync function verifySharedCacheContract(\n probe: NonNullable<DeploymentContractProbes[\"sharedCache\"]>,\n) {\n const host = await probe();\n const key = `deployment-contract-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n const value = `shared-cache-probe-${Math.random().toString(36).slice(2)}`;\n\n const write = await host.writeFromOrigin(key, value);\n\n assert(\n write.ok,\n `writing to the shared cache must succeed, and it returned ${write.status}`,\n );\n\n const read = await host.readFromPeer(key);\n const readBody = await read.text();\n\n assert(\n read.ok,\n `reading the shared cache from a peer instance must succeed, and it returned ${read.status}`,\n );\n assert(\n readBody === value,\n `a value written to the shared cache must be visible from another instance, and it read ${JSON.stringify(readBody)} instead of ${JSON.stringify(value)}`,\n );\n}\n\n// Readiness and graceful shutdown apply only to a process runtime, one that\n// keeps running between requests and can be told to drain. Shutdown must\n// stop accepting new traffic and the readiness probe must reflect that\n// before the process exits.\nasync function verifyReadinessContract(\n probe: NonNullable<DeploymentContractProbes[\"readiness\"]>,\n) {\n const host = await probe();\n const ready = await host.ready();\n\n assert(\n ready.ok,\n `the readiness probe must succeed before shutdown, and it returned ${ready.status}`,\n );\n\n await host.shutdown();\n await host.shutdown();\n\n const afterShutdown = await host.afterShutdown();\n\n assert(\n !afterShutdown.ok,\n `the readiness probe must stop reporting ready once shutdown starts, and it returned ${afterShutdown.status}`,\n );\n}\n\nasync function readJson(response: Response, requirement: string) {\n try {\n // TYPE-EVIDENCE: json() returns unknown. The contract only reads string fields it names itself, and the assertions below fail loudly for a missing or wrong-typed field.\n return (await response.json()) as Record<string, string>;\n } catch (error) {\n throw contractError(\n `${requirement} must return a JSON body, and it failed with ${describe(error)}`,\n );\n }\n}\n\nfunction readCspNonce(response: Response) {\n const csp = response.headers.get(\"content-security-policy\") ?? \"\";\n\n return noncePattern.exec(csp)?.[1];\n}\n\nfunction describe(error: unknown) {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction assert(condition: boolean, requirement: string): asserts condition {\n if (!condition) {\n throw contractError(requirement);\n }\n}\n\nfunction contractError(requirement: string) {\n return new Error(`Deployment contract failed: ${requirement}.`);\n}\n"],"names":["contractCapabilities","noncePattern","verifyDeploymentContract","claims","probes","capability","declared","probe","assert","verifyRequestUrlContract","verifyClientAddressContract","verifyStreamingContract","verifyRepeatedHeadersContract","verifyStaticAssetsContract","verifySecurityHeadersContract","verifySharedCacheContract","verifyReadinessContract","pathname","search","response","reported","readJson","first","second","firstReported","secondReported","reader","decoder","chunks","body","chunk","cancelled","error","contractError","describe","cookies","names","cookie","cacheControl","firstBody","secondBody","firstNonce","readCspNonce","secondNonce","document","host","key","value","write","read","readBody","ready","afterShutdown","requirement","csp","condition"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-scripts.d.ts","sourceRoot":"","sources":["../../src/document/deferred-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAMhD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAChE,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AACxE,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,iCAAiC,CAAC;AAehF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAIvD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,sBAAsB,CAEpC;AAID,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,QA2BrD;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,sBAE1C"}
1
+ {"version":3,"file":"deferred-scripts.d.ts","sourceRoot":"","sources":["../../src/document/deferred-scripts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOhD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAChE,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AACxE,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,iCAAiC,CAAC;AAehF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAIvD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,cAAc,GACvB,QAAQ,IAAI,sBAAsB,CAEpC;AAID,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,QA2BrD;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,sBAE1C"}
@@ -1,12 +1,21 @@
1
+ import type { NavigationDocument } from "./navigation";
1
2
  export type InitialRouteData = {
2
3
  data?: unknown;
4
+ document?: NavigationDocument;
5
+ error?: {
6
+ detail?: string;
7
+ title?: string;
8
+ };
3
9
  hasData: boolean;
10
+ locale?: string;
4
11
  navigation?: "document";
12
+ url?: string;
5
13
  };
6
14
  export declare const HYDRATION_DATA_ELEMENT_ID = "__demiurge_data";
7
15
  export declare const HYDRATION_ROOT_ATTRIBUTE = "data-demiurge-hydrate";
8
16
  export declare const HYDRATION_FALLBACK_ATTRIBUTE = "data-demiurge-fallback";
9
17
  export declare function serializeInitialRouteData(data: unknown, options?: {
18
+ locale?: string;
10
19
  navigation?: "document";
11
20
  }): string;
12
21
  export declare function readInitialRouteData(source: Document): InitialRouteData | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/document/hydration.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAIhE,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AAErE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,UAAU,CAAA;CAAO,UAK1C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,gCAkBpD"}
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/document/hydration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAIhE,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AAErE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAO,UAK3D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,gCAoBpD"}
@@ -1,14 +1,17 @@
1
1
  export { HYDRATION_DATA_ELEMENT_ID, HYDRATION_FALLBACK_ATTRIBUTE, HYDRATION_ROOT_ATTRIBUTE, readInitialRouteData, serializeInitialRouteData, } from "./hydration";
2
2
  export { getScriptWorker, startDeferredScripts, } from "./deferred-scripts";
3
3
  export { defineLinks, modulePreload, preconnect, preload, resolveLinks, } from "./links";
4
- export { defineMetadata, link, meta, resolveMetadata, structuredData, } from "./metadata";
4
+ export { defineMetadata, applyLocalizedMetadata, link, meta, resolveMetadata, structuredData, } from "./metadata";
5
+ export { applyNavigationDocument, createNavigationDocument, DOCUMENT_CONTRIBUTION_ATTRIBUTE, DOCUMENT_SCRIPT_STRATEGY_ATTRIBUTE, NAVIGATION_STATUS_ATTRIBUTE, NAVIGATION_STATUS_ID, announceNavigation, ensureNavigationStatusRegion, } from "./navigation";
5
6
  export { renderDocument, } from "./render";
6
7
  export { defineScripts, Script, resolveScripts, script, } from "./scripts";
8
+ export { createFrameworkScriptUrl, FRAMEWORK_TRUSTED_TYPES_POLICY, } from "./trusted-types";
7
9
  export { defineOgImage, defineRobots, defineSitemap, renderOgImageResponse, renderOgImageSvg, renderRobots, renderSitemap, } from "./seo";
8
10
  export type { DeferredScriptStrategy } from "./deferred-scripts";
9
11
  export type { InitialRouteData } from "./hydration";
10
12
  export type { LinkContribution, PreconnectOptions, PreloadOptions, } from "./links";
11
- export type { DocumentMetadataTag, LinkTag, Metadata, MetadataTitle, MetaTag, OpenGraphMetadata, ResolvedMetadata, RobotsMetadata, StructuredDataTag, StructuredDataValue, } from "./metadata";
13
+ export type { DocumentMetadataTag, LocalizedMetadataAlternate, LinkTag, Metadata, MetadataTitle, MetaTag, OpenGraphMetadata, ResolvedMetadata, RobotsMetadata, StructuredDataTag, StructuredDataValue, } from "./metadata";
14
+ export type { NavigationDocument, NavigationScriptTag, } from "./navigation";
12
15
  export type { DocumentBody, RenderDocumentOptions, } from "./render";
13
16
  export type { ScriptContribution, ScriptCspNeeds, ScriptProps, ScriptStrategy, ScriptTag, } from "./scripts";
14
17
  export type { OgImage, Robots, RobotsDirective, Sitemap, SitemapAlternate, SitemapChangeFrequency, SitemapEntry, } from "./seo";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,aAAa,EACb,MAAM,EACN,cAAc,EACd,MAAM,GACP,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,mBAAmB,EACnB,OAAO,EACP,QAAQ,EACR,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,OAAO,EACP,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACb,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,kCAAkC,EAClC,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,aAAa,EACb,MAAM,EACN,cAAc,EACd,MAAM,GACP,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,YAAY,EACZ,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,OAAO,EACP,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACb,MAAM,OAAO,CAAC"}
@@ -54,6 +54,14 @@ export type ResolvedMetadata = {
54
54
  title?: string;
55
55
  viewport: "width=device-width, initial-scale=1";
56
56
  };
57
+ export type LocalizedMetadataAlternate = {
58
+ href: string;
59
+ hrefLang: string;
60
+ };
61
+ export declare function applyLocalizedMetadata(metadata: ResolvedMetadata, options: {
62
+ alternates: readonly LocalizedMetadataAlternate[];
63
+ canonical: string;
64
+ }): ResolvedMetadata;
57
65
  export declare function defineMetadata(metadata: Metadata): Metadata;
58
66
  export declare function meta(tag: Omit<MetaTag, "kind">): MetaTag;
59
67
  export declare function link(tag: Omit<LinkTag, "kind">): LinkTag;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/document/metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,MAAM,GACN;IACE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC,CAAC;AAEN,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,IAAI,GACJ,MAAM,GACN,MAAM,GACN,SAAS,mBAAmB,EAAE,GAC9B;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,mBAAmB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,qCAAqC,CAAC;CACjD,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,YAEhD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAKxD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAKxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,iBAAiB,CAK5E;AAED,wBAAgB,eAAe,CAC7B,GAAG,eAAe,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC,GACtD,gBAAgB,CA6BlB"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/document/metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { LinkTag, ResolvedMetadata } from "./metadata";
2
+ import type { ScriptTag } from "./scripts";
3
+ export declare const DOCUMENT_CONTRIBUTION_ATTRIBUTE = "data-demiurge-document-contribution";
4
+ export declare const DOCUMENT_SCRIPT_STRATEGY_ATTRIBUTE = "data-demiurge-script-strategy";
5
+ export declare const NAVIGATION_STATUS_ATTRIBUTE = "data-demiurge-navigation-status";
6
+ export declare const NAVIGATION_STATUS_ID = "__demiurge_navigation_status";
7
+ export declare const NAVIGATION_STATUS_STYLE_ATTRIBUTE = "data-demiurge-navigation-status-style";
8
+ export declare function ensureNavigationStatusRegion(target?: Document): HTMLElement | null | undefined;
9
+ export declare function announceNavigation(message: string, target?: Document): void;
10
+ export type NavigationScriptTag = Pick<ScriptTag, "async" | "crossOrigin" | "dataApi" | "dataDomain" | "defer" | "id" | "integrity" | "kind" | "referrerPolicy" | "src" | "strategy" | "type">;
11
+ export type NavigationDocument = {
12
+ dir?: "ltr" | "rtl";
13
+ lang?: string;
14
+ links: LinkTag[];
15
+ metadata: ResolvedMetadata;
16
+ scripts: NavigationScriptTag[];
17
+ title: string;
18
+ };
19
+ export declare function createNavigationDocument(options: {
20
+ dir?: "ltr" | "rtl";
21
+ lang?: string;
22
+ links?: readonly LinkTag[];
23
+ metadata: ResolvedMetadata;
24
+ scripts?: readonly ScriptTag[];
25
+ title?: string;
26
+ }): NavigationDocument;
27
+ export declare function applyNavigationDocument(contribution: NavigationDocument, target?: Document): void;
28
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/document/navigation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3D,eAAO,MAAM,+BAA+B,wCACL,CAAC;AACxC,eAAO,MAAM,kCAAkC,kCACd,CAAC;AAClC,eAAO,MAAM,2BAA2B,oCAAoC,CAAC;AAC7E,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AACnE,eAAO,MAAM,iCAAiC,0CAA0C,CAAC;AAIzF,wBAAgB,4BAA4B,CAAC,MAAM,CAAC,EAAE,QAAQ,kCAsB7D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,QAMpE;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,SAAS,EACP,OAAO,GACP,aAAa,GACb,SAAS,GACT,YAAY,GACZ,OAAO,GACP,IAAI,GACJ,WAAW,GACX,MAAM,GACN,gBAAgB,GAChB,KAAK,GACL,UAAU,GACV,MAAM,CACT,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAChD,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,kBAAkB,CASrB;AAmBD,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,kBAAkB,EAChC,MAAM,CAAC,EAAE,QAAQ,QA0BlB"}
@@ -5,10 +5,12 @@ export type DocumentBody = {
5
5
  data: unknown;
6
6
  fallback?: "not-found";
7
7
  html: string;
8
+ locale?: string;
8
9
  navigation?: "document";
9
10
  };
10
11
  export type RenderDocumentOptions = {
11
12
  body?: DocumentBody;
13
+ dir?: "ltr" | "rtl";
12
14
  entrySrc?: string;
13
15
  lang?: string;
14
16
  links?: LinkTag[];
@@ -22,7 +24,7 @@ export type RenderDocumentShellOptions = Omit<RenderDocumentOptions, "body"> & {
22
24
  body: Omit<DocumentBody, "html">;
23
25
  };
24
26
  export declare function renderDocument(options: RenderDocumentOptions): string;
25
- export declare function renderDocumentShell({ body, entrySrc, lang, links, metadata, nonce, scripts, styles, title, }: RenderDocumentShellOptions): {
27
+ export declare function renderDocumentShell({ body, dir, entrySrc, lang, links, metadata, nonce, scripts, styles, title, }: RenderDocumentShellOptions): {
26
28
  prefix: string;
27
29
  suffix: string;
28
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/document/render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,OAAO,EACP,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE5D,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG;IAC7E,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,UAS5D;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,EACR,IAAW,EACX,KAAU,EACV,QAAQ,EACR,KAAK,EACL,OAAY,EACZ,MAAW,EACX,KAAsB,GACvB,EAAE,0BAA0B;;;EAwB5B"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/document/render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,OAAO,EACP,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAS5D,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG;IAC7E,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,UAS5D;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,IAAW,EACX,KAAU,EACV,QAAQ,EACR,KAAK,EACL,OAAY,EACZ,MAAW,EACX,KAAsB,GACvB,EAAE,0BAA0B;;;EAyB5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/document/seo.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,YAAY,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACtC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAIvE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,UAU7C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,UA4B1C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,UAuB9C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,YAOnD"}
1
+ {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/document/seo.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,YAAY,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACtC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAOvE;AAsCD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,UAU7C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,UA4B1C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,UAuB9C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,YAOnD"}
@@ -0,0 +1,10 @@
1
+ export declare const FRAMEWORK_TRUSTED_TYPES_POLICY = "demiurge";
2
+ /**
3
+ * Returns a value the framework can assign to a Trusted Types script sink.
4
+ *
5
+ * If the browser supports Trusted Types, the value is a TrustedScriptURL from
6
+ * the framework-owned `demiurge` policy. If the browser does not support
7
+ * Trusted Types, the value is the original string.
8
+ */
9
+ export declare function createFrameworkScriptUrl(view: (Window & typeof globalThis) | null | undefined, url: string): string;
10
+ //# sourceMappingURL=trusted-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trusted-types.d.ts","sourceRoot":"","sources":["../../src/document/trusted-types.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,8BAA8B,aAAa,CAAC;AAoBzD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,CAAC,MAAM,GAAG,OAAO,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,EACrD,GAAG,EAAE,MAAM,UAGZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/edge/assets.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAE9E,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAqCF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAyDlB"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/edge/assets.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAE9E,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAiBF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAyDlB"}
@@ -1,53 +1,35 @@
1
- import { a as p, c as w, b as E, d as y, s as b } from "../chunks/request-metadata-D5NrT8ks.js";
2
- import { c as S } from "../chunks/testing-B_iMFYz_.js";
1
+ import { a as E, c as p, b as y, d as w, s as S } from "../chunks/index-BVk9zWbe.js";
2
+ import { c as b } from "../chunks/testing-DueXbMo4.js";
3
3
  import { renderToReadableStream as R } from "react-dom/server";
4
4
  import "react";
5
5
  import "react/jsx-runtime";
6
- import { i as v, I as L, R as A } from "../chunks/static-files-DUjHw-4H.js";
7
- import { c as T } from "../chunks/document-shell-D1xo6cEA.js";
8
- const x = {
9
- ".avif": "image/avif",
10
- ".css": "text/css; charset=utf-8",
11
- ".gif": "image/gif",
12
- ".html": "text/html; charset=utf-8",
13
- ".ico": "image/x-icon",
14
- ".jpeg": "image/jpeg",
15
- ".jpg": "image/jpeg",
16
- ".js": "text/javascript; charset=utf-8",
17
- ".json": "application/json; charset=utf-8",
18
- ".mjs": "text/javascript; charset=utf-8",
19
- ".png": "image/png",
20
- ".svg": "image/svg+xml",
21
- ".txt": "text/plain; charset=utf-8",
22
- ".webmanifest": "application/manifest+json",
23
- ".webp": "image/webp",
24
- ".woff": "font/woff",
25
- ".woff2": "font/woff2"
26
- }, P = /* @__PURE__ */ new Set([
6
+ import { i as L, I as v, R as A, c as T } from "../chunks/static-files-ehaD1kE7.js";
7
+ import { c as P } from "../chunks/document-shell-CpJnFtSC.js";
8
+ const C = /* @__PURE__ */ new Set([
27
9
  "/demiurge-manifest.json",
28
10
  "/index.html"
29
11
  ]);
30
- function C(e) {
31
- const t = e.immutable ?? v, r = H(e.prefix), i = /* @__PURE__ */ new Map();
12
+ function O(e) {
13
+ const t = e.immutable ?? L, r = M(e.prefix), c = /* @__PURE__ */ new Map();
32
14
  for (const [o, n] of Object.entries(e.assets)) {
33
- const a = m(o);
34
- if (P.has(a))
15
+ const a = h(o);
16
+ if (C.has(a))
35
17
  continue;
36
- const s = I(n.body);
37
- i.set(a, {
18
+ const s = x(n.body);
19
+ c.set(a, {
38
20
  body: s,
39
- cacheControl: n.immutable ?? t(h(a)) ? L : A,
40
- contentType: n.contentType ?? M(a),
41
- etag: j(s)
21
+ cacheControl: n.immutable ?? t(m(a)) ? v : A,
22
+ contentType: n.contentType ?? N(a),
23
+ etag: D(s)
42
24
  });
43
25
  }
44
26
  return async function(n) {
45
27
  if (n.method !== "GET" && n.method !== "HEAD")
46
28
  return null;
47
- const a = D(r, new URL(n.url).pathname), s = a === null ? void 0 : i.get(a);
29
+ const a = I(r, new URL(n.url).pathname), s = a === null ? void 0 : c.get(a);
48
30
  if (!s)
49
31
  return null;
50
- const c = new Headers({
32
+ const i = new Headers({
51
33
  "cache-control": s.cacheControl,
52
34
  "content-length": String(s.body.byteLength),
53
35
  "content-type": s.contentType,
@@ -55,25 +37,25 @@ function C(e) {
55
37
  etag: s.etag,
56
38
  "x-content-type-options": "nosniff"
57
39
  });
58
- return O(n, s.etag) ? (c.delete("content-length"), c.delete("content-type"), new Response(null, { headers: c, status: 304 })) : n.method === "HEAD" ? new Response(null, { headers: c }) : new Response(s.body, { headers: c });
40
+ return H(n, s.etag) ? (i.delete("content-length"), i.delete("content-type"), new Response(null, { headers: i, status: 304 })) : n.method === "HEAD" ? new Response(null, { headers: i }) : new Response(s.body, { headers: i });
59
41
  };
60
42
  }
61
- function j(e) {
43
+ function D(e) {
62
44
  let t = 2166136261;
63
45
  for (const r of e)
64
46
  t = Math.imul(t ^ r, 16777619) >>> 0;
65
47
  return `W/"${e.byteLength.toString(16)}-${t.toString(16)}"`;
66
48
  }
67
- function O(e, t) {
49
+ function H(e, t) {
68
50
  const r = e.headers.get("if-none-match");
69
51
  return r === null ? !1 : r.trim() === "*" || r.split(",").some(
70
- (i) => f(i) === f(t)
52
+ (c) => f(c) === f(t)
71
53
  );
72
54
  }
73
55
  function f(e) {
74
56
  return e.trim().replace(/^W\//i, "");
75
57
  }
76
- function D(e, t) {
58
+ function I(e, t) {
77
59
  let r;
78
60
  try {
79
61
  r = decodeURIComponent(t);
@@ -85,34 +67,34 @@ function D(e, t) {
85
67
  return null;
86
68
  r = r.slice(e.length - 1);
87
69
  }
88
- return m(r);
70
+ return h(r);
89
71
  }
90
- function m(e) {
72
+ function h(e) {
91
73
  return e.startsWith("/") ? e : `/${e}`;
92
74
  }
93
- function H(e) {
75
+ function M(e) {
94
76
  return !e || e === "/" ? "" : `/${e.replace(/^\/|\/$/g, "")}/`;
95
77
  }
96
- function I(e) {
78
+ function x(e) {
97
79
  if (typeof e == "string")
98
80
  return new TextEncoder().encode(e);
99
81
  const t = ArrayBuffer.isView(e) ? new Uint8Array(e.buffer, e.byteOffset, e.byteLength) : new Uint8Array(e), r = new Uint8Array(t.byteLength);
100
82
  return r.set(t), r;
101
83
  }
102
- function h(e) {
84
+ function m(e) {
103
85
  return e.slice(e.lastIndexOf("/") + 1);
104
86
  }
105
- function M(e) {
106
- const t = h(e), r = t.lastIndexOf("."), i = r === -1 ? "" : t.slice(r).toLowerCase();
107
- return x[i] ?? "application/octet-stream";
87
+ function N(e) {
88
+ const t = m(e), r = t.lastIndexOf("."), c = r === -1 ? "" : t.slice(r);
89
+ return T(c);
108
90
  }
109
- function N(e, t = {}) {
110
- return e.render.mode === "streaming" ? U(e, t) : p(e, t);
91
+ function U(e, t = {}) {
92
+ return e.render.mode === "streaming" ? _(e, t) : E(e, t);
111
93
  }
112
- async function U(e, t = {}) {
94
+ async function _(e, t = {}) {
113
95
  if (t.signal?.aborted)
114
96
  throw t.signal.reason;
115
- const r = w(e, t), i = E(e, r), o = new AbortController();
97
+ const r = p(e, t), c = y(e, r), o = new AbortController();
116
98
  let n = !1;
117
99
  const a = () => {
118
100
  o.abort(
@@ -122,7 +104,7 @@ async function U(e, t = {}) {
122
104
  t.signal?.addEventListener("abort", a, { once: !0 });
123
105
  let s;
124
106
  try {
125
- s = await R(i, {
107
+ s = await R(c, {
126
108
  nonce: t.nonce,
127
109
  onError(l) {
128
110
  n && !o.signal.aborted && t.onStreamError?.(l);
@@ -133,21 +115,21 @@ async function U(e, t = {}) {
133
115
  throw t.signal?.removeEventListener("abort", a), l;
134
116
  }
135
117
  s.allReady.catch(u);
136
- let c;
118
+ let i;
137
119
  try {
138
- c = await T(e, {
120
+ i = await P(e, {
139
121
  ...t,
140
122
  scripts: r.scripts()
141
123
  });
142
124
  } catch (l) {
143
125
  throw t.signal?.removeEventListener("abort", a), a(), await s.cancel().catch(u), l;
144
126
  }
145
- return r.flushHead(), n = !0, new Response(_(s, c, a), {
127
+ return r.flushHead(), n = !0, new Response(j(s, i, a), {
146
128
  headers: { "content-type": "text/html; charset=utf-8" }
147
129
  });
148
130
  }
149
- function _(e, t, r) {
150
- const i = new TextEncoder(), o = e.getReader();
131
+ function j(e, t, r) {
132
+ const c = new TextEncoder(), o = e.getReader();
151
133
  return new ReadableStream({
152
134
  async cancel(n) {
153
135
  r(), await o.cancel(n).catch(u);
@@ -161,13 +143,13 @@ function _(e, t, r) {
161
143
  return;
162
144
  }
163
145
  if (a.done) {
164
- n.enqueue(i.encode(t.suffix)), n.close();
146
+ n.enqueue(c.encode(t.suffix)), n.close();
165
147
  return;
166
148
  }
167
149
  n.enqueue(a.value);
168
150
  },
169
151
  start(n) {
170
- n.enqueue(i.encode(t.prefix));
152
+ n.enqueue(c.encode(t.prefix));
171
153
  }
172
154
  });
173
155
  }
@@ -200,18 +182,18 @@ function V() {
200
182
  }
201
183
  };
202
184
  }
203
- const B = y({
185
+ const B = w({
204
186
  name: "edge",
205
187
  capabilities: {
206
188
  crossOriginIsolationHeaders: !0,
207
189
  nonceInjection: !0,
208
190
  streaming: !0
209
191
  }
210
- }), d = "unavailable", W = {
192
+ }), d = "unavailable", F = {
211
193
  app: "demiurge-edge",
212
194
  environment: "unavailable",
213
195
  schemaVersion: 1
214
- }, z = [
196
+ }, W = [
215
197
  "GET",
216
198
  "POST",
217
199
  "PUT",
@@ -221,27 +203,27 @@ const B = y({
221
203
  "HEAD"
222
204
  ];
223
205
  function ne(e) {
224
- const t = F(e.cacheStore), r = G(e.rateLimitStore);
206
+ const t = z(e.cacheStore), r = G(e.rateLimitStore);
225
207
  e.rateLimitStore === d && e.routeModules && J(e.routeModules);
226
- const i = K(e.assets), o = S({
208
+ const c = K(e.assets), o = b({
227
209
  adapter: B,
228
210
  cacheStore: t,
229
211
  onError: e.onError,
230
212
  rateLimitStore: r,
231
- renderPage: e.renderPage ?? N,
213
+ renderPage: e.renderPage ?? U,
232
214
  routeModules: e.routeModules,
233
215
  routes: e.routes,
234
216
  ssr: e.ssr
235
217
  });
236
218
  return async function(a) {
237
219
  const s = e.clientIp?.(a);
238
- return s && b(a, { clientIp: s }), await i?.(a) ?? await o(a);
220
+ return s && S(a, { clientIp: s }), await c?.(a) ?? await o(a);
239
221
  };
240
222
  }
241
- function F(e) {
223
+ function z(e) {
242
224
  if (e === d)
243
225
  return {
244
- namespace: W,
226
+ namespace: F,
245
227
  store: q()
246
228
  };
247
229
  if (!e || typeof e.store != "object")
@@ -261,7 +243,7 @@ function G(e) {
261
243
  }
262
244
  function J(e) {
263
245
  for (const [t, r] of Object.entries(e))
264
- if (r.policy?.security?.rateLimit ?? z.map((o) => r[o]).find(
246
+ if (r.policy?.security?.rateLimit ?? W.map((o) => r[o]).find(
265
247
  (o) => o && o.kind !== "page" && o.security?.rateLimit
266
248
  ))
267
249
  throw new Error(
@@ -270,17 +252,17 @@ function J(e) {
270
252
  }
271
253
  function K(e) {
272
254
  if (e)
273
- return typeof e == "function" ? e : C(e);
255
+ return typeof e == "function" ? e : O(e);
274
256
  }
275
257
  export {
276
258
  d as EDGE_SHARED_STORE_UNAVAILABLE,
277
259
  g as EdgeSharedStoreError,
278
- C as createEdgeAssetHandler,
260
+ O as createEdgeAssetHandler,
279
261
  ne as createEdgeRequestHandler,
280
262
  q as createUnavailableCacheStore,
281
263
  V as createUnavailableRateLimitStore,
282
264
  B as edgeAdapter,
283
- N as renderEdgePageResponse,
284
- U as renderEdgeStreamingPageResponse
265
+ U as renderEdgePageResponse,
266
+ _ as renderEdgeStreamingPageResponse
285
267
  };
286
268
  //# sourceMappingURL=index.js.map