adorn-api 1.0.1 → 1.0.2
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 +4 -1
- package/dist/adapters/express/createApp.d.ts +149 -11
- package/dist/adapters/express/createApp.d.ts.map +1 -1
- package/dist/adapters/express/createApp.js +112 -6
- package/dist/adapters/express/createApp.js.map +1 -1
- package/dist/adapters/express/middleware/errorHandler.d.ts +193 -2
- package/dist/adapters/express/middleware/errorHandler.d.ts.map +1 -1
- package/dist/adapters/express/middleware/errorHandler.js +164 -3
- package/dist/adapters/express/middleware/errorHandler.js.map +1 -1
- package/dist/adapters/express/router.d.ts +1 -1
- package/dist/adapters/express/router.d.ts.map +1 -1
- package/dist/adapters/express/router.js +6 -4
- package/dist/adapters/express/router.js.map +1 -1
- package/dist/adapters/express/transport/request.js.map +1 -1
- package/dist/adapters/express/transport/response.d.ts +1 -1
- package/dist/adapters/express/transport/response.d.ts.map +1 -1
- package/dist/adapters/express/transport/response.js.map +1 -1
- package/dist/contracts/openapi-v3.d.ts +461 -0
- package/dist/contracts/openapi-v3.d.ts.map +1 -1
- package/dist/contracts/reply.d.ts +109 -1
- package/dist/contracts/reply.d.ts.map +1 -1
- package/dist/contracts/reply.js +40 -1
- package/dist/contracts/reply.js.map +1 -1
- package/dist/contracts/response-types.d.ts +5 -5
- package/dist/contracts/response-types.d.ts.map +1 -1
- package/dist/contracts/responses.d.ts +84 -4
- package/dist/contracts/responses.d.ts.map +1 -1
- package/dist/contracts/route-options.d.ts +134 -3
- package/dist/contracts/route-options.d.ts.map +1 -1
- package/dist/contracts/validator.d.ts +121 -0
- package/dist/contracts/validator.d.ts.map +1 -1
- package/dist/core/binding/binder.d.ts +56 -1
- package/dist/core/binding/binder.d.ts.map +1 -1
- package/dist/core/binding/binder.js +33 -0
- package/dist/core/binding/binder.js.map +1 -1
- package/dist/core/binding/coerce/primitives.d.ts +68 -1
- package/dist/core/binding/coerce/primitives.d.ts.map +1 -1
- package/dist/core/binding/coerce/primitives.js +82 -12
- package/dist/core/binding/coerce/primitives.js.map +1 -1
- package/dist/core/errors/http-error.d.ts +54 -0
- package/dist/core/errors/http-error.d.ts.map +1 -1
- package/dist/core/errors/http-error.js +54 -0
- package/dist/core/errors/http-error.js.map +1 -1
- package/dist/core/errors/validation-error.d.ts +65 -0
- package/dist/core/errors/validation-error.d.ts.map +1 -1
- package/dist/core/errors/validation-error.js +65 -0
- package/dist/core/errors/validation-error.js.map +1 -1
- package/dist/core/openapi/buildOpenApi.d.ts +65 -0
- package/dist/core/openapi/buildOpenApi.d.ts.map +1 -1
- package/dist/core/openapi/buildOpenApi.js +66 -4
- package/dist/core/openapi/buildOpenApi.js.map +1 -1
- package/dist/core/openapi/schema/registry.d.ts +1 -1
- package/dist/core/openapi/schema/registry.d.ts.map +1 -1
- package/dist/core/openapi/schema/registry.js.map +1 -1
- package/dist/core/registry/buildRegistry.d.ts.map +1 -1
- package/dist/core/registry/buildRegistry.js +49 -5
- package/dist/core/registry/buildRegistry.js.map +1 -1
- package/dist/core/registry/types.d.ts +194 -1
- package/dist/core/registry/types.d.ts.map +1 -1
- package/dist/core/reply/reply.d.ts +94 -0
- package/dist/core/reply/reply.d.ts.map +1 -1
- package/dist/core/reply/reply.js +87 -0
- package/dist/core/reply/reply.js.map +1 -1
- package/dist/core/reply/typed.d.ts +137 -3
- package/dist/core/reply/typed.d.ts.map +1 -1
- package/dist/core/reply/typed.js +137 -2
- package/dist/core/reply/typed.js.map +1 -1
- package/dist/core/responses/helpers.d.ts +1 -1
- package/dist/core/responses/helpers.d.ts.map +1 -1
- package/dist/core/responses/normalize.d.ts.map +1 -1
- package/dist/core/responses/normalize.js +2 -1
- package/dist/core/responses/normalize.js.map +1 -1
- package/dist/core/route/defineRoute.d.ts +48 -1
- package/dist/core/route/defineRoute.d.ts.map +1 -1
- package/dist/core/route/defineRoute.js +42 -1
- package/dist/core/route/defineRoute.js.map +1 -1
- package/dist/decorators/binding.d.ts +1 -1
- package/dist/decorators/binding.d.ts.map +1 -1
- package/dist/decorators/binding.js.map +1 -1
- package/dist/decorators/controller.d.ts +1 -1
- package/dist/decorators/controller.d.ts.map +1 -1
- package/dist/decorators/controller.js.map +1 -1
- package/dist/decorators/docs.d.ts +6 -0
- package/dist/decorators/docs.d.ts.map +1 -1
- package/dist/decorators/docs.js +45 -2
- package/dist/decorators/docs.js.map +1 -1
- package/dist/decorators/index.d.ts +3 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +3 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/methods.d.ts +128 -6
- package/dist/decorators/methods.d.ts.map +1 -1
- package/dist/decorators/methods.js +124 -0
- package/dist/decorators/methods.js.map +1 -1
- package/dist/decorators/responses.d.ts +5 -0
- package/dist/decorators/responses.d.ts.map +1 -1
- package/dist/decorators/responses.js +43 -2
- package/dist/decorators/responses.js.map +1 -1
- package/dist/decorators/security.d.ts +6 -0
- package/dist/decorators/security.d.ts.map +1 -1
- package/dist/decorators/security.js +38 -2
- package/dist/decorators/security.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/metal-orm/schema/column-map.d.ts +91 -0
- package/dist/integrations/metal-orm/schema/column-map.d.ts.map +1 -1
- package/dist/integrations/metal-orm/schema/column-map.js +129 -2
- package/dist/integrations/metal-orm/schema/column-map.js.map +1 -1
- package/dist/integrations/metal-orm/schema/dto.d.ts +2 -2
- package/dist/integrations/metal-orm/schema/dto.d.ts.map +1 -1
- package/dist/integrations/metal-orm/schema/dto.js.map +1 -1
- package/dist/integrations/metal-orm/schema/entity.d.ts +90 -8
- package/dist/integrations/metal-orm/schema/entity.d.ts.map +1 -1
- package/dist/integrations/metal-orm/schema/entity.js +78 -6
- package/dist/integrations/metal-orm/schema/entity.js.map +1 -1
- package/dist/integrations/metal-orm/schema/filters.d.ts +1 -1
- package/dist/integrations/metal-orm/schema/filters.d.ts.map +1 -1
- package/dist/integrations/metal-orm/schema/filters.js +2 -1
- package/dist/integrations/metal-orm/schema/filters.js.map +1 -1
- package/dist/integrations/metal-orm/schema/tabledef.d.ts +1 -1
- package/dist/integrations/metal-orm/schema/tabledef.d.ts.map +1 -1
- package/dist/metadata/bag.d.ts +2 -1
- package/dist/metadata/bag.d.ts.map +1 -1
- package/dist/metadata/bag.js +2 -1
- package/dist/metadata/bag.js.map +1 -1
- package/dist/metadata/keys.d.ts +203 -1
- package/dist/metadata/keys.d.ts.map +1 -1
- package/dist/metadata/keys.js +3 -9
- package/dist/metadata/keys.js.map +1 -1
- package/dist/metadata/merge.d.ts.map +1 -1
- package/dist/metadata/merge.js +4 -1
- package/dist/metadata/merge.js.map +1 -1
- package/dist/validation/native/schema.d.ts +2 -2
- package/dist/validation/native/schema.d.ts.map +1 -1
- package/dist/validation/native/validator.d.ts +1 -1
- package/dist/validation/native/validator.d.ts.map +1 -1
- package/package.json +6 -2
package/dist/metadata/keys.d.ts
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
* Some runtimes may not have Symbol.metadata yet; TypeScript's emit still uses it,
|
|
6
6
|
* so we polyfill Symbol.metadata to a stable symbol if missing.
|
|
7
7
|
*/
|
|
8
|
+
import type { ResponsesSpec } from '../contracts/responses.js';
|
|
9
|
+
import type { RouteOptions } from '../contracts/route-options.js';
|
|
10
|
+
import type { SecurityRequirementObject, SecuritySchemeObject } from '../contracts/openapi-v3.js';
|
|
8
11
|
export declare const SYMBOL_METADATA: symbol;
|
|
9
12
|
/**
|
|
10
13
|
* All adorn-api metadata keys live here.
|
|
@@ -20,20 +23,118 @@ export declare const META: {
|
|
|
20
23
|
readonly bindings: symbol;
|
|
21
24
|
};
|
|
22
25
|
/**
|
|
23
|
-
*
|
|
26
|
+
* Metadata shape for controller-level configuration.
|
|
27
|
+
*
|
|
28
|
+
* Stores base path information for controllers that can be used
|
|
29
|
+
* to prefix all routes defined within the controller.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* // Controller with base path metadata
|
|
34
|
+
* const controllerMeta: ControllerMeta = {
|
|
35
|
+
* basePath: '/api/v1'
|
|
36
|
+
* };
|
|
37
|
+
*
|
|
38
|
+
* // This would make all routes in the controller start with /api/v1
|
|
39
|
+
* ```
|
|
24
40
|
*/
|
|
25
41
|
export type ControllerMeta = {
|
|
42
|
+
/** Base path for all routes in this controller */
|
|
26
43
|
basePath: string;
|
|
27
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Metadata shape for individual route definitions.
|
|
47
|
+
*
|
|
48
|
+
* Stores information about HTTP methods, paths, route names,
|
|
49
|
+
* and additional route-specific configuration.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Route metadata for a GET endpoint
|
|
54
|
+
* const routeMeta: RouteMeta = {
|
|
55
|
+
* method: 'GET',
|
|
56
|
+
* path: '/users/:id',
|
|
57
|
+
* name: 'getUser',
|
|
58
|
+
* options: {
|
|
59
|
+
* summary: 'Get user by ID',
|
|
60
|
+
* responses: {
|
|
61
|
+
* 200: { description: 'User found' },
|
|
62
|
+
* 404: { description: 'User not found' }
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* };
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
28
68
|
export type RouteMeta = {
|
|
69
|
+
/** HTTP method for this route */
|
|
29
70
|
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
71
|
+
/** Route path template */
|
|
30
72
|
path: string;
|
|
73
|
+
/** Method name on the controller */
|
|
31
74
|
name: string;
|
|
75
|
+
/** Additional route configuration options */
|
|
32
76
|
options?: unknown;
|
|
33
77
|
};
|
|
78
|
+
/**
|
|
79
|
+
* Metadata shape for database transaction configuration.
|
|
80
|
+
*
|
|
81
|
+
* Controls transactional behavior for database operations
|
|
82
|
+
* associated with routes or controllers.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* // Automatic transaction (default)
|
|
87
|
+
* const autoTransaction: DbMeta = {
|
|
88
|
+
* transactional: 'auto'
|
|
89
|
+
* };
|
|
90
|
+
*
|
|
91
|
+
* // Required transaction
|
|
92
|
+
* const requiredTransaction: DbMeta = {
|
|
93
|
+
* transactional: 'required'
|
|
94
|
+
* };
|
|
95
|
+
*
|
|
96
|
+
* // No transaction
|
|
97
|
+
* const noTransaction: DbMeta = {
|
|
98
|
+
* transactional: 'none'
|
|
99
|
+
* };
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
34
102
|
export type DbMeta = {
|
|
103
|
+
/**
|
|
104
|
+
* Transactional behavior:
|
|
105
|
+
* - 'auto': Automatic transaction management (default)
|
|
106
|
+
* - 'required': Requires existing transaction
|
|
107
|
+
* - 'none': No transaction
|
|
108
|
+
*/
|
|
35
109
|
transactional: 'auto' | 'required' | 'none';
|
|
36
110
|
};
|
|
111
|
+
/**
|
|
112
|
+
* Binding hint for parameter binding configuration.
|
|
113
|
+
*
|
|
114
|
+
* Specifies how parameters should be bound from different
|
|
115
|
+
* sources (path, query, body) with optional type hints.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* // Path parameter with type hint
|
|
120
|
+
* const pathHint: BindingHint = {
|
|
121
|
+
* kind: 'path',
|
|
122
|
+
* name: 'id',
|
|
123
|
+
* type: 'uuid'
|
|
124
|
+
* };
|
|
125
|
+
*
|
|
126
|
+
* // Query parameter
|
|
127
|
+
* const queryHint: BindingHint = {
|
|
128
|
+
* kind: 'query',
|
|
129
|
+
* name: 'limit'
|
|
130
|
+
* };
|
|
131
|
+
*
|
|
132
|
+
* // Body binding
|
|
133
|
+
* const bodyHint: BindingHint = {
|
|
134
|
+
* kind: 'body'
|
|
135
|
+
* };
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
37
138
|
export type BindingHint = {
|
|
38
139
|
kind: 'path';
|
|
39
140
|
name: string;
|
|
@@ -44,9 +145,110 @@ export type BindingHint = {
|
|
|
44
145
|
} | {
|
|
45
146
|
kind: 'body';
|
|
46
147
|
};
|
|
148
|
+
/**
|
|
149
|
+
* Metadata shape for parameter binding configuration.
|
|
150
|
+
*
|
|
151
|
+
* Stores binding hints organized by method name for
|
|
152
|
+
* fine-grained control over parameter binding behavior.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* // Binding metadata for a controller
|
|
157
|
+
* const bindingsMeta: BindingsMeta = {
|
|
158
|
+
* byMethod: {
|
|
159
|
+
* 'getUser': {
|
|
160
|
+
* path: {
|
|
161
|
+
* id: 'uuid', // Bind id parameter as UUID
|
|
162
|
+
* status: 'string' // Bind status parameter as string
|
|
163
|
+
* }
|
|
164
|
+
* },
|
|
165
|
+
* 'createUser': {
|
|
166
|
+
* path: {
|
|
167
|
+
* teamId: 'int' // Bind teamId parameter as integer
|
|
168
|
+
* }
|
|
169
|
+
* }
|
|
170
|
+
* }
|
|
171
|
+
* };
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
47
174
|
export type BindingsMeta = {
|
|
175
|
+
/**
|
|
176
|
+
* Binding configuration by method name
|
|
177
|
+
* @template MethodName - Name of the controller method
|
|
178
|
+
*/
|
|
48
179
|
byMethod?: Record<string, {
|
|
180
|
+
/** Type hints for path parameters */
|
|
49
181
|
path?: Record<string, 'string' | 'int' | 'number' | 'boolean' | 'uuid'>;
|
|
50
182
|
}>;
|
|
51
183
|
};
|
|
184
|
+
/**
|
|
185
|
+
* Metadata shape for OpenAPI documentation configuration.
|
|
186
|
+
*
|
|
187
|
+
* Stores documentation-related information including tags,
|
|
188
|
+
* security requirements, responses, and method-specific docs.
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* // Comprehensive documentation metadata
|
|
193
|
+
* const docsMeta: DocsMeta = {
|
|
194
|
+
* tags: ['Users', 'API'],
|
|
195
|
+
* deprecated: false,
|
|
196
|
+
* operationId: 'getUserById',
|
|
197
|
+
* security: [{ bearerAuth: [] }],
|
|
198
|
+
* responses: {
|
|
199
|
+
* 200: { description: 'User found' },
|
|
200
|
+
* 404: { description: 'User not found' }
|
|
201
|
+
* },
|
|
202
|
+
* byMethod: {
|
|
203
|
+
* 'getUser': {
|
|
204
|
+
* summary: 'Get user by ID',
|
|
205
|
+
* description: 'Retrieves a user by their unique identifier'
|
|
206
|
+
* }
|
|
207
|
+
* }
|
|
208
|
+
* };
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
export type DocsMeta = {
|
|
212
|
+
/** Tags for API documentation grouping */
|
|
213
|
+
tags?: string[];
|
|
214
|
+
/** Whether this endpoint is deprecated */
|
|
215
|
+
deprecated?: boolean;
|
|
216
|
+
/** Unique operation identifier */
|
|
217
|
+
operationId?: string;
|
|
218
|
+
/** Security requirements for this endpoint */
|
|
219
|
+
security?: SecurityRequirementObject[];
|
|
220
|
+
/** Response specifications */
|
|
221
|
+
responses?: ResponsesSpec;
|
|
222
|
+
/** Method-specific documentation overrides */
|
|
223
|
+
byMethod?: Record<string, Partial<RouteOptions<string>>>;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Metadata shape for security scheme definitions.
|
|
227
|
+
*
|
|
228
|
+
* Stores security schemes that can be referenced by
|
|
229
|
+
* routes and controllers for authentication/authorization.
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* // Security metadata with multiple schemes
|
|
234
|
+
* const securityMeta: SecurityMeta = {
|
|
235
|
+
* schemes: {
|
|
236
|
+
* bearerAuth: {
|
|
237
|
+
* type: 'http',
|
|
238
|
+
* scheme: 'bearer',
|
|
239
|
+
* bearerFormat: 'JWT'
|
|
240
|
+
* },
|
|
241
|
+
* apiKey: {
|
|
242
|
+
* type: 'apiKey',
|
|
243
|
+
* name: 'X-API-Key',
|
|
244
|
+
* in: 'header'
|
|
245
|
+
* }
|
|
246
|
+
* }
|
|
247
|
+
* };
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
export type SecurityMeta = {
|
|
251
|
+
/** Security schemes available for this API */
|
|
252
|
+
schemes?: Record<string, SecuritySchemeObject>;
|
|
253
|
+
};
|
|
52
254
|
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/metadata/keys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/metadata/keys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElG,eAAO,MAAM,eAAe,EAAE,MAS1B,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;;CAQP,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,iCAAiC;IACjC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CACf,MAAM,EACN;QACE,qCAAqC;QACrC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;KACzE,CACF,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACvC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAChD,CAAC"}
|
package/dist/metadata/keys.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stage-3 decorators store metadata in a "metadata bag" accessible at runtime via:
|
|
3
|
-
* MyClass[Symbol.metadata]
|
|
4
|
-
*
|
|
5
|
-
* Some runtimes may not have Symbol.metadata yet; TypeScript's emit still uses it,
|
|
6
|
-
* so we polyfill Symbol.metadata to a stable symbol if missing.
|
|
7
|
-
*/
|
|
8
1
|
export const SYMBOL_METADATA = (() => {
|
|
9
|
-
const
|
|
2
|
+
const symbolWithMeta = Symbol;
|
|
3
|
+
const existing = symbolWithMeta.metadata;
|
|
10
4
|
if (typeof existing === 'symbol')
|
|
11
5
|
return existing;
|
|
12
6
|
const created = Symbol('Symbol.metadata');
|
|
13
|
-
|
|
7
|
+
symbolWithMeta.metadata = created;
|
|
14
8
|
return created;
|
|
15
9
|
})();
|
|
16
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/metadata/keys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/metadata/keys.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,eAAe,GAAW,CAAC,GAAG,EAAE;IAE3C,MAAM,cAAc,GAAG,MAAwB,CAAC;IAChD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAElD,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC1C,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,EAAE,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;CAClC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/metadata/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/metadata/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAwBhE"}
|
package/dist/metadata/merge.js
CHANGED
|
@@ -14,7 +14,10 @@ export function mergeBags(base, child) {
|
|
|
14
14
|
continue;
|
|
15
15
|
}
|
|
16
16
|
if (isPlainObject(baseValue) && isPlainObject(childValue)) {
|
|
17
|
-
out[key] = {
|
|
17
|
+
out[key] = {
|
|
18
|
+
...baseValue,
|
|
19
|
+
...childValue,
|
|
20
|
+
};
|
|
18
21
|
continue;
|
|
19
22
|
}
|
|
20
23
|
out[key] = childValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/metadata/merge.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,KAAc;IACrD,MAAM,GAAG,GAAY,EAAE,GAAG,IAAI,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,GAAG,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/metadata/merge.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,KAAc;IACrD,MAAM,GAAG,GAAY,EAAE,GAAG,IAAI,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,GAAG,CAAC,GAAG;gBACT,GAAI,SAA0C;gBAC9C,GAAI,UAA2C;aAChD,CAAC;YACF,SAAS;QACX,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IACxB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -6,11 +6,11 @@ export type Schema<T> = {
|
|
|
6
6
|
readonly name?: string;
|
|
7
7
|
parse(value: unknown, path?: Array<string | number>): ValidationResult<T>;
|
|
8
8
|
};
|
|
9
|
-
export type Infer<S extends Schema<
|
|
9
|
+
export type Infer<S extends Schema<unknown>> = S extends Schema<infer T> ? T : never;
|
|
10
10
|
export declare function optional<T>(inner: Schema<T>): Schema<T | undefined>;
|
|
11
11
|
declare function literalBase<T extends string | number | boolean | null>(lit: T): Schema<T>;
|
|
12
12
|
declare function enumBase<T extends readonly string[]>(values: T): Schema<T[number]>;
|
|
13
|
-
type ObjectShape = Record<string, Schema<
|
|
13
|
+
type ObjectShape = Record<string, Schema<unknown>>;
|
|
14
14
|
type StringBuilder = Schema<string> & {
|
|
15
15
|
min(n: number): StringBuilder;
|
|
16
16
|
max(n: number): StringBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/validation/native/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC3E,CAAC;AAEF,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/validation/native/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Validator, ValidationResult } from '../../contracts/validator.js';
|
|
2
2
|
import type { Schema } from './schema.js';
|
|
3
|
-
type SchemaMap = Record<string, Schema<
|
|
3
|
+
type SchemaMap = Record<string, Schema<unknown>>;
|
|
4
4
|
export declare class NativeValidator implements Validator {
|
|
5
5
|
private readonly bodies;
|
|
6
6
|
private readonly queries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/validation/native/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/validation/native/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjD,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;gBAEvB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,CAAA;KAAE;IAM9E,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAM/E,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAMjF,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAMnF,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;IAM3D,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;IAM7D,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;CAKhE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adorn-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Stage-3 decorator router + OpenAPI, with optional MetalORM integration",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
"@types/express": "^5.0.6",
|
|
36
36
|
"@types/node": "^25.0.3",
|
|
37
37
|
"@types/supertest": "^6.0.3",
|
|
38
|
+
"@typescript-eslint/eslint-plugin": "^8.50.1",
|
|
39
|
+
"@typescript-eslint/parser": "^8.50.1",
|
|
40
|
+
"eslint": "^9.39.2",
|
|
38
41
|
"sqlite3": "^5.1.7",
|
|
39
42
|
"supertest": "^7.1.4",
|
|
40
43
|
"typescript": "^5.9.3",
|
|
@@ -43,7 +46,8 @@
|
|
|
43
46
|
"scripts": {
|
|
44
47
|
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
45
48
|
"build": "npm run clean && tsc -p tsconfig.build.json",
|
|
46
|
-
"check": "npm run typecheck && npm run check:decorated-returns && npm run test",
|
|
49
|
+
"check": "npm run lint && npm run typecheck && npm run check:decorated-returns && npm run test",
|
|
50
|
+
"lint": "eslint src test --ext .ts",
|
|
47
51
|
"check:decorated-returns": "node scripts/check-decorated-returns.js",
|
|
48
52
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
49
53
|
"test": "vitest run",
|