@capixjs/transport-rest 0.1.0-alpha.2 → 0.1.0-alpha.22
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/dist/coercion.d.ts +33 -0
- package/dist/coercion.d.ts.map +1 -0
- package/dist/coercion.js +123 -0
- package/dist/coercion.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts +45 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +196 -0
- package/dist/openapi.js.map +1 -0
- package/dist/router.d.ts +1 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +24 -6
- package/dist/router.js.map +1 -1
- package/dist/serializer.d.ts +1 -1
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +6 -5
- package/dist/serializer.js.map +1 -1
- package/dist/transport.d.ts +6 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +114 -42
- package/dist/transport.js.map +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* coercion.ts — schema-aware coercion of string request values.
|
|
3
|
+
*
|
|
4
|
+
* Query strings, path params, and multipart text fields arrive as strings.
|
|
5
|
+
* Instead of blindly coercing anything numeric-looking (which corrupted
|
|
6
|
+
* string fields: ?name=123 became the number 123 and failed z.string(),
|
|
7
|
+
* ?code=0123 silently became 123), coercion targets are derived from each
|
|
8
|
+
* capability's Zod input schema at mount time. A value is coerced to
|
|
9
|
+
* number/boolean only when the schema types that field as number/boolean;
|
|
10
|
+
* everything else stays a raw string.
|
|
11
|
+
*
|
|
12
|
+
* JSON bodies are never coerced — JSON already expresses numbers and
|
|
13
|
+
* booleans, so a string where a number belongs is a genuine type error.
|
|
14
|
+
*/
|
|
15
|
+
import type { CapabilityRegistry } from '@capixjs/core';
|
|
16
|
+
export type CoercionKind = 'number' | 'boolean';
|
|
17
|
+
/** field name → coercion target, per capability dot-path. */
|
|
18
|
+
export type CoercionMaps = Map<string, Map<string, CoercionKind>>;
|
|
19
|
+
/**
|
|
20
|
+
* Builds per-capability coercion maps from compiled input schemas.
|
|
21
|
+
* Capabilities without a ZodObject input schema (no schema, z.record, z.any)
|
|
22
|
+
* get no map — their string values pass through untouched.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildCoercionMaps(registry: CapabilityRegistry): CoercionMaps;
|
|
25
|
+
/**
|
|
26
|
+
* Coerces a raw string toward the schema's target type. Values that don't
|
|
27
|
+
* parse cleanly are returned as-is so Zod reports the error on the original
|
|
28
|
+
* input instead of a mangled one.
|
|
29
|
+
*/
|
|
30
|
+
export declare function coerceValue(raw: string, kind: CoercionKind): unknown;
|
|
31
|
+
/** Coerces matching string fields of obj in place. */
|
|
32
|
+
export declare function coerceFields(obj: Record<string, unknown>, fields: ReadonlyMap<string, CoercionKind>): void;
|
|
33
|
+
//# sourceMappingURL=coercion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coercion.d.ts","sourceRoot":"","sources":["../src/coercion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAqElE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CAkB5E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CASpE;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,GACxC,IAAI,CAKN"}
|
package/dist/coercion.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* coercion.ts — schema-aware coercion of string request values.
|
|
3
|
+
*
|
|
4
|
+
* Query strings, path params, and multipart text fields arrive as strings.
|
|
5
|
+
* Instead of blindly coercing anything numeric-looking (which corrupted
|
|
6
|
+
* string fields: ?name=123 became the number 123 and failed z.string(),
|
|
7
|
+
* ?code=0123 silently became 123), coercion targets are derived from each
|
|
8
|
+
* capability's Zod input schema at mount time. A value is coerced to
|
|
9
|
+
* number/boolean only when the schema types that field as number/boolean;
|
|
10
|
+
* everything else stays a raw string.
|
|
11
|
+
*
|
|
12
|
+
* JSON bodies are never coerced — JSON already expresses numbers and
|
|
13
|
+
* booleans, so a string where a number belongs is a genuine type error.
|
|
14
|
+
*/
|
|
15
|
+
function defOf(schema) {
|
|
16
|
+
if (typeof schema !== 'object' || schema === null)
|
|
17
|
+
return null;
|
|
18
|
+
const def = schema._zod?.def;
|
|
19
|
+
return typeof def === 'object' && def !== null ? def : null;
|
|
20
|
+
}
|
|
21
|
+
/** Wrapper types whose inner schema determines the coercion target. */
|
|
22
|
+
const WRAPPERS = new Set([
|
|
23
|
+
'optional',
|
|
24
|
+
'nullable',
|
|
25
|
+
'default',
|
|
26
|
+
'prefault',
|
|
27
|
+
'catch',
|
|
28
|
+
'readonly',
|
|
29
|
+
'nonoptional',
|
|
30
|
+
'pipe', // .transform() — the input side is what the client sends
|
|
31
|
+
]);
|
|
32
|
+
/** Unwraps optional/nullable/default/pipe layers to the underlying def. */
|
|
33
|
+
function unwrap(schema) {
|
|
34
|
+
let def = defOf(schema);
|
|
35
|
+
let depth = 0;
|
|
36
|
+
while (def !== null && def.type !== undefined && WRAPPERS.has(def.type) && depth < 16) {
|
|
37
|
+
def = defOf(def.innerType ?? def.in);
|
|
38
|
+
depth++;
|
|
39
|
+
}
|
|
40
|
+
return def;
|
|
41
|
+
}
|
|
42
|
+
function kindOf(fieldSchema) {
|
|
43
|
+
const def = unwrap(fieldSchema);
|
|
44
|
+
if (def === null)
|
|
45
|
+
return null;
|
|
46
|
+
switch (def.type) {
|
|
47
|
+
case 'number':
|
|
48
|
+
return 'number';
|
|
49
|
+
case 'boolean':
|
|
50
|
+
return 'boolean';
|
|
51
|
+
case 'union': {
|
|
52
|
+
// Coerce only when every meaningful branch agrees on one primitive kind
|
|
53
|
+
// (e.g. z.union([z.number(), z.null()])). A string branch means the raw
|
|
54
|
+
// string is already acceptable — leave it alone.
|
|
55
|
+
const kinds = new Set();
|
|
56
|
+
for (const option of def.options ?? []) {
|
|
57
|
+
const inner = unwrap(option);
|
|
58
|
+
if (inner?.type === 'null' || inner?.type === 'undefined')
|
|
59
|
+
continue;
|
|
60
|
+
kinds.add(inner?.type === 'number' ? 'number' : inner?.type === 'boolean' ? 'boolean' : null);
|
|
61
|
+
}
|
|
62
|
+
if (kinds.size === 1) {
|
|
63
|
+
const only = kinds.values().next().value;
|
|
64
|
+
return only ?? null;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
default:
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Builds per-capability coercion maps from compiled input schemas.
|
|
74
|
+
* Capabilities without a ZodObject input schema (no schema, z.record, z.any)
|
|
75
|
+
* get no map — their string values pass through untouched.
|
|
76
|
+
*/
|
|
77
|
+
export function buildCoercionMaps(registry) {
|
|
78
|
+
const maps = new Map();
|
|
79
|
+
for (const [dotPath, cap] of registry) {
|
|
80
|
+
if (cap.inputSchema === null)
|
|
81
|
+
continue;
|
|
82
|
+
const def = unwrap(cap.inputSchema);
|
|
83
|
+
if (def?.type !== 'object')
|
|
84
|
+
continue;
|
|
85
|
+
const shape = def.shape ?? {};
|
|
86
|
+
const fields = new Map();
|
|
87
|
+
for (const [key, fieldSchema] of Object.entries(shape)) {
|
|
88
|
+
const kind = kindOf(fieldSchema);
|
|
89
|
+
if (kind !== null)
|
|
90
|
+
fields.set(key, kind);
|
|
91
|
+
}
|
|
92
|
+
if (fields.size > 0)
|
|
93
|
+
maps.set(dotPath, fields);
|
|
94
|
+
}
|
|
95
|
+
return maps;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Coerces a raw string toward the schema's target type. Values that don't
|
|
99
|
+
* parse cleanly are returned as-is so Zod reports the error on the original
|
|
100
|
+
* input instead of a mangled one.
|
|
101
|
+
*/
|
|
102
|
+
export function coerceValue(raw, kind) {
|
|
103
|
+
if (kind === 'boolean') {
|
|
104
|
+
if (raw === 'true')
|
|
105
|
+
return true;
|
|
106
|
+
if (raw === 'false')
|
|
107
|
+
return false;
|
|
108
|
+
return raw;
|
|
109
|
+
}
|
|
110
|
+
// number — require non-blank text; Number('') and Number(' ') are 0
|
|
111
|
+
if (raw.trim() !== '' && !Number.isNaN(Number(raw)))
|
|
112
|
+
return Number(raw);
|
|
113
|
+
return raw;
|
|
114
|
+
}
|
|
115
|
+
/** Coerces matching string fields of obj in place. */
|
|
116
|
+
export function coerceFields(obj, fields) {
|
|
117
|
+
for (const [key, kind] of fields) {
|
|
118
|
+
const val = obj[key];
|
|
119
|
+
if (typeof val === 'string')
|
|
120
|
+
obj[key] = coerceValue(val, kind);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=coercion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coercion.js","sourceRoot":"","sources":["../src/coercion.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,4 +7,6 @@ export { compileRouter, generateRoutes } from './router.js';
|
|
|
7
7
|
export type { RouteDefinition, RouterMatch, Router, GenerateRoutesOptions, HttpOverride } from './router.js';
|
|
8
8
|
export { uploadedFile } from './multipart.js';
|
|
9
9
|
export type { UploadedFile, MultipartOptions } from './multipart.js';
|
|
10
|
+
export { generateOpenAPI } from './openapi.js';
|
|
11
|
+
export type { OpenAPIOptions, OpenAPIServer } from './openapi.js';
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* openapi.ts — generate an OpenAPI 3.1 document from a capability registry.
|
|
3
|
+
*
|
|
4
|
+
* Routes come from the same inference engine the REST transport uses at mount
|
|
5
|
+
* time (generateRoutes), so the spec always matches what the server actually
|
|
6
|
+
* serves — including urlCase and route overrides. Input schemas become path
|
|
7
|
+
* parameters, query parameters (for GET/DELETE), or a JSON request body
|
|
8
|
+
* (for POST/PATCH/PUT); output schemas become the `data` payload of the 200
|
|
9
|
+
* response, mirroring the transport's `{ "data": ... }` envelope.
|
|
10
|
+
*
|
|
11
|
+
* Use programmatically:
|
|
12
|
+
* import { generateOpenAPI } from '@capixjs/transport-rest';
|
|
13
|
+
* const spec = generateOpenAPI(registry, { title: 'My API', version: '1.0.0' });
|
|
14
|
+
*
|
|
15
|
+
* Or via the CLI:
|
|
16
|
+
* capix openapi --output openapi.json
|
|
17
|
+
*/
|
|
18
|
+
import type { CapabilityRegistry } from '@capixjs/core';
|
|
19
|
+
import type { HttpOverride } from './router.js';
|
|
20
|
+
export type OpenAPIServer = {
|
|
21
|
+
readonly url: string;
|
|
22
|
+
readonly description?: string;
|
|
23
|
+
};
|
|
24
|
+
export type OpenAPIOptions = {
|
|
25
|
+
/** info.title — default 'Capix API'. */
|
|
26
|
+
readonly title?: string;
|
|
27
|
+
/** info.version — default '0.0.0'. */
|
|
28
|
+
readonly version?: string;
|
|
29
|
+
/** info.description. */
|
|
30
|
+
readonly description?: string;
|
|
31
|
+
/** servers array (e.g. [{ url: 'https://api.example.com' }]). */
|
|
32
|
+
readonly servers?: ReadonlyArray<OpenAPIServer>;
|
|
33
|
+
/** Case style for inferred URL segments — must match the restTransport option. */
|
|
34
|
+
readonly urlCase?: 'kebab' | 'camel' | 'snake';
|
|
35
|
+
/** Route overrides — must match the restTransport option for an accurate spec. */
|
|
36
|
+
readonly overrides?: Record<string, HttpOverride>;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Generates an OpenAPI 3.1 document for every capability in the registry.
|
|
40
|
+
*
|
|
41
|
+
* Pass the same `urlCase` and `overrides` you give to `restTransport` so the
|
|
42
|
+
* generated paths match the running server.
|
|
43
|
+
*/
|
|
44
|
+
export declare function generateOpenAPI(registry: CapabilityRegistry, options?: OpenAPIOptions): Record<string, unknown>;
|
|
45
|
+
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAC/C,kFAAkF;IAClF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACnD,CAAC;AAwDF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,cAAmB,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8HzB"}
|
package/dist/openapi.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* openapi.ts — generate an OpenAPI 3.1 document from a capability registry.
|
|
3
|
+
*
|
|
4
|
+
* Routes come from the same inference engine the REST transport uses at mount
|
|
5
|
+
* time (generateRoutes), so the spec always matches what the server actually
|
|
6
|
+
* serves — including urlCase and route overrides. Input schemas become path
|
|
7
|
+
* parameters, query parameters (for GET/DELETE), or a JSON request body
|
|
8
|
+
* (for POST/PATCH/PUT); output schemas become the `data` payload of the 200
|
|
9
|
+
* response, mirroring the transport's `{ "data": ... }` envelope.
|
|
10
|
+
*
|
|
11
|
+
* Use programmatically:
|
|
12
|
+
* import { generateOpenAPI } from '@capixjs/transport-rest';
|
|
13
|
+
* const spec = generateOpenAPI(registry, { title: 'My API', version: '1.0.0' });
|
|
14
|
+
*
|
|
15
|
+
* Or via the CLI:
|
|
16
|
+
* capix openapi --output openapi.json
|
|
17
|
+
*/
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
import { generateRoutes } from './router.js';
|
|
20
|
+
const NO_BODY_METHODS = new Set(['GET', 'HEAD', 'DELETE']);
|
|
21
|
+
const ERROR_RESPONSE_SCHEMA = {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
error: { type: 'string', description: 'Machine-readable error code (e.g. NotFound)' },
|
|
25
|
+
message: { type: 'string', description: 'Human-readable error message' },
|
|
26
|
+
meta: { type: 'object', additionalProperties: true, description: 'Optional error details' },
|
|
27
|
+
},
|
|
28
|
+
required: ['error', 'message'],
|
|
29
|
+
};
|
|
30
|
+
function errorRef(description) {
|
|
31
|
+
return {
|
|
32
|
+
description,
|
|
33
|
+
content: {
|
|
34
|
+
'application/json': {
|
|
35
|
+
schema: { $ref: '#/components/schemas/ErrorResponse' },
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Converts a Zod schema to JSON Schema; null when conversion fails.
|
|
42
|
+
* Targets draft 2020-12 — the dialect OpenAPI 3.1 uses natively.
|
|
43
|
+
* `io` picks the schema side: 'input' for request schemas (fields with
|
|
44
|
+
* defaults become optional), 'output' for response schemas.
|
|
45
|
+
*/
|
|
46
|
+
function toJsonSchema(schema, io) {
|
|
47
|
+
try {
|
|
48
|
+
const js = z.toJSONSchema(schema, {
|
|
49
|
+
io,
|
|
50
|
+
reused: 'inline',
|
|
51
|
+
unrepresentable: 'any',
|
|
52
|
+
});
|
|
53
|
+
delete js['$schema'];
|
|
54
|
+
return js;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function pathParamNames(routePath) {
|
|
61
|
+
const names = [];
|
|
62
|
+
for (const seg of routePath.split('/')) {
|
|
63
|
+
if (seg.startsWith(':'))
|
|
64
|
+
names.push(seg.slice(1));
|
|
65
|
+
}
|
|
66
|
+
return names;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generates an OpenAPI 3.1 document for every capability in the registry.
|
|
70
|
+
*
|
|
71
|
+
* Pass the same `urlCase` and `overrides` you give to `restTransport` so the
|
|
72
|
+
* generated paths match the running server.
|
|
73
|
+
*/
|
|
74
|
+
export function generateOpenAPI(registry, options = {}) {
|
|
75
|
+
const routes = generateRoutes(registry, {
|
|
76
|
+
...(options.urlCase !== undefined ? { urlCase: options.urlCase } : {}),
|
|
77
|
+
...(options.overrides !== undefined ? { overrides: options.overrides } : {}),
|
|
78
|
+
});
|
|
79
|
+
const paths = {};
|
|
80
|
+
const tags = new Set();
|
|
81
|
+
for (const route of routes) {
|
|
82
|
+
const cap = registry.get(route.capability);
|
|
83
|
+
if (cap === undefined)
|
|
84
|
+
continue;
|
|
85
|
+
const openapiPath = route.path.replace(/:([^/]+)/g, '{$1}');
|
|
86
|
+
const params = pathParamNames(route.path);
|
|
87
|
+
const paramSet = new Set(params);
|
|
88
|
+
const inputJs = cap.inputSchema !== null ? toJsonSchema(cap.inputSchema, 'input') : null;
|
|
89
|
+
const properties = (inputJs?.['properties'] ?? {});
|
|
90
|
+
const requiredFields = new Set((inputJs?.['required'] ?? []));
|
|
91
|
+
// Object schemas split into parameters/body; non-object schemas (z.record,
|
|
92
|
+
// z.any) can't be decomposed — they become the whole request body.
|
|
93
|
+
const isObjectSchema = inputJs !== null && 'properties' in inputJs;
|
|
94
|
+
const parameters = [];
|
|
95
|
+
for (const name of params) {
|
|
96
|
+
parameters.push({
|
|
97
|
+
name,
|
|
98
|
+
in: 'path',
|
|
99
|
+
required: true,
|
|
100
|
+
schema: properties[name] ?? { type: 'string' },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
let requestBody = null;
|
|
104
|
+
if (NO_BODY_METHODS.has(route.method)) {
|
|
105
|
+
// Remaining schema fields are query parameters
|
|
106
|
+
for (const [name, schema] of Object.entries(properties)) {
|
|
107
|
+
if (paramSet.has(name))
|
|
108
|
+
continue;
|
|
109
|
+
parameters.push({
|
|
110
|
+
name,
|
|
111
|
+
in: 'query',
|
|
112
|
+
required: requiredFields.has(name),
|
|
113
|
+
schema,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (isObjectSchema) {
|
|
118
|
+
const bodyProps = {};
|
|
119
|
+
const bodyRequired = [];
|
|
120
|
+
for (const [name, schema] of Object.entries(properties)) {
|
|
121
|
+
if (paramSet.has(name))
|
|
122
|
+
continue;
|
|
123
|
+
bodyProps[name] = schema;
|
|
124
|
+
if (requiredFields.has(name))
|
|
125
|
+
bodyRequired.push(name);
|
|
126
|
+
}
|
|
127
|
+
if (Object.keys(bodyProps).length > 0) {
|
|
128
|
+
requestBody = {
|
|
129
|
+
required: bodyRequired.length > 0,
|
|
130
|
+
content: {
|
|
131
|
+
'application/json': {
|
|
132
|
+
schema: {
|
|
133
|
+
type: 'object',
|
|
134
|
+
properties: bodyProps,
|
|
135
|
+
...(bodyRequired.length > 0 ? { required: bodyRequired } : {}),
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else if (inputJs !== null) {
|
|
143
|
+
requestBody = {
|
|
144
|
+
required: true,
|
|
145
|
+
content: { 'application/json': { schema: inputJs } },
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
const outputJs = cap.outputSchema !== null ? toJsonSchema(cap.outputSchema, 'output') : null;
|
|
149
|
+
const responses = {
|
|
150
|
+
'200': {
|
|
151
|
+
description: 'Success',
|
|
152
|
+
content: {
|
|
153
|
+
'application/json': {
|
|
154
|
+
schema: {
|
|
155
|
+
type: 'object',
|
|
156
|
+
properties: { data: outputJs ?? {} },
|
|
157
|
+
required: ['data'],
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
...(cap.inputSchema !== null ? { '400': errorRef('Validation error') } : {}),
|
|
163
|
+
default: errorRef('Error'),
|
|
164
|
+
};
|
|
165
|
+
const segments = route.capability.split('.');
|
|
166
|
+
const group = segments.length > 1 ? segments[0] : null;
|
|
167
|
+
if (group !== null)
|
|
168
|
+
tags.add(group);
|
|
169
|
+
const operation = {
|
|
170
|
+
operationId: route.capability.replaceAll('.', '_'),
|
|
171
|
+
summary: route.capability,
|
|
172
|
+
...(group !== null ? { tags: [group] } : {}),
|
|
173
|
+
...(parameters.length > 0 ? { parameters } : {}),
|
|
174
|
+
...(requestBody !== null ? { requestBody } : {}),
|
|
175
|
+
responses,
|
|
176
|
+
};
|
|
177
|
+
if (!(openapiPath in paths))
|
|
178
|
+
paths[openapiPath] = {};
|
|
179
|
+
paths[openapiPath][route.method.toLowerCase()] = operation;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
openapi: '3.1.0',
|
|
183
|
+
info: {
|
|
184
|
+
title: options.title ?? 'Capix API',
|
|
185
|
+
version: options.version ?? '0.0.0',
|
|
186
|
+
...(options.description !== undefined ? { description: options.description } : {}),
|
|
187
|
+
},
|
|
188
|
+
...(options.servers !== undefined && options.servers.length > 0
|
|
189
|
+
? { servers: options.servers }
|
|
190
|
+
: {}),
|
|
191
|
+
paths,
|
|
192
|
+
components: { schemas: { ErrorResponse: ERROR_RESPONSE_SCHEMA } },
|
|
193
|
+
...(tags.size > 0 ? { tags: [...tags].sort().map((name) => ({ name })) } : {}),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|
package/dist/router.d.ts
CHANGED
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,eAAe,CAAC;AAGvE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GACrG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,eAAe,CAAC;AAGvE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CAAE,GACrG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhG,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACtC,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC1C,CAAC;AA4JF,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAmB/D;AA0BD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,qBAA0B,GAClC,eAAe,EAAE,CAqBnB"}
|
package/dist/router.js
CHANGED
|
@@ -2,10 +2,24 @@
|
|
|
2
2
|
* router.ts — radix-tree router for the REST transport
|
|
3
3
|
* No core dependency except types (CapabilityRegistry, AnyCapability).
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { resolveIntent } from '@capixjs/core';
|
|
6
6
|
function newNode() {
|
|
7
7
|
return { handlers: new Map(), staticChildren: new Map() };
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* decodeURIComponent that returns null instead of throwing on malformed
|
|
11
|
+
* percent-encoding ('%zz', truncated '%E0%A4', overlong sequences).
|
|
12
|
+
* A throwing decode here would escape the transport's synchronous request
|
|
13
|
+
* path and crash the process.
|
|
14
|
+
*/
|
|
15
|
+
function safeDecode(s) {
|
|
16
|
+
try {
|
|
17
|
+
return decodeURIComponent(s);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
9
23
|
/** Splits a URL path into segments in a single pass (no intermediate array from filter). */
|
|
10
24
|
function splitPath(path) {
|
|
11
25
|
const segments = [];
|
|
@@ -74,14 +88,18 @@ function matchRoute(root, method, segments, index, params) {
|
|
|
74
88
|
const result = matchRoute(staticChild, method, segments, index + 1, params);
|
|
75
89
|
if (result.found)
|
|
76
90
|
return result;
|
|
77
|
-
// If static matched path but not method, return that result
|
|
78
|
-
if (!result.found && result.allowedMethods !== undefined)
|
|
91
|
+
// If static matched path but not method (or a deeper segment was undecodable), return that result
|
|
92
|
+
if (!result.found && (result.allowedMethods !== undefined || result.malformed === true))
|
|
79
93
|
return result;
|
|
80
94
|
}
|
|
81
95
|
// Param match — look up the param name for the current method
|
|
82
96
|
if (root.paramChild !== undefined) {
|
|
83
97
|
// Conditional decode: skip when there are no percent-encoded chars
|
|
84
|
-
const decoded = seg.includes('%') ?
|
|
98
|
+
const decoded = seg.includes('%') ? safeDecode(seg) : seg;
|
|
99
|
+
if (decoded === null) {
|
|
100
|
+
// Undecodable segment can never bind to a param — the URL itself is invalid.
|
|
101
|
+
return { found: false, malformed: true };
|
|
102
|
+
}
|
|
85
103
|
const paramName = root.paramChild.methodNames.get(method) ??
|
|
86
104
|
root.paramChild.methodNames.values().next().value ??
|
|
87
105
|
'id';
|
|
@@ -174,8 +192,8 @@ function inferRoutes(dotPath, cap, urlCase) {
|
|
|
174
192
|
// Group path = all segments except the last one, with case conversion applied
|
|
175
193
|
const groupSegments = segments.slice(0, -1).map((s) => applyUrlCase(s, urlCase));
|
|
176
194
|
const groupPath = '/' + groupSegments.join('/');
|
|
177
|
-
//
|
|
178
|
-
const intent = cap
|
|
195
|
+
// Explicit intent wins; otherwise inferred from the key name
|
|
196
|
+
const intent = resolveIntent(cap, key);
|
|
179
197
|
const hasIdField = cap.inputSchema
|
|
180
198
|
? 'shape' in cap.inputSchema &&
|
|
181
199
|
typeof cap.inputSchema.shape === 'object' &&
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/serializer.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { DEFAULT as defaultSerializer };
|
|
|
13
13
|
/**
|
|
14
14
|
* Builds per-capability serializers from compiled output schemas.
|
|
15
15
|
* Falls back to JSON.stringify for capabilities without an outputSchema or
|
|
16
|
-
* if
|
|
16
|
+
* if the schema cannot be converted to JSON Schema (e.g. contains z.date()).
|
|
17
17
|
*/
|
|
18
18
|
export declare function buildSerializers(registry: CapabilityRegistry): Map<string, ResponseSerializer>;
|
|
19
19
|
//# sourceMappingURL=serializer.d.ts.map
|
package/dist/serializer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;AAE3D,QAAA,MAAM,OAAO,EAAE,kBAAsE,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;AAE3D,QAAA,MAAM,OAAO,EAAE,kBAAsE,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAyB9F"}
|
package/dist/serializer.js
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
* per-request setup cost.
|
|
7
7
|
*/
|
|
8
8
|
import fastJsonStringify from 'fast-json-stringify';
|
|
9
|
-
import {
|
|
9
|
+
import { z } from 'zod';
|
|
10
10
|
const DEFAULT = (data) => '{"data":' + JSON.stringify(data) + '}';
|
|
11
11
|
export { DEFAULT as defaultSerializer };
|
|
12
12
|
/**
|
|
13
13
|
* Builds per-capability serializers from compiled output schemas.
|
|
14
14
|
* Falls back to JSON.stringify for capabilities without an outputSchema or
|
|
15
|
-
* if
|
|
15
|
+
* if the schema cannot be converted to JSON Schema (e.g. contains z.date()).
|
|
16
16
|
*/
|
|
17
17
|
export function buildSerializers(registry) {
|
|
18
18
|
const map = new Map();
|
|
@@ -20,9 +20,10 @@ export function buildSerializers(registry) {
|
|
|
20
20
|
if (cap.outputSchema === null)
|
|
21
21
|
continue;
|
|
22
22
|
try {
|
|
23
|
-
const jsonSchema =
|
|
24
|
-
target: '
|
|
25
|
-
|
|
23
|
+
const jsonSchema = z.toJSONSchema(cap.outputSchema, {
|
|
24
|
+
target: 'draft-7',
|
|
25
|
+
io: 'output',
|
|
26
|
+
reused: 'inline',
|
|
26
27
|
});
|
|
27
28
|
// Remove the $schema meta field — fjs doesn't need it
|
|
28
29
|
if (typeof jsonSchema === 'object' && jsonSchema !== null) {
|
package/dist/serializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,MAAM,OAAO,GAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;AAExC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA4B;IAC3D,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAElD,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI;YAAE,SAAS;QAExC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,YAAyB,EAAE;gBAC/D,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,QAAQ;gBACZ,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YACH,sDAAsD;YACtD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC1D,OAAQ,UAAsC,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAqD,CAAC,CAAC;YAC/F,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,mGAAmG;QACrG,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/transport.d.ts
CHANGED
|
@@ -54,6 +54,12 @@ export type RestTransportOptions = {
|
|
|
54
54
|
* Use to prevent non-REST capabilities from getting HTTP endpoints.
|
|
55
55
|
*/
|
|
56
56
|
readonly capabilities?: GroupTree;
|
|
57
|
+
/**
|
|
58
|
+
* How long unmount() waits for in-flight requests before force-closing
|
|
59
|
+
* their connections, in milliseconds. Idle keep-alive connections are
|
|
60
|
+
* dropped immediately. Default: 10_000.
|
|
61
|
+
*/
|
|
62
|
+
readonly shutdownTimeoutMs?: number;
|
|
57
63
|
};
|
|
58
64
|
/** Creates a REST transport using node:http. */
|
|
59
65
|
export declare function restTransport(options: RestTransportOptions): TransportWithCapabilities;
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,KAAK,EAAyD,SAAS,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEjI,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AASvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;QACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAChD,yFAAyF;IACzF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAC/C;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,yBAAyB,CA4WtF"}
|
package/dist/transport.js
CHANGED
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
* Depends on: router.ts, capix core
|
|
9
9
|
*/
|
|
10
10
|
import * as http from 'node:http';
|
|
11
|
+
import { closeHttpServerGracefully } from '@capixjs/core';
|
|
11
12
|
import { compileRouter, generateRoutes } from './router.js';
|
|
12
13
|
import { parseMultipart } from './multipart-parser.js';
|
|
13
14
|
import { buildSerializers, defaultSerializer } from './serializer.js';
|
|
15
|
+
import { buildCoercionMaps, coerceFields, coerceValue } from './coercion.js';
|
|
14
16
|
const DEFAULT_MAX_BODY_SIZE = 1024 * 1024; // 1MB
|
|
15
17
|
const EMPTY_INPUT = {};
|
|
16
18
|
/** Creates a REST transport using node:http. */
|
|
@@ -19,6 +21,7 @@ export function restTransport(options) {
|
|
|
19
21
|
let router = null;
|
|
20
22
|
let invokeFn = null;
|
|
21
23
|
let serializers = null;
|
|
24
|
+
let coercers = null;
|
|
22
25
|
const corsOriginOpt = options.cors?.origin ?? '*';
|
|
23
26
|
const maxBodySize = options.maxBodySize ?? DEFAULT_MAX_BODY_SIZE;
|
|
24
27
|
const corsMethodsValue = options.cors?.methods ?? 'GET, POST, PATCH, PUT, DELETE, OPTIONS';
|
|
@@ -73,15 +76,20 @@ export function restTransport(options) {
|
|
|
73
76
|
req.on('error', reject);
|
|
74
77
|
});
|
|
75
78
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
return
|
|
81
|
-
|
|
82
|
-
return
|
|
83
|
-
|
|
79
|
+
// Malformed percent-encoding falls back to the raw text (WHATWG URLSearchParams
|
|
80
|
+
// behavior) instead of throwing out of the synchronous request path.
|
|
81
|
+
function safeDecode(s) {
|
|
82
|
+
if (!s.includes('%'))
|
|
83
|
+
return s;
|
|
84
|
+
try {
|
|
85
|
+
return decodeURIComponent(s);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return s;
|
|
89
|
+
}
|
|
84
90
|
}
|
|
91
|
+
// Values stay raw strings here; schema-aware coercion is applied afterwards
|
|
92
|
+
// using the matched capability's coercion map (see coercion.ts).
|
|
85
93
|
function parseQueryString(url) {
|
|
86
94
|
const idx = url.indexOf('?');
|
|
87
95
|
if (idx === -1)
|
|
@@ -92,18 +100,40 @@ export function restTransport(options) {
|
|
|
92
100
|
const eqIdx = part.indexOf('=');
|
|
93
101
|
if (eqIdx === -1)
|
|
94
102
|
continue;
|
|
95
|
-
const key =
|
|
96
|
-
|
|
97
|
-
|
|
103
|
+
const key = safeDecode(part.slice(0, eqIdx));
|
|
104
|
+
if (key === '__proto__')
|
|
105
|
+
continue; // never allow prototype-setting keys into input
|
|
106
|
+
result[key] = safeDecode(part.slice(eqIdx + 1));
|
|
98
107
|
}
|
|
99
108
|
return result;
|
|
100
109
|
}
|
|
110
|
+
/** Object.assign with [[Set]]-semantics '__proto__' assignment excluded. */
|
|
111
|
+
function assignSafe(target, source) {
|
|
112
|
+
for (const key of Object.keys(source)) {
|
|
113
|
+
if (key === '__proto__')
|
|
114
|
+
continue;
|
|
115
|
+
target[key] = source[key];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
101
118
|
function sendJson(res, status, body) {
|
|
102
119
|
const json = JSON.stringify(body);
|
|
103
120
|
res.writeHead(status, _jsonHeadersErr ?? { 'Content-Type': 'application/json' });
|
|
104
121
|
res.end(json);
|
|
105
122
|
}
|
|
123
|
+
// Defense in depth: a synchronous throw in the request path would otherwise
|
|
124
|
+
// escape node:http as an uncaughtException and kill the process.
|
|
106
125
|
function handler(req, res) {
|
|
126
|
+
try {
|
|
127
|
+
handleRequest(req, res);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
console.error('[capix:rest] Unhandled synchronous error in handler:', err);
|
|
131
|
+
if (!res.headersSent) {
|
|
132
|
+
sendJson(res, 500, { error: 'Internal', message: 'Internal server error' });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function handleRequest(req, res) {
|
|
107
137
|
// Fast path: pre-built static headers avoid per-request setHeader calls.
|
|
108
138
|
// Dynamic origin functions still use setCorsHeaders.
|
|
109
139
|
if (hasDynamicOrigin)
|
|
@@ -129,7 +159,10 @@ export function restTransport(options) {
|
|
|
129
159
|
const method = (req.method ?? 'GET').toUpperCase();
|
|
130
160
|
const match = router.match(method, url);
|
|
131
161
|
if (!match.found) {
|
|
132
|
-
if (match.
|
|
162
|
+
if (match.malformed === true) {
|
|
163
|
+
sendJson(res, 400, { error: 'BadRequest', message: 'Malformed URL encoding' });
|
|
164
|
+
}
|
|
165
|
+
else if (match.allowedMethods !== undefined) {
|
|
133
166
|
res.setHeader('Allow', match.allowedMethods.join(', '));
|
|
134
167
|
sendJson(res, 405, { error: 'MethodNotAllowed', message: 'Method not allowed' });
|
|
135
168
|
}
|
|
@@ -138,7 +171,11 @@ export function restTransport(options) {
|
|
|
138
171
|
}
|
|
139
172
|
return;
|
|
140
173
|
}
|
|
174
|
+
// Schema-derived coercion targets for this capability (null → leave strings raw)
|
|
175
|
+
const fieldKinds = coercers?.get(match.capability) ?? null;
|
|
141
176
|
const queryParams = parseQueryString(url);
|
|
177
|
+
if (queryParams !== null && fieldKinds !== null)
|
|
178
|
+
coerceFields(queryParams, fieldKinds);
|
|
142
179
|
const pathParams = match.params;
|
|
143
180
|
const noBody = method === 'GET' || method === 'HEAD' || method === 'DELETE';
|
|
144
181
|
// Async continuation to keep handler signature synchronous (avoids unhandled rejection)
|
|
@@ -165,10 +202,16 @@ export function restTransport(options) {
|
|
|
165
202
|
const multipartOpts = typeof options.multipart === 'object' ? options.multipart : {};
|
|
166
203
|
try {
|
|
167
204
|
const parsed = await parseMultipart(req.headers, rawBody, multipartOpts);
|
|
168
|
-
for (const [k, v] of Object.entries(parsed.fields))
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
205
|
+
for (const [k, v] of Object.entries(parsed.fields)) {
|
|
206
|
+
if (k === '__proto__')
|
|
207
|
+
continue;
|
|
208
|
+
const kind = fieldKinds?.get(k);
|
|
209
|
+
bodyParams[k] = kind !== undefined ? coerceValue(v, kind) : v;
|
|
210
|
+
}
|
|
211
|
+
for (const [k, f] of Object.entries(parsed.files)) {
|
|
212
|
+
if (k !== '__proto__')
|
|
213
|
+
bodyParams[k] = f;
|
|
214
|
+
}
|
|
172
215
|
}
|
|
173
216
|
catch (err) {
|
|
174
217
|
const status = err.status ?? 400;
|
|
@@ -178,13 +221,21 @@ export function restTransport(options) {
|
|
|
178
221
|
}
|
|
179
222
|
}
|
|
180
223
|
else if (contentType.includes('application/json')) {
|
|
224
|
+
let parsed;
|
|
181
225
|
try {
|
|
182
|
-
|
|
226
|
+
parsed = JSON.parse(rawBody.toString('utf8'));
|
|
183
227
|
}
|
|
184
228
|
catch {
|
|
185
229
|
sendJson(res, 400, { error: 'BadRequest', message: 'Invalid JSON body' });
|
|
186
230
|
return;
|
|
187
231
|
}
|
|
232
|
+
// Arrays and primitives cannot merge into the input object — reject
|
|
233
|
+
// instead of producing index-keyed garbage ({ '0': ..., '1': ... }).
|
|
234
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
235
|
+
sendJson(res, 400, { error: 'BadRequest', message: 'JSON body must be an object' });
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
bodyParams = parsed;
|
|
188
239
|
}
|
|
189
240
|
}
|
|
190
241
|
}
|
|
@@ -199,9 +250,17 @@ export function restTransport(options) {
|
|
|
199
250
|
input = {};
|
|
200
251
|
if (queryParams !== null)
|
|
201
252
|
Object.assign(input, queryParams);
|
|
202
|
-
Object.assign
|
|
203
|
-
|
|
204
|
-
|
|
253
|
+
// JSON.parse can produce an own '__proto__' data property — Object.assign
|
|
254
|
+
// would turn that into a prototype write on input. assignSafe skips it.
|
|
255
|
+
// JSON body values are deliberately NOT coerced: JSON expresses numbers
|
|
256
|
+
// and booleans itself, so a string where a number belongs is a real error.
|
|
257
|
+
assignSafe(input, bodyParams);
|
|
258
|
+
if (pathParams !== null) {
|
|
259
|
+
for (const k of Object.keys(pathParams)) {
|
|
260
|
+
const kind = fieldKinds?.get(k);
|
|
261
|
+
input[k] = kind !== undefined ? coerceValue(pathParams[k], kind) : pathParams[k];
|
|
262
|
+
}
|
|
263
|
+
}
|
|
205
264
|
}
|
|
206
265
|
// Build flat headers map using for..in (avoids Object.entries array allocation).
|
|
207
266
|
const headers = {};
|
|
@@ -210,7 +269,13 @@ export function restTransport(options) {
|
|
|
210
269
|
if (v !== undefined)
|
|
211
270
|
headers[k] = Array.isArray(v) ? v.join(', ') : v;
|
|
212
271
|
}
|
|
213
|
-
|
|
272
|
+
// Manual controller + timer instead of AbortSignal.timeout: the timer is
|
|
273
|
+
// cleared as soon as the invocation settles. AbortSignal.timeout would keep
|
|
274
|
+
// its timer (and the race's abort-listener closure) alive for the full
|
|
275
|
+
// timeout window after every completed request — at high RPS that retains
|
|
276
|
+
// hundreds of thousands of dead closures at steady state.
|
|
277
|
+
const controller = requestTimeout === false ? null : new AbortController();
|
|
278
|
+
const signal = controller?.signal ?? _noTimeoutSignal;
|
|
214
279
|
const invocation = invokeFn({
|
|
215
280
|
capability: match.capability,
|
|
216
281
|
input,
|
|
@@ -218,19 +283,30 @@ export function restTransport(options) {
|
|
|
218
283
|
signal,
|
|
219
284
|
...(rawBodyForContext !== undefined ? { rawBody: rawBodyForContext } : {}),
|
|
220
285
|
});
|
|
221
|
-
// Race invocation against the
|
|
222
|
-
// When timeout: false
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
286
|
+
// Race invocation against the timeout so hung capabilities don't hold the
|
|
287
|
+
// connection. When timeout: false there is no timer, so we await directly.
|
|
288
|
+
let response;
|
|
289
|
+
if (controller === null) {
|
|
290
|
+
response = await invocation;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
let timer;
|
|
294
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
295
|
+
timer = setTimeout(() => {
|
|
296
|
+
controller.abort();
|
|
297
|
+
resolve({
|
|
229
298
|
ok: false,
|
|
230
299
|
error: { status: 504, error: 'GatewayTimeout', message: 'Request timed out' },
|
|
231
|
-
})
|
|
232
|
-
})
|
|
233
|
-
|
|
300
|
+
});
|
|
301
|
+
}, requestTimeout);
|
|
302
|
+
});
|
|
303
|
+
try {
|
|
304
|
+
response = await Promise.race([invocation, timeoutPromise]);
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
clearTimeout(timer);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
234
310
|
if (response.ok) {
|
|
235
311
|
if (response.data === null || response.data === undefined) {
|
|
236
312
|
res.writeHead(204, _preflightHeaders ?? undefined);
|
|
@@ -273,6 +349,7 @@ export function restTransport(options) {
|
|
|
273
349
|
const routes = generateRoutes(mountOptions.registry, routeOpts);
|
|
274
350
|
router = compileRouter(routes);
|
|
275
351
|
serializers = buildSerializers(mountOptions.registry);
|
|
352
|
+
coercers = buildCoercionMaps(mountOptions.registry);
|
|
276
353
|
console.log('\nCapix REST transport starting...');
|
|
277
354
|
for (const route of routes) {
|
|
278
355
|
console.log(` ✓ ${route.method.padEnd(7)} ${route.path}`);
|
|
@@ -287,16 +364,11 @@ export function restTransport(options) {
|
|
|
287
364
|
});
|
|
288
365
|
},
|
|
289
366
|
async unmount() {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
reject(err);
|
|
296
|
-
else
|
|
297
|
-
resolve();
|
|
298
|
-
});
|
|
299
|
-
});
|
|
367
|
+
if (!server)
|
|
368
|
+
return;
|
|
369
|
+
const s = server;
|
|
370
|
+
server = null;
|
|
371
|
+
await closeHttpServerGracefully(s, options.shutdownTimeoutMs ?? 10_000);
|
|
300
372
|
},
|
|
301
373
|
};
|
|
302
374
|
}
|
package/dist/transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGtE,MAAM,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AACjD,MAAM,WAAW,GAA4B,EAAE,CAAC;AAgDhD,gDAAgD;AAChD,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,IAAI,MAAM,GAAuB,IAAI,CAAC;IACtC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,QAAQ,GAAoB,IAAI,CAAC;IACrC,IAAI,WAAW,GAA2C,IAAI,CAAC;IAE/D,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,CAAC;IAClD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAC;IACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,wCAAwC,CAAC;IAC3F,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,6BAA6B,CAAC;IAChF,MAAM,gBAAgB,GAAG,OAAO,aAAa,KAAK,UAAU,CAAC;IAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAChF,+EAA+E;IAC/E,MAAM,gBAAgB,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CACV,6DAA6D;YAC7D,sDAAsD;YACtD,gCAAgC,CACjC,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,sEAAsE;IACtE,IAAI,eAAe,GAAkC,IAAI,CAAC;IAC1D,IAAI,eAAe,GAAkC,IAAI,CAAC;IAC1D,IAAI,iBAAiB,GAAkC,IAAI,CAAC;IAE5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,QAAQ,GAA2B;YACvC,8BAA8B,EAAE,gBAAgB;YAChD,8BAA8B,EAAE,gBAAgB;SACjD,CAAC;QACF,IAAI,aAAa;YAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,aAAa,CAAC;QAC3E,eAAe,GAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,QAAQ,EAAE,CAAC;QACvE,eAAe,GAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,QAAQ,EAAE,CAAC;QACvE,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,SAAS,cAAc,CAAC,GAAoB,EAAE,GAAmB;QAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAI,aAAwC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,IAAI,WAAW;YAAE,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;QAC3E,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,gBAAgB,CAAC,CAAC;QAChE,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,GAAoB;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;YAEb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;gBACzB,IAAI,IAAI,GAAG,WAAW,EAAE,CAAC;oBACvB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,sEAAsE;oBACpF,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAW;QACnC,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAW;QACnC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAAE,SAAS;YAC3B,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,QAAQ,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,IAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,SAAS,OAAO,CAAC,GAAoB,EAAE,GAAmB;QACxD,yEAAyE;QACzE,qDAAqD;QACrD,IAAI,gBAAgB;YAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAErC,iBAAiB;QACjB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,iBAAiB,EAAE,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC3B,kGAAkG;QAClG,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACvC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC;QAE5E,wFAAwF;QACxF,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;YACvC,IAAI,UAAU,GAA4B,EAAE,CAAC;YAC7C,IAAI,iBAAqC,CAAC;YAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,OAAe,CAAC;gBACpB,IAAI,CAAC;oBACH,OAAO,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC;wBAChE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;wBAC7F,OAAO;oBACT,CAAC;oBACD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;oBACpF,OAAO;gBACT,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,iBAAiB,GAAG,OAAO,CAAC;oBAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;oBACtD,IAAI,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;wBACrE,MAAM,aAAa,GACjB,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjE,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;4BACzE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;gCAAE,UAAU,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;4BACxF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gCAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACvE,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,IAAI,GAAG,CAAC;4BAC1D,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAC;4BACtF,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;4BAC7F,OAAO;wBACT,CAAC;oBACH,CAAC;yBAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;wBACpD,IAAI,CAAC;4BACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA4B,CAAC;wBAC/E,CAAC;wBAAC,MAAM,CAAC;4BACP,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;4BAC1E,OAAO;wBACT,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,gFAAgF;YAChF,iFAAiF;YACjF,IAAI,KAA8B,CAAC;YACnC,IAAI,UAAU,KAAK,IAAI,IAAI,MAAM,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC1D,KAAK,GAAG,WAAW,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,EAAE,CAAC;gBACX,IAAI,WAAW,KAAK,IAAI;oBAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBACjC,IAAI,UAAU,KAAK,IAAI;oBAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC;YAED,iFAAiF;YACjF,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,KAAK,SAAS;oBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,MAAM,GAAG,gBAAgB,IAAI,WAAW,CAAC,OAAO,CAAC,cAAwB,CAAC,CAAC;YAEjF,MAAM,UAAU,GAAG,QAAS,CAAC;gBAC3B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,KAAK;gBACL,OAAO;gBACP,MAAM;gBACN,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3E,CAAC,CAAC;YAEH,sFAAsF;YACtF,oEAAoE;YACpE,MAAM,QAAQ,GAAuB,cAAc,KAAK,KAAK;gBAC3D,CAAC,CAAC,MAAM,UAAU;gBAClB,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,UAAU;oBACV,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,EAAE;wBAC1C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC;4BAC7C,EAAE,EAAE,KAAK;4BACT,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,EAAE;yBAC9E,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtB,CAAC,CAAC;iBACH,CAAC,CAAC;YAEP,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC1D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,IAAI,SAAS,CAAC,CAAC;oBACnD,GAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC;oBAC1E,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,eAAe,IAAI,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC9E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;gBACxD,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBACzD,IAAI,IAAI,KAAK,SAAS;oBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBAC5C,+DAA+D;gBAC/D,IAAI,MAAM,KAAK,GAAG,IAAI,OAAQ,IAA6C,EAAE,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACrG,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAE,IAA+B,CAAC,UAAU,CAAC,CAAC,CAAC;gBACpF,CAAC;gBACD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtF,KAAK,CAAC,KAAK,CAAC,MAAgB,EAAE,YAA0B;YACtD,QAAQ,GAAG,MAAM,CAAC;YAClB,MAAM,SAAS,GAAG;gBAChB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7E,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/B,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEtD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACpC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE,GAAG,EAAE;oBAC1D,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;oBACnE,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO;YACX,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI,CAAC,MAAM;oBAAE,OAAO,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,IAAI,GAAG;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;wBAChB,OAAO,EAAE,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capixjs/transport-rest",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.22",
|
|
4
4
|
"description": "Capix HTTP/REST transport",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,8 +33,7 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"busboy": "^1.6.0",
|
|
35
35
|
"fast-json-stringify": "^6.4.0",
|
|
36
|
-
"zod": "^
|
|
37
|
-
"zod-to-json-schema": "^3.25.2"
|
|
36
|
+
"zod": "^4.0.0"
|
|
38
37
|
},
|
|
39
38
|
"peerDependencies": {
|
|
40
39
|
"@capixjs/core": ">=0.1.0-0"
|
|
@@ -46,7 +45,7 @@
|
|
|
46
45
|
"form-data": "^4.0.5",
|
|
47
46
|
"typescript": "^5.5.0",
|
|
48
47
|
"vitest": "^1.6.0",
|
|
49
|
-
"@capixjs/core": "0.1.0-alpha.
|
|
48
|
+
"@capixjs/core": "0.1.0-alpha.22"
|
|
50
49
|
},
|
|
51
50
|
"scripts": {
|
|
52
51
|
"build": "tsc",
|