expediate 1.0.4 → 1.0.5
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 +16 -16
- package/README.md +417 -30
- package/dist/apis.d.ts +138 -21
- package/dist/apis.d.ts.map +1 -1
- package/dist/apis.js +172 -79
- package/dist/apis.js.map +1 -1
- package/dist/cjs/apis.js +327 -0
- package/dist/cjs/git.js +293 -0
- package/dist/cjs/index.js +2583 -0
- package/dist/cjs/jwt-auth.js +532 -0
- package/dist/cjs/middleware.js +511 -0
- package/dist/cjs/mimetypes.json +1 -0
- package/dist/cjs/misc.js +787 -0
- package/dist/cjs/openapi.js +485 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/router.js +898 -0
- package/dist/cjs/static.js +669 -0
- package/dist/git.d.ts +71 -8
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +127 -72
- package/dist/git.js.map +1 -1
- package/dist/index.d.ts +17 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -24
- package/dist/index.js.map +1 -1
- package/dist/jwt-auth.d.ts +147 -57
- package/dist/jwt-auth.d.ts.map +1 -1
- package/dist/jwt-auth.js +445 -205
- package/dist/jwt-auth.js.map +1 -1
- package/dist/middleware.d.ts +476 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +647 -0
- package/dist/middleware.js.map +1 -0
- package/dist/mimetypes.json +1 -1
- package/dist/misc.d.ts +112 -5
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +235 -102
- package/dist/misc.js.map +1 -1
- package/dist/openapi.d.ts +290 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +481 -0
- package/dist/openapi.js.map +1 -0
- package/dist/router.d.ts +405 -46
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +658 -153
- package/dist/router.js.map +1 -1
- package/dist/static.d.ts +1 -1
- package/dist/static.d.ts.map +1 -1
- package/dist/static.js +88 -84
- package/dist/static.js.map +1 -1
- package/package.json +21 -4
- package/.npmignore +0 -16
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import type { ServiceMethod, ServiceInstance, ServiceDefinition } from './apis.js';
|
|
2
|
+
/**
|
|
3
|
+
* A JSON Schema object (subset of draft-07 / OpenAPI 3.1 Schema Object).
|
|
4
|
+
*
|
|
5
|
+
* Only the properties most commonly used to describe API request/response
|
|
6
|
+
* bodies are listed; the index signature allows any additional keyword.
|
|
7
|
+
*/
|
|
8
|
+
export interface JsonSchema {
|
|
9
|
+
type?: 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array' | 'null';
|
|
10
|
+
format?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
example?: unknown;
|
|
13
|
+
enum?: unknown[];
|
|
14
|
+
properties?: Record<string, JsonSchema>;
|
|
15
|
+
required?: string[];
|
|
16
|
+
items?: JsonSchema;
|
|
17
|
+
additionalProperties?: boolean | JsonSchema;
|
|
18
|
+
allOf?: JsonSchema[];
|
|
19
|
+
anyOf?: JsonSchema[];
|
|
20
|
+
oneOf?: JsonSchema[];
|
|
21
|
+
$ref?: string;
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* An OpenAPI 3.1 Parameter Object describing a single parameter (path, query,
|
|
26
|
+
* header, or cookie).
|
|
27
|
+
*/
|
|
28
|
+
export interface ParameterObject {
|
|
29
|
+
name: string;
|
|
30
|
+
in: 'path' | 'query' | 'header' | 'cookie';
|
|
31
|
+
required?: boolean;
|
|
32
|
+
description?: string;
|
|
33
|
+
schema?: JsonSchema;
|
|
34
|
+
example?: unknown;
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* An OpenAPI 3.1 Request Body Object.
|
|
39
|
+
*/
|
|
40
|
+
export interface RequestBodyObject {
|
|
41
|
+
description?: string;
|
|
42
|
+
required?: boolean;
|
|
43
|
+
content: Record<string, {
|
|
44
|
+
schema?: JsonSchema;
|
|
45
|
+
example?: unknown;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* An OpenAPI 3.1 Response Object (value in the `responses` map).
|
|
50
|
+
*/
|
|
51
|
+
export interface ResponseObject {
|
|
52
|
+
description: string;
|
|
53
|
+
content?: Record<string, {
|
|
54
|
+
schema?: JsonSchema;
|
|
55
|
+
example?: unknown;
|
|
56
|
+
}>;
|
|
57
|
+
headers?: Record<string, {
|
|
58
|
+
description?: string;
|
|
59
|
+
schema?: JsonSchema;
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Per-operation metadata that can be attached to a service method handler
|
|
64
|
+
* via {@link describe}.
|
|
65
|
+
*
|
|
66
|
+
* All fields are optional — any subset can be provided. Unspecified fields are
|
|
67
|
+
* inferred from the route definition (path params auto-detected, default
|
|
68
|
+
* responses assigned by HTTP verb).
|
|
69
|
+
*/
|
|
70
|
+
export interface OperationMeta {
|
|
71
|
+
/** Short summary of what the operation does (shown in UI tooling). */
|
|
72
|
+
summary?: string;
|
|
73
|
+
/** Longer description (Markdown supported). */
|
|
74
|
+
description?: string;
|
|
75
|
+
/** Override the auto-generated `operationId`. */
|
|
76
|
+
operationId?: string;
|
|
77
|
+
/** Tag group names (used for UI grouping). */
|
|
78
|
+
tags?: string[];
|
|
79
|
+
/**
|
|
80
|
+
* Parameter overrides / additions.
|
|
81
|
+
*
|
|
82
|
+
* Parameters provided here are merged with the auto-detected path
|
|
83
|
+
* parameters by `name`. Query, header, and cookie parameters must be
|
|
84
|
+
* provided here — they are never auto-inferred.
|
|
85
|
+
*/
|
|
86
|
+
parameters?: ParameterObject[];
|
|
87
|
+
/** Request body descriptor. Provide when the method consumes a body. */
|
|
88
|
+
requestBody?: RequestBodyObject;
|
|
89
|
+
/**
|
|
90
|
+
* Response descriptors keyed by HTTP status code string.
|
|
91
|
+
*
|
|
92
|
+
* When provided, these replace the default response set entirely. The
|
|
93
|
+
* framework always injects a `'500'` reference to the built-in `ApiError`
|
|
94
|
+
* component unless you explicitly supply a `'500'` key here.
|
|
95
|
+
*/
|
|
96
|
+
responses?: Record<string, ResponseObject>;
|
|
97
|
+
/** Mark as deprecated in the generated spec. */
|
|
98
|
+
deprecated?: boolean;
|
|
99
|
+
/** Additional vendor extensions (keys should start with `x-`). */
|
|
100
|
+
[key: string]: unknown;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Service-level OpenAPI metadata declared in the `openapi` field of a
|
|
104
|
+
* {@link ServiceDefinition}.
|
|
105
|
+
*
|
|
106
|
+
* These fields contribute to the top-level `info`, `tags`, `servers`, and
|
|
107
|
+
* `components` sections of the generated document, as well as a default tag
|
|
108
|
+
* that is applied to every operation produced from the service definition.
|
|
109
|
+
*/
|
|
110
|
+
export interface OpenApiServiceMeta {
|
|
111
|
+
/** Default tag applied to all operations from this service. */
|
|
112
|
+
tag?: string;
|
|
113
|
+
/** Description shown alongside the tag in UI tooling. */
|
|
114
|
+
tagDescription?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Reusable JSON Schema definitions merged into `components.schemas`.
|
|
117
|
+
* Use `{ $ref: '#/components/schemas/MyModel' }` in operation metadata to
|
|
118
|
+
* reference them.
|
|
119
|
+
*/
|
|
120
|
+
schemas?: Record<string, JsonSchema>;
|
|
121
|
+
/**
|
|
122
|
+
* Reusable response definitions merged into `components.responses`.
|
|
123
|
+
* Use `{ $ref: '#/components/responses/NotFound' }` in `responses` to
|
|
124
|
+
* reference them.
|
|
125
|
+
*/
|
|
126
|
+
responses?: Record<string, ResponseObject>;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Top-level options passed to {@link openApiSpec}.
|
|
130
|
+
*
|
|
131
|
+
* Controls the `info` block and optionally overrides default servers or
|
|
132
|
+
* merges additional components into the generated document.
|
|
133
|
+
*/
|
|
134
|
+
export interface SpecOptions {
|
|
135
|
+
/** API title (required by the OpenAPI spec). */
|
|
136
|
+
title: string;
|
|
137
|
+
/** Semver version string (e.g. `'1.0.0'`). */
|
|
138
|
+
version: string;
|
|
139
|
+
/** Optional API description (Markdown supported). */
|
|
140
|
+
description?: string;
|
|
141
|
+
/**
|
|
142
|
+
* Base path prefix prepended to every route when converting service
|
|
143
|
+
* patterns to OpenAPI paths (e.g. `'/api/v1'`).
|
|
144
|
+
*/
|
|
145
|
+
basePath?: string;
|
|
146
|
+
/** Server list (defaults to `[{ url: '/' }]` when absent). */
|
|
147
|
+
servers?: Array<{
|
|
148
|
+
url: string;
|
|
149
|
+
description?: string;
|
|
150
|
+
}>;
|
|
151
|
+
/**
|
|
152
|
+
* Additional schemas merged into `components.schemas` (takes precedence
|
|
153
|
+
* over service-level `openapi.schemas` of the same name).
|
|
154
|
+
*/
|
|
155
|
+
schemas?: Record<string, JsonSchema>;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* A minimal OpenAPI 3.1.0 document as produced by {@link openApiSpec}.
|
|
159
|
+
*
|
|
160
|
+
* Only the sections generated by the framework are typed here; extra sections
|
|
161
|
+
* (e.g. `security`, `externalDocs`) can be added by spreading the result.
|
|
162
|
+
*/
|
|
163
|
+
export interface OpenApiDocument {
|
|
164
|
+
openapi: '3.1.0';
|
|
165
|
+
info: {
|
|
166
|
+
title: string;
|
|
167
|
+
version: string;
|
|
168
|
+
description?: string;
|
|
169
|
+
};
|
|
170
|
+
servers?: Array<{
|
|
171
|
+
url: string;
|
|
172
|
+
description?: string;
|
|
173
|
+
}>;
|
|
174
|
+
tags?: Array<{
|
|
175
|
+
name: string;
|
|
176
|
+
description?: string;
|
|
177
|
+
}>;
|
|
178
|
+
paths: Record<string, Record<string, unknown>>;
|
|
179
|
+
components: {
|
|
180
|
+
schemas: Record<string, JsonSchema>;
|
|
181
|
+
responses: Record<string, ResponseObject>;
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* The output format for a serialised OpenAPI document.
|
|
186
|
+
*
|
|
187
|
+
* - `'json'` — compact, widely supported, default.
|
|
188
|
+
* - `'yaml'` — human-readable block YAML 1.2 (no external dependencies).
|
|
189
|
+
*/
|
|
190
|
+
export type SpecFormat = 'json' | 'yaml';
|
|
191
|
+
/**
|
|
192
|
+
* Serialise an {@link OpenApiDocument} to either JSON or YAML.
|
|
193
|
+
*
|
|
194
|
+
* - `'json'` — pretty-printed with 2-space indentation.
|
|
195
|
+
* - `'yaml'` — block-style YAML 1.2, produced by a zero-dependency serialiser
|
|
196
|
+
* built into expediate.
|
|
197
|
+
*
|
|
198
|
+
* @param doc - The document to serialise.
|
|
199
|
+
* @param format - Output format (`'json'` by default).
|
|
200
|
+
*/
|
|
201
|
+
export declare function serializeSpec(doc: OpenApiDocument, format?: SpecFormat): string;
|
|
202
|
+
/**
|
|
203
|
+
* Unique symbol used as a non-enumerable property key on handler functions
|
|
204
|
+
* that have been annotated via {@link describe}.
|
|
205
|
+
*
|
|
206
|
+
* Using a `unique symbol` (rather than a plain string key) prevents accidental
|
|
207
|
+
* collisions with user-defined properties on handler objects.
|
|
208
|
+
*/
|
|
209
|
+
export declare const DESCRIBE_META: unique symbol;
|
|
210
|
+
/**
|
|
211
|
+
* Annotate a service method handler with OpenAPI operation metadata.
|
|
212
|
+
*
|
|
213
|
+
* The metadata is attached to the returned function via a non-enumerable
|
|
214
|
+
* property keyed by {@link DESCRIBE_META}. The returned function is otherwise
|
|
215
|
+
* identical to `handler` — it can be used directly in a `ServiceDefinition`
|
|
216
|
+
* route map.
|
|
217
|
+
*
|
|
218
|
+
* ```ts
|
|
219
|
+
* GET: {
|
|
220
|
+
* '/items/:id': describe(
|
|
221
|
+
* function (this: TodoService, p) {
|
|
222
|
+
* return this.findOrFail(p.id);
|
|
223
|
+
* },
|
|
224
|
+
* {
|
|
225
|
+
* summary: 'Get a single item by ID',
|
|
226
|
+
* tags: ['items'],
|
|
227
|
+
* parameters: [{ name: 'id', in: 'path', required: true, schema: { type: 'string' } }],
|
|
228
|
+
* responses: {
|
|
229
|
+
* '200': { description: 'The item', content: { 'application/json': { schema: { $ref: '#/components/schemas/Item' } } } },
|
|
230
|
+
* '404': { description: 'Not found' },
|
|
231
|
+
* },
|
|
232
|
+
* },
|
|
233
|
+
* ),
|
|
234
|
+
* }
|
|
235
|
+
* ```
|
|
236
|
+
*
|
|
237
|
+
* @param handler - The service method to annotate.
|
|
238
|
+
* @param meta - OpenAPI operation metadata.
|
|
239
|
+
* @returns The same handler function, with metadata attached.
|
|
240
|
+
*/
|
|
241
|
+
export declare function describe<TInstance extends ServiceInstance = ServiceInstance>(handler: ServiceMethod<TInstance>, meta: OperationMeta): ServiceMethod<TInstance>;
|
|
242
|
+
/**
|
|
243
|
+
* Generate an OpenAPI 3.1.0 document from a {@link ServiceDefinition}.
|
|
244
|
+
*
|
|
245
|
+
* Route handlers that have been annotated with {@link describe} contribute
|
|
246
|
+
* rich operation metadata (summary, description, parameters, requestBody,
|
|
247
|
+
* responses). Unannotated handlers receive sensible defaults automatically.
|
|
248
|
+
*
|
|
249
|
+
* The generated document always includes:
|
|
250
|
+
* - An `ApiError` schema (shape: `{ status?, message?, data? }`) in
|
|
251
|
+
* `components.schemas`.
|
|
252
|
+
* - An `ApiError` response (`500` reference) in `components.responses`.
|
|
253
|
+
*
|
|
254
|
+
* Caller-supplied `opts.schemas` and service-level `openapi.schemas` are
|
|
255
|
+
* deep-merged on top of the built-in components (caller schemas take
|
|
256
|
+
* precedence over service schemas, which take precedence over built-ins).
|
|
257
|
+
*
|
|
258
|
+
* @param service - The service definition to document.
|
|
259
|
+
* @param opts - Top-level spec options (title, version, basePath, …).
|
|
260
|
+
* @returns A fully-formed OpenAPI 3.1.0 document object.
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```ts
|
|
264
|
+
* const spec = openApiSpec(todoDefinition, {
|
|
265
|
+
* title: 'Todo API',
|
|
266
|
+
* version: '1.0.0',
|
|
267
|
+
* basePath: '/api',
|
|
268
|
+
* });
|
|
269
|
+
*
|
|
270
|
+
* app.get('/openapi.json', (_req, res) => {
|
|
271
|
+
* res.json(spec);
|
|
272
|
+
* });
|
|
273
|
+
* ```
|
|
274
|
+
*/
|
|
275
|
+
export declare function openApiSpec<TInstance extends ServiceInstance = ServiceInstance>(service: ServiceDefinition<TInstance>, opts: SpecOptions): OpenApiDocument;
|
|
276
|
+
declare module './apis.js' {
|
|
277
|
+
interface ServiceDefinition<TInstance extends ServiceInstance> {
|
|
278
|
+
/**
|
|
279
|
+
* Service-level OpenAPI metadata.
|
|
280
|
+
*
|
|
281
|
+
* When provided, contributes a default tag (applied to all operations),
|
|
282
|
+
* reusable schema definitions, and reusable response definitions to the
|
|
283
|
+
* generated spec document.
|
|
284
|
+
*
|
|
285
|
+
* @see {@link OpenApiServiceMeta}
|
|
286
|
+
*/
|
|
287
|
+
openapi?: OpenApiServiceMeta;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|