@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.
- package/README.md +1596 -6
- package/dist/accepts.d.ts +6 -0
- package/dist/accepts.d.ts.map +1 -0
- package/dist/body-limit.d.ts +22 -0
- package/dist/body-limit.d.ts.map +1 -0
- package/dist/build/index.d.ts +42 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/client/error.d.ts +14 -0
- package/dist/client/error.d.ts.map +1 -0
- package/dist/client/http.d.ts +88 -0
- package/dist/client/http.d.ts.map +1 -0
- package/dist/client/index.d.ts +22 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/sdk.d.ts +34 -0
- package/dist/client/sdk.d.ts.map +1 -0
- package/dist/client/sse.d.ts +10 -0
- package/dist/client/sse.d.ts.map +1 -0
- package/dist/client/types.d.ts +124 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/ws.d.ts +15 -0
- package/dist/client/ws.d.ts.map +1 -0
- package/dist/client-mcp/server.d.ts +10 -0
- package/dist/client-mcp/server.d.ts.map +1 -0
- package/dist/client-mcp/types.d.ts +16 -0
- package/dist/client-mcp/types.d.ts.map +1 -0
- package/dist/cloudflare/realtime.d.ts +30 -0
- package/dist/cloudflare/realtime.d.ts.map +1 -0
- package/dist/codegen-go-cli.d.ts +22 -0
- package/dist/codegen-go-cli.d.ts.map +1 -0
- package/dist/codegen-go.d.ts +29 -0
- package/dist/codegen-go.d.ts.map +1 -0
- package/dist/codegen-hash.d.ts +3 -0
- package/dist/codegen-hash.d.ts.map +1 -0
- package/dist/codegen-ir.d.ts +123 -0
- package/dist/codegen-ir.d.ts.map +1 -0
- package/dist/codegen-loaders.d.ts +12 -0
- package/dist/codegen-loaders.d.ts.map +1 -0
- package/dist/codegen-mcp.d.ts +13 -0
- package/dist/codegen-mcp.d.ts.map +1 -0
- package/dist/codegen-python.d.ts +21 -0
- package/dist/codegen-python.d.ts.map +1 -0
- package/dist/codegen-rust.d.ts +18 -0
- package/dist/codegen-rust.d.ts.map +1 -0
- package/dist/codegen-sanitize.d.ts +3 -0
- package/dist/codegen-sanitize.d.ts.map +1 -0
- package/dist/codegen-schema-naming.d.ts +22 -0
- package/dist/codegen-schema-naming.d.ts.map +1 -0
- package/dist/codegen.d.ts +178 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/context.d.ts +56 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/cookie-sign.d.ts +3 -0
- package/dist/cookie-sign.d.ts.map +1 -0
- package/dist/cookie.d.ts +12 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/cors.d.ts +13 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/crypto.d.ts +2 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/csrf.d.ts +9 -0
- package/dist/csrf.d.ts.map +1 -0
- package/dist/curl-logger.d.ts +33 -0
- package/dist/curl-logger.d.ts.map +1 -0
- package/dist/detect-runtime.d.ts +16 -0
- package/dist/detect-runtime.d.ts.map +1 -0
- package/dist/error.d.ts +21 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/errors.d.ts +40 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/etag.d.ts +9 -0
- package/dist/etag.d.ts.map +1 -0
- package/dist/feature-load.d.ts +3 -0
- package/dist/feature-load.d.ts.map +1 -0
- package/dist/go-type-emitter.d.ts +33 -0
- package/dist/go-type-emitter.d.ts.map +1 -0
- package/dist/honey-response.d.ts +82 -0
- package/dist/honey-response.d.ts.map +1 -0
- package/dist/i18n-slot.d.ts +7 -0
- package/dist/i18n-slot.d.ts.map +1 -0
- package/dist/i18n.d.ts +26 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/index.d.ts +470 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/init.d.ts +7 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/input.d.ts +6 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/ip-restrict.d.ts +12 -0
- package/dist/ip-restrict.d.ts.map +1 -0
- package/dist/logger.d.ts +45 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/meta-spec.d.ts +81 -0
- package/dist/meta-spec.d.ts.map +1 -0
- package/dist/middleware.d.ts +60 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/node-request.d.ts +59 -0
- package/dist/node-request.d.ts.map +1 -0
- package/dist/node.d.ts +13 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/openapi/register.d.ts +3 -0
- package/dist/openapi/register.d.ts.map +1 -0
- package/dist/openapi/scalar.d.ts +12 -0
- package/dist/openapi/scalar.d.ts.map +1 -0
- package/dist/openapi/spec-factory.d.ts +31 -0
- package/dist/openapi/spec-factory.d.ts.map +1 -0
- package/dist/openapi/spec.d.ts +19 -0
- package/dist/openapi/spec.d.ts.map +1 -0
- package/dist/openapi/swagger.d.ts +12 -0
- package/dist/openapi/swagger.d.ts.map +1 -0
- package/dist/plugin.d.ts +167 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/powered-by.d.ts +7 -0
- package/dist/powered-by.d.ts.map +1 -0
- package/dist/pretty-json.d.ts +10 -0
- package/dist/pretty-json.d.ts.map +1 -0
- package/dist/proxy.d.ts +51 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/python-type-emitter.d.ts +11 -0
- package/dist/python-type-emitter.d.ts.map +1 -0
- package/dist/realtime/buffer.d.ts +18 -0
- package/dist/realtime/buffer.d.ts.map +1 -0
- package/dist/realtime/bus.d.ts +11 -0
- package/dist/realtime/bus.d.ts.map +1 -0
- package/dist/realtime/longpoll.d.ts +23 -0
- package/dist/realtime/longpoll.d.ts.map +1 -0
- package/dist/realtime/protocol.d.ts +50 -0
- package/dist/realtime/protocol.d.ts.map +1 -0
- package/dist/realtime/route.d.ts +42 -0
- package/dist/realtime/route.d.ts.map +1 -0
- package/dist/realtime/runtime.d.ts +74 -0
- package/dist/realtime/runtime.d.ts.map +1 -0
- package/dist/request-id.d.ts +12 -0
- package/dist/request-id.d.ts.map +1 -0
- package/dist/request-to-curl.d.ts +9 -0
- package/dist/request-to-curl.d.ts.map +1 -0
- package/dist/response.d.ts +57 -0
- package/dist/response.d.ts.map +1 -0
- package/dist/rust-type-emitter.d.ts +32 -0
- package/dist/rust-type-emitter.d.ts.map +1 -0
- package/dist/secure-headers.d.ts +16 -0
- package/dist/secure-headers.d.ts.map +1 -0
- package/dist/serve-register.d.ts +2 -0
- package/dist/serve-register.d.ts.map +1 -0
- package/dist/serve-slot.d.ts +6 -0
- package/dist/serve-slot.d.ts.map +1 -0
- package/dist/serve.d.ts +21 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/server-timing.d.ts +9 -0
- package/dist/server-timing.d.ts.map +1 -0
- package/dist/static.d.ts +12 -0
- package/dist/static.d.ts.map +1 -0
- package/dist/telemetry/otel.d.ts +59 -0
- package/dist/telemetry/otel.d.ts.map +1 -0
- package/dist/testing.d.ts +24 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/timeout.d.ts +7 -0
- package/dist/timeout.d.ts.map +1 -0
- package/dist/tree.d.ts +90 -0
- package/dist/tree.d.ts.map +1 -0
- package/dist/ts-type-emitter.d.ts +4 -0
- package/dist/ts-type-emitter.d.ts.map +1 -0
- package/dist/type-emitter.d.ts +8 -0
- package/dist/type-emitter.d.ts.map +1 -0
- package/dist/type-extractor.d.ts +39 -0
- package/dist/type-extractor.d.ts.map +1 -0
- package/dist/types.d.ts +451 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/validation.d.ts +18 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/ws/bun.d.ts +28 -0
- package/dist/ws/bun.d.ts.map +1 -0
- package/dist/ws/cloudflare.d.ts +55 -0
- package/dist/ws/cloudflare.d.ts.map +1 -0
- package/dist/ws/deno.d.ts +13 -0
- package/dist/ws/deno.d.ts.map +1 -0
- package/dist/ws/node.d.ts +10 -0
- package/dist/ws/node.d.ts.map +1 -0
- package/dist/yaml.d.ts +4 -0
- package/dist/yaml.d.ts.map +1 -0
- package/docs/api-ref/go.md +82 -82
- package/docs/api-ref/python.md +82 -82
- package/docs/api-ref/rust.md +82 -82
- package/docs/api-ref/typescript.md +82 -82
- package/docs/invalidate-spec.md +13 -13
- package/docs/meta-spec.md +513 -0
- package/docs/packaging.md +85 -0
- package/docs/sdk.md +87 -73
- package/package.json +195 -51
- package/src/body-limit.ts +2 -1
- package/src/build/index.ts +2 -9
- package/src/cli.ts +2 -3
- package/src/client/http.ts +204 -223
- package/src/client/index.ts +6 -14
- package/src/client/sdk.ts +24 -17
- package/src/client/types.ts +4 -9
- package/src/client/ws.ts +3 -5
- package/src/client-mcp/server.ts +1 -4
- package/src/cloudflare/realtime.ts +8 -10
- package/src/codegen-go-cli.ts +74 -67
- package/src/codegen-go.ts +71 -51
- package/src/codegen-ir.ts +16 -27
- package/src/codegen-loaders.ts +5 -8
- package/src/codegen-mcp.ts +9 -27
- package/src/codegen-python.ts +47 -27
- package/src/codegen-rust.ts +110 -66
- package/src/codegen-sanitize.ts +1 -7
- package/src/codegen-schema-naming.ts +8 -2
- package/src/codegen.ts +299 -196
- package/src/context.ts +91 -95
- package/src/cookie-sign.ts +5 -13
- package/src/cookie.ts +1 -2
- package/src/cors.ts +4 -6
- package/src/crypto.ts +1 -4
- package/src/csrf.ts +3 -3
- package/src/curl-logger.ts +14 -32
- package/src/detect-runtime.ts +1 -3
- package/src/errors.ts +1 -3
- package/src/etag.ts +3 -4
- package/src/go-type-emitter.ts +45 -40
- package/src/honey-response.ts +1 -3
- package/src/i18n.ts +3 -12
- package/src/index.ts +1168 -1412
- package/src/ip-restrict.ts +2 -1
- package/src/logger.ts +13 -13
- package/src/meta-spec.ts +0 -0
- package/src/middleware.ts +111 -79
- package/src/node-request.ts +2 -1
- package/src/node.ts +9 -10
- package/src/openapi/register.ts +1 -2
- package/src/openapi/scalar.ts +9 -9
- package/src/openapi/spec-factory.ts +2 -2
- package/src/openapi/spec.ts +26 -19
- package/src/openapi/swagger.ts +9 -9
- package/src/plugin.ts +226 -256
- package/src/powered-by.ts +2 -1
- package/src/pretty-json.ts +2 -1
- package/src/proxy.ts +1 -3
- package/src/python-type-emitter.ts +37 -12
- package/src/realtime/route.ts +1 -1
- package/src/realtime/runtime.ts +9 -12
- package/src/request-id.ts +3 -4
- package/src/request-to-curl.ts +1 -4
- package/src/response.ts +150 -199
- package/src/rust-type-emitter.ts +66 -25
- package/src/secure-headers.ts +2 -1
- package/src/serve.ts +3 -12
- package/src/server-timing.ts +2 -1
- package/src/static.ts +3 -4
- package/src/telemetry/otel.ts +1 -6
- package/src/testing.ts +2 -11
- package/src/timeout.ts +2 -1
- package/src/tree.ts +12 -27
- package/src/ts-type-emitter.ts +71 -15
- package/src/type-emitter.ts +226 -237
- package/src/type-extractor.ts +260 -334
- package/src/types.ts +168 -68
- package/src/validation.ts +7 -30
- package/src/ws/bun.ts +2 -9
- package/src/ws/cloudflare.ts +13 -16
- package/src/ws/deno.ts +31 -40
- package/src/ws/node.ts +4 -19
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pick the best supported content type based on the request's Accept header.
|
|
3
|
+
* Returns null if no match found. Returns first supported type if no Accept header.
|
|
4
|
+
*/
|
|
5
|
+
export declare function accepts(req: Request, supported: string[]): string | null;
|
|
6
|
+
//# sourceMappingURL=accepts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accepts.d.ts","sourceRoot":"","sources":["../src/accepts.ts"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CA2BxE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MiddlewareFn } from "./middleware.ts";
|
|
2
|
+
type BodyLimitOptions = {
|
|
3
|
+
/** Per content-type size limits (matched via startsWith against request Content-Type header) */
|
|
4
|
+
limits?: Record<string, number>;
|
|
5
|
+
/** Default max body size in bytes — used when no content-type match or no limits map */
|
|
6
|
+
maxSize: number;
|
|
7
|
+
/**
|
|
8
|
+
* Skip stream byte-counting when Content-Length header is present and within bounds.
|
|
9
|
+
* HTTP/1.1 and HTTP/2 framing guarantees body cannot exceed declared Content-Length
|
|
10
|
+
* regardless of TLS — the protocol enforces it at the transport level.
|
|
11
|
+
* When false, every request body is wrapped in a counting TransformStream even
|
|
12
|
+
* when Content-Length is present. Chunked requests (no Content-Length) are always
|
|
13
|
+
* stream-counted regardless of this setting.
|
|
14
|
+
* Default: false.
|
|
15
|
+
*/
|
|
16
|
+
trustContentLength?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export type { BodyLimitOptions };
|
|
19
|
+
export declare function bodyLimit(opts: BodyLimitOptions): MiddlewareFn<{
|
|
20
|
+
req: Request;
|
|
21
|
+
}, {}>;
|
|
22
|
+
//# sourceMappingURL=body-limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-limit.d.ts","sourceRoot":"","sources":["../src/body-limit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGnD,KAAK,gBAAgB,GAAG;IACvB,gGAAgG;IAChG,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAA;AAEhC,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,EAAE,CAAC,CA4EpF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type HoneyBuildConfig = {
|
|
2
|
+
external?: string[];
|
|
3
|
+
minify?: boolean;
|
|
4
|
+
outDir?: string;
|
|
5
|
+
port?: number;
|
|
6
|
+
target: "bun" | "cloudflare" | "deno" | "node";
|
|
7
|
+
};
|
|
8
|
+
export declare function createBuildPlugin(buildConfig: HoneyBuildConfig, shared: {
|
|
9
|
+
entry: string;
|
|
10
|
+
export: string;
|
|
11
|
+
}): {
|
|
12
|
+
apply: "build";
|
|
13
|
+
config(): {
|
|
14
|
+
build: {
|
|
15
|
+
emptyOutDir: boolean;
|
|
16
|
+
minify: boolean;
|
|
17
|
+
outDir: string;
|
|
18
|
+
rolldownOptions: {
|
|
19
|
+
external: string[];
|
|
20
|
+
input: string;
|
|
21
|
+
output: {
|
|
22
|
+
entryFileNames: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
ssr: boolean;
|
|
26
|
+
};
|
|
27
|
+
ssr: {
|
|
28
|
+
noExternal: boolean;
|
|
29
|
+
target: "node" | "webworker";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
configResolved(cfg: {
|
|
33
|
+
root: string;
|
|
34
|
+
}): void;
|
|
35
|
+
load(id: string): {
|
|
36
|
+
code: string;
|
|
37
|
+
moduleType: string;
|
|
38
|
+
} | undefined;
|
|
39
|
+
name: string;
|
|
40
|
+
resolveId(id: string): string | undefined;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAA;CAC9C,CAAA;AAkGD,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;WAWjG,OAAO;;;;;;;;;;oBAWA,cAAc;;;;;;YAKzB,UAAU;YACV,MAAM;;;wBAKW;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;aAI3B,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;;kBAcpD,MAAM,GAAG,MAAM,GAAG,SAAS;EAK1C"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ClientErrorInit<TBody = unknown> = {
|
|
2
|
+
body: TBody;
|
|
3
|
+
message: string;
|
|
4
|
+
response: Response;
|
|
5
|
+
status: number;
|
|
6
|
+
};
|
|
7
|
+
export declare class ClientError<TBody = unknown> extends Error {
|
|
8
|
+
readonly body: TBody;
|
|
9
|
+
readonly response: Response;
|
|
10
|
+
readonly status: number;
|
|
11
|
+
constructor(init: ClientErrorInit<TBody>);
|
|
12
|
+
}
|
|
13
|
+
export declare function isClientError<T = unknown>(e: unknown): e is ClientError<T>;
|
|
14
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/client/error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,KAAK,GAAG,OAAO,IAAI;IAC9C,IAAI,EAAE,KAAK,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,qBAAa,WAAW,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,KAAK;IACtD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,YAAY,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,EASvC;CACD;AAED,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1E"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { SSEEvent } from "./sse.ts";
|
|
2
|
+
export type HeadersContext = {
|
|
3
|
+
method: string;
|
|
4
|
+
path: string;
|
|
5
|
+
};
|
|
6
|
+
type HeadersRecord = Record<string, string | undefined>;
|
|
7
|
+
export type HeadersInit = ((ctx: HeadersContext) => HeadersRecord | Promise<HeadersRecord>) | HeadersRecord;
|
|
8
|
+
export type RequestMeta = {
|
|
9
|
+
invalidatedBy: string[];
|
|
10
|
+
isStale: boolean;
|
|
11
|
+
selector: string;
|
|
12
|
+
seqSnapshot: number;
|
|
13
|
+
};
|
|
14
|
+
export type OnRequestContext = {
|
|
15
|
+
body?: BodyInit;
|
|
16
|
+
headers: Headers;
|
|
17
|
+
invalidatedBy?: string[];
|
|
18
|
+
isStale?: boolean;
|
|
19
|
+
method: string;
|
|
20
|
+
path: string;
|
|
21
|
+
selector?: string;
|
|
22
|
+
state: Record<string, unknown>;
|
|
23
|
+
url: string;
|
|
24
|
+
};
|
|
25
|
+
export type OnResponseContext = {
|
|
26
|
+
invalidatedBy?: string[];
|
|
27
|
+
isRetry: boolean;
|
|
28
|
+
isStale?: boolean;
|
|
29
|
+
method: string;
|
|
30
|
+
path: string;
|
|
31
|
+
request: Request;
|
|
32
|
+
response: Response;
|
|
33
|
+
retry: () => Promise<Response>;
|
|
34
|
+
selector?: string;
|
|
35
|
+
state: Record<string, unknown>;
|
|
36
|
+
url: string;
|
|
37
|
+
};
|
|
38
|
+
export type ClientConfig = {
|
|
39
|
+
baseURL: string;
|
|
40
|
+
buildSearchParams?: (query: Record<string, unknown>) => URLSearchParams;
|
|
41
|
+
credentials?: RequestCredentials;
|
|
42
|
+
fetch?: typeof fetch;
|
|
43
|
+
headers?: HeadersInit;
|
|
44
|
+
mode?: RequestMode;
|
|
45
|
+
onRequest?: Array<(ctx: OnRequestContext) => Promise<void> | void>;
|
|
46
|
+
onResponse?: Array<(ctx: OnResponseContext) => Promise<Response | undefined> | Response | undefined>;
|
|
47
|
+
sortSearchParams?: boolean;
|
|
48
|
+
state?: Record<string, unknown>;
|
|
49
|
+
throwOnError?: boolean;
|
|
50
|
+
timeout?: number;
|
|
51
|
+
onAuthExpired?: () => Promise<string | null | undefined>;
|
|
52
|
+
onReconnecting?: (attempt: number, transport: string) => void;
|
|
53
|
+
onReconnected?: () => void;
|
|
54
|
+
};
|
|
55
|
+
export type RequestOptions = {
|
|
56
|
+
cookies?: Record<string, string>;
|
|
57
|
+
form?: Record<string, unknown>;
|
|
58
|
+
headers?: Record<string, string>;
|
|
59
|
+
json?: unknown;
|
|
60
|
+
lastEventId?: string;
|
|
61
|
+
params?: Record<string, string>;
|
|
62
|
+
search?: Record<string, unknown>;
|
|
63
|
+
signal?: AbortSignal;
|
|
64
|
+
};
|
|
65
|
+
export declare function interpolatePath(path: string, params: Record<string, string>): string;
|
|
66
|
+
export declare class HTTPClient {
|
|
67
|
+
private _config;
|
|
68
|
+
private _fetch;
|
|
69
|
+
constructor(config: ClientConfig);
|
|
70
|
+
private _doRequest;
|
|
71
|
+
private _parseBody;
|
|
72
|
+
/** Throw mode — throws ClientError on non-2xx */
|
|
73
|
+
request(method: string, path: string, opts: RequestOptions, _requestMeta?: RequestMeta): Promise<unknown>;
|
|
74
|
+
/** Safe mode — returns { data, error, response, status } — error is the raw parsed body */
|
|
75
|
+
requestSafe(method: string, path: string, opts: RequestOptions, _requestMeta?: RequestMeta): Promise<{
|
|
76
|
+
data: unknown;
|
|
77
|
+
error: unknown;
|
|
78
|
+
response: Response;
|
|
79
|
+
status: number;
|
|
80
|
+
}>;
|
|
81
|
+
requestStream(method: string, path: string, opts: RequestOptions): AsyncIterable<SSEEvent>;
|
|
82
|
+
private _doStream;
|
|
83
|
+
buildUrl(path: string, opts: RequestOptions): string;
|
|
84
|
+
buildPath(path: string, opts: RequestOptions): string;
|
|
85
|
+
buildWSUrl(path: string, opts: RequestOptions): string;
|
|
86
|
+
}
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/client/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { InferRoutes } from "../types.ts";
|
|
2
|
+
import type { ClientConfig } from "./http.ts";
|
|
3
|
+
import type { HoneyClient } from "./types.ts";
|
|
4
|
+
export type { ClientErrorInit } from "./error.ts";
|
|
5
|
+
export { ClientError, isClientError } from "./error.ts";
|
|
6
|
+
export type { ClientConfig, RequestOptions } from "./http.ts";
|
|
7
|
+
export { HTTPClient } from "./http.ts";
|
|
8
|
+
export type { SSEEvent } from "./sse.ts";
|
|
9
|
+
export { parseSSEStream } from "./sse.ts";
|
|
10
|
+
export type { ClientInput, ClientResult, ErrorEnvelope, ErrorsFor, HoneyClient, InputFor, IsSSE, OutputDefFor, OutputFor, PathsForMethod, ReturnFor, } from "./types.ts";
|
|
11
|
+
export type { TypedWebSocket } from "./ws.ts";
|
|
12
|
+
export { createTypedWebSocket } from "./ws.ts";
|
|
13
|
+
export declare function createClient<T>(config: ClientConfig & {
|
|
14
|
+
throwOnError: true;
|
|
15
|
+
}): HoneyClient<InferRoutes<T>, true>;
|
|
16
|
+
export declare function createClient<T>(config: Omit<ClientConfig, "throwOnError"> & {
|
|
17
|
+
throwOnError?: false;
|
|
18
|
+
}): HoneyClient<InferRoutes<T>, false>;
|
|
19
|
+
export declare function createClient<T, TThrow extends boolean>(config: ClientConfig & {
|
|
20
|
+
throwOnError?: TThrow;
|
|
21
|
+
}): HoneyClient<InferRoutes<T>, TThrow>;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAI7C,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACvD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,YAAY,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,GACT,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAI9C,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG;IAAE,YAAY,EAAE,IAAI,CAAA;CAAE,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACjH,wBAAgB,YAAY,CAAC,CAAC,EAC7B,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG;IAAE,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACnE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACrC,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,SAAS,OAAO,EACrD,MAAM,EAAE,YAAY,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ClientConfig } from "./http.ts";
|
|
2
|
+
type ServiceEntry = {
|
|
3
|
+
invalidate?: readonly string[];
|
|
4
|
+
method: string;
|
|
5
|
+
params?: readonly string[];
|
|
6
|
+
path: string;
|
|
7
|
+
sse?: boolean;
|
|
8
|
+
ws?: boolean;
|
|
9
|
+
};
|
|
10
|
+
type ServiceMapNode = ServiceEntry | {
|
|
11
|
+
[key: string]: ServiceMapNode;
|
|
12
|
+
};
|
|
13
|
+
type ServiceMap = {
|
|
14
|
+
[key: string]: ServiceMapNode;
|
|
15
|
+
};
|
|
16
|
+
export type InvalidationConfig = {
|
|
17
|
+
staleTime: number;
|
|
18
|
+
};
|
|
19
|
+
export type SDKConfig = ClientConfig & {
|
|
20
|
+
invalidation?: InvalidationConfig;
|
|
21
|
+
};
|
|
22
|
+
export declare function resolveInvalidationTargets(targets: readonly string[], params: Record<string, string> | undefined): string[];
|
|
23
|
+
export declare function pathMatchesPattern(concretePath: string, pattern: string): boolean;
|
|
24
|
+
export declare function lookupStale(staleMap: Map<string, {
|
|
25
|
+
by: string[];
|
|
26
|
+
seq: number;
|
|
27
|
+
until: number;
|
|
28
|
+
}>, concreteSelector: string, concretePath: string, method: string, now: number): {
|
|
29
|
+
by: string[];
|
|
30
|
+
isStale: boolean;
|
|
31
|
+
};
|
|
32
|
+
export declare function createSDK<T = Record<string, Record<string, (...args: unknown[]) => unknown>>>(serviceMap: ServiceMap, config: SDKConfig): T;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/client/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,WAAW,CAAA;AAI1D,KAAK,YAAY,GAAG;IACnB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,EAAE,CAAC,EAAE,OAAO,CAAA;CACZ,CAAA;AAED,KAAK,cAAc,GAAG,YAAY,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAA;AACtE,KAAK,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAA;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG;IACtC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CACjC,CAAA;AAaD,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACxC,MAAM,EAAE,CAuBV;AAMD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUjF;AAGD,wBAAgB,WAAW,CAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACnE,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACT;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAyBpC;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,EAC5F,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,SAAS,GACf,CAAC,CA2JH"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type SSEEvent = {
|
|
2
|
+
data: string;
|
|
3
|
+
event?: string;
|
|
4
|
+
id?: string;
|
|
5
|
+
retry?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function parseSSEStream(stream: ReadableStream<Uint8Array>, opts?: {
|
|
8
|
+
maxBufferSize?: number;
|
|
9
|
+
}): AsyncGenerator<SSEEvent, void, undefined>;
|
|
10
|
+
//# sourceMappingURL=sse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/client/sse.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAwDD,wBAAuB,cAAc,CACpC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAqC3C"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { FieldError, InferOutput, ParamsFromPath, StandardSchemaLike } from "../types.ts";
|
|
2
|
+
import type { SSEEvent } from "./sse.ts";
|
|
3
|
+
import type { TypedWebSocket } from "./ws.ts";
|
|
4
|
+
/** Extract paths that have a specific method registered */
|
|
5
|
+
export type PathsForMethod<TRoutes, M extends string> = {
|
|
6
|
+
[P in keyof TRoutes & string]: M extends keyof TRoutes[P] ? P : never;
|
|
7
|
+
}[keyof TRoutes & string];
|
|
8
|
+
/** Extract input type for a route */
|
|
9
|
+
export type InputFor<TRoutes, P extends string, M extends string> = P extends keyof TRoutes ? M extends keyof TRoutes[P] ? TRoutes[P][M] extends {
|
|
10
|
+
input: infer I;
|
|
11
|
+
} ? I : {} : {} : {};
|
|
12
|
+
/** Extract output schema definition for a route */
|
|
13
|
+
export type OutputDefFor<TRoutes, P extends string, M extends string> = P extends keyof TRoutes ? M extends keyof TRoutes[P] ? TRoutes[P][M] extends {
|
|
14
|
+
output: infer O;
|
|
15
|
+
} ? O : never : never : never;
|
|
16
|
+
/** Check if output definition is empty (no .output() declared) */
|
|
17
|
+
type IsEmptyOutput<O> = keyof O extends never ? true : false;
|
|
18
|
+
/** Content-type to return type mapping for non-JSON outputs */
|
|
19
|
+
type ContentTypeReturn<O> = O extends {
|
|
20
|
+
"text/plain": unknown;
|
|
21
|
+
} ? string : O extends {
|
|
22
|
+
"text/html": unknown;
|
|
23
|
+
} ? string : O extends {
|
|
24
|
+
"text/csv": unknown;
|
|
25
|
+
} ? string : O extends {
|
|
26
|
+
"application/xml": unknown;
|
|
27
|
+
} ? string : O extends {
|
|
28
|
+
"application/octet-stream": unknown;
|
|
29
|
+
} ? ArrayBuffer : null;
|
|
30
|
+
/** Extract the resolved output type — infer from schema validators in the output definition */
|
|
31
|
+
export type OutputFor<TRoutes, P extends string, M extends string> = OutputDefFor<TRoutes, P, M> extends infer O ? [O] extends [never] ? null : IsEmptyOutput<O> extends true ? null : O extends {
|
|
32
|
+
"application/json": infer JsonMap;
|
|
33
|
+
} ? JsonMap extends Record<string, StandardSchemaLike> ? InferOutput<JsonMap[keyof JsonMap]> : null : ContentTypeReturn<O> : null;
|
|
34
|
+
/** Check if a route returns SSE (text/event-stream in output) */
|
|
35
|
+
export type IsSSE<TRoutes, P extends string, M extends string> = OutputDefFor<TRoutes, P, M> extends infer O ? (O extends {
|
|
36
|
+
"text/event-stream": unknown;
|
|
37
|
+
} ? true : false) : false;
|
|
38
|
+
/** Extract errorsByStatus from route record if available */
|
|
39
|
+
type ErrorsByStatusFor<TRoutes, P extends string, M extends string> = P extends keyof TRoutes ? M extends keyof TRoutes[P] ? TRoutes[P][M] extends {
|
|
40
|
+
errorsByStatus: infer S;
|
|
41
|
+
} ? S : never : never : never;
|
|
42
|
+
/** Default Honey error envelope — used when errorsByStatus lists `null` (standard errors) */
|
|
43
|
+
export type ErrorEnvelope<TStatus extends number = number, TKey extends string = string> = {
|
|
44
|
+
error_key: TKey;
|
|
45
|
+
fields: Record<string, FieldError[]>;
|
|
46
|
+
message: string;
|
|
47
|
+
status: TStatus;
|
|
48
|
+
status_key: string;
|
|
49
|
+
success: false;
|
|
50
|
+
};
|
|
51
|
+
/** `null` in a route's errorsByStatus means the default envelope, not a null body */
|
|
52
|
+
type ResolveErrorBody<S extends number, T> = T extends null ? ErrorEnvelope<S> : T;
|
|
53
|
+
/** Object keys of `{ 400: ... }` are `400` or `"400"` depending on TS version */
|
|
54
|
+
type StatusCode<K> = K extends number ? K : K extends `${infer N extends number}` ? N : never;
|
|
55
|
+
type HasStatusErrors<T> = [StatusCode<keyof T>] extends [never] ? false : true;
|
|
56
|
+
type ErrorVariants<TErrorsByStatus> = {
|
|
57
|
+
[K in keyof TErrorsByStatus]: StatusCode<K> extends never ? never : {
|
|
58
|
+
data: null;
|
|
59
|
+
error: ResolveErrorBody<StatusCode<K>, TErrorsByStatus[K]>;
|
|
60
|
+
response: Response;
|
|
61
|
+
status: StatusCode<K>;
|
|
62
|
+
};
|
|
63
|
+
}[keyof TErrorsByStatus];
|
|
64
|
+
/**
|
|
65
|
+
* Result tuple for safe (non-throwing) mode — error is the raw parsed body, not ClientError.
|
|
66
|
+
* When TErrorsByStatus is known, the typed branch covers every declared error status
|
|
67
|
+
* (no unknown fallback) so `if (error)` / `if (!error)` narrow.
|
|
68
|
+
*/
|
|
69
|
+
export type ClientResult<TData, TErrorsByStatus = never> = {
|
|
70
|
+
data: TData;
|
|
71
|
+
error: null;
|
|
72
|
+
response: Response;
|
|
73
|
+
status: number;
|
|
74
|
+
} | (HasStatusErrors<TErrorsByStatus> extends false ? {
|
|
75
|
+
data: null;
|
|
76
|
+
error: unknown;
|
|
77
|
+
response: Response;
|
|
78
|
+
status: number;
|
|
79
|
+
} : ErrorVariants<TErrorsByStatus>);
|
|
80
|
+
/** Resolve return type based on transport + throw mode */
|
|
81
|
+
export type ReturnFor<TRoutes, P extends string, M extends string, TThrow extends boolean = true> = IsSSE<TRoutes, P, M> extends true ? AsyncIterable<SSEEvent> : TThrow extends true ? Promise<OutputFor<TRoutes, P, M>> : Promise<ClientResult<OutputFor<TRoutes, P, M>, ErrorsByStatusFor<TRoutes, P, M>>>;
|
|
82
|
+
/** Build the client input type — merge route input with params from path */
|
|
83
|
+
export type ClientInput<TRoutes, P extends string, M extends string> = InputFor<TRoutes, P, M> & ParamsInput<P>;
|
|
84
|
+
/** Extract params input if path has params */
|
|
85
|
+
type ParamsInput<P extends string> = ParamsFromPath<P> extends Record<string, string> ? HasParams<P> extends true ? {
|
|
86
|
+
params: ParamsFromPath<P>;
|
|
87
|
+
} : {} : {};
|
|
88
|
+
/** Check if path has any param segments */
|
|
89
|
+
type HasParams<P extends string> = P extends `${string}:${string}` ? true : false;
|
|
90
|
+
/** Extract error keys for a route */
|
|
91
|
+
export type ErrorsFor<TRoutes, P extends string, M extends string> = P extends keyof TRoutes ? M extends keyof TRoutes[P] ? TRoutes[P][M] extends {
|
|
92
|
+
errors: infer E extends string;
|
|
93
|
+
} ? E : never : never : never;
|
|
94
|
+
/** The typed client interface — TThrow controls return type */
|
|
95
|
+
export type HoneyClient<TRoutes, TThrow extends boolean = false> = {
|
|
96
|
+
$isClientError: (e: unknown) => e is import("./error.ts").ClientError;
|
|
97
|
+
$path<P extends keyof TRoutes & string>(path: P, input?: {
|
|
98
|
+
params?: Record<string, string>;
|
|
99
|
+
search?: Record<string, unknown>;
|
|
100
|
+
}): string;
|
|
101
|
+
$url<P extends keyof TRoutes & string>(path: P, input?: {
|
|
102
|
+
params?: Record<string, string>;
|
|
103
|
+
search?: Record<string, unknown>;
|
|
104
|
+
}): string;
|
|
105
|
+
delete<P extends PathsForMethod<TRoutes, "delete">>(path: P, ...input: OptionalInput<ClientInput<TRoutes, P, "delete">>): ReturnFor<TRoutes, P, "delete", TThrow>;
|
|
106
|
+
get<P extends PathsForMethod<TRoutes, "get">>(path: P, ...input: OptionalInput<ClientInput<TRoutes, P, "get">>): ReturnFor<TRoutes, P, "get", TThrow>;
|
|
107
|
+
patch<P extends PathsForMethod<TRoutes, "patch">>(path: P, ...input: OptionalInput<ClientInput<TRoutes, P, "patch">>): ReturnFor<TRoutes, P, "patch", TThrow>;
|
|
108
|
+
post<P extends PathsForMethod<TRoutes, "post">>(path: P, ...input: OptionalInput<ClientInput<TRoutes, P, "post">>): ReturnFor<TRoutes, P, "post", TThrow>;
|
|
109
|
+
put<P extends PathsForMethod<TRoutes, "put">>(path: P, ...input: OptionalInput<ClientInput<TRoutes, P, "put">>): ReturnFor<TRoutes, P, "put", TThrow>;
|
|
110
|
+
ws(path: string, input?: {
|
|
111
|
+
params?: Record<string, string>;
|
|
112
|
+
protocols?: string | string[];
|
|
113
|
+
reconnectToken?: string;
|
|
114
|
+
search?: Record<string, unknown>;
|
|
115
|
+
}): TypedWebSocket;
|
|
116
|
+
};
|
|
117
|
+
/** Make input optional when it's an empty object */
|
|
118
|
+
type OptionalInput<T> = keyof T extends never ? [input?: T] : [RequiresAllOptional<T>] extends [true] ? [input?: T] : [input: T];
|
|
119
|
+
/** Check if all keys in T are optional */
|
|
120
|
+
type RequiresAllOptional<T> = {
|
|
121
|
+
[K in keyof T]-?: undefined extends T[K] ? true : false;
|
|
122
|
+
}[keyof T] extends true ? true : Partial<T> extends T ? true : false;
|
|
123
|
+
export {};
|
|
124
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type TypedWebSocket = {
|
|
2
|
+
close(code?: number, reason?: string): void;
|
|
3
|
+
off(event: "close" | "error" | "message" | "open", handler: (...args: never[]) => void): void;
|
|
4
|
+
on(event: "close", handler: (code: number, reason: string) => void): void;
|
|
5
|
+
on(event: "error", handler: (error: unknown) => void): void;
|
|
6
|
+
on(event: "message", handler: (data: string) => void): void;
|
|
7
|
+
on(event: "open", handler: () => void): void;
|
|
8
|
+
readonly readyState: number;
|
|
9
|
+
send(data: ArrayBuffer | ArrayBufferView | object | string): void;
|
|
10
|
+
};
|
|
11
|
+
export type WSOptions = {
|
|
12
|
+
protocols?: string | string[];
|
|
13
|
+
};
|
|
14
|
+
export declare function createTypedWebSocket(url: string, opts?: WSOptions, WebSocketImpl?: typeof WebSocket): TypedWebSocket;
|
|
15
|
+
//# sourceMappingURL=ws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/client/ws.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI,CAAA;IAC7F,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;IACzE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;IAC3D,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;IAC3D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CACjE,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC7B,CAAA;AAED,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,SAAS,EAChB,aAAa,GAAE,OAAO,SAAqB,GACzC,cAAc,CA6FhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/client-mcp/server.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,YAAY,CAAA;AA0BlD,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC9C,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;IACZ,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC7C,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ToolContent = {
|
|
2
|
+
type: "text";
|
|
3
|
+
text: string;
|
|
4
|
+
};
|
|
5
|
+
export type ToolResult = {
|
|
6
|
+
content: ToolContent[];
|
|
7
|
+
isError?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type ToolHandler = (args: Record<string, unknown>, sdk: unknown) => Promise<ToolResult>;
|
|
10
|
+
export type Tool = {
|
|
11
|
+
name: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
inputSchema: Record<string, unknown>;
|
|
14
|
+
handler: ToolHandler;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client-mcp/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAExD,MAAM,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAE9F,MAAM,MAAM,IAAI,GAAG;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,OAAO,EAAE,WAAW,CAAA;CACpB,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ConnContext } from "../realtime/route.ts";
|
|
2
|
+
export type DurableObjectContext = {
|
|
3
|
+
id: {
|
|
4
|
+
toString(): string;
|
|
5
|
+
};
|
|
6
|
+
storage: {
|
|
7
|
+
getAlarm(): Promise<number | null>;
|
|
8
|
+
setAlarm(time: number): Promise<void>;
|
|
9
|
+
deleteAlarm(): Promise<void>;
|
|
10
|
+
};
|
|
11
|
+
acceptWebSocket(ws: WebSocket): void;
|
|
12
|
+
getWebSockets(): WebSocket[];
|
|
13
|
+
getTags(ws: WebSocket): string[];
|
|
14
|
+
};
|
|
15
|
+
export type RealtimeHandlerConfig<TEnv = unknown> = {
|
|
16
|
+
ctx: DurableObjectContext;
|
|
17
|
+
env: TEnv;
|
|
18
|
+
onAuth?: (req: Request) => string | null | Promise<string | null>;
|
|
19
|
+
reconnectBuffer?: number;
|
|
20
|
+
routes?: Record<string, (c: unknown, conn: ConnContext) => void | Promise<void>>;
|
|
21
|
+
};
|
|
22
|
+
export type RealtimeHandlers = {
|
|
23
|
+
fetch(req: Request): Promise<Response>;
|
|
24
|
+
message(ws: WebSocket, msg: ArrayBuffer | string): void | Promise<void>;
|
|
25
|
+
close(ws: WebSocket, code: number, reason: string, wasClean: boolean): void | Promise<void>;
|
|
26
|
+
error(ws: WebSocket, err: unknown): void | Promise<void>;
|
|
27
|
+
alarm(): void | Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
export declare function createRealtimeHandlers<TEnv = unknown>(config: RealtimeHandlerConfig<TEnv>): RealtimeHandlers;
|
|
30
|
+
//# sourceMappingURL=realtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/cloudflare/realtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,MAAM,MAAM,oBAAoB,GAAG;IAClC,EAAE,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAA;IAC1B,OAAO,EAAE;QACR,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;QAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAC5B,CAAA;IACD,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAA;IACpC,aAAa,IAAI,SAAS,EAAE,CAAA;IAC5B,OAAO,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,EAAE,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,GAAG,OAAO,IAAI;IACnD,GAAG,EAAE,oBAAoB,CAAA;IACzB,GAAG,EAAE,IAAI,CAAA;IACT,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACjE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CAChF,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3F,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B,CAAA;AAWD,wBAAgB,sBAAsB,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CA6L5G"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type GoCLIOptions = {
|
|
2
|
+
binaryName: string;
|
|
3
|
+
modulePath?: string;
|
|
4
|
+
sdkModulePath?: string;
|
|
5
|
+
envPrefix?: string;
|
|
6
|
+
configName?: string;
|
|
7
|
+
defaultBaseURL?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
};
|
|
10
|
+
export type GeneratedGoCLI = {
|
|
11
|
+
files: Record<string, string>;
|
|
12
|
+
serviceMap: Record<string, Record<string, unknown>>;
|
|
13
|
+
skippedOperations: string[];
|
|
14
|
+
};
|
|
15
|
+
/** Converts camelCase / snake_case / acronyms to kebab-case (e.g. "APIKey" → "api-key"). */
|
|
16
|
+
export declare function toKebab(s: string): string;
|
|
17
|
+
export declare function toFlagName(paramName: string): string;
|
|
18
|
+
export declare function envVarFromFlag(flagName: string, envPrefix: string): string;
|
|
19
|
+
/** Reads static .go runtime files from ./cli-go/ and caches them. */
|
|
20
|
+
export declare function loadGoCliRuntimeTemplates(): Map<string, string>;
|
|
21
|
+
export declare function generateGoCLI(spec: Record<string, unknown>, options: GoCLIOptions): GeneratedGoCLI;
|
|
22
|
+
//# sourceMappingURL=codegen-go-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen-go-cli.d.ts","sourceRoot":"","sources":["../src/codegen-go-cli.ts"],"names":[],"mappings":"AAsCA,MAAM,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnD,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC3B,CAAA;AAmED,4FAA4F;AAC5F,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQzC;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAOD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1E;AAqBD,qEAAqE;AACrE,wBAAgB,yBAAyB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB/D;AA08BD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAqClG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type GoSDKOptions = {
|
|
2
|
+
gofmt?: boolean;
|
|
3
|
+
modulePath?: string;
|
|
4
|
+
throwOnError?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type GeneratedGoSDK = {
|
|
7
|
+
files: Record<string, string>;
|
|
8
|
+
serviceMap: Record<string, Record<string, unknown>>;
|
|
9
|
+
};
|
|
10
|
+
/** Reads static .go runtime files from ./client-go/ and caches them. */
|
|
11
|
+
export declare function loadGoRuntimeTemplates(): Map<string, string>;
|
|
12
|
+
export declare function safeResourceName(name: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Derive auth header name + prefix from OpenAPI securitySchemes.
|
|
15
|
+
* Defaults to Authorization + "Bearer " when no scheme is declared, preserving
|
|
16
|
+
* legacy behavior. apiKey type sends the raw token unless the scheme description
|
|
17
|
+
* embeds a "Format: <Prefix> {token}" hint (common pattern for APIs like Anyrow
|
|
18
|
+
* that use `Authorization: ApiKey <token>`).
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectAuthScheme(spec: Record<string, unknown>): {
|
|
21
|
+
headerName: string;
|
|
22
|
+
prefix: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Generates a complete Go SDK module from an OpenAPI 3.1 spec.
|
|
26
|
+
* Returns a file map (filename → content) ready to write to disk as a Go module.
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateGoSDK(spec: Record<string, unknown>, options?: GoSDKOptions): GeneratedGoSDK;
|
|
29
|
+
//# sourceMappingURL=codegen-go.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen-go.d.ts","sourceRoot":"","sources":["../src/codegen-go.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,YAAY,GAAG;IAM1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACnD,CAAA;AAeD,wEAAwE;AACxE,wBAAgB,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA0B5D;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AAMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoBtG;AA22BD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAgCvG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen-hash.d.ts","sourceRoot":"","sources":["../src/codegen-hash.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C"}
|