@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
@@ -1,19 +1,31 @@
1
1
  export { auditScriptDependencies, createSecurityAudit, } from "./audit";
2
2
  export { applyCorsHeaders, createCorsHeaders, createCorsPreflightResponse, validateCorsPolicy, } from "./cors";
3
+ export { createSecureCookie, readSecureCookie, secureCookieName, validateSecureCookie, } from "./cookies";
4
+ export type { CookieIssue, CookieIssueCode, CookieSameSite, CookieScope, SecureCookieDeclaration, SecureCookieDefinition, } from "./cookies";
5
+ export { createEncryptedCookieSession, createSignedCookieSession, } from "./cookie-session";
6
+ export type { CookieSession, CookieSessionCreateOptions, CookieSessionManager, CookieSessionOptions, SessionCookieDefinition, SessionCookieKey, } from "./cookie-session";
3
7
  export { createCsrfCookie, createCsrfToken, enforceCsrfProtection, issueCsrfToken, parseCookieHeader, } from "./csrf";
4
8
  export type { CsrfCookieOptions, IssuedCsrfToken } from "./csrf";
9
+ export { applyFetchMetadataVary, checkFetchMetadata, enforceFetchMetadataPolicy, } from "./fetch-metadata";
10
+ export type { FetchMetadataEnforcement } from "./fetch-metadata";
5
11
  export { EnvValidationError, defineEnvSchema, env, validateEnv, } from "./env";
12
+ export { deserializeEnvSchema, readEnv, resetEnvironment as unstable_resetEnvironment, serializeEnvSchema, startEnvironment as unstable_startEnvironment, } from "./env-startup";
13
+ export type { EnvStartupOptions, EnvStartupResult, } from "./env-startup";
6
14
  export { createSecurityHeaders, cspNonce, cspHash, defineRoutePolicy, defineSecurityPolicy, mergeRoutePolicies, mergeRouteSecurityPolicies, mergeSecurityPolicies, security, } from "./policy";
7
15
  export { createMemoryRateLimitStore, enforceRateLimit, parseRateLimitWindow, validateRateLimitPolicy, } from "./rate-limit";
16
+ export { createMemorySessionStore, parseSessionRecord, serializeSessionNamespace, } from "./session-store";
17
+ export { createSessionManager, SessionStoreConflictError, SessionStoreUnavailableError, } from "./session-manager";
18
+ export type { ServerSession, SessionManager, SessionManagerOptions, } from "./session-manager";
19
+ export type { MemorySessionStoreOptions, SessionData, SessionNamespace, SessionPrimitive, SessionRecord, SessionStore, SessionStoreCandidate, SessionStoreWriteResult, } from "./session-store";
8
20
  export { createSecurityReportHandler, } from "./report";
9
21
  export { enforceAllowedMethods, enforceRequestSecurity, parseBodySize, } from "./request";
10
22
  export { validateUploads, } from "./upload";
11
23
  export { validateRouteModules } from "./verification";
12
24
  export type { RouteModuleVerificationOptions } from "./verification";
13
25
  export { checkWebSocketOrigin, enforceWebSocketOrigin, } from "./websocket";
14
- export type { ContentSecurityPolicy, CorsPolicy, CorsRequestContext, CorsResponseOptions, CsrfPolicy, CspHashAlgorithm, CspDirectiveValue, CspDirectiveReplacement, CspSource, CspSourceDirective, MemoryRateLimitStoreOptions, RateLimitKey, RateLimitPolicy, RateLimitResult, RateLimitStore, ReferrerPolicy, ReportingEndpointUrl, ReportingEndpoints, SecurityAudit, SecurityAuditFinding, SecurityAuditOptions, ScriptDependencyAuditOptions, RequestSecurityPolicy, RoutePolicy, RouteSecurityNeeds, RouteSecurityPolicy, SecurityHeadersOptions, SecurityHeaderPolicy, SecurityPolicy, SecurityPreset, StrictTransportSecurityPolicy, TrustedTypesPolicy, } from "./types";
26
+ export type { ContentSecurityPolicy, CorsPolicy, CorsRequestContext, CorsResponseOptions, CsrfPolicy, CspHashAlgorithm, CspDirectiveValue, CspDirectiveReplacement, CspSource, CspSourceDirective, FetchMetadataCheck, FetchMetadataDestination, FetchMetadataPolicy, FetchMetadataPolicyOptions, FetchMetadataReason, MemoryRateLimitStoreOptions, RateLimitKey, RateLimitPolicy, RateLimitResult, RateLimitStore, ReferrerPolicy, ReportingEndpointUrl, ReportingEndpoints, SecurityAudit, SecurityAuditFinding, SecurityAuditOptions, ScriptDependencyAuditOptions, RequestSecurityPolicy, RoutePolicy, RouteSecurityNeeds, RouteSecurityPolicy, SecurityHeadersOptions, SecurityHeaderPolicy, SecurityPolicy, SecurityPreset, StrictTransportSecurityPolicy, TrustedTypesPolicy, } from "./types";
15
27
  export type { UploadFilePolicy, UploadPolicy, UploadValidationIssue, UploadValidationResult, } from "./upload";
16
- export type { EnvSchema, EnvSource, EnvValidationIssue, EnvVariable, InferEnvSchema, } from "./env";
28
+ export type { EnvSchema, EnvSchemaDescriptor, EnvSource, EnvValidationIssue, EnvVariable, EnvVariableDescriptor, EnvVariableKind, InferEnvSchema, } from "./env";
17
29
  export type { SecurityReportContext, SecurityReportHandlerOptions, SecurityReportPayload, } from "./report";
18
30
  export type { WebSocketOriginCheck, WebSocketOriginPolicy, } from "./websocket";
19
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,iBAAiB,GAClB,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,GAAG,EACH,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,QAAQ,GACT,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,qBAAqB,EACrB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,SAAS,EACT,kBAAkB,EAClB,2BAA2B,EAC3B,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,cAAc,GACf,MAAM,OAAO,CAAC;AACf,YAAY,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/security/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAGhB,WAAW,EAEX,mBAAmB,EACnB,sBAAsB,EAEtB,cAAc,EACd,cAAc,EAGf,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,QAAQ,mBAAmC,CAAC;AAyCzD,eAAO,MAAM,QAAQ;kBACN,cAAc;iBAQd,cAAc,YAAW,cAAc;qBAepC,cAAc;qBASd,cAAc;kCASD,cAAc;CAW5C,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,kBAE1D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,eAEpD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,GAAG,SAAS,CAAC,kBASvD;AAED,wBAAgB,kBAAkB,CAChC,GAAG,QAAQ,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC;;;EAiBpD;AAED,wBAAgB,0BAA0B,CACxC,GAAG,QAAQ,EAAE,KAAK,CAAC,mBAAmB,GAAG,KAAK,GAAG,SAAS,CAAC,uBAc5D;AAwFD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,gBAA2B,mBAQvC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,sBAA2B,WAsCrC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,cAAc,GAAG,KAAK,GAAG,SAAS,WAY3C;AAED,wBAAgB,cAAc,WAK7B"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/security/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAGhB,WAAW,EAEX,mBAAmB,EACnB,sBAAsB,EAEtB,cAAc,EACd,cAAc,EAGf,MAAM,SAAS,CAAC;AAKjB,eAAO,MAAM,QAAQ,mBAAmC,CAAC;AAyCzD,eAAO,MAAM,QAAQ;kBACN,cAAc;iBAQd,cAAc,YAAW,cAAc;qBAepC,cAAc;qBASd,cAAc;kCASD,cAAc;CAW5C,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,kBAE1D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,eAEpD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,GAAG,SAAS,CAAC,kBASvD;AAED,wBAAgB,kBAAkB,CAChC,GAAG,QAAQ,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC;;;EAiBpD;AAED,wBAAgB,0BAA0B,CACxC,GAAG,QAAQ,EAAE,KAAK,CAAC,mBAAmB,GAAG,KAAK,GAAG,SAAS,CAAC,uBAe5D;AAyFD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,gBAA2B,mBAQvC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,sBAA2B,WAsCrC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,cAAc,GAAG,KAAK,GAAG,SAAS,WAY3C;AAED,wBAAgB,cAAc,WAK7B"}
@@ -1,6 +1,9 @@
1
- import type { MemoryRateLimitStoreOptions, RateLimitPolicy, RateLimitStore } from "./types";
2
- export declare function createMemoryRateLimitStore(options?: MemoryRateLimitStoreOptions): RateLimitStore;
3
- export declare function enforceRateLimit(policy: RateLimitPolicy | undefined, request: Request, store: RateLimitStore, now?: number): Response | null;
1
+ import type { MemoryRateLimitStoreOptions, RateLimitPolicy, RateLimitResult, RateLimitStore } from "./types";
2
+ export type MemoryRateLimitStore = {
3
+ increment: (key: string, windowMs: number, now: number) => RateLimitResult;
4
+ };
5
+ export declare function createMemoryRateLimitStore(options?: MemoryRateLimitStoreOptions): MemoryRateLimitStore;
6
+ export declare function enforceRateLimit(policy: RateLimitPolicy | undefined, request: Request, store: RateLimitStore, now?: number): Promise<Response | null>;
4
7
  export declare function parseRateLimitWindow(value: number | string): number;
5
8
  export declare function validateRateLimitPolicy(policy: RateLimitPolicy): void;
6
9
  //# sourceMappingURL=rate-limit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/security/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAE3B,eAAe,EACf,cAAc,EACf,MAAM,SAAS,CAAC;AAgBjB,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,cAAc,CAwChB;AA+BD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,EACrB,GAAG,SAAa,mBA2BjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,UAwB1D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,QAM9D"}
1
+ {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/security/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAE3B,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,SAAS,CAAC;AAqBjB,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC;CAC5E,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CA6CtB;AA+BD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,EACrB,GAAG,SAAa,4BA2BjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,UAyB1D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,QAM9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/security/report.ts"],"names":[],"mappings":"AAMA,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE5C,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;IAC9D,QAAQ,CAAC,EAAE,CACT,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,qBAAqB,KAC3B,YAAY,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,4BAAiC,IAEC,SAAS,OAAO,uBAqD5D"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/security/report.ts"],"names":[],"mappings":"AAOA,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE5C,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;IAC9D,QAAQ,CAAC,EAAE,CACT,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,qBAAqB,KAC3B,YAAY,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,4BAAiC,IAEC,SAAS,OAAO,uBAqD5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/security/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAUrD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,mBAmCnB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;;CAKlD;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,OAAO,EAAE,OAAO,WAmDjB;AAED,wBAAgB,2BAA2B,aAE1C;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,MAAM,EAAE,UAAU,mBAgBnB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,UA0BnD"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/security/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAUrD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,mBAmCnB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;;CAKlD;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,OAAO,EAAE,OAAO,WAoDjB;AAED,wBAAgB,2BAA2B,aAE1C;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,MAAM,EAAE,UAAU,mBAgBnB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,UA2BnD"}
@@ -0,0 +1,32 @@
1
+ import type { CookieSessionCreateOptions, SessionCookieDefinition, SessionCookieKey } from "./cookie-session";
2
+ import type { SessionData, SessionRecord, SessionStore } from "./session-store";
3
+ export type SessionManagerOptions<TData extends SessionData> = {
4
+ absoluteExpirationMs?: number;
5
+ cookie?: SessionCookieDefinition;
6
+ idleExpirationMs?: false | number;
7
+ keys: readonly SessionCookieKey[];
8
+ now?: () => number;
9
+ randomBytes?: (length: number) => Uint8Array;
10
+ renewal?: boolean;
11
+ store: SessionStore<TData>;
12
+ };
13
+ export type ServerSession<TData extends SessionData> = {
14
+ commit: () => Promise<readonly string[]>;
15
+ create: (data: TData, options?: CookieSessionCreateOptions) => Promise<SessionRecord<TData>>;
16
+ destroy: () => Promise<void>;
17
+ get: () => SessionRecord<TData> | undefined;
18
+ rotate: (data?: TData) => Promise<SessionRecord<TData>>;
19
+ update: (data: TData) => Promise<SessionRecord<TData>>;
20
+ };
21
+ export type SessionManager<TData extends SessionData> = {
22
+ cookieName: string;
23
+ open: (request: Request) => Promise<ServerSession<TData>>;
24
+ };
25
+ export declare class SessionStoreConflictError extends Error {
26
+ constructor(operation: string);
27
+ }
28
+ export declare class SessionStoreUnavailableError extends Error {
29
+ constructor(operation: string);
30
+ }
31
+ export declare function createSessionManager<TData extends SessionData>(input: SessionManagerOptions<TData>): SessionManager<TData>;
32
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/security/session-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,YAAY,EAEb,MAAM,iBAAiB,CAAC;AAKzB,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,WAAW,IAAI;IAC7D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,gBAAgB,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAClC,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,WAAW,IAAI;IACrD,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,CACN,IAAI,EAAE,KAAK,EACX,OAAO,CAAC,EAAE,0BAA0B,KACjC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,GAAG,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAC5C,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,WAAW,IAAI;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;CAC3D,CAAC;AAEF,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,SAAS,EAAE,MAAM;CAM9B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,SAAS,EAAE,MAAM;CAM9B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,WAAW,EAC5D,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAClC,cAAc,CAAC,KAAK,CAAC,CAkKvB"}
@@ -0,0 +1,51 @@
1
+ export type SessionPrimitive = boolean | null | number | string;
2
+ export type SessionData = SessionPrimitive | {
3
+ readonly [key: string]: SessionData;
4
+ } | readonly SessionData[];
5
+ export type SessionNamespace = {
6
+ app: string;
7
+ environment: string;
8
+ schemaVersion: number | string;
9
+ };
10
+ export type SessionRecord<TData extends SessionData = SessionData> = {
11
+ createdAt: number;
12
+ data: TData;
13
+ expiresAt: number;
14
+ id: string;
15
+ idleExpiresAt?: number;
16
+ version: number;
17
+ };
18
+ export type SessionStoreCandidate<TData extends SessionData = SessionData> = Omit<SessionRecord<TData>, "version">;
19
+ export type SessionStoreWriteResult<TData extends SessionData = SessionData> = {
20
+ record: SessionRecord<TData>;
21
+ status: "stored";
22
+ } | {
23
+ status: "conflict";
24
+ } | {
25
+ status: "unavailable";
26
+ };
27
+ type MaybePromise<T> = T | Promise<T>;
28
+ export type SessionStore<TData extends SessionData = SessionData> = {
29
+ create: (candidate: SessionStoreCandidate<TData>) => MaybePromise<SessionStoreWriteResult<TData>>;
30
+ destroy: (id: string) => MaybePromise<boolean>;
31
+ read: (id: string, now: number) => MaybePromise<SessionRecord<TData> | undefined>;
32
+ rotate: (currentId: string, candidate: SessionStoreCandidate<TData>, expectedVersion: number) => MaybePromise<SessionStoreWriteResult<TData>>;
33
+ update: (candidate: SessionStoreCandidate<TData>, expectedVersion: number) => MaybePromise<SessionStoreWriteResult<TData>>;
34
+ };
35
+ export type MemorySessionStoreOptions<TData extends SessionData = SessionData> = {
36
+ entries?: Map<string, SessionRecord<TData>>;
37
+ namespace: SessionNamespace;
38
+ };
39
+ export declare function createMemorySessionStore<TData extends SessionData = SessionData>(options: MemorySessionStoreOptions<TData>): SessionStore<TData>;
40
+ /**
41
+ * Validates that an untrusted parsed value conforms to the `SessionRecord`
42
+ * envelope before it is trusted as a session. Backend session stores read
43
+ * raw JSON from shared infrastructure (KV, Redis) that a corrupted entry,
44
+ * manual edit, or deployment version skew could have produced, so the shape
45
+ * must be proven rather than assumed. Mirrors the validation cookie-session
46
+ * applies to its own decoded payloads.
47
+ */
48
+ export declare function parseSessionRecord<TData extends SessionData = SessionData>(value: unknown): SessionRecord<TData> | undefined;
49
+ export declare function serializeSessionNamespace(namespace: SessionNamespace): string;
50
+ export {};
51
+ //# sourceMappingURL=session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/security/session-store.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhE,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,GACvC,SAAS,WAAW,EAAE,CAAC;AAE3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,IAAI;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,IACvE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;AAExC,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,IACvE;IAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9B,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,IAAI;IAClE,MAAM,EAAE,CACN,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,KACpC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,EAAE,CACJ,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,KACR,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;IACpD,MAAM,EAAE,CACN,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,EACvC,eAAe,EAAE,MAAM,KACpB,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,MAAM,EAAE,CACN,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,EACvC,eAAe,EAAE,MAAM,KACpB,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,yBAAyB,CACnC,KAAK,SAAS,WAAW,GAAG,WAAW,IACrC;IACF,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,KAAK,SAAS,WAAW,GAAG,WAAW,EACvC,OAAO,EAAE,yBAAyB,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAkEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,EACxE,KAAK,EAAE,OAAO,GACb,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAiBlC;AAkCD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,gBAAgB,UAsBpE"}
@@ -0,0 +1,10 @@
1
+ import type { SessionData, SessionNamespace, SessionStore } from "./session-store";
2
+ type MaybePromise<T> = T | Promise<T>;
3
+ export type SessionStoreFactory<TData extends SessionData = SessionData> = (namespace: SessionNamespace) => MaybePromise<SessionStore<TData>>;
4
+ type ContractData = {
5
+ authenticated: boolean;
6
+ name: string;
7
+ };
8
+ export declare function verifySessionStoreContract(createStore: SessionStoreFactory<ContractData>): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/security/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAEhB,YAAY,EAEb,MAAM,iBAAiB,CAAC;AAEzB,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,mBAAmB,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,IAAI,CACzE,SAAS,EAAE,gBAAgB,KACxB,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAEvC,KAAK,YAAY,GAAG;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,mBAAmB,CAAC,YAAY,CAAC,iBAsJ/C"}
@@ -0,0 +1,145 @@
1
+ async function S(o) {
2
+ const t = `${Date.now()}-${Math.random()}`, n = {
3
+ app: `contract-${t}`,
4
+ environment: "test",
5
+ schemaVersion: 1
6
+ }, m = {
7
+ ...n,
8
+ environment: "isolated"
9
+ }, a = await o(n), l = await o(n), f = await o(m), r = Date.now(), i = p(`session-${t}`, r, {
10
+ authenticated: !1,
11
+ name: "alpha"
12
+ }), d = p(`rotated-${t}`, r, {
13
+ authenticated: !0,
14
+ name: "alpha"
15
+ });
16
+ try {
17
+ e(
18
+ await a.read(i.id, r) === void 0,
19
+ "read() must return undefined for a missing identifier"
20
+ );
21
+ const x = await a.create(i);
22
+ s(x, "create() must store a missing identifier"), b(
23
+ await l.read(i.id, r),
24
+ { ...i, version: 0 },
25
+ "create() must make a record available to another store instance"
26
+ ), e(
27
+ (await a.create(i)).status === "conflict",
28
+ "create() must report a conflict for an existing identifier"
29
+ ), e(
30
+ await f.read(i.id, r) === void 0,
31
+ "a namespace must not read another namespace's record"
32
+ );
33
+ const g = await f.create({
34
+ ...i,
35
+ data: { authenticated: !1, name: "isolated" }
36
+ });
37
+ s(
38
+ g,
39
+ "create() must allow the same identifier in another namespace"
40
+ );
41
+ const $ = {
42
+ ...i,
43
+ data: { authenticated: !0, name: "beta" }
44
+ }, h = await l.update($, 0);
45
+ s(h, "update() must replace the expected version"), e(
46
+ h.record.version === 1,
47
+ "update() must increment the stored version"
48
+ ), e(
49
+ (await a.update(i, 0)).status === "conflict",
50
+ "update() must reject an obsolete version"
51
+ );
52
+ const w = await Promise.all([
53
+ a.rotate(i.id, d, 1),
54
+ l.rotate(
55
+ i.id,
56
+ { ...d, id: `${d.id}-competitor` },
57
+ 1
58
+ )
59
+ ]);
60
+ e(
61
+ w.filter((u) => u.status === "stored").length === 1,
62
+ "only one concurrent rotation can succeed"
63
+ ), e(
64
+ w.filter((u) => u.status === "conflict").length === 1,
65
+ "one concurrent rotation must report a conflict"
66
+ ), e(
67
+ await a.read(i.id, r) === void 0,
68
+ "rotation must invalidate the previous identifier"
69
+ );
70
+ const c = w.find(
71
+ (u) => u.status === "stored"
72
+ );
73
+ s(c, "rotation must return its stored record"), e(
74
+ c.record.version === 2,
75
+ "rotation must increment the stored version"
76
+ ), e(
77
+ await l.destroy(c.record.id),
78
+ "destroy() must remove an existing identifier"
79
+ ), e(
80
+ await a.read(c.record.id, r) === void 0,
81
+ "destroy() must revoke a session for another store instance"
82
+ ), e(
83
+ !await a.destroy(c.record.id),
84
+ "destroy() must report a missing identifier"
85
+ );
86
+ const v = p(`expired-${t}`, r, {
87
+ authenticated: !1,
88
+ name: "expired"
89
+ }, -1);
90
+ s(
91
+ await a.create(v),
92
+ "create() must accept a record before read-time expiration checks"
93
+ ), e(
94
+ await a.read(v.id, r) === void 0,
95
+ "read() must not return an absolutely expired record"
96
+ );
97
+ const y = {
98
+ ...p(`idle-${t}`, r, {
99
+ authenticated: !1,
100
+ name: "idle"
101
+ }),
102
+ idleExpiresAt: r - 1
103
+ };
104
+ s(
105
+ await a.create(y),
106
+ "create() must accept a record with idle expiration"
107
+ ), e(
108
+ await a.read(y.id, r) === void 0,
109
+ "read() must not return an idle-expired record"
110
+ );
111
+ } finally {
112
+ await Promise.all([
113
+ a.destroy(i.id),
114
+ a.destroy(d.id),
115
+ a.destroy(`${d.id}-competitor`),
116
+ f.destroy(i.id)
117
+ ]);
118
+ }
119
+ }
120
+ function p(o, t, n, m = 6e4) {
121
+ return {
122
+ createdAt: t,
123
+ data: n,
124
+ expiresAt: t + m,
125
+ id: o,
126
+ idleExpiresAt: t + m
127
+ };
128
+ }
129
+ function s(o, t) {
130
+ e(o?.status === "stored", t);
131
+ }
132
+ function b(o, t, n) {
133
+ e(
134
+ JSON.stringify(o) === JSON.stringify(t),
135
+ n
136
+ );
137
+ }
138
+ function e(o, t) {
139
+ if (!o)
140
+ throw new Error(`Session store contract failed: ${t}.`);
141
+ }
142
+ export {
143
+ S as verifySessionStoreContract
144
+ };
145
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sources":["../../src/security/testing.ts"],"sourcesContent":["import type {\n SessionData,\n SessionNamespace,\n SessionRecord,\n SessionStore,\n SessionStoreCandidate,\n} from \"./session-store\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type SessionStoreFactory<TData extends SessionData = SessionData> = (\n namespace: SessionNamespace,\n) => MaybePromise<SessionStore<TData>>;\n\ntype ContractData = {\n authenticated: boolean;\n name: string;\n};\n\nexport async function verifySessionStoreContract(\n createStore: SessionStoreFactory<ContractData>,\n) {\n const token = `${Date.now()}-${Math.random()}`;\n const namespace = {\n app: `contract-${token}`,\n environment: \"test\",\n schemaVersion: 1,\n } satisfies SessionNamespace;\n const isolatedNamespace = {\n ...namespace,\n environment: \"isolated\",\n } satisfies SessionNamespace;\n const store = await createStore(namespace);\n const secondReplica = await createStore(namespace);\n const isolatedStore = await createStore(isolatedNamespace);\n const now = Date.now();\n const original = candidate(`session-${token}`, now, {\n authenticated: false,\n name: \"alpha\",\n });\n const rotated = candidate(`rotated-${token}`, now, {\n authenticated: true,\n name: \"alpha\",\n });\n\n try {\n assert(\n await store.read(original.id, now) === undefined,\n \"read() must return undefined for a missing identifier\",\n );\n\n const created = await store.create(original);\n assertStored(created, \"create() must store a missing identifier\");\n assertRecord(\n await secondReplica.read(original.id, now),\n { ...original, version: 0 },\n \"create() must make a record available to another store instance\",\n );\n\n assert(\n (await store.create(original)).status === \"conflict\",\n \"create() must report a conflict for an existing identifier\",\n );\n assert(\n await isolatedStore.read(original.id, now) === undefined,\n \"a namespace must not read another namespace's record\",\n );\n\n const isolatedCreated = await isolatedStore.create({\n ...original,\n data: { authenticated: false, name: \"isolated\" },\n });\n assertStored(\n isolatedCreated,\n \"create() must allow the same identifier in another namespace\",\n );\n\n const updatedCandidate = {\n ...original,\n data: { authenticated: true, name: \"beta\" },\n } satisfies SessionStoreCandidate<ContractData>;\n const updated = await secondReplica.update(updatedCandidate, 0);\n assertStored(updated, \"update() must replace the expected version\");\n assert(\n updated.record.version === 1,\n \"update() must increment the stored version\",\n );\n assert(\n (await store.update(original, 0)).status === \"conflict\",\n \"update() must reject an obsolete version\",\n );\n\n const rotations = await Promise.all([\n store.rotate(original.id, rotated, 1),\n secondReplica.rotate(\n original.id,\n { ...rotated, id: `${rotated.id}-competitor` },\n 1,\n ),\n ]);\n assert(\n rotations.filter((result) => result.status === \"stored\").length === 1,\n \"only one concurrent rotation can succeed\",\n );\n assert(\n rotations.filter((result) => result.status === \"conflict\").length === 1,\n \"one concurrent rotation must report a conflict\",\n );\n assert(\n await store.read(original.id, now) === undefined,\n \"rotation must invalidate the previous identifier\",\n );\n\n const successfulRotation = rotations.find(\n (result) => result.status === \"stored\",\n );\n assertStored(successfulRotation, \"rotation must return its stored record\");\n assert(\n successfulRotation.record.version === 2,\n \"rotation must increment the stored version\",\n );\n assert(\n await secondReplica.destroy(successfulRotation.record.id),\n \"destroy() must remove an existing identifier\",\n );\n assert(\n await store.read(successfulRotation.record.id, now) === undefined,\n \"destroy() must revoke a session for another store instance\",\n );\n assert(\n !await store.destroy(successfulRotation.record.id),\n \"destroy() must report a missing identifier\",\n );\n\n const expired = candidate(`expired-${token}`, now, {\n authenticated: false,\n name: \"expired\",\n }, -1);\n assertStored(\n await store.create(expired),\n \"create() must accept a record before read-time expiration checks\",\n );\n assert(\n await store.read(expired.id, now) === undefined,\n \"read() must not return an absolutely expired record\",\n );\n\n const idleExpired = {\n ...candidate(`idle-${token}`, now, {\n authenticated: false,\n name: \"idle\",\n }),\n idleExpiresAt: now - 1,\n };\n assertStored(\n await store.create(idleExpired),\n \"create() must accept a record with idle expiration\",\n );\n assert(\n await store.read(idleExpired.id, now) === undefined,\n \"read() must not return an idle-expired record\",\n );\n } finally {\n await Promise.all([\n store.destroy(original.id),\n store.destroy(rotated.id),\n store.destroy(`${rotated.id}-competitor`),\n isolatedStore.destroy(original.id),\n ]);\n }\n}\n\nfunction candidate(\n id: string,\n now: number,\n data: ContractData,\n expirationOffset = 60_000,\n): SessionStoreCandidate<ContractData> {\n return {\n createdAt: now,\n data,\n expiresAt: now + expirationOffset,\n id,\n idleExpiresAt: now + expirationOffset,\n };\n}\n\nfunction assertStored<TData extends SessionData>(\n result:\n | Awaited<ReturnType<SessionStore<TData>[\"create\"]>>\n | undefined,\n requirement: string,\n): asserts result is { record: SessionRecord<TData>; status: \"stored\" } {\n assert(result?.status === \"stored\", requirement);\n}\n\nfunction assertRecord<TData extends SessionData>(\n actual: SessionRecord<TData> | undefined,\n expected: SessionRecord<TData>,\n requirement: string,\n) {\n assert(\n JSON.stringify(actual) === JSON.stringify(expected),\n requirement,\n );\n}\n\nfunction assert(condition: boolean, requirement: string): asserts condition {\n if (!condition) {\n throw new Error(`Session store contract failed: ${requirement}.`);\n }\n}\n"],"names":["verifySessionStoreContract","createStore","token","namespace","isolatedNamespace","store","secondReplica","isolatedStore","now","original","candidate","rotated","assert","created","assertStored","assertRecord","isolatedCreated","updatedCandidate","updated","rotations","result","successfulRotation","expired","idleExpired","id","data","expirationOffset","requirement","actual","expected","condition"],"mappings":"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"}
@@ -5,7 +5,14 @@ export type CspDirectiveReplacement<Source extends string = CspSource> = {
5
5
  replace: readonly Source[];
6
6
  };
7
7
  export type CspSourceDirective = readonly CspSource[] | CspDirectiveReplacement | false;
8
- export type CspDirectiveValue = CspSourceDirective | CspDirectiveReplacement<ReportingEndpointUrl> | readonly ReportingEndpointUrl[] | boolean;
8
+ export type CspSandboxToken = "allow-downloads" | "allow-forms" | "allow-modals" | "allow-orientation-lock" | "allow-pointer-lock" | "allow-popups" | "allow-popups-to-escape-sandbox" | "allow-presentation" | "allow-same-origin" | "allow-scripts" | "allow-top-navigation" | "allow-top-navigation-by-user-activation" | "allow-top-navigation-to-custom-protocols" | (string & {});
9
+ /**
10
+ * `true` renders a bare `sandbox` (the maximally restrictive sandbox). An
11
+ * array renders `sandbox <tokens>`, relaxing only the listed capabilities.
12
+ * `false` omits the directive.
13
+ */
14
+ export type CspSandboxDirective = readonly CspSandboxToken[] | boolean;
15
+ export type CspDirectiveValue = CspSourceDirective | CspSandboxDirective | CspDirectiveReplacement<ReportingEndpointUrl> | readonly ReportingEndpointUrl[] | boolean;
9
16
  export type ContentSecurityPolicy = {
10
17
  baseUri?: CspSourceDirective;
11
18
  childSrc?: CspSourceDirective;
@@ -23,7 +30,15 @@ export type ContentSecurityPolicy = {
23
30
  reportUri?: readonly ReportingEndpointUrl[] | CspDirectiveReplacement<ReportingEndpointUrl> | false;
24
31
  /** A named member of `headers.reportingEndpoints`. */
25
32
  reportTo?: string;
33
+ /**
34
+ * Not part of any preset. A route that renders content it does not
35
+ * control (user-generated HTML, a rendered comment body, an embed) opts
36
+ * into this explicitly rather than inheriting it from `strict`/`static`.
37
+ */
38
+ sandbox?: CspSandboxDirective;
26
39
  scriptSrc?: CspSourceDirective;
40
+ scriptSrcAttr?: CspSourceDirective;
41
+ scriptSrcElem?: CspSourceDirective;
27
42
  styleSrc?: CspSourceDirective;
28
43
  styleSrcAttr?: CspSourceDirective;
29
44
  styleSrcElem?: CspSourceDirective;
@@ -39,8 +54,23 @@ export type StrictTransportSecurityPolicy = {
39
54
  preload?: boolean;
40
55
  };
41
56
  export type TrustedTypesPolicy = {
57
+ /**
58
+ * Permits the `default` policy, which the browser applies to every raw
59
+ * string that reaches a guarded sink. The `default` policy is one global
60
+ * relaxation of the guarantee, so no preset turns it on. An application
61
+ * declares it here when legacy or third-party code cannot use a named
62
+ * policy.
63
+ */
64
+ allowDefaultPolicy?: boolean;
42
65
  mode: "enforce" | "report-only";
43
- policies: readonly string[];
66
+ /**
67
+ * Policy names the document may create, beyond the framework-owned
68
+ * `demiurge` policy that the framework always permits.
69
+ *
70
+ * An absent list permits the framework policy only. An empty list renders
71
+ * `trusted-types 'none'`, which refuses every policy name.
72
+ */
73
+ policies?: readonly string[];
44
74
  requireFor?: readonly ["script"];
45
75
  };
46
76
  export type CorsPolicy = {
@@ -63,8 +93,47 @@ export type CorsResponseOptions = {
63
93
  };
64
94
  export type CsrfPolicy = false | true | {
65
95
  cookie?: string;
96
+ field?: string;
66
97
  header?: string;
67
98
  };
99
+ /**
100
+ * A value of the `Sec-Fetch-Dest` header. The list holds the destinations that
101
+ * a cross-site exemption usually names. Any other string stays valid.
102
+ */
103
+ export type FetchMetadataDestination = "audio" | "document" | "embed" | "empty" | "font" | "frame" | "iframe" | "image" | "manifest" | "object" | "script" | "style" | "track" | "video" | "worker" | (string & {});
104
+ export type FetchMetadataPolicyOptions = {
105
+ /**
106
+ * Allows every cross-site request. Use this for a route that intentionally
107
+ * serves another site, such as a CORS API or a public embed.
108
+ */
109
+ allowCrossSite?: boolean;
110
+ /**
111
+ * Allows a safe top-level navigation, so a person can enter the site from a
112
+ * link on another site. The default is `true`.
113
+ */
114
+ allowNavigation?: boolean;
115
+ /**
116
+ * Allows `Sec-Fetch-Site: same-site`. Trust of a sibling subdomain must be
117
+ * explicit, because another team or an attacker can control that subdomain.
118
+ */
119
+ allowSameSite?: boolean;
120
+ /**
121
+ * Cross-site destinations that stay allowed, for example `"image"`.
122
+ */
123
+ allowedDestinations?: readonly FetchMetadataDestination[];
124
+ };
125
+ /**
126
+ * `true` uses the default resource-isolation rules. `false` and an omitted
127
+ * value keep the route unguarded, because the policy is opt-in.
128
+ */
129
+ export type FetchMetadataPolicy = boolean | FetchMetadataPolicyOptions;
130
+ export type FetchMetadataReason = "cors-preflight" | "cross-site-denied" | "cross-site-exempt" | "destination-exempt" | "metadata-absent" | "same-origin" | "same-site-denied" | "same-site-trusted" | "top-level-navigation" | "user-initiated";
131
+ export type FetchMetadataCheck = {
132
+ allowed: boolean;
133
+ reason: FetchMetadataReason;
134
+ /** The `Sec-Fetch-*` fields that this decision read. */
135
+ vary: readonly string[];
136
+ };
68
137
  export type RequestSecurityPolicy = {
69
138
  allowedMethods?: readonly HttpMethod[];
70
139
  maxBodySize?: number | `${number}${"b" | "gb" | "kb" | "mb"}`;
@@ -85,7 +154,7 @@ export type MemoryRateLimitStoreOptions = {
85
154
  maximumEntries?: number;
86
155
  };
87
156
  export type RateLimitStore = {
88
- increment: (key: string, windowMs: number, now: number) => RateLimitResult;
157
+ increment: (key: string, windowMs: number, now: number) => RateLimitResult | Promise<RateLimitResult>;
89
158
  };
90
159
  /**
91
160
  * Sources a route needs beyond its inherited policy. Each entry widens one
@@ -98,6 +167,7 @@ export type RouteSecurityNeeds = {
98
167
  };
99
168
  export type RouteSecurityPolicy = {
100
169
  csrf?: CsrfPolicy;
170
+ fetchMetadata?: FetchMetadataPolicy;
101
171
  needs?: RouteSecurityNeeds;
102
172
  rateLimit?: RateLimitPolicy;
103
173
  request?: RequestSecurityPolicy;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/security/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/security/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,MAAM,uBAAuB,CAAC,MAAM,SAAS,MAAM,GAAG,SAAS,IAAI;IACvE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,SAAS,SAAS,EAAE,GACpB,uBAAuB,GACvB,KAAK,CAAC;AAEV,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,aAAa,GACb,cAAc,GACd,wBAAwB,GACxB,oBAAoB,GACpB,cAAc,GACd,gCAAgC,GAChC,oBAAoB,GACpB,mBAAmB,GACnB,eAAe,GACf,sBAAsB,GACtB,yCAAyC,GACzC,0CAA0C,GAC1C,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,uBAAuB,CAAC,oBAAoB,CAAC,GAC7C,SAAS,oBAAoB,EAAE,GAC/B,OAAO,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,kEAAkE;IAClE,SAAS,CAAC,EACN,SAAS,oBAAoB,EAAE,GAC/B,uBAAuB,CAAC,oBAAoB,CAAC,GAC7C,KAAK,CAAC;IACV,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,MAAM,EAAE,GAAG,WAAW,MAAM,EAAE,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAEhF,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,4BAA4B,GAC5B,QAAQ,GACR,0BAA0B,GAC1B,aAAa,GACb,eAAe,GACf,iCAAiC,GACjC,YAAY,CAAC;AAEjB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAChC,OAAO,EAAE,GAAG,GAAG,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B;IACA,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC;CACjB,GACC;IACA,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEJ,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAChC,OAAO,GACP,UAAU,GACV,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,mBAAmB,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC3D,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,0BAA0B,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wDAAwD;IACxD,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,YAAY,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAI3B,SAAS,EAAE,CACT,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,KACR,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACjD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC/B,GAAG,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,sBAAsB,CAAC;QACjC,MAAM,EAAE,cAAc,CAAC;QACvB,kBAAkB,CAAC,EAAE,OAAO,GAAG,4BAA4B,CAAC;QAC5D,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;KAChC,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;QACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,kBAAkB,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACvC,yBAAyB,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,KAAK,CAAC;IACtE,uBAAuB,CAAC,EAAE,aAAa,GAAG,0BAA0B,GAAG,KAAK,CAAC;IAC7E,yBAAyB,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,CAAC;IACjF,iBAAiB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IACxC,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC;IAChD,uBAAuB,CAAC,EAAE,6BAA6B,GAAG,KAAK,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,qBAAqB,GAAG,KAAK,CAAC;IACpC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,YAAY,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,uBAAuB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACnF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"document-shell.d.ts","sourceRoot":"","sources":["../../src/server/document-shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAK9C,eAAO,MAAM,kBAAkB,yDACuB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,gBAAgB,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;CAAE,GACpD,OAAO,CAAC,aAAa,CAAC,CAsCxB"}
1
+ {"version":3,"file":"document-shell.d.ts","sourceRoot":"","sources":["../../src/server/document-shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAK9C,eAAO,MAAM,kBAAkB,yDACuB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,gBAAgB,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;CAAE,GACpD,OAAO,CAAC,aAAa,CAAC,CAuCxB"}
@@ -4,6 +4,7 @@ import type { SsrRenderOptions } from "./ssr";
4
4
  export type ErrorRenderOptions = SsrRenderOptions & {
5
5
  dev?: boolean;
6
6
  onError?: (error: unknown, site: FailureSite) => void;
7
+ pathname?: string;
7
8
  transformDocument?: (html: string) => string | Promise<string>;
8
9
  };
9
10
  export declare function isDevErrorRendering(dev: boolean | undefined): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/server/errors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAIlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,WAE3D;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,kBAAuB,qBAiBjC;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,kBAAuB,YA0BjC;AAqCD,wBAAgB,4BAA4B,aAK3C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/server/errors.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,WAE3D;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,kBAAuB,qBA6CjC;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,kBAAuB,YA0BjC;AAqCD,wBAAgB,4BAA4B,aAK3C"}
@@ -1,4 +1,5 @@
1
- export { createRequestHandler, handleRequestWithManifest, } from "./request-handler";
1
+ export { createRequestHandler, handleRequestWithManifest, loadInheritedRoutePolicy, } from "./request-handler";
2
+ export { getRequestClientAddress } from "./request-metadata";
2
3
  export { renderPageDocument, renderPageResponse } from "./ssr";
3
4
  export { createErrorProblemResponse, createPlainTextErrorResponse, isDevErrorRendering, renderFailureResponse, } from "./errors";
4
5
  export { BuiltInError, BuiltInNotFound, DevError } from "./fallbacks";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -3,6 +3,7 @@ import type { FailureSite } from "./failure-site";
3
3
  import type { SsrRenderOptions } from "./ssr";
4
4
  export type NotFoundRenderOptions = SsrRenderOptions & {
5
5
  onError?: (error: unknown, site: FailureSite) => void;
6
+ pathname?: string;
6
7
  transformDocument?: (html: string) => string | Promise<string>;
7
8
  };
8
9
  export declare function createNotFoundProblemResponse(url: URL): Response;
@@ -1 +1 @@
1
- {"version":3,"file":"not-found.d.ts","sourceRoot":"","sources":["../../src/server/not-found.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAGtD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,YAMrD;AAKD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,qBAA0B,qBA6BpC;AAaD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,qBAA0B,UAoBpC"}
1
+ {"version":3,"file":"not-found.d.ts","sourceRoot":"","sources":["../../src/server/not-found.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,YAMrD;AAKD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,qBAA0B,qBA+CpC;AAaD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,qBAA0B,UAoBpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"render-tree.d.ts","sourceRoot":"","sources":["../../src/server/render-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,mBAAmB,yeAmB9B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,uBAOhD"}
1
+ {"version":3,"file":"render-tree.d.ts","sourceRoot":"","sources":["../../src/server/render-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,mBAAmB,yeAqB9B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,uBAOhD"}