@lovrozagar/honey 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/README.md +1596 -6
  2. package/dist/accepts.d.ts +6 -0
  3. package/dist/accepts.d.ts.map +1 -0
  4. package/dist/body-limit.d.ts +22 -0
  5. package/dist/body-limit.d.ts.map +1 -0
  6. package/dist/build/index.d.ts +42 -0
  7. package/dist/build/index.d.ts.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/client/error.d.ts +14 -0
  11. package/dist/client/error.d.ts.map +1 -0
  12. package/dist/client/http.d.ts +88 -0
  13. package/dist/client/http.d.ts.map +1 -0
  14. package/dist/client/index.d.ts +22 -0
  15. package/dist/client/index.d.ts.map +1 -0
  16. package/dist/client/sdk.d.ts +34 -0
  17. package/dist/client/sdk.d.ts.map +1 -0
  18. package/dist/client/sse.d.ts +10 -0
  19. package/dist/client/sse.d.ts.map +1 -0
  20. package/dist/client/types.d.ts +124 -0
  21. package/dist/client/types.d.ts.map +1 -0
  22. package/dist/client/ws.d.ts +15 -0
  23. package/dist/client/ws.d.ts.map +1 -0
  24. package/dist/client-mcp/server.d.ts +10 -0
  25. package/dist/client-mcp/server.d.ts.map +1 -0
  26. package/dist/client-mcp/types.d.ts +16 -0
  27. package/dist/client-mcp/types.d.ts.map +1 -0
  28. package/dist/cloudflare/realtime.d.ts +30 -0
  29. package/dist/cloudflare/realtime.d.ts.map +1 -0
  30. package/dist/codegen-go-cli.d.ts +22 -0
  31. package/dist/codegen-go-cli.d.ts.map +1 -0
  32. package/dist/codegen-go.d.ts +29 -0
  33. package/dist/codegen-go.d.ts.map +1 -0
  34. package/dist/codegen-hash.d.ts +3 -0
  35. package/dist/codegen-hash.d.ts.map +1 -0
  36. package/dist/codegen-ir.d.ts +123 -0
  37. package/dist/codegen-ir.d.ts.map +1 -0
  38. package/dist/codegen-loaders.d.ts +12 -0
  39. package/dist/codegen-loaders.d.ts.map +1 -0
  40. package/dist/codegen-mcp.d.ts +13 -0
  41. package/dist/codegen-mcp.d.ts.map +1 -0
  42. package/dist/codegen-python.d.ts +21 -0
  43. package/dist/codegen-python.d.ts.map +1 -0
  44. package/dist/codegen-rust.d.ts +18 -0
  45. package/dist/codegen-rust.d.ts.map +1 -0
  46. package/dist/codegen-sanitize.d.ts +3 -0
  47. package/dist/codegen-sanitize.d.ts.map +1 -0
  48. package/dist/codegen-schema-naming.d.ts +22 -0
  49. package/dist/codegen-schema-naming.d.ts.map +1 -0
  50. package/dist/codegen.d.ts +178 -0
  51. package/dist/codegen.d.ts.map +1 -0
  52. package/dist/context.d.ts +56 -0
  53. package/dist/context.d.ts.map +1 -0
  54. package/dist/cookie-sign.d.ts +3 -0
  55. package/dist/cookie-sign.d.ts.map +1 -0
  56. package/dist/cookie.d.ts +12 -0
  57. package/dist/cookie.d.ts.map +1 -0
  58. package/dist/cors.d.ts +13 -0
  59. package/dist/cors.d.ts.map +1 -0
  60. package/dist/crypto.d.ts +2 -0
  61. package/dist/crypto.d.ts.map +1 -0
  62. package/dist/csrf.d.ts +9 -0
  63. package/dist/csrf.d.ts.map +1 -0
  64. package/dist/curl-logger.d.ts +33 -0
  65. package/dist/curl-logger.d.ts.map +1 -0
  66. package/dist/detect-runtime.d.ts +16 -0
  67. package/dist/detect-runtime.d.ts.map +1 -0
  68. package/dist/error.d.ts +21 -0
  69. package/dist/error.d.ts.map +1 -0
  70. package/dist/errors.d.ts +40 -0
  71. package/dist/errors.d.ts.map +1 -0
  72. package/dist/etag.d.ts +9 -0
  73. package/dist/etag.d.ts.map +1 -0
  74. package/dist/feature-load.d.ts +3 -0
  75. package/dist/feature-load.d.ts.map +1 -0
  76. package/dist/go-type-emitter.d.ts +33 -0
  77. package/dist/go-type-emitter.d.ts.map +1 -0
  78. package/dist/honey-response.d.ts +82 -0
  79. package/dist/honey-response.d.ts.map +1 -0
  80. package/dist/i18n-slot.d.ts +7 -0
  81. package/dist/i18n-slot.d.ts.map +1 -0
  82. package/dist/i18n.d.ts +26 -0
  83. package/dist/i18n.d.ts.map +1 -0
  84. package/dist/index.d.ts +470 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/init.d.ts +7 -0
  87. package/dist/init.d.ts.map +1 -0
  88. package/dist/input.d.ts +6 -0
  89. package/dist/input.d.ts.map +1 -0
  90. package/dist/ip-restrict.d.ts +12 -0
  91. package/dist/ip-restrict.d.ts.map +1 -0
  92. package/dist/logger.d.ts +45 -0
  93. package/dist/logger.d.ts.map +1 -0
  94. package/dist/meta-spec.d.ts +81 -0
  95. package/dist/meta-spec.d.ts.map +1 -0
  96. package/dist/middleware.d.ts +60 -0
  97. package/dist/middleware.d.ts.map +1 -0
  98. package/dist/node-request.d.ts +59 -0
  99. package/dist/node-request.d.ts.map +1 -0
  100. package/dist/node.d.ts +13 -0
  101. package/dist/node.d.ts.map +1 -0
  102. package/dist/openapi/register.d.ts +3 -0
  103. package/dist/openapi/register.d.ts.map +1 -0
  104. package/dist/openapi/scalar.d.ts +12 -0
  105. package/dist/openapi/scalar.d.ts.map +1 -0
  106. package/dist/openapi/spec-factory.d.ts +31 -0
  107. package/dist/openapi/spec-factory.d.ts.map +1 -0
  108. package/dist/openapi/spec.d.ts +19 -0
  109. package/dist/openapi/spec.d.ts.map +1 -0
  110. package/dist/openapi/swagger.d.ts +12 -0
  111. package/dist/openapi/swagger.d.ts.map +1 -0
  112. package/dist/plugin.d.ts +167 -0
  113. package/dist/plugin.d.ts.map +1 -0
  114. package/dist/powered-by.d.ts +7 -0
  115. package/dist/powered-by.d.ts.map +1 -0
  116. package/dist/pretty-json.d.ts +10 -0
  117. package/dist/pretty-json.d.ts.map +1 -0
  118. package/dist/proxy.d.ts +51 -0
  119. package/dist/proxy.d.ts.map +1 -0
  120. package/dist/python-type-emitter.d.ts +11 -0
  121. package/dist/python-type-emitter.d.ts.map +1 -0
  122. package/dist/realtime/buffer.d.ts +18 -0
  123. package/dist/realtime/buffer.d.ts.map +1 -0
  124. package/dist/realtime/bus.d.ts +11 -0
  125. package/dist/realtime/bus.d.ts.map +1 -0
  126. package/dist/realtime/longpoll.d.ts +23 -0
  127. package/dist/realtime/longpoll.d.ts.map +1 -0
  128. package/dist/realtime/protocol.d.ts +50 -0
  129. package/dist/realtime/protocol.d.ts.map +1 -0
  130. package/dist/realtime/route.d.ts +42 -0
  131. package/dist/realtime/route.d.ts.map +1 -0
  132. package/dist/realtime/runtime.d.ts +74 -0
  133. package/dist/realtime/runtime.d.ts.map +1 -0
  134. package/dist/request-id.d.ts +12 -0
  135. package/dist/request-id.d.ts.map +1 -0
  136. package/dist/request-to-curl.d.ts +9 -0
  137. package/dist/request-to-curl.d.ts.map +1 -0
  138. package/dist/response.d.ts +57 -0
  139. package/dist/response.d.ts.map +1 -0
  140. package/dist/rust-type-emitter.d.ts +32 -0
  141. package/dist/rust-type-emitter.d.ts.map +1 -0
  142. package/dist/secure-headers.d.ts +16 -0
  143. package/dist/secure-headers.d.ts.map +1 -0
  144. package/dist/serve-register.d.ts +2 -0
  145. package/dist/serve-register.d.ts.map +1 -0
  146. package/dist/serve-slot.d.ts +6 -0
  147. package/dist/serve-slot.d.ts.map +1 -0
  148. package/dist/serve.d.ts +21 -0
  149. package/dist/serve.d.ts.map +1 -0
  150. package/dist/server-timing.d.ts +9 -0
  151. package/dist/server-timing.d.ts.map +1 -0
  152. package/dist/static.d.ts +12 -0
  153. package/dist/static.d.ts.map +1 -0
  154. package/dist/telemetry/otel.d.ts +59 -0
  155. package/dist/telemetry/otel.d.ts.map +1 -0
  156. package/dist/testing.d.ts +24 -0
  157. package/dist/testing.d.ts.map +1 -0
  158. package/dist/timeout.d.ts +7 -0
  159. package/dist/timeout.d.ts.map +1 -0
  160. package/dist/tree.d.ts +90 -0
  161. package/dist/tree.d.ts.map +1 -0
  162. package/dist/ts-type-emitter.d.ts +4 -0
  163. package/dist/ts-type-emitter.d.ts.map +1 -0
  164. package/dist/type-emitter.d.ts +8 -0
  165. package/dist/type-emitter.d.ts.map +1 -0
  166. package/dist/type-extractor.d.ts +39 -0
  167. package/dist/type-extractor.d.ts.map +1 -0
  168. package/dist/types.d.ts +451 -0
  169. package/dist/types.d.ts.map +1 -0
  170. package/dist/validation.d.ts +18 -0
  171. package/dist/validation.d.ts.map +1 -0
  172. package/dist/ws/bun.d.ts +28 -0
  173. package/dist/ws/bun.d.ts.map +1 -0
  174. package/dist/ws/cloudflare.d.ts +55 -0
  175. package/dist/ws/cloudflare.d.ts.map +1 -0
  176. package/dist/ws/deno.d.ts +13 -0
  177. package/dist/ws/deno.d.ts.map +1 -0
  178. package/dist/ws/node.d.ts +10 -0
  179. package/dist/ws/node.d.ts.map +1 -0
  180. package/dist/yaml.d.ts +4 -0
  181. package/dist/yaml.d.ts.map +1 -0
  182. package/docs/api-ref/go.md +82 -82
  183. package/docs/api-ref/python.md +82 -82
  184. package/docs/api-ref/rust.md +82 -82
  185. package/docs/api-ref/typescript.md +82 -82
  186. package/docs/invalidate-spec.md +13 -13
  187. package/docs/meta-spec.md +513 -0
  188. package/docs/packaging.md +85 -0
  189. package/docs/sdk.md +87 -73
  190. package/package.json +195 -51
  191. package/src/body-limit.ts +2 -1
  192. package/src/build/index.ts +2 -9
  193. package/src/cli.ts +2 -3
  194. package/src/client/http.ts +204 -223
  195. package/src/client/index.ts +6 -14
  196. package/src/client/sdk.ts +24 -17
  197. package/src/client/types.ts +4 -9
  198. package/src/client/ws.ts +3 -5
  199. package/src/client-mcp/server.ts +1 -4
  200. package/src/cloudflare/realtime.ts +8 -10
  201. package/src/codegen-go-cli.ts +74 -67
  202. package/src/codegen-go.ts +71 -51
  203. package/src/codegen-ir.ts +16 -27
  204. package/src/codegen-loaders.ts +5 -8
  205. package/src/codegen-mcp.ts +9 -27
  206. package/src/codegen-python.ts +47 -27
  207. package/src/codegen-rust.ts +110 -66
  208. package/src/codegen-sanitize.ts +1 -7
  209. package/src/codegen-schema-naming.ts +8 -2
  210. package/src/codegen.ts +299 -196
  211. package/src/context.ts +91 -95
  212. package/src/cookie-sign.ts +5 -13
  213. package/src/cookie.ts +1 -2
  214. package/src/cors.ts +4 -6
  215. package/src/crypto.ts +1 -4
  216. package/src/csrf.ts +3 -3
  217. package/src/curl-logger.ts +14 -32
  218. package/src/detect-runtime.ts +1 -3
  219. package/src/errors.ts +1 -3
  220. package/src/etag.ts +3 -4
  221. package/src/go-type-emitter.ts +45 -40
  222. package/src/honey-response.ts +1 -3
  223. package/src/i18n.ts +3 -12
  224. package/src/index.ts +1168 -1412
  225. package/src/ip-restrict.ts +2 -1
  226. package/src/logger.ts +13 -13
  227. package/src/meta-spec.ts +0 -0
  228. package/src/middleware.ts +111 -79
  229. package/src/node-request.ts +2 -1
  230. package/src/node.ts +9 -10
  231. package/src/openapi/register.ts +1 -2
  232. package/src/openapi/scalar.ts +9 -9
  233. package/src/openapi/spec-factory.ts +2 -2
  234. package/src/openapi/spec.ts +26 -19
  235. package/src/openapi/swagger.ts +9 -9
  236. package/src/plugin.ts +226 -256
  237. package/src/powered-by.ts +2 -1
  238. package/src/pretty-json.ts +2 -1
  239. package/src/proxy.ts +1 -3
  240. package/src/python-type-emitter.ts +37 -12
  241. package/src/realtime/route.ts +1 -1
  242. package/src/realtime/runtime.ts +9 -12
  243. package/src/request-id.ts +3 -4
  244. package/src/request-to-curl.ts +1 -4
  245. package/src/response.ts +150 -199
  246. package/src/rust-type-emitter.ts +66 -25
  247. package/src/secure-headers.ts +2 -1
  248. package/src/serve.ts +3 -12
  249. package/src/server-timing.ts +2 -1
  250. package/src/static.ts +3 -4
  251. package/src/telemetry/otel.ts +1 -6
  252. package/src/testing.ts +2 -11
  253. package/src/timeout.ts +2 -1
  254. package/src/tree.ts +12 -27
  255. package/src/ts-type-emitter.ts +71 -15
  256. package/src/type-emitter.ts +226 -237
  257. package/src/type-extractor.ts +260 -334
  258. package/src/types.ts +168 -68
  259. package/src/validation.ts +7 -30
  260. package/src/ws/bun.ts +2 -9
  261. package/src/ws/cloudflare.ts +13 -16
  262. package/src/ws/deno.ts +31 -40
  263. package/src/ws/node.ts +4 -19
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Codegen-time policy engine: route meta + route schemas → OpenAPI operation fields.
3
+ * Never consulted at request time. See docs/meta-spec.md.
4
+ */
5
+ import type { MetaSpecConfig, MetaSpecContext, MetaSpecProfile, MetaSpecSchemaSearch, MetaSpecSchemaSource, MetaSpecStrictness, MetaSpecVersionGuard, StandardSchemaLike } from "./types.ts";
6
+ export declare const DEFAULT_PROFILE = "default";
7
+ /** Normalize security shorthand → standard OpenAPI security array */
8
+ export declare function normalizeSecurity(raw: unknown): Record<string, string[]>[];
9
+ export type MetaSpecDiagnosticCode = "AMBIGUOUS_SCHEMA_KEY" | "ASYNC_VALIDATION" | "DESCRIPTOR_MISMATCH" | "DUPLICATE_TARGET" | "INVALID_VALUE" | "MAP_THREW" | "MISSING_ENTRY" | "RESERVED_FIELD" | "UNKNOWN_FIELD" | "UNKNOWN_PROFILE" | "UNSUPPORTED_VERSION";
10
+ export type MetaSpecDiagnostic = {
11
+ code: MetaSpecDiagnosticCode;
12
+ level: "error" | "warn";
13
+ message: string;
14
+ };
15
+ export declare class MetaSpecCollector {
16
+ readonly diagnostics: MetaSpecDiagnostic[];
17
+ /** Meta keys already reported as unmapped — reported once, not once per route */
18
+ readonly reportedMissing: Set<string>;
19
+ private readonly seen;
20
+ add(code: MetaSpecDiagnosticCode, level: "error" | "warn", message: string): void;
21
+ /** Throws one aggregated error if anything failed; warnings go to the console. */
22
+ flush(): void;
23
+ }
24
+ type Produce = (value: unknown, ctx: MetaSpecContext) => Record<string, unknown> | undefined;
25
+ type CompiledEntry = {
26
+ /** Meta key, or schema-metadata key for schema entries */
27
+ from: readonly MetaSpecSchemaSource[] | null;
28
+ http: boolean;
29
+ /** Declared target keys, for same-rank duplicate detection. Empty for `expand` entries */
30
+ keys: readonly string[];
31
+ produce: Produce;
32
+ profiles: readonly string[] | null;
33
+ match: Record<string, unknown> | null;
34
+ rank: 1 | 2;
35
+ /** Schema-metadata key this entry reads; defaults to `sourceKey` */
36
+ read: string;
37
+ schema: StandardSchemaLike | null;
38
+ search: MetaSpecSchemaSearch;
39
+ version: MetaSpecVersionGuard | null;
40
+ sourceKey: string;
41
+ ws: boolean;
42
+ };
43
+ export type CompiledMetaSpec = {
44
+ entries: readonly CompiledEntry[];
45
+ /** Meta keys with an entry (or deliberately hidden) — used for the totality check */
46
+ known: ReadonlySet<string>;
47
+ needsSchemas: boolean;
48
+ profiles: Record<string, MetaSpecProfile>;
49
+ strict: MetaSpecStrictness;
50
+ };
51
+ export declare function compileMetaSpec(config: MetaSpecConfig | null, collector: MetaSpecCollector): CompiledMetaSpec;
52
+ export declare function resolveProfile(spec: CompiledMetaSpec, profile: string | undefined, collector: MetaSpecCollector): {
53
+ filter: (key: string) => boolean;
54
+ name: string;
55
+ };
56
+ /** Result of resolving one schema-metadata key against one schema source */
57
+ export type SchemaMetaHit = {
58
+ found: "ambiguous";
59
+ values: readonly unknown[];
60
+ } | {
61
+ found: false;
62
+ } | {
63
+ found: true;
64
+ value: unknown;
65
+ };
66
+ export type SchemaMetaLookup = (source: MetaSpecSchemaSource, key: string, search: MetaSpecSchemaSearch) => SchemaMetaHit;
67
+ export type ApplyMetaSpecArgs = {
68
+ collector: MetaSpecCollector;
69
+ filter: (key: string) => boolean;
70
+ kind: "http" | "ws";
71
+ meta: Record<string, unknown> | null;
72
+ method: string;
73
+ operation: Record<string, unknown>;
74
+ path: string;
75
+ profile: string;
76
+ schemaMeta?: SchemaMetaLookup;
77
+ spec: CompiledMetaSpec;
78
+ };
79
+ export declare function applyMetaSpec(args: ApplyMetaSpecArgs): void;
80
+ export {};
81
+ //# sourceMappingURL=meta-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-spec.d.ts","sourceRoot":"","sources":["../src/meta-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /** phantom wrapper — at runtime it's just Response, carries TAdds for inference */
2
+ export type MiddlewareResult<TAdds = {}> = Response & {
3
+ readonly __adds?: TAdds;
4
+ };
5
+ export type MiddlewareFn<TCtx = {}, TAdds = {}, TErrors extends string = string> = ((ctx: TCtx, next: {
6
+ <T>(additions: T): Promise<MiddlewareResult<T>>;
7
+ (): Promise<MiddlewareResult<{}>>;
8
+ }) => Promise<MiddlewareResult<TAdds>>) & {
9
+ errors?: readonly TErrors[];
10
+ /** Meta this middleware contributes to every route that mounts it. Codegen + `ctx.meta` */
11
+ meta?: Readonly<Record<string, unknown>>;
12
+ };
13
+ /**
14
+ * Stamp a stable name on a middleware closure.
15
+ *
16
+ * `Function.prototype.name` is inferred by whatever transpiled the module — jiti (used by
17
+ * `honey generate`) and rollup (used by `vite build`) disagree about a closure returned from
18
+ * a factory, which made the generated manifest differ between the two. Naming shipped
19
+ * middleware explicitly makes the manifest deterministic, and "cors" reads better than
20
+ * "anonymous" besides.
21
+ */
22
+ export declare function namedMiddleware<T extends object>(name: string, fn: T): T;
23
+ /** runtime type for stored middleware — erased generics, used internally */
24
+ export type RuntimeMiddleware = (ctx: Record<string, unknown>, next: (additions?: Record<string, unknown>) => Promise<Response>) => Promise<Response>;
25
+ /**
26
+ * Create middleware with error keys constrained to a factory.
27
+ * Error keys are stored on the function and auto-accumulated by .use().
28
+ */
29
+ export declare function defineMiddleware<TReqs, TAdds, TFactory extends Record<string, (...args: never[]) => unknown>, TKeys extends keyof TFactory & string>(opts: {
30
+ errors?: [TFactory, ...TKeys[]];
31
+ fn: MiddlewareFn<TReqs, TAdds>;
32
+ meta?: Record<string, unknown>;
33
+ }): MiddlewareFn<TReqs, TAdds, TKeys>;
34
+ type NextFn = {
35
+ <T>(additions: T): Promise<MiddlewareResult<T>>;
36
+ (): Promise<MiddlewareResult<{}>>;
37
+ };
38
+ /** Extract TAdds from callback return type — distributes over unions */
39
+ type ExtractAdds<T> = T extends Promise<MiddlewareResult<infer A>> ? A : never;
40
+ /**
41
+ * Middleware factory — annotate ctx for TReqs, TAdds inferred from return type:
42
+ * createMiddleware((ctx: { env: { DB: D1Database } }, next) => next({ db }))
43
+ */
44
+ export declare function createMiddleware<TReqs = {}, TRet extends Promise<Response> = Promise<MiddlewareResult<{}>>>(fn: (ctx: TReqs, next: NextFn) => TRet, opts?: {
45
+ meta?: Record<string, unknown>;
46
+ }): MiddlewareFn<TReqs, ExtractAdds<TRet>>;
47
+ /**
48
+ * Merge meta contributed by a middleware chain, in mount order. Resolved once at route
49
+ * registration — never per request, because the precompiled route tree bakes `mt` as a literal
50
+ * and a lazily-derived value would diverge from it.
51
+ */
52
+ export declare function collectMiddlewareMeta(groups: ReadonlyArray<ReadonlyArray<RuntimeMiddleware>>): Record<string, unknown> | null;
53
+ /**
54
+ * Compile a middleware chain + handler into a single function at registration time.
55
+ * Eliminates per-request recursive dispatch, closure allocation, and Promise.resolve wrapping.
56
+ */
57
+ export declare function compileChain(middlewares: RuntimeMiddleware[], handler: (ctx: object) => Response | Promise<Response>): (ctx: object) => Response | Promise<Response>;
58
+ export declare function executeChain(middlewares: RuntimeMiddleware[], ctx: object, handler: (ctx: object) => Response | Promise<Response>): Promise<Response>;
59
+ export {};
60
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { IncomingMessage } from "node:http";
2
+ import { NODE_OUTBOUND } from "./honey-response.ts";
3
+ /** bodyLimit uses this to swap the inbound stream without `new Request(req)`. */
4
+ export declare const REPLACE_BODY: unique symbol;
5
+ /**
6
+ * Headers view over IncomingMessage. `get`/`has` read Node's already-parsed
7
+ * map. A real `Headers` is built only if something iterates or mutates.
8
+ */
9
+ export declare class NodeHeaders {
10
+ #private;
11
+ constructor(incoming: IncomingMessage);
12
+ append(name: string, value: string): void;
13
+ delete(name: string): void;
14
+ get(name: string): string | null;
15
+ getSetCookie(): string[];
16
+ has(name: string): boolean;
17
+ set(name: string, value: string): void;
18
+ forEach(callback: (value: string, key: string, parent: Headers) => void, thisArg?: unknown): void;
19
+ keys(): IterableIterator<string>;
20
+ values(): IterableIterator<string>;
21
+ entries(): IterableIterator<[string, string]>;
22
+ [Symbol.iterator](): IterableIterator<[string, string]>;
23
+ get [Symbol.toStringTag](): string;
24
+ }
25
+ /**
26
+ * Request-shaped wrapper around IncomingMessage. Avoids `new Request()`
27
+ * until a body method needs the real Fetch object (formData / blob / clone).
28
+ */
29
+ export declare class NodeRequest {
30
+ #private;
31
+ readonly [NODE_OUTBOUND] = true;
32
+ readonly cache: RequestCache;
33
+ readonly credentials: RequestCredentials;
34
+ readonly destination: RequestDestination;
35
+ readonly headers: NodeHeaders;
36
+ readonly integrity = "";
37
+ readonly keepalive = false;
38
+ readonly method: string;
39
+ readonly mode: RequestMode;
40
+ readonly redirect: RequestRedirect;
41
+ readonly referrer = "about:client";
42
+ readonly referrerPolicy: ReferrerPolicy;
43
+ readonly url: string;
44
+ constructor(incoming: IncomingMessage);
45
+ get body(): ReadableStream<Uint8Array> | null;
46
+ get bodyUsed(): boolean;
47
+ get signal(): AbortSignal;
48
+ get duplex(): "half";
49
+ [REPLACE_BODY](stream: ReadableStream<Uint8Array>): void;
50
+ arrayBuffer(): Promise<ArrayBuffer>;
51
+ blob(): Promise<Blob>;
52
+ bytes(): Promise<Uint8Array>;
53
+ clone(): Request;
54
+ formData(): Promise<FormData>;
55
+ json(): Promise<unknown>;
56
+ text(): Promise<string>;
57
+ }
58
+ export declare function incomingToNodeRequest(req: IncomingMessage): Request;
59
+ //# sourceMappingURL=node-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-request.d.ts","sourceRoot":"","sources":["../src/node-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,iFAAiF;AACjF,eAAO,MAAM,YAAY,eAAkC,CAAA;AAE3D;;;GAGG;AACH,qBAAa,WAAW;;IAIvB,YAAY,QAAQ,EAAE,eAAe,EAEpC;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExC;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/B;IAED,YAAY,IAAI,MAAM,EAAE,CAEvB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAErC;IAED,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAEhG;IAED,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAE/B;IAED,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAEjC;IAED,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE5C;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEtD;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;CAcD;AAED;;;GAGG;AACH,qBAAa,WAAW;;IACvB,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAO;IAC/B,QAAQ,CAAC,KAAK,EAAgB,YAAY,CAAA;IAC1C,QAAQ,CAAC,WAAW,EAAoB,kBAAkB,CAAA;IAC1D,QAAQ,CAAC,WAAW,EAAS,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,SAAS,MAAK;IACvB,QAAQ,CAAC,SAAS,SAAQ;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAa,WAAW,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAe,eAAe,CAAA;IAC/C,QAAQ,CAAC,QAAQ,kBAAiB;IAClC,QAAQ,CAAC,cAAc,EAAS,cAAc,CAAA;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IASpB,YAAY,QAAQ,EAAE,eAAe,EAOpC;IAED,IAAI,IAAI,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAO5C;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,MAAM,IAAI,WAAW,CAMxB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAIvD;IAEK,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAGxC;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAEK,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAGjC;IAED,KAAK,IAAI,OAAO,CAEf;IAEK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAElC;IAEK,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAG7B;IAEK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAG5B;CA0BD;AA+BD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAEnE"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import type { Server } from "node:http";
2
+ import type { Honey } from "./index.ts";
3
+ type ServeOptions<TEnv> = {
4
+ env: TEnv;
5
+ hostname?: string;
6
+ port?: number;
7
+ };
8
+ export type HoneyServer = Server & {
9
+ shutdown(timeout?: number): Promise<void>;
10
+ };
11
+ export declare function serve<TEnv>(app: Honey<TEnv, unknown, unknown, unknown, unknown, string, string>, options: ServeOptions<TEnv>): HoneyServer;
12
+ export {};
13
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,MAAM,EAAkB,MAAM,WAAW,CAAA;AAIxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIvC,KAAK,YAAY,CAAC,IAAI,IAAI;IACzB,GAAG,EAAE,IAAI,CAAA;IACT,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AA6GD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzC,CAAA;AAED,wBAAgB,KAAK,CAAC,IAAI,EACzB,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EACpE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,GACzB,WAAW,CAkFb"}
@@ -0,0 +1,3 @@
1
+ export declare function enableOpenApi(): void;
2
+ export { spec } from "./spec.ts";
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/openapi/register.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,IAAI,IAAI,CAOpC;AAID,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { TypedResponse } from "../response.ts";
2
+ type ScalarOptions = {
3
+ url: string;
4
+ [key: string]: unknown;
5
+ };
6
+ export declare function scalar(options: ScalarOptions): (ctx: {
7
+ res: {
8
+ html(sk: "ok", body: string): TypedResponse;
9
+ };
10
+ }) => TypedResponse;
11
+ export {};
12
+ //# sourceMappingURL=scalar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../../src/openapi/scalar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,KAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,MAAM,CACrB,OAAO,EAAE,aAAa,GACpB,CAAC,GAAG,EAAE;IAAE,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAA;CAAE,KAAK,aAAa,CAuBlF"}
@@ -0,0 +1,31 @@
1
+ /** Slot for runtime spec/manifest generation. Filled by `import "@lovrozagar/honey/openapi"`. */
2
+ export type OpenApiGenerate = (app: unknown, options: {
3
+ filterRoutes?: (route: {
4
+ meta: unknown;
5
+ method: string;
6
+ path: string;
7
+ }) => boolean;
8
+ info: {
9
+ description?: string;
10
+ title: string;
11
+ version: string;
12
+ };
13
+ profile?: string;
14
+ securitySchemes?: Record<string, unknown>;
15
+ }) => Promise<unknown>;
16
+ export type ManifestGenerate = (app: unknown) => Promise<unknown>;
17
+ export type YamlGenerate = (value: unknown) => string;
18
+ import type { HoneyRes } from "../response.ts";
19
+ export type DocsUi = (kind: "scalar" | "swagger", specUrl: string) => (ctx: {
20
+ res: HoneyRes;
21
+ }) => Response | Promise<Response>;
22
+ export type OpenApiRuntime = {
23
+ docsUi: DocsUi;
24
+ generateManifest: ManifestGenerate;
25
+ generateOpenApi: OpenApiGenerate;
26
+ toYaml: YamlGenerate;
27
+ };
28
+ export declare function registerOpenApiRuntime(next: OpenApiRuntime): void;
29
+ export declare function resetOpenApiRuntime(): void;
30
+ export declare function getOpenApiRuntime(): OpenApiRuntime;
31
+ //# sourceMappingURL=spec-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-factory.d.ts","sourceRoot":"","sources":["../../src/openapi/spec-factory.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAEjG,MAAM,MAAM,eAAe,GAAG,CAC7B,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IACR,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAA;IAClF,IAAI,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC,KACG,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAEjE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAA;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,MAAM,MAAM,MAAM,GAAG,CACpB,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,KACX,CAAC,GAAG,EAAE;IAAE,GAAG,EAAE,QAAQ,CAAA;CAAE,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,eAAe,CAAA;IAChC,MAAM,EAAE,YAAY,CAAA;CACpB,CAAA;AAMD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEjE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAGlD"}
@@ -0,0 +1,19 @@
1
+ import type { OpenApiRouteInfo } from "../codegen.ts";
2
+ import type { DefaultMeta } from "../types.ts";
3
+ import type { TypedResponse } from "../response.ts";
4
+ type SpecOptions<TMeta = Record<string, unknown> | null> = {
5
+ description?: string;
6
+ filterRoutes?: (route: OpenApiRouteInfo<DefaultMeta & TMeta>) => boolean;
7
+ /** Named metaSpec profile selecting which emitted keys this document carries */
8
+ profile?: string;
9
+ securitySchemes?: Record<string, unknown>;
10
+ title: string;
11
+ version: string;
12
+ };
13
+ export declare function spec<TMeta = Record<string, unknown> | null>(options: SpecOptions<TMeta>): (ctx: {
14
+ res: {
15
+ json(sk: "ok", data: unknown): TypedResponse;
16
+ };
17
+ }) => TypedResponse | Promise<TypedResponse>;
18
+ export {};
19
+ //# sourceMappingURL=spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/openapi/spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,KAAK,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,OAAO,CAAA;IACxE,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC1D,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GACzB,CAAC,GAAG,EAAE;IAAE,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,aAAa,CAAA;KAAE,CAAA;CAAE,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAoB5G"}
@@ -0,0 +1,12 @@
1
+ import type { TypedResponse } from "../response.ts";
2
+ type SwaggerOptions = {
3
+ url: string;
4
+ [key: string]: unknown;
5
+ };
6
+ export declare function swagger(options: SwaggerOptions): (ctx: {
7
+ res: {
8
+ html(sk: "ok", body: string): TypedResponse;
9
+ };
10
+ }) => TypedResponse;
11
+ export {};
12
+ //# sourceMappingURL=swagger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../../src/openapi/swagger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,KAAK,cAAc,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,OAAO,CACtB,OAAO,EAAE,cAAc,GACrB,CAAC,GAAG,EAAE;IAAE,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAA;CAAE,KAAK,aAAa,CAwBlF"}
@@ -0,0 +1,167 @@
1
+ import { generateRouteTree } from "./codegen.ts";
2
+ import type { OpenApiRouteInfo, OpenApiSanitizeOptions } from "./codegen.ts";
3
+ import type { Honey } from "./index.ts";
4
+ type HoneyPluginOptions = {
5
+ manifest?: {
6
+ output: string;
7
+ };
8
+ openApi?: {
9
+ info: {
10
+ description?: string;
11
+ title: string;
12
+ version: string;
13
+ };
14
+ output: string;
15
+ };
16
+ };
17
+ type GeneratedArtifacts = {
18
+ manifest?: string;
19
+ openApi?: string;
20
+ openApiYaml?: string;
21
+ routeTree: string;
22
+ };
23
+ export declare function generateFromApp<TEnv, TCtx, TRoutes, TMeta, TFactory, TDefaults extends string, TBase extends string>(app: Honey<TEnv, TCtx, TRoutes, TMeta, TFactory, TDefaults, TBase>, options?: HoneyPluginOptions): Promise<GeneratedArtifacts>;
24
+ export interface HoneyOpenApiOutputConfig {
25
+ description?: string;
26
+ filterRoutes?: (route: OpenApiRouteInfo) => boolean;
27
+ path?: string;
28
+ /** Named metaSpec profile selecting which emitted keys this document carries */
29
+ profile?: string;
30
+ sanitize?: OpenApiSanitizeOptions;
31
+ securitySchemes?: Record<string, unknown>;
32
+ title: string;
33
+ version: string;
34
+ }
35
+ export interface HoneyGoCliConfig {
36
+ binaryName: string;
37
+ configName?: string;
38
+ defaultBaseURL?: string;
39
+ envPrefix?: string;
40
+ modulePath?: string;
41
+ out: string;
42
+ sdkModulePath?: string;
43
+ }
44
+ export interface HoneySdkPortsConfig {
45
+ go?: {
46
+ modulePath?: string;
47
+ outDir: string;
48
+ };
49
+ python?: {
50
+ outDir: string;
51
+ };
52
+ rust?: {
53
+ crateName?: string;
54
+ outDir: string;
55
+ };
56
+ typescript?: boolean | {
57
+ outDir?: string;
58
+ };
59
+ }
60
+ export interface HoneyCodegenConfig {
61
+ cli?: boolean | HoneyGoCliConfig;
62
+ manifest?: boolean | string;
63
+ mergeTree?: string;
64
+ openApi?: HoneyOpenApiOutputConfig | HoneyOpenApiOutputConfig[];
65
+ sdk?: boolean | {
66
+ name?: string;
67
+ ports?: HoneySdkPortsConfig;
68
+ specs?: string[];
69
+ };
70
+ tree?: boolean | string;
71
+ types?: boolean | string | {
72
+ baseCtxName?: string;
73
+ path?: string;
74
+ };
75
+ }
76
+ export interface HoneyVitePluginConfig {
77
+ app?: string;
78
+ codegen?: HoneyCodegenConfig;
79
+ watch?: string[];
80
+ }
81
+ export type ResolvedOpenApiOutput = {
82
+ description?: string;
83
+ filterRoutes?: (route: OpenApiRouteInfo) => boolean;
84
+ path: string;
85
+ /** Named metaSpec profile selecting which emitted keys this document carries */
86
+ profile?: string;
87
+ sanitize?: OpenApiSanitizeOptions;
88
+ securitySchemes?: Record<string, unknown>;
89
+ title: string;
90
+ version: string;
91
+ };
92
+ export type ResolvedGoCliConfig = {
93
+ binaryName: string;
94
+ configName: string | undefined;
95
+ defaultBaseURL: string | undefined;
96
+ envPrefix: string | undefined;
97
+ modulePath: string | undefined;
98
+ out: string;
99
+ sdkModulePath: string | undefined;
100
+ };
101
+ export type ResolvedSdkPorts = {
102
+ go?: {
103
+ modulePath: string | undefined;
104
+ outDir: string;
105
+ };
106
+ python?: {
107
+ outDir: string;
108
+ };
109
+ rust?: {
110
+ crateName: string | undefined;
111
+ outDir: string;
112
+ };
113
+ typescript?: {
114
+ outDir: string;
115
+ };
116
+ };
117
+ export interface ResolvedHoneyConfig {
118
+ app?: string;
119
+ codegen: {
120
+ cli: false | ResolvedGoCliConfig;
121
+ manifest: false | string;
122
+ mergeTree: string | undefined;
123
+ openApi: false | ResolvedOpenApiOutput[];
124
+ sdk: false | {
125
+ name: string;
126
+ ports: ResolvedSdkPorts;
127
+ specs?: string[];
128
+ };
129
+ tree: false | string;
130
+ types: false | {
131
+ baseCtxName: string | undefined;
132
+ path: string;
133
+ };
134
+ };
135
+ watch: string[];
136
+ }
137
+ export declare function resolveHoneyConfig(raw: HoneyVitePluginConfig): ResolvedHoneyConfig;
138
+ export declare function getLastHoneyConfig(): HoneyVitePluginConfig | undefined;
139
+ export declare function generateAndWrite(config: ResolvedHoneyConfig, root: string): Promise<void>;
140
+ export declare function honey(config: HoneyVitePluginConfig): {
141
+ buildStart(): Promise<void>;
142
+ configResolved(cfg: {
143
+ root: string;
144
+ }): void;
145
+ hotUpdate(ctx: {
146
+ file: string;
147
+ modules: unknown[];
148
+ server: {
149
+ moduleGraph: {
150
+ getModuleById(id: string): unknown;
151
+ };
152
+ reloadModule(mod: unknown): void;
153
+ };
154
+ }): Promise<unknown[] | undefined>;
155
+ load(id: string): Promise<{
156
+ code: string;
157
+ moduleType: string;
158
+ } | undefined>;
159
+ name: string;
160
+ resolveId(id: string): string | undefined;
161
+ transform(code: string, id: string): {
162
+ code: string;
163
+ map: null;
164
+ } | undefined;
165
+ }[];
166
+ export { generateRouteTree };
167
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { MiddlewareFn } from "./middleware.ts";
2
+ type PoweredByOptions = {
3
+ name?: string;
4
+ };
5
+ export declare function poweredBy(options?: PoweredByOptions): MiddlewareFn<{}, {}>;
6
+ export {};
7
+ //# sourceMappingURL=powered-by.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powered-by.d.ts","sourceRoot":"","sources":["../src/powered-by.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,KAAK,gBAAgB,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAU1E"}
@@ -0,0 +1,10 @@
1
+ import type { MiddlewareFn } from "./middleware.ts";
2
+ type PrettyJsonOptions = {
3
+ query?: string;
4
+ space?: number;
5
+ };
6
+ export declare function prettyJson(options?: PrettyJsonOptions): MiddlewareFn<{
7
+ req: Request;
8
+ }, {}>;
9
+ export {};
10
+ //# sourceMappingURL=pretty-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pretty-json.d.ts","sourceRoot":"","sources":["../src/pretty-json.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,KAAK,iBAAiB,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,EAAE,CAAC,CA8B1F"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Proxy configuration — controls how requests are forwarded to downstream services.
3
+ *
4
+ * `destination` is the only required field. Framework builds the RequestInit
5
+ * (headers, body, signal, redirect) and passes it along with the resolved URL.
6
+ */
7
+ export type ProxyConfig<TCtx> = {
8
+ /**
9
+ * Where to send the request. Framework doesn't care how — CF service binding,
10
+ * URL fetch, Durable Object stub, anything that returns a Response.
11
+ *
12
+ * @param ctx - honey context (middleware additions available)
13
+ * @param url - path + query string, after rewriteUrl if provided
14
+ * @param init - framework-prepared RequestInit (method, headers, body, signal, redirect)
15
+ */
16
+ destination: (ctx: TCtx, url: string, init: RequestInit) => Response | Promise<Response>;
17
+ /**
18
+ * Hook after downstream responds, before returning to client.
19
+ * Return void to passthrough, or return a new Response to replace.
20
+ * Can mutate response.headers in place (zero allocation).
21
+ * NOT called for 101 WebSocket upgrades (opaque response).
22
+ */
23
+ onResponse?: (ctx: TCtx, response: Response) => void | Response | Promise<void | Response>;
24
+ /**
25
+ * Set request headers before forwarding. Called after hop-by-hop headers are stripped.
26
+ * Static record: entries are set on the headers object.
27
+ * Function: mutate headers in place.
28
+ */
29
+ requestHeaders?: Record<string, string> | ((ctx: TCtx, headers: Headers) => void);
30
+ /**
31
+ * Rewrite URL before passing to destination.
32
+ * Receives path + query string, returns transformed URL.
33
+ */
34
+ rewriteUrl?: (url: string, ctx: TCtx) => string;
35
+ /**
36
+ * Timeout in milliseconds. Default: 30000.
37
+ * Accepts a number or a function that receives ctx and returns a number.
38
+ * Disabled for WebSocket upgrades.
39
+ */
40
+ timeout?: number | ((ctx: TCtx) => number);
41
+ };
42
+ /**
43
+ * Creates a proxy handler function from config.
44
+ * Used internally by RouteBuilder.proxy() — not meant for direct consumption.
45
+ *
46
+ * TCtx is unconstrained because HandlerCtx uses Omit which breaks structural
47
+ * compatibility with { path, req }. At runtime ctx is always HoneyContext
48
+ * which has both fields — we access them via property access on the object.
49
+ */
50
+ export declare function createProxyHandler<TCtx>(config: ProxyConfig<TCtx>): (ctx: TCtx) => Promise<Response>;
51
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,IAAI,IAAI;IAC/B;;;;;;;OAOG;IACH,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAExF;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAA;IAE1F;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;IAEjF;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,MAAM,CAAA;IAE/C;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,CAAA;CAC1C,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,CA6FpG"}
@@ -0,0 +1,11 @@
1
+ import type { IRSchema } from "./codegen-ir.ts";
2
+ /** Suffix reserved words with `_` per PEP 8 convention. */
3
+ export declare function pyIdent(name: string): string;
4
+ /**
5
+ * Convert an IRSchema to a Python type string.
6
+ * depth > 8 returns `Any` (mirrors TS `unknown` fallback).
7
+ */
8
+ export declare function irToPython(ir: IRSchema, depth?: number): string;
9
+ /** Thin shim — delegates to irToPython(schemaToIR(schema), depth). */
10
+ export declare function jsonSchemaToPy(schema: Record<string, unknown> | undefined, depth?: number): string;
11
+ //# sourceMappingURL=python-type-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-type-emitter.d.ts","sourceRoot":"","sources":["../src/python-type-emitter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAwCxD,2DAA2D;AAC3D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG5C;AA6CD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,SAAI,GAAG,MAAM,CAoE1D;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,KAAK,SAAI,GAAG,MAAM,CAG7F"}
@@ -0,0 +1,18 @@
1
+ export declare class ReconnectBuffer {
2
+ private readonly size;
3
+ private readonly ttl;
4
+ private readonly connections;
5
+ constructor(opts?: {
6
+ size?: number;
7
+ ttl?: number;
8
+ });
9
+ create(existingToken?: string): string;
10
+ push(token: string, data: unknown): number;
11
+ replay(token: string, lastId: number): Array<{
12
+ id: number;
13
+ data: unknown;
14
+ }> | null;
15
+ disconnect(token: string): void;
16
+ destroy(token: string): void;
17
+ }
18
+ //# sourceMappingURL=buffer.d.ts.map