@daloyjs/core 0.35.0 → 0.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +145 -29
  2. package/dist/adapters/bun.d.ts +0 -1
  3. package/dist/adapters/bun.js +0 -1
  4. package/dist/adapters/cloudflare.d.ts +0 -1
  5. package/dist/adapters/cloudflare.js +0 -1
  6. package/dist/adapters/deno.d.ts +0 -1
  7. package/dist/adapters/deno.js +0 -1
  8. package/dist/adapters/fastly.d.ts +0 -1
  9. package/dist/adapters/fastly.js +0 -1
  10. package/dist/adapters/lambda.d.ts +0 -1
  11. package/dist/adapters/lambda.js +0 -1
  12. package/dist/adapters/node.d.ts +0 -1
  13. package/dist/adapters/node.js +175 -35
  14. package/dist/adapters/vercel.d.ts +0 -1
  15. package/dist/adapters/vercel.js +0 -1
  16. package/dist/app.d.ts +18 -1
  17. package/dist/app.js +396 -118
  18. package/dist/banner.d.ts +0 -1
  19. package/dist/banner.js +0 -1
  20. package/dist/cli.d.ts +0 -1
  21. package/dist/cli.js +0 -1
  22. package/dist/client.d.ts +0 -1
  23. package/dist/client.js +0 -1
  24. package/dist/combine.d.ts +0 -1
  25. package/dist/combine.js +0 -1
  26. package/dist/compression.d.ts +0 -1
  27. package/dist/compression.js +0 -1
  28. package/dist/config.d.ts +0 -1
  29. package/dist/config.js +0 -1
  30. package/dist/conn-info.d.ts +0 -1
  31. package/dist/conn-info.js +0 -1
  32. package/dist/contract.d.ts +0 -1
  33. package/dist/contract.js +0 -1
  34. package/dist/cookie.d.ts +0 -1
  35. package/dist/cookie.js +0 -1
  36. package/dist/dependency.d.ts +0 -1
  37. package/dist/dependency.js +0 -1
  38. package/dist/discriminator.d.ts +0 -1
  39. package/dist/discriminator.js +0 -1
  40. package/dist/docs.d.ts +0 -1
  41. package/dist/docs.js +0 -1
  42. package/dist/errors.d.ts +0 -1
  43. package/dist/errors.js +0 -1
  44. package/dist/etag.d.ts +0 -1
  45. package/dist/etag.js +0 -1
  46. package/dist/fetch-guard.d.ts +0 -1
  47. package/dist/fetch-guard.js +0 -1
  48. package/dist/hashing.d.ts +0 -1
  49. package/dist/hashing.js +0 -1
  50. package/dist/index.d.ts +0 -1
  51. package/dist/index.js +0 -1
  52. package/dist/ip-restriction.d.ts +0 -1
  53. package/dist/ip-restriction.js +0 -1
  54. package/dist/jwk.d.ts +0 -1
  55. package/dist/jwk.js +0 -1
  56. package/dist/jwt.d.ts +0 -1
  57. package/dist/jwt.js +0 -1
  58. package/dist/load-shedding.d.ts +0 -1
  59. package/dist/load-shedding.js +0 -1
  60. package/dist/logger.d.ts +0 -1
  61. package/dist/logger.js +0 -1
  62. package/dist/middleware.d.ts +0 -1
  63. package/dist/middleware.js +16 -13
  64. package/dist/multipart.d.ts +0 -1
  65. package/dist/multipart.js +0 -1
  66. package/dist/openapi.d.ts +0 -1
  67. package/dist/openapi.js +0 -1
  68. package/dist/rate-limit-redis.d.ts +0 -1
  69. package/dist/rate-limit-redis.js +0 -1
  70. package/dist/router.d.ts +0 -1
  71. package/dist/router.js +0 -1
  72. package/dist/safe-redirect.d.ts +2 -3
  73. package/dist/safe-redirect.js +2 -3
  74. package/dist/sbom.cdx.json +9 -9
  75. package/dist/sbom.spdx.json +5 -5
  76. package/dist/schema.d.ts +0 -1
  77. package/dist/schema.js +0 -1
  78. package/dist/security-schemes.d.ts +0 -1
  79. package/dist/security-schemes.js +0 -1
  80. package/dist/security.d.ts +4 -5
  81. package/dist/security.js +4 -5
  82. package/dist/session.d.ts +0 -1
  83. package/dist/session.js +0 -1
  84. package/dist/streaming.d.ts +0 -1
  85. package/dist/streaming.js +0 -1
  86. package/dist/subdomains.d.ts +0 -1
  87. package/dist/subdomains.js +0 -1
  88. package/dist/time-claims.d.ts +0 -1
  89. package/dist/time-claims.js +0 -1
  90. package/dist/tracing.d.ts +0 -1
  91. package/dist/tracing.js +0 -1
  92. package/dist/types.d.ts +0 -1
  93. package/dist/types.js +0 -1
  94. package/dist/websocket.d.ts +0 -1
  95. package/dist/websocket.js +0 -1
  96. package/package.json +6 -2
  97. package/dist/adapters/bun.d.ts.map +0 -1
  98. package/dist/adapters/bun.js.map +0 -1
  99. package/dist/adapters/cloudflare.d.ts.map +0 -1
  100. package/dist/adapters/cloudflare.js.map +0 -1
  101. package/dist/adapters/deno.d.ts.map +0 -1
  102. package/dist/adapters/deno.js.map +0 -1
  103. package/dist/adapters/fastly.d.ts.map +0 -1
  104. package/dist/adapters/fastly.js.map +0 -1
  105. package/dist/adapters/lambda.d.ts.map +0 -1
  106. package/dist/adapters/lambda.js.map +0 -1
  107. package/dist/adapters/node.d.ts.map +0 -1
  108. package/dist/adapters/node.js.map +0 -1
  109. package/dist/adapters/vercel.d.ts.map +0 -1
  110. package/dist/adapters/vercel.js.map +0 -1
  111. package/dist/app.d.ts.map +0 -1
  112. package/dist/app.js.map +0 -1
  113. package/dist/banner.d.ts.map +0 -1
  114. package/dist/banner.js.map +0 -1
  115. package/dist/cli.d.ts.map +0 -1
  116. package/dist/cli.js.map +0 -1
  117. package/dist/client.d.ts.map +0 -1
  118. package/dist/client.js.map +0 -1
  119. package/dist/combine.d.ts.map +0 -1
  120. package/dist/combine.js.map +0 -1
  121. package/dist/compression.d.ts.map +0 -1
  122. package/dist/compression.js.map +0 -1
  123. package/dist/config.d.ts.map +0 -1
  124. package/dist/config.js.map +0 -1
  125. package/dist/conn-info.d.ts.map +0 -1
  126. package/dist/conn-info.js.map +0 -1
  127. package/dist/contract.d.ts.map +0 -1
  128. package/dist/contract.js.map +0 -1
  129. package/dist/cookie.d.ts.map +0 -1
  130. package/dist/cookie.js.map +0 -1
  131. package/dist/dependency.d.ts.map +0 -1
  132. package/dist/dependency.js.map +0 -1
  133. package/dist/discriminator.d.ts.map +0 -1
  134. package/dist/discriminator.js.map +0 -1
  135. package/dist/docs.d.ts.map +0 -1
  136. package/dist/docs.js.map +0 -1
  137. package/dist/errors.d.ts.map +0 -1
  138. package/dist/errors.js.map +0 -1
  139. package/dist/etag.d.ts.map +0 -1
  140. package/dist/etag.js.map +0 -1
  141. package/dist/fetch-guard.d.ts.map +0 -1
  142. package/dist/fetch-guard.js.map +0 -1
  143. package/dist/hashing.d.ts.map +0 -1
  144. package/dist/hashing.js.map +0 -1
  145. package/dist/index.d.ts.map +0 -1
  146. package/dist/index.js.map +0 -1
  147. package/dist/ip-restriction.d.ts.map +0 -1
  148. package/dist/ip-restriction.js.map +0 -1
  149. package/dist/jwk.d.ts.map +0 -1
  150. package/dist/jwk.js.map +0 -1
  151. package/dist/jwt.d.ts.map +0 -1
  152. package/dist/jwt.js.map +0 -1
  153. package/dist/load-shedding.d.ts.map +0 -1
  154. package/dist/load-shedding.js.map +0 -1
  155. package/dist/logger.d.ts.map +0 -1
  156. package/dist/logger.js.map +0 -1
  157. package/dist/middleware.d.ts.map +0 -1
  158. package/dist/middleware.js.map +0 -1
  159. package/dist/multipart.d.ts.map +0 -1
  160. package/dist/multipart.js.map +0 -1
  161. package/dist/openapi.d.ts.map +0 -1
  162. package/dist/openapi.js.map +0 -1
  163. package/dist/rate-limit-redis.d.ts.map +0 -1
  164. package/dist/rate-limit-redis.js.map +0 -1
  165. package/dist/router.d.ts.map +0 -1
  166. package/dist/router.js.map +0 -1
  167. package/dist/safe-redirect.d.ts.map +0 -1
  168. package/dist/safe-redirect.js.map +0 -1
  169. package/dist/schema.d.ts.map +0 -1
  170. package/dist/schema.js.map +0 -1
  171. package/dist/security-schemes.d.ts.map +0 -1
  172. package/dist/security-schemes.js.map +0 -1
  173. package/dist/security.d.ts.map +0 -1
  174. package/dist/security.js.map +0 -1
  175. package/dist/session.d.ts.map +0 -1
  176. package/dist/session.js.map +0 -1
  177. package/dist/streaming.d.ts.map +0 -1
  178. package/dist/streaming.js.map +0 -1
  179. package/dist/subdomains.d.ts.map +0 -1
  180. package/dist/subdomains.js.map +0 -1
  181. package/dist/time-claims.d.ts.map +0 -1
  182. package/dist/time-claims.js.map +0 -1
  183. package/dist/tracing.d.ts.map +0 -1
  184. package/dist/tracing.js.map +0 -1
  185. package/dist/types.d.ts.map +0 -1
  186. package/dist/types.js.map +0 -1
  187. package/dist/websocket.d.ts.map +0 -1
  188. package/dist/websocket.js.map +0 -1
package/dist/banner.d.ts CHANGED
@@ -37,4 +37,3 @@ export declare function formatStartupBanner(options: StartupBannerOptions): stri
37
37
  * replace ad-hoc `console.log("listening on …")` calls in starter templates.
38
38
  */
39
39
  export declare function printStartupBanner(options: StartupBannerOptions, write?: (s: string) => void): void;
40
- //# sourceMappingURL=banner.d.ts.map
package/dist/banner.js CHANGED
@@ -110,4 +110,3 @@ export function formatStartupBanner(options) {
110
110
  export function printStartupBanner(options, write = (s) => process.stdout.write(s)) {
111
111
  write(`\n${formatStartupBanner(options)}\n\n`);
112
112
  }
113
- //# sourceMappingURL=banner.js.map
package/dist/cli.d.ts CHANGED
@@ -146,4 +146,3 @@ export declare function runCli(argv: readonly string[], io: CliIO): Promise<CliR
146
146
  * @since 0.14.0
147
147
  */
148
148
  export declare function buildAiDump(app: App, opts: CliOptions): Record<string, unknown>;
149
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -848,4 +848,3 @@ function isApp(value) {
848
848
  typeof value.introspect === "function" &&
849
849
  typeof value.fetch === "function");
850
850
  }
851
- //# sourceMappingURL=cli.js.map
package/dist/client.d.ts CHANGED
@@ -74,4 +74,3 @@ export interface ClientOptions {
74
74
  */
75
75
  export declare function createClient<A extends App>(app: A, opts: ClientOptions): ClientFor<A>;
76
76
  export {};
77
- //# sourceMappingURL=client.d.ts.map
package/dist/client.js CHANGED
@@ -85,4 +85,3 @@ function safeJson(text) {
85
85
  return text;
86
86
  }
87
87
  }
88
- //# sourceMappingURL=client.js.map
package/dist/combine.d.ts CHANGED
@@ -94,4 +94,3 @@ export type ExceptPredicate = string | string[] | ((ctx: BaseContext<any, any>)
94
94
  * @since 0.19.0
95
95
  */
96
96
  export declare function except(when: ExceptPredicate, hooks: Hooks): Hooks;
97
- //# sourceMappingURL=combine.d.ts.map
package/dist/combine.js CHANGED
@@ -244,4 +244,3 @@ function mergeCombineHooks(layers) {
244
244
  }
245
245
  return merged;
246
246
  }
247
- //# sourceMappingURL=combine.js.map
@@ -124,4 +124,3 @@ export declare function _resetCompressionRuntimeProbeForTests(): void;
124
124
  * @since 0.25.0
125
125
  */
126
126
  export declare function compression(opts?: CompressionOptions): Hooks;
127
- //# sourceMappingURL=compression.d.ts.map
@@ -365,4 +365,3 @@ export function compression(opts = {}) {
365
365
  hooks[COMPRESSION_HOOK_MARKER] = true;
366
366
  return hooks;
367
367
  }
368
- //# sourceMappingURL=compression.js.map
package/dist/config.d.ts CHANGED
@@ -95,4 +95,3 @@ export interface DefineConfigOptions<S extends StandardSchemaV1> {
95
95
  * @since 0.20.0
96
96
  */
97
97
  export declare function defineConfig<S extends StandardSchemaV1>(opts: DefineConfigOptions<S>): Promise<StandardSchemaV1.InferOutput<S>>;
98
- //# sourceMappingURL=config.d.ts.map
package/dist/config.js CHANGED
@@ -130,4 +130,3 @@ export async function defineConfig(opts) {
130
130
  }
131
131
  return result.value;
132
132
  }
133
- //# sourceMappingURL=config.js.map
@@ -118,4 +118,3 @@ export declare function readRemotePort(ctx: BaseContext<any, any>): number | und
118
118
  /** @internal Test-only helper. */
119
119
  export declare function _makeConnInfoForTests(info: ConnInfo): MutableConnInfo;
120
120
  export {};
121
- //# sourceMappingURL=conn-info.d.ts.map
package/dist/conn-info.js CHANGED
@@ -142,4 +142,3 @@ export function readRemotePort(ctx) {
142
142
  export function _makeConnInfoForTests(info) {
143
143
  return { ...info };
144
144
  }
145
- //# sourceMappingURL=conn-info.js.map
@@ -47,4 +47,3 @@ export interface ContractTestOptions {
47
47
  * @returns A {@link ContractReport}. In CI, exit non-zero when `report.ok` is `false`.
48
48
  */
49
49
  export declare function runContractTests(app: App, opts?: ContractTestOptions): Promise<ContractReport>;
50
- //# sourceMappingURL=contract.d.ts.map
package/dist/contract.js CHANGED
@@ -133,4 +133,3 @@ export async function runContractTests(app, opts = {}) {
133
133
  issues,
134
134
  };
135
135
  }
136
- //# sourceMappingURL=contract.js.map
package/dist/cookie.d.ts CHANGED
@@ -123,4 +123,3 @@ export declare function serializeClearCookie(name: string, attributes?: CookieAt
123
123
  export declare function readRequestCookie(header: string | null | undefined, name: string): string | null;
124
124
  /** @internal Re-exported for tests. */
125
125
  export declare const __COOKIE_FRAMEWORK_PREFIX__ = "daloy.cookie";
126
- //# sourceMappingURL=cookie.d.ts.map
package/dist/cookie.js CHANGED
@@ -202,4 +202,3 @@ export function readRequestCookie(header, name) {
202
202
  }
203
203
  /** @internal Re-exported for tests. */
204
204
  export const __COOKIE_FRAMEWORK_PREFIX__ = FRAMEWORK_PREFIX;
205
- //# sourceMappingURL=cookie.js.map
@@ -45,4 +45,3 @@ export interface DependencyHooks extends Hooks {
45
45
  * @since 0.24.0
46
46
  */
47
47
  export declare function defineDependency<TName extends string, TValue, TStateKey extends string = TName>(opts: DependencyOptions<TName, TValue, TStateKey>): DependencyHooks;
48
- //# sourceMappingURL=dependency.d.ts.map
@@ -65,4 +65,3 @@ export function defineDependency(opts) {
65
65
  });
66
66
  return hooks;
67
67
  }
68
- //# sourceMappingURL=dependency.js.map
@@ -71,4 +71,3 @@ export type DiscriminatedUnion<V extends Record<string, StandardSchemaV1>> = Sta
71
71
  */
72
72
  export declare function discriminatedUnion<P extends string, V extends Record<string, StandardSchemaV1>>(propertyName: P, variants: V, opts?: DiscriminatedUnionOptions): DiscriminatedUnion<V>;
73
73
  export {};
74
- //# sourceMappingURL=discriminator.d.ts.map
@@ -111,4 +111,3 @@ function variantToJsonSchema(schema) {
111
111
  }
112
112
  return {};
113
113
  }
114
- //# sourceMappingURL=discriminator.js.map
package/dist/docs.d.ts CHANGED
@@ -153,4 +153,3 @@ export declare function docsContentSecurityPolicy(opts?: DocsContentSecurityPoli
153
153
  * {@link docsContentSecurityPolicy} (or a caller-supplied override).
154
154
  */
155
155
  export declare function htmlResponse(html: string, opts?: HtmlResponseOptions): Response;
156
- //# sourceMappingURL=docs.d.ts.map
package/dist/docs.js CHANGED
@@ -113,4 +113,3 @@ function scalarConfigurationAttr(specUrl, configuration) {
113
113
  const { content: _content, fetch: _fetch, plugins: _plugins, sources: _sources, spec: _spec, url: _url, ...uiConfiguration } = configuration;
114
114
  return ` data-configuration='${escapeHtml(JSON.stringify({ ...uiConfiguration, url: specUrl }))}'`;
115
115
  }
116
- //# sourceMappingURL=docs.js.map
package/dist/errors.d.ts CHANGED
@@ -327,4 +327,3 @@ export declare class RequestTimeoutError extends HttpError {
327
327
  export declare class InternalError extends HttpError {
328
328
  constructor(detail?: string);
329
329
  }
330
- //# sourceMappingURL=errors.d.ts.map
package/dist/errors.js CHANGED
@@ -444,4 +444,3 @@ export class InternalError extends HttpError {
444
444
  this.name = "InternalError";
445
445
  }
446
446
  }
447
- //# sourceMappingURL=errors.js.map
package/dist/etag.d.ts CHANGED
@@ -45,4 +45,3 @@ export interface ETagOptions {
45
45
  * @since 0.21.0
46
46
  */
47
47
  export declare function etag(opts?: ETagOptions): Hooks;
48
- //# sourceMappingURL=etag.d.ts.map
package/dist/etag.js CHANGED
@@ -114,4 +114,3 @@ export function etag(opts = {}) {
114
114
  },
115
115
  };
116
116
  }
117
- //# sourceMappingURL=etag.js.map
@@ -205,4 +205,3 @@ export interface FetchGuardOptions {
205
205
  * @since 0.34.0
206
206
  */
207
207
  export declare function fetchGuard(options?: FetchGuardOptions): typeof fetch;
208
- //# sourceMappingURL=fetch-guard.d.ts.map
@@ -328,4 +328,3 @@ function createDefaultResolver() {
328
328
  return results.map((r) => r.address);
329
329
  };
330
330
  }
331
- //# sourceMappingURL=fetch-guard.js.map
package/dist/hashing.d.ts CHANGED
@@ -56,4 +56,3 @@ export declare function passwordHash(password: string): Promise<string>;
56
56
  * @since 0.15.0
57
57
  */
58
58
  export declare function passwordVerify(password: string, storedHash: string): Promise<boolean>;
59
- //# sourceMappingURL=hashing.d.ts.map
package/dist/hashing.js CHANGED
@@ -151,4 +151,3 @@ export async function passwordVerify(password, storedHash) {
151
151
  return false;
152
152
  return nodeTimingSafeEqual(derived, parsed.hash);
153
153
  }
154
- //# sourceMappingURL=hashing.js.map
package/dist/index.d.ts CHANGED
@@ -63,4 +63,3 @@ export { otelTracing, TRACING_SPAN_KIND_SERVER, TRACING_SPAN_STATUS_UNSET, TRACI
63
63
  export type { OtelTracingOptions, TracingAttributes, TracingAttributeValue, TracingSpan, TracingStartSpanOptions, TracingTracer, } from "./tracing.js";
64
64
  export { defineWebSocket, WebSocketRegistry, WebSocketProtocolError, WebSocketPayloadTooLargeError, WS_GUID, WS_READY_STATE, WS_OPCODE, WS_CLOSE_CODE, WS_MAX_CONTROL_PAYLOAD, DEFAULT_WS_BACKPRESSURE_LIMIT, DEFAULT_WS_MAX_PAYLOAD_LENGTH, DEFAULT_WS_IDLE_TIMEOUT_SECONDS, computeAcceptKey, parseSubprotocols, validateSelectedSubprotocol, validateUpgrade, checkWebSocketOrigin, parseFrame, encodeFrame, encodeClosePayload, decodeClosePayload, encodeSendPayload, normalizeWebSocketOptions, wsRateLimit, FrameSink, FRAME_INCOMPLETE, } from "./websocket.js";
65
65
  export type { WebSocketConnection, WebSocketContext, WebSocketHandler, WebSocketRouteEntry, NormalizedWebSocketOptions, WebSocketBeforeUpgrade, HandshakeResult, ParsedFrame, MessageEvent as WebSocketMessageEvent, FrameSinkEvents, } from "./websocket.js";
66
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -31,4 +31,3 @@ export { session, rotateSession, signValue, verifySignedValue, MemorySessionStor
31
31
  export { fileField, multipartObject, isFileFieldSchema, isMultipartObjectSchema, } from "./multipart.js";
32
32
  export { otelTracing, TRACING_SPAN_KIND_SERVER, TRACING_SPAN_STATUS_UNSET, TRACING_SPAN_STATUS_OK, TRACING_SPAN_STATUS_ERROR, } from "./tracing.js";
33
33
  export { defineWebSocket, WebSocketRegistry, WebSocketProtocolError, WebSocketPayloadTooLargeError, WS_GUID, WS_READY_STATE, WS_OPCODE, WS_CLOSE_CODE, WS_MAX_CONTROL_PAYLOAD, DEFAULT_WS_BACKPRESSURE_LIMIT, DEFAULT_WS_MAX_PAYLOAD_LENGTH, DEFAULT_WS_IDLE_TIMEOUT_SECONDS, computeAcceptKey, parseSubprotocols, validateSelectedSubprotocol, validateUpgrade, checkWebSocketOrigin, parseFrame, encodeFrame, encodeClosePayload, decodeClosePayload, encodeSendPayload, normalizeWebSocketOptions, wsRateLimit, FrameSink, FRAME_INCOMPLETE, } from "./websocket.js";
34
- //# sourceMappingURL=index.js.map
@@ -89,4 +89,3 @@ export declare function matchesMatcher(ip: ParsedIp, m: IpMatcher): boolean;
89
89
  export declare function compileCidrMatcher(input: string): IpMatcher;
90
90
  /** @internal */
91
91
  export declare function parseIp(input: string): ParsedIp | undefined;
92
- //# sourceMappingURL=ip-restriction.d.ts.map
@@ -203,4 +203,3 @@ function parseIPv6(input) {
203
203
  }
204
204
  return { bytes, family: 6 };
205
205
  }
206
- //# sourceMappingURL=ip-restriction.js.map
package/dist/jwk.d.ts CHANGED
@@ -79,4 +79,3 @@ export interface JwkOptions {
79
79
  * @since 0.22.0
80
80
  */
81
81
  export declare function jwk(opts: JwkOptions): Hooks;
82
- //# sourceMappingURL=jwk.d.ts.map
package/dist/jwk.js CHANGED
@@ -266,4 +266,3 @@ function extractScopes(payload) {
266
266
  }
267
267
  return out;
268
268
  }
269
- //# sourceMappingURL=jwk.js.map
package/dist/jwt.d.ts CHANGED
@@ -115,4 +115,3 @@ export declare function createJwtSigner(opts: JwtSignerOptions): {
115
115
  export declare function createJwtVerifier(opts: JwtVerifierOptions): {
116
116
  verify(token: string): Promise<JwtVerified>;
117
117
  };
118
- //# sourceMappingURL=jwt.d.ts.map
package/dist/jwt.js CHANGED
@@ -500,4 +500,3 @@ async function verifyInternal(token, r) {
500
500
  }
501
501
  return { header, payload };
502
502
  }
503
- //# sourceMappingURL=jwt.js.map
@@ -70,4 +70,3 @@ export declare function loadShedding(opts?: LoadSheddingOptions): Hooks;
70
70
  * @internal
71
71
  */
72
72
  export declare const LOAD_SHEDDING_MARKER: unique symbol;
73
- //# sourceMappingURL=load-shedding.d.ts.map
@@ -168,4 +168,3 @@ export function loadShedding(opts = {}) {
168
168
  * @internal
169
169
  */
170
170
  export const LOAD_SHEDDING_MARKER = Symbol.for("daloyjs.loadShedding");
171
- //# sourceMappingURL=load-shedding.js.map
package/dist/logger.d.ts CHANGED
@@ -121,4 +121,3 @@ export declare function createLogger(opts?: ConsoleLoggerOptions): Logger;
121
121
  */
122
122
  export declare const noopLogger: Logger;
123
123
  export {};
124
- //# sourceMappingURL=logger.d.ts.map
package/dist/logger.js CHANGED
@@ -258,4 +258,3 @@ export const noopLogger = {
258
258
  return noopLogger;
259
259
  },
260
260
  };
261
- //# sourceMappingURL=logger.js.map
@@ -727,4 +727,3 @@ export declare const REQUIRE_SCOPES_HOOK_MARKER: unique symbol;
727
727
  */
728
728
  export declare function requireScopes(scopes: readonly string[]): Hooks;
729
729
  export { timingSafeEqual };
730
- //# sourceMappingURL=middleware.d.ts.map
@@ -223,7 +223,7 @@ export function secureHeaders(opts = {}) {
223
223
  const ref = opts.referrerPolicy ?? "no-referrer";
224
224
  if (ref !== false)
225
225
  headers["referrer-policy"] = ref;
226
- const perm = opts.permissionsPolicy ?? "camera=(), microphone=(), geolocation=()";
226
+ const perm = opts.permissionsPolicy ?? "camera=(), microphone=(), geolocation=(), clipboard-write=()";
227
227
  if (perm !== false)
228
228
  headers["permissions-policy"] = perm;
229
229
  const coop = opts.crossOriginOpenerPolicy ?? "same-origin";
@@ -259,14 +259,16 @@ export function secureHeaders(opts = {}) {
259
259
  .join(", ");
260
260
  }
261
261
  }
262
- const hooks = {
263
- beforeHandle(ctx) {
264
- if (cspIsDynamic && cspOpt.nonce) {
262
+ const headerEntries = Object.entries(headers);
263
+ const hooks = {};
264
+ if (cspIsDynamic) {
265
+ hooks.beforeHandle = (ctx) => {
266
+ if (cspOpt.nonce) {
265
267
  ctx.state[CSP_NONCE_STATE] = generateCspNonce();
266
268
  }
267
- },
268
- onSend(res, ctx) {
269
- if (cspIsDynamic && !res.headers.has("content-security-policy")) {
269
+ };
270
+ hooks.onSend = (res, ctx) => {
271
+ if (!res.headers.has("content-security-policy")) {
270
272
  const nonce = ctx
271
273
  ? ctx.state[CSP_NONCE_STATE]
272
274
  : undefined;
@@ -275,14 +277,16 @@ export function secureHeaders(opts = {}) {
275
277
  res.headers.set("content-security-policy", header);
276
278
  }
277
279
  return undefined;
278
- },
279
- onResponse(res) {
280
- for (const [k, v] of Object.entries(headers)) {
280
+ };
281
+ }
282
+ if (headerEntries.length > 0) {
283
+ hooks.onResponse = (res) => {
284
+ for (const [k, v] of headerEntries) {
281
285
  if (!res.headers.has(k))
282
286
  res.headers.set(k, v);
283
287
  }
284
- },
285
- };
288
+ };
289
+ }
286
290
  hooks[SECURE_HEADERS_MARKER] = true;
287
291
  return hooks;
288
292
  }
@@ -1248,4 +1252,3 @@ export function requireScopes(scopes) {
1248
1252
  return hooks;
1249
1253
  }
1250
1254
  export { timingSafeEqual };
1251
- //# sourceMappingURL=middleware.js.map
@@ -166,4 +166,3 @@ export declare function getMultipartShape(s: unknown): {
166
166
  /** Internal: read the file-field options used for OpenAPI documentation. */
167
167
  export declare function getFileFieldOptions(s: unknown): (Required<Pick<FileFieldOptions, "format">> & FileFieldOptions) | undefined;
168
168
  export {};
169
- //# sourceMappingURL=multipart.d.ts.map
package/dist/multipart.js CHANGED
@@ -384,4 +384,3 @@ export function getFileFieldOptions(s) {
384
384
  return undefined;
385
385
  return s[FILE_FIELD_MARKER];
386
386
  }
387
- //# sourceMappingURL=multipart.js.map
package/dist/openapi.d.ts CHANGED
@@ -125,4 +125,3 @@ export declare function generateOpenAPI(app: App, options: OpenAPIOptions): Reco
125
125
  * artifacts. Reads/writes nothing; pure transform.
126
126
  */
127
127
  export declare function openapiToYAML(doc: Record<string, unknown>): string;
128
- //# sourceMappingURL=openapi.d.ts.map
package/dist/openapi.js CHANGED
@@ -498,4 +498,3 @@ export function openapiToYAML(doc) {
498
498
  const result = yamlEmit(doc, "");
499
499
  return result.startsWith("\n") ? result.slice(1) : result;
500
500
  }
501
- //# sourceMappingURL=openapi.js.map
@@ -98,4 +98,3 @@ export interface NodeRedisLike {
98
98
  }
99
99
  /** Wrap a [`node-redis`](https://github.com/redis/node-redis) v4+ client. */
100
100
  export declare function nodeRedisAdapter(client: NodeRedisLike): RedisCommands;
101
- //# sourceMappingURL=rate-limit-redis.d.ts.map
@@ -114,4 +114,3 @@ export function nodeRedisAdapter(client) {
114
114
  },
115
115
  };
116
116
  }
117
- //# sourceMappingURL=rate-limit-redis.js.map
package/dist/router.d.ts CHANGED
@@ -36,4 +36,3 @@ export declare class Router<T> {
36
36
  allowedMethods(path: string): HttpMethod[];
37
37
  private walk;
38
38
  }
39
- //# sourceMappingURL=router.d.ts.map
package/dist/router.js CHANGED
@@ -136,4 +136,3 @@ function splitPath(path) {
136
136
  return [];
137
137
  return clean.replace(/^\//, "").split("/");
138
138
  }
139
- //# sourceMappingURL=router.js.map
@@ -38,7 +38,7 @@
38
38
  * });
39
39
  * ```
40
40
  *
41
- * @since 0.35.0
41
+ * @since 0.35.1
42
42
  */
43
43
  /** Reason an open-redirect candidate was refused. */
44
44
  export type SafeRedirectBlockReason = "empty-target" | "invalid-control-characters" | "protocol-relative" | "backslash-path" | "path-not-allowed" | "origin-not-allowed" | "scheme-not-allowed" | "parse-failed";
@@ -86,7 +86,6 @@ export interface SafeRedirectOptions {
86
86
  * @param target - User-supplied URL candidate (path or absolute URL).
87
87
  * @param options - Allowlist + response configuration.
88
88
  *
89
- * @since 0.35.0
89
+ * @since 0.35.1
90
90
  */
91
91
  export declare function safeRedirect(target: string, options?: SafeRedirectOptions): Response;
92
- //# sourceMappingURL=safe-redirect.d.ts.map
@@ -38,7 +38,7 @@
38
38
  * });
39
39
  * ```
40
40
  *
41
- * @since 0.35.0
41
+ * @since 0.35.1
42
42
  */
43
43
  /** Thrown when {@link safeRedirect} refuses a candidate URL and no `fallback` is configured. */
44
44
  export class OpenRedirectBlockedError extends Error {
@@ -126,7 +126,7 @@ function classify(target, allowedPaths, allowedOrigins) {
126
126
  * @param target - User-supplied URL candidate (path or absolute URL).
127
127
  * @param options - Allowlist + response configuration.
128
128
  *
129
- * @since 0.35.0
129
+ * @since 0.35.1
130
130
  */
131
131
  export function safeRedirect(target, options = {}) {
132
132
  const allowedPaths = options.allowedPaths ?? [];
@@ -166,4 +166,3 @@ export function safeRedirect(target, options = {}) {
166
166
  }
167
167
  throw new OpenRedirectBlockedError(result.reason, target);
168
168
  }
169
- //# sourceMappingURL=safe-redirect.js.map
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:c41e526d-a8c9-5e8a-bef4-4d616a1ee814",
4
+ "serialNumber": "urn:uuid:3d46c2b6-0b38-564b-9dd2-79098e99155b",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2026-05-24T23:40:26.023Z",
7
+ "timestamp": "2026-05-26T23:20:20.188Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "DaloyJS",
11
11
  "name": "daloy-generate-sbom",
12
- "version": "0.35.0"
12
+ "version": "0.35.1"
13
13
  }
14
14
  ],
15
15
  "authors": [
@@ -19,11 +19,11 @@
19
19
  ],
20
20
  "component": {
21
21
  "type": "library",
22
- "bom-ref": "pkg:npm/@daloyjs/core@0.35.0",
22
+ "bom-ref": "pkg:npm/@daloyjs/core@0.35.1",
23
23
  "name": "@daloyjs/core",
24
- "version": "0.35.0",
24
+ "version": "0.35.1",
25
25
  "description": "DaloyJS is a runtime-portable, contract-first TypeScript web framework with built-in OpenAPI (Hey API), typed client generation, large-scale maintainability, and security-first defaults. Hono-grade portability, Elysia-grade DX, FastAPI-grade docs, Fastify-grade ops — distributed via pnpm.",
26
- "purl": "pkg:npm/@daloyjs/core@0.35.0",
26
+ "purl": "pkg:npm/@daloyjs/core@0.35.1",
27
27
  "licenses": [
28
28
  {
29
29
  "license": {
@@ -46,9 +46,9 @@
46
46
  }
47
47
  ],
48
48
  "swid": {
49
- "tagId": "swidtag--daloyjs-core-0.35.0",
49
+ "tagId": "swidtag--daloyjs-core-0.35.1",
50
50
  "name": "@daloyjs/core",
51
- "version": "0.35.0",
51
+ "version": "0.35.1",
52
52
  "tagVersion": 0,
53
53
  "patch": false
54
54
  }
@@ -57,7 +57,7 @@
57
57
  "components": [],
58
58
  "dependencies": [
59
59
  {
60
- "ref": "pkg:npm/@daloyjs/core@0.35.0",
60
+ "ref": "pkg:npm/@daloyjs/core@0.35.1",
61
61
  "dependsOn": []
62
62
  }
63
63
  ]
@@ -2,10 +2,10 @@
2
2
  "spdxVersion": "SPDX-2.3",
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
- "name": "@daloyjs/core-0.35.0",
6
- "documentNamespace": "https://github.com/daloyjs/daloy/sbom/@daloyjs/core-0.35.0-c41e526d-a8c9-5e8a-bef4-4d616a1ee814",
5
+ "name": "@daloyjs/core-0.35.1",
6
+ "documentNamespace": "https://github.com/daloyjs/daloy/sbom/@daloyjs/core-0.35.1-3d46c2b6-0b38-564b-9dd2-79098e99155b",
7
7
  "creationInfo": {
8
- "created": "2026-05-24T23:40:26.023Z",
8
+ "created": "2026-05-26T23:20:20.188Z",
9
9
  "creators": [
10
10
  "Tool: daloy-generate-sbom",
11
11
  "Organization: DaloyJS"
@@ -16,7 +16,7 @@
16
16
  {
17
17
  "SPDXID": "SPDXRef-Package--daloyjs-core",
18
18
  "name": "@daloyjs/core",
19
- "versionInfo": "0.35.0",
19
+ "versionInfo": "0.35.1",
20
20
  "downloadLocation": "https://github.com/daloyjs/daloy",
21
21
  "filesAnalyzed": false,
22
22
  "licenseConcluded": "MIT",
@@ -27,7 +27,7 @@
27
27
  {
28
28
  "referenceCategory": "PACKAGE-MANAGER",
29
29
  "referenceType": "purl",
30
- "referenceLocator": "pkg:npm/@daloyjs/core@0.35.0"
30
+ "referenceLocator": "pkg:npm/@daloyjs/core@0.35.1"
31
31
  }
32
32
  ]
33
33
  }
package/dist/schema.d.ts CHANGED
@@ -73,4 +73,3 @@ export declare function validate<S extends StandardSchemaV1>(schema: S, value: u
73
73
  * @since 0.1.0
74
74
  */
75
75
  export declare function isStandardSchema(x: unknown): x is StandardSchemaV1;
76
- //# sourceMappingURL=schema.d.ts.map
package/dist/schema.js CHANGED
@@ -41,4 +41,3 @@ export function isStandardSchema(x) {
41
41
  "~standard" in x &&
42
42
  typeof x["~standard"]?.validate === "function");
43
43
  }
44
- //# sourceMappingURL=schema.js.map
@@ -210,4 +210,3 @@ export declare function oauth2Scheme(options: OAuth2SchemeOptions): OAuth2Scheme
210
210
  * @since 0.1.0
211
211
  */
212
212
  export declare function openIdConnectScheme(options: OpenIdConnectSchemeOptions): OpenIdConnectScheme;
213
- //# sourceMappingURL=security-schemes.d.ts.map
@@ -177,4 +177,3 @@ export function openIdConnectScheme(options) {
177
177
  scheme.description = options.description;
178
178
  return markRequirePayloadAuth(scheme, options);
179
179
  }
180
- //# sourceMappingURL=security-schemes.js.map
@@ -338,7 +338,7 @@ export declare function signWebhookPayload(opts: {
338
338
  * @returns A sanitized basename safe to combine with a trusted directory.
339
339
  * @throws {BadRequestError} When the input reduces to an empty string or
340
340
  * matches a Windows-reserved device name.
341
- * @since 0.35.0
341
+ * @since 0.35.1
342
342
  */
343
343
  export declare function sanitizeFilename(name: string): string;
344
344
  /**
@@ -365,7 +365,7 @@ export declare function sanitizeFilename(name: string): string;
365
365
  * @param input - The candidate relative path.
366
366
  * @returns The input unchanged when safe.
367
367
  * @throws {BadRequestError} When the path could escape its base directory.
368
- * @since 0.35.0
368
+ * @since 0.35.1
369
369
  */
370
370
  export declare function assertSafeRelativePath(input: string): string;
371
371
  /**
@@ -376,7 +376,7 @@ export declare function assertSafeRelativePath(input: string): string;
376
376
  * Returns `true` on the first hit. Use before passing untrusted data
377
377
  * into a query object that may be interpreted as an operator expression.
378
378
  *
379
- * @since 0.35.0
379
+ * @since 0.35.1
380
380
  */
381
381
  export declare function hasMongoOperatorKeys(value: unknown): boolean;
382
382
  /**
@@ -385,7 +385,6 @@ export declare function hasMongoOperatorKeys(value: unknown): boolean;
385
385
  * threading it into a NoSQL driver — closes the
386
386
  * `{"password": {"$ne": null}}` authentication-bypass class of bug.
387
387
  *
388
- * @since 0.35.0
388
+ * @since 0.35.1
389
389
  */
390
390
  export declare function assertNoMongoOperators(value: unknown): void;
391
- //# sourceMappingURL=security.d.ts.map
package/dist/security.js CHANGED
@@ -631,7 +631,7 @@ const WINDOWS_RESERVED_NAMES = new Set([
631
631
  * @returns A sanitized basename safe to combine with a trusted directory.
632
632
  * @throws {BadRequestError} When the input reduces to an empty string or
633
633
  * matches a Windows-reserved device name.
634
- * @since 0.35.0
634
+ * @since 0.35.1
635
635
  */
636
636
  export function sanitizeFilename(name) {
637
637
  if (typeof name !== "string") {
@@ -683,7 +683,7 @@ export function sanitizeFilename(name) {
683
683
  * @param input - The candidate relative path.
684
684
  * @returns The input unchanged when safe.
685
685
  * @throws {BadRequestError} When the path could escape its base directory.
686
- * @since 0.35.0
686
+ * @since 0.35.1
687
687
  */
688
688
  export function assertSafeRelativePath(input) {
689
689
  if (typeof input !== "string" || input.length === 0) {
@@ -744,7 +744,7 @@ function walkForMongoOperators(value) {
744
744
  * Returns `true` on the first hit. Use before passing untrusted data
745
745
  * into a query object that may be interpreted as an operator expression.
746
746
  *
747
- * @since 0.35.0
747
+ * @since 0.35.1
748
748
  */
749
749
  export function hasMongoOperatorKeys(value) {
750
750
  return walkForMongoOperators(value);
@@ -755,11 +755,10 @@ export function hasMongoOperatorKeys(value) {
755
755
  * threading it into a NoSQL driver — closes the
756
756
  * `{"password": {"$ne": null}}` authentication-bypass class of bug.
757
757
  *
758
- * @since 0.35.0
758
+ * @since 0.35.1
759
759
  */
760
760
  export function assertNoMongoOperators(value) {
761
761
  if (walkForMongoOperators(value)) {
762
762
  throw new BadRequestError("Operator-prefixed key rejected");
763
763
  }
764
764
  }
765
- //# sourceMappingURL=security.js.map
package/dist/session.d.ts CHANGED
@@ -195,4 +195,3 @@ export declare function verifySignedValue(signed: string, secret: string | strin
195
195
  export type SessionState = {
196
196
  session: SessionContext;
197
197
  };
198
- //# sourceMappingURL=session.d.ts.map