@zmdb/web 1.0.0-beta.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.
- package/LICENSE +674 -0
- package/README.md +49 -0
- package/dist/app/bridge.d.ts +12 -0
- package/dist/app/bridge.d.ts.map +1 -0
- package/dist/app/bridge.js +16 -0
- package/dist/app/bridge.js.map +1 -0
- package/dist/app/index.d.ts +23 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +47 -0
- package/dist/app/index.js.map +1 -0
- package/dist/bench/index.d.ts +68 -0
- package/dist/bench/index.d.ts.map +1 -0
- package/dist/bench/index.js +250 -0
- package/dist/bench/index.js.map +1 -0
- package/dist/compression/index.d.ts +13 -0
- package/dist/compression/index.d.ts.map +1 -0
- package/dist/compression/index.js +211 -0
- package/dist/compression/index.js.map +1 -0
- package/dist/context/index.d.ts +74 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +118 -0
- package/dist/context/index.js.map +1 -0
- package/dist/contract/__fixtures__/http-client.generated.d.ts +70 -0
- package/dist/contract/__fixtures__/http-client.generated.d.ts.map +1 -0
- package/dist/contract/__fixtures__/http-client.generated.js +86 -0
- package/dist/contract/__fixtures__/http-client.generated.js.map +1 -0
- package/dist/contract/__fixtures__/http-convergence.d.ts +396 -0
- package/dist/contract/__fixtures__/http-convergence.d.ts.map +1 -0
- package/dist/contract/__fixtures__/http-convergence.js +425 -0
- package/dist/contract/__fixtures__/http-convergence.js.map +1 -0
- package/dist/contract/compiler/client.d.ts +12 -0
- package/dist/contract/compiler/client.d.ts.map +1 -0
- package/dist/contract/compiler/client.js +1293 -0
- package/dist/contract/compiler/client.js.map +1 -0
- package/dist/contract/compiler/index.d.ts +18 -0
- package/dist/contract/compiler/index.d.ts.map +1 -0
- package/dist/contract/compiler/index.js +1058 -0
- package/dist/contract/compiler/index.js.map +1 -0
- package/dist/contract/index.d.ts +237 -0
- package/dist/contract/index.d.ts.map +1 -0
- package/dist/contract/index.js +22 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/csrf/index.d.ts +15 -0
- package/dist/csrf/index.d.ts.map +1 -0
- package/dist/csrf/index.js +218 -0
- package/dist/csrf/index.js.map +1 -0
- package/dist/data/index.d.ts +35 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +58 -0
- package/dist/data/index.js.map +1 -0
- package/dist/devtools/index.d.ts +74 -0
- package/dist/devtools/index.d.ts.map +1 -0
- package/dist/devtools/index.js +552 -0
- package/dist/devtools/index.js.map +1 -0
- package/dist/dto-pipes/index.d.ts +45 -0
- package/dist/dto-pipes/index.d.ts.map +1 -0
- package/dist/dto-pipes/index.js +78 -0
- package/dist/dto-pipes/index.js.map +1 -0
- package/dist/gateways/index.d.ts +31 -0
- package/dist/gateways/index.d.ts.map +1 -0
- package/dist/gateways/index.js +138 -0
- package/dist/gateways/index.js.map +1 -0
- package/dist/health/index.d.ts +20 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +148 -0
- package/dist/health/index.js.map +1 -0
- package/dist/http-token.d.ts +2 -0
- package/dist/http-token.d.ts.map +1 -0
- package/dist/http-token.js +21 -0
- package/dist/http-token.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/index.d.ts +11 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +39 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/middleware/errors.d.ts +14 -0
- package/dist/middleware/errors.d.ts.map +1 -0
- package/dist/middleware/errors.js +18 -0
- package/dist/middleware/errors.js.map +1 -0
- package/dist/middleware/index.d.ts +46 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +64 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/modules/__fixtures__/large-graph.d.ts +239 -0
- package/dist/modules/__fixtures__/large-graph.d.ts.map +1 -0
- package/dist/modules/__fixtures__/large-graph.js +483 -0
- package/dist/modules/__fixtures__/large-graph.js.map +1 -0
- package/dist/openapi/__fixtures__/entities.d.ts +8 -0
- package/dist/openapi/__fixtures__/entities.d.ts.map +1 -0
- package/dist/openapi/__fixtures__/entities.js +4 -0
- package/dist/openapi/__fixtures__/entities.js.map +1 -0
- package/dist/openapi/__fixtures__/openapi-tools.fixture.d.ts +38 -0
- package/dist/openapi/__fixtures__/openapi-tools.fixture.d.ts.map +1 -0
- package/dist/openapi/__fixtures__/openapi-tools.fixture.js +172 -0
- package/dist/openapi/__fixtures__/openapi-tools.fixture.js.map +1 -0
- package/dist/openapi/__fixtures__/route-schemas.d.ts +2 -0
- package/dist/openapi/__fixtures__/route-schemas.d.ts.map +1 -0
- package/dist/openapi/__fixtures__/route-schemas.js +17 -0
- package/dist/openapi/__fixtures__/route-schemas.js.map +1 -0
- package/dist/openapi/index.d.ts +61 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +314 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/pipeline/guards.d.ts +9 -0
- package/dist/pipeline/guards.d.ts.map +1 -0
- package/dist/pipeline/guards.js +11 -0
- package/dist/pipeline/guards.js.map +1 -0
- package/dist/pipeline/index.d.ts +141 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +1624 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/routing/index.d.ts +40 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +162 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/static/index.d.ts +14 -0
- package/dist/static/index.d.ts.map +1 -0
- package/dist/static/index.js +348 -0
- package/dist/static/index.js.map +1 -0
- package/dist/testing/index.d.ts +20 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +32 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/traced-router.d.ts +5 -0
- package/dist/traced-router.d.ts.map +1 -0
- package/dist/traced-router.js +6 -0
- package/dist/traced-router.js.map +1 -0
- package/dist/upload/index.d.ts +28 -0
- package/dist/upload/index.d.ts.map +1 -0
- package/dist/upload/index.js +410 -0
- package/dist/upload/index.js.map +1 -0
- package/dist/versioning/index.d.ts +35 -0
- package/dist/versioning/index.d.ts.map +1 -0
- package/dist/versioning/index.js +66 -0
- package/dist/versioning/index.js.map +1 -0
- package/dist/versioning/runtime.d.ts +5 -0
- package/dist/versioning/runtime.d.ts.map +1 -0
- package/dist/versioning/runtime.js +34 -0
- package/dist/versioning/runtime.js.map +1 -0
- package/package.json +143 -0
- package/src/app/bridge.ts +39 -0
- package/src/app/index.ts +76 -0
- package/src/bench/index.ts +329 -0
- package/src/compression/index.ts +255 -0
- package/src/context/index.ts +181 -0
- package/src/contract/__fixtures__/http-client.generated.ts +73 -0
- package/src/contract/__fixtures__/http-client.generated.ts.map +1 -0
- package/src/contract/__fixtures__/http-convergence.ts +564 -0
- package/src/contract/compiler/client.ts +1518 -0
- package/src/contract/compiler/index.ts +1457 -0
- package/src/contract/index.ts +266 -0
- package/src/csrf/index.ts +264 -0
- package/src/data/index.ts +65 -0
- package/src/devtools/index.ts +727 -0
- package/src/dto-pipes/index.ts +93 -0
- package/src/gateways/index.ts +180 -0
- package/src/health/index.ts +198 -0
- package/src/http-token.ts +22 -0
- package/src/index.ts +167 -0
- package/src/integrations/index.ts +50 -0
- package/src/middleware/errors.ts +17 -0
- package/src/middleware/index.ts +108 -0
- package/src/modules/__fixtures__/large-graph.ts +540 -0
- package/src/openapi/__fixtures__/entities.ts +19 -0
- package/src/openapi/__fixtures__/openapi-tools.fixture.ts +212 -0
- package/src/openapi/__fixtures__/route-schemas.ts +27 -0
- package/src/openapi/index.ts +483 -0
- package/src/pipeline/guards.ts +23 -0
- package/src/pipeline/index.ts +2041 -0
- package/src/routing/index.ts +201 -0
- package/src/static/index.ts +443 -0
- package/src/testing/index.ts +58 -0
- package/src/traced-router.ts +8 -0
- package/src/upload/index.ts +489 -0
- package/src/versioning/index.ts +106 -0
- package/src/versioning/runtime.ts +38 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import '@zmdb/app';
|
|
2
|
+
import type { Constructor } from '@zmdb/app/di';
|
|
3
|
+
import type { Observability } from '@zmdb/app/observability';
|
|
4
|
+
import { type QueryValues } from '../context/index.js';
|
|
5
|
+
import type { CompiledHttpContract, SecurityRequirement } from '../contract/index.js';
|
|
6
|
+
import type { Guard } from '../middleware/index.js';
|
|
7
|
+
import { type VersionStrategy } from '../versioning/index.js';
|
|
8
|
+
import { type GuardRegistry } from './guards.js';
|
|
9
|
+
export type { Ctx } from '../context/index.js';
|
|
10
|
+
export type { SecurityRequirement } from '../contract/index.js';
|
|
11
|
+
export type { GuardRegistry } from './guards.js';
|
|
12
|
+
/** A minimal, framework-neutral request. */
|
|
13
|
+
export interface WebRequest {
|
|
14
|
+
readonly method: string;
|
|
15
|
+
readonly path: string;
|
|
16
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
17
|
+
readonly rawBody?: unknown;
|
|
18
|
+
readonly query?: QueryValues;
|
|
19
|
+
readonly scheme?: string;
|
|
20
|
+
}
|
|
21
|
+
/** A minimal, framework-neutral response body. */
|
|
22
|
+
export type ResponseBody = {
|
|
23
|
+
readonly kind: 'text';
|
|
24
|
+
readonly value: string;
|
|
25
|
+
} | {
|
|
26
|
+
readonly kind: 'bytes';
|
|
27
|
+
readonly value: Uint8Array<ArrayBuffer>;
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: 'stream';
|
|
30
|
+
readonly value: ReadableStream<Uint8Array<ArrayBuffer>>;
|
|
31
|
+
readonly length: number | undefined;
|
|
32
|
+
};
|
|
33
|
+
/** A minimal, framework-neutral response. */
|
|
34
|
+
export interface WebResponse {
|
|
35
|
+
readonly status: number;
|
|
36
|
+
readonly body: ResponseBody;
|
|
37
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
38
|
+
}
|
|
39
|
+
/** Per-handler pipeline, guard and OpenAPI options. */
|
|
40
|
+
export interface RouteOptions {
|
|
41
|
+
readonly validateBody?: (raw: unknown) => unknown;
|
|
42
|
+
readonly guards?: readonly Guard[];
|
|
43
|
+
readonly security?: readonly SecurityRequirement[];
|
|
44
|
+
readonly deprecated?: true;
|
|
45
|
+
}
|
|
46
|
+
/** Router-wide guard configuration shared with OpenAPI generation. */
|
|
47
|
+
export interface RouterOptions extends Observability {
|
|
48
|
+
readonly guardRegistry?: GuardRegistry;
|
|
49
|
+
readonly versioning?: VersionStrategy;
|
|
50
|
+
}
|
|
51
|
+
/** Status and headers a response factory accepts. */
|
|
52
|
+
export interface ResponseOptions {
|
|
53
|
+
readonly status?: number;
|
|
54
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
55
|
+
}
|
|
56
|
+
/** Options for a streamed response. */
|
|
57
|
+
export interface StreamOptions extends ResponseOptions {
|
|
58
|
+
readonly length?: number;
|
|
59
|
+
readonly onError: (error: unknown) => void;
|
|
60
|
+
}
|
|
61
|
+
/** Options for a response streamed from a known file path. */
|
|
62
|
+
export interface FileResponseOptions extends ResponseOptions {
|
|
63
|
+
readonly contentType?: string;
|
|
64
|
+
readonly onError: (error: unknown) => void;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A JSON response with an explicit status and/or extra headers.
|
|
68
|
+
*
|
|
69
|
+
* `return json(created, { status: 201, headers: { location } })`
|
|
70
|
+
*/
|
|
71
|
+
export declare function json(value: unknown, options?: ResponseOptions): WebResponse;
|
|
72
|
+
/**
|
|
73
|
+
* A `text/plain` response, returned byte-for-byte as given.
|
|
74
|
+
*
|
|
75
|
+
* `return text(ctx.params.id)`
|
|
76
|
+
*/
|
|
77
|
+
export declare function text(body: string, options?: ResponseOptions): WebResponse;
|
|
78
|
+
/**
|
|
79
|
+
* A response with full control and no assumed content type — for HTML, CSV, a
|
|
80
|
+
* redirect, or a `204` with no body. Nothing is added to `headers`, so set
|
|
81
|
+
* `content-type` yourself if the body has one.
|
|
82
|
+
*
|
|
83
|
+
* `return respond({ status: 302, headers: { location: '/login' } })`
|
|
84
|
+
*/
|
|
85
|
+
export declare function respond(init: {
|
|
86
|
+
readonly status?: number;
|
|
87
|
+
readonly body?: string;
|
|
88
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
89
|
+
}): WebResponse;
|
|
90
|
+
/** A byte response with no implicit content type. */
|
|
91
|
+
export declare function bytes(value: Uint8Array<ArrayBuffer>, options?: ResponseOptions): WebResponse;
|
|
92
|
+
/** A streaming response whose failures are reported exactly once. */
|
|
93
|
+
export declare function stream(value: ReadableStream<Uint8Array<ArrayBuffer>>, options: StreamOptions): WebResponse;
|
|
94
|
+
/** Stream one known file path. Path confinement belongs to the static-file handler. */
|
|
95
|
+
export declare function file(path: string, options: FileResponseOptions): Promise<WebResponse>;
|
|
96
|
+
/** Decode a response body for assertions and other in-process consumers. */
|
|
97
|
+
export declare function bodyText(response: WebResponse): Promise<string>;
|
|
98
|
+
export interface Router {
|
|
99
|
+
register(controller: object, options?: Readonly<Record<string, RouteOptions>>): void;
|
|
100
|
+
registerContract(contract: CompiledHttpContract, controllers: readonly object[], options?: Readonly<Record<string, Readonly<Record<string, RouteOptions>>>>): void;
|
|
101
|
+
registerDeferred(controller: Constructor<object>, instance: () => Promise<object>): void;
|
|
102
|
+
handle(req: WebRequest): Promise<WebResponse>;
|
|
103
|
+
}
|
|
104
|
+
/** Create a router. Routes and their effective guards are resolved once at register time. */
|
|
105
|
+
export declare function createRouter(routerOptions?: RouterOptions): Router;
|
|
106
|
+
interface NodeReqLike {
|
|
107
|
+
readonly method?: string;
|
|
108
|
+
readonly url?: string;
|
|
109
|
+
readonly headers: Readonly<Record<string, string | string[] | undefined>>;
|
|
110
|
+
readonly socket?: {
|
|
111
|
+
readonly encrypted?: boolean;
|
|
112
|
+
};
|
|
113
|
+
on(event: string, listener: (chunk: unknown) => void): void;
|
|
114
|
+
setEncoding?(encoding: string): void;
|
|
115
|
+
}
|
|
116
|
+
interface NodeResLike {
|
|
117
|
+
statusCode: number;
|
|
118
|
+
setHeader(name: string, value: string): void;
|
|
119
|
+
writeHead?(status: number, headers: Readonly<Record<string, string>>): unknown;
|
|
120
|
+
write(chunk: Uint8Array<ArrayBuffer>): boolean;
|
|
121
|
+
once(event: string, listener: () => void): void;
|
|
122
|
+
destroy(error?: Error): void;
|
|
123
|
+
end(body?: string | Uint8Array<ArrayBuffer>): void;
|
|
124
|
+
}
|
|
125
|
+
/** Request-body limits shared by the Node and Fetch adapters. */
|
|
126
|
+
export interface AdapterOptions {
|
|
127
|
+
readonly maxBodyBytes: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Adapt a router to a node:http `(req, res)` handler.
|
|
131
|
+
*
|
|
132
|
+
* This is the path real consumers take, so its per-request cost is the
|
|
133
|
+
* framework's real cost. The benchmark harness hand-writes its responses and so
|
|
134
|
+
* never measured this; when it was measured (keep-alive on, 8 workers, c=256,
|
|
135
|
+
* median of 5) the adapter served 294,067 req/s against the hand-written app's
|
|
136
|
+
* 395,983 — 1.35x slower, entirely in the four things below.
|
|
137
|
+
*/
|
|
138
|
+
export declare function toNodeHandler(router: Router, options?: AdapterOptions): (req: NodeReqLike, res: NodeResLike) => void;
|
|
139
|
+
/** Adapt a router to a Fetch `(Request) => Promise<Response>` handler. */
|
|
140
|
+
export declare function toFetchHandler(router: Router, options?: AdapterOptions): (request: Request) => Promise<Response>;
|
|
141
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"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"}
|