@kamaalio/hono-standard-openapi 0.0.7 → 0.0.9
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 +0 -3
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +27 -12
- package/dist/app.js.map +1 -1
- package/dist/generator.d.ts +2 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +56 -42
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +2 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -8
- package/dist/index.js.map +1 -1
- package/dist/json-schema.d.ts +4 -3
- package/dist/json-schema.d.ts.map +1 -1
- package/dist/json-schema.js +39 -26
- package/dist/json-schema.js.map +1 -1
- package/dist/json-value.d.ts +10 -0
- package/dist/json-value.d.ts.map +1 -0
- package/dist/json-value.js +8 -0
- package/dist/json-value.js.map +1 -0
- package/dist/registry.d.ts +6 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +4 -2
- package/dist/registry.js.map +1 -1
- package/dist/standard-schema.d.ts +6 -4
- package/dist/standard-schema.d.ts.map +1 -1
- package/dist/standard-schema.js +4 -2
- package/dist/standard-schema.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -125,9 +125,6 @@ const app = new StandardOpenAPIHono({
|
|
|
125
125
|
|
|
126
126
|
Document that `400` response in each route when it is part of your API contract.
|
|
127
127
|
|
|
128
|
-
The package re-exports `sValidator`, `Hook`, and `flattenErrors` from
|
|
129
|
-
`@hono/standard-validator` when you need the same validation behavior outside a documented route.
|
|
130
|
-
|
|
131
128
|
## Read the OpenAPI document
|
|
132
129
|
|
|
133
130
|
Add `app.doc()` after registering routes. It serves the generated OpenAPI 3.1 JSON at the path you
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,KAAK,GAAG,EAAE,IAAI,EAA0B,KAAK,MAAM,EAA0B,MAAM,MAAM,CAAC;AAGnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAsB,iBAAiB,EAAqB,MAAM,YAAY,CAAC;AAEtF,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS,GAAG;IACvD,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,KAAK,QAAQ,CAAC,CAAC,SAAS,GAAG,IAAI,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAErG,0FAA0F;AAC1F,KAAK,yBAAyB,CAAC,CAAC,SAAS,GAAG,IAAI;IAC9C,cAAc,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACnG,CAAC;AAMF;;;;;GAKG;AACH,qBAAa,mBAAmB,CAC9B,CAAC,SAAS,GAAG,GAAG,GAAG,EACnB,CAAC,SAAS,MAAM,GAAG,EAAE,EACrB,QAAQ,SAAS,MAAM,GAAG,GAAG,CAC7B,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;;IAC5B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAGnE,YAAY,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAI7B;IAED,2FAA2F;IAC3F,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -25,18 +25,21 @@ export class StandardOpenAPIHono extends Hono {
|
|
|
25
25
|
/** Registers a route: mounts it, validates its request, and records it in the document. */
|
|
26
26
|
openapi(route, handler, hook) {
|
|
27
27
|
const { hide, middleware, ...documented } = route;
|
|
28
|
-
if (hide !== true)
|
|
28
|
+
if (hide !== true) {
|
|
29
29
|
this.openAPIRegistry.registerPath(documented);
|
|
30
|
+
}
|
|
30
31
|
const effectiveHook = (result, c) => {
|
|
31
32
|
const resolved = hook ?? this.getDefaultHook();
|
|
32
33
|
return resolved?.(result, c);
|
|
33
34
|
};
|
|
34
35
|
const methods = [route.method];
|
|
35
36
|
const paths = [toRoutingPath(route.path)];
|
|
36
|
-
for (const middlewareHandler of normalizeMiddleware(middleware))
|
|
37
|
+
for (const middlewareHandler of normalizeMiddleware(middleware)) {
|
|
37
38
|
this.on(methods, paths, middlewareHandler);
|
|
38
|
-
|
|
39
|
+
}
|
|
40
|
+
for (const validator of this.#buildValidators(route.request, effectiveHook)) {
|
|
39
41
|
this.on(methods, paths, validator);
|
|
42
|
+
}
|
|
40
43
|
this.on(methods, paths, handler);
|
|
41
44
|
return this;
|
|
42
45
|
}
|
|
@@ -61,26 +64,31 @@ export class StandardOpenAPIHono extends Hono {
|
|
|
61
64
|
}
|
|
62
65
|
/** The nearest hook, preferring this app's own and falling back to the app it is mounted under. */
|
|
63
66
|
getDefaultHook(visited = new Set()) {
|
|
64
|
-
if (this.defaultHook != null)
|
|
67
|
+
if (this.defaultHook != null) {
|
|
65
68
|
return this.defaultHook;
|
|
66
|
-
|
|
69
|
+
}
|
|
70
|
+
if (visited.has(this)) {
|
|
67
71
|
return undefined;
|
|
72
|
+
}
|
|
68
73
|
visited.add(this);
|
|
69
74
|
return this.#parentApp?.getDefaultHook(visited);
|
|
70
75
|
}
|
|
71
76
|
#buildValidators(request, hook) {
|
|
72
|
-
if (request == null)
|
|
77
|
+
if (request == null) {
|
|
73
78
|
return [];
|
|
79
|
+
}
|
|
74
80
|
const validators = [];
|
|
75
81
|
for (const { key, target } of VALIDATED_PARTS) {
|
|
76
82
|
const schema = request[key];
|
|
77
|
-
if (schema == null)
|
|
83
|
+
if (schema == null) {
|
|
78
84
|
continue;
|
|
85
|
+
}
|
|
79
86
|
validators.push(sValidator(target, schema, hook));
|
|
80
87
|
}
|
|
81
88
|
const body = request.body;
|
|
82
|
-
if (body != null)
|
|
89
|
+
if (body != null) {
|
|
83
90
|
validators.push(...buildBodyValidators(body.content, body.required === true, hook));
|
|
91
|
+
}
|
|
84
92
|
return validators;
|
|
85
93
|
}
|
|
86
94
|
}
|
|
@@ -94,15 +102,17 @@ function buildBodyValidators(content, required, hook) {
|
|
|
94
102
|
const validators = [];
|
|
95
103
|
for (const [mediaType, media] of Object.entries(content)) {
|
|
96
104
|
const schema = media.schema;
|
|
97
|
-
if (!isStandardJSONSchema(schema))
|
|
105
|
+
if (!isStandardJSONSchema(schema)) {
|
|
98
106
|
continue;
|
|
107
|
+
}
|
|
99
108
|
const target = JSON_CONTENT_TYPE.test(mediaType)
|
|
100
109
|
? 'json'
|
|
101
110
|
: FORM_CONTENT_TYPES.some(formType => mediaType.startsWith(formType))
|
|
102
111
|
? 'form'
|
|
103
112
|
: undefined;
|
|
104
|
-
if (target == null)
|
|
113
|
+
if (target == null) {
|
|
105
114
|
continue;
|
|
115
|
+
}
|
|
106
116
|
const validator = sValidator(target, schema, hook);
|
|
107
117
|
validators.push(required ? validator : skipWhenBodyAbsent(validator, mediaType, target));
|
|
108
118
|
}
|
|
@@ -125,11 +135,16 @@ function skipWhenBodyAbsent(validator, mediaType, target) {
|
|
|
125
135
|
return undefined;
|
|
126
136
|
};
|
|
127
137
|
}
|
|
138
|
+
function isMiddlewareHandler(value) {
|
|
139
|
+
return !Array.isArray(value);
|
|
140
|
+
}
|
|
128
141
|
function normalizeMiddleware(middleware) {
|
|
129
|
-
if (middleware == null)
|
|
142
|
+
if (middleware == null) {
|
|
130
143
|
return [];
|
|
131
|
-
|
|
144
|
+
}
|
|
145
|
+
if (isMiddlewareHandler(middleware)) {
|
|
132
146
|
return [middleware];
|
|
147
|
+
}
|
|
133
148
|
return [...middleware];
|
|
134
149
|
}
|
|
135
150
|
function toRoutingPath(path) {
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAY,IAAI,EAA+D,MAAM,MAAM,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAA8C,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAsB,iBAAiB,EAAqB,MAAM,YAAY,CAAC;AActF,MAAM,iBAAiB,GAAG,kCAAkC,CAAC;AAE7D,MAAM,kBAAkB,GAAG,CAAC,qBAAqB,EAAE,mCAAmC,CAAC,CAAC;AAExF;;;;;GAKG;AACH,MAAM,OAAO,mBAIX,SAAQ,IAAoB;IACnB,eAAe,CAAkB;IACjC,WAAW,CAA+C;IACnE,UAAU,CAA4C;IAEtD,YAAY,IAAkB;QAC5B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,CAAC;IACvC,CAAC;IAED,2FAA2F;IAC3F,OAAO,CAA2B,KAAQ,EAAE,OAA2B,EAAE,IAA+B;QACtG,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;QAClD,IAAI,IAAI,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/generator.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StandardJSONSchemaV1 } from '@standard-schema/spec';
|
|
1
2
|
import type { OpenAPIObject } from 'openapi3-ts/oas31';
|
|
2
3
|
import { type NormalizationOptions } from './json-schema.ts';
|
|
3
4
|
import type { OpenAPIDefinition, OpenAPIRegistry } from './registry.ts';
|
|
@@ -6,7 +7,7 @@ export type OpenAPIVersion = '3.0' | '3.1';
|
|
|
6
7
|
export interface GeneratorOptions {
|
|
7
8
|
readonly version?: OpenAPIVersion;
|
|
8
9
|
/** Options forwarded to every Standard JSON Schema conversion in this document. */
|
|
9
|
-
readonly libraryOptions?:
|
|
10
|
+
readonly libraryOptions?: StandardJSONSchemaV1.Options['libraryOptions'];
|
|
10
11
|
readonly normalization?: NormalizationOptions;
|
|
11
12
|
/**
|
|
12
13
|
* How `components.schemas` is ordered.
|
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAIV,aAAa,EAMd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAA6C,KAAK,oBAAoB,EAAiB,MAAM,kBAAkB,CAAC;AAEvH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAmBxE,6FAA6F;AAC7F,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;CAChF;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AA6CvE,oEAAoE;AACpE,qBAAa,gBAAgB;;IAO3B,YAAY,WAAW,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE,OAAO,GAAE,gBAAqB,EAS7F;IAED,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,aAAa,CAqCtD;CAmJF"}
|
package/dist/generator.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UnsupportedParameterSchemaError, UnsupportedSchemaError } from './errors.js';
|
|
2
2
|
import { ComponentCollector, convertSchema } from './json-schema.js';
|
|
3
|
-
import {
|
|
3
|
+
import { isJsonString, isObjectLike } from './json-value.js';
|
|
4
|
+
import { isStandardJSONSchema, isStandardSchema, } from './standard-schema.js';
|
|
4
5
|
import { PARAMETER_SOURCES, } from './types.js';
|
|
5
6
|
const TARGETS = {
|
|
6
7
|
'3.0': 'openapi-3.0',
|
|
@@ -17,8 +18,9 @@ export class OpenAPIGenerator {
|
|
|
17
18
|
this.#definitions = Array.isArray(definitions) ? definitions : definitions.definitions;
|
|
18
19
|
this.#options = options;
|
|
19
20
|
for (const definition of this.#definitions) {
|
|
20
|
-
if (definition.type === 'schema')
|
|
21
|
+
if (definition.type === 'schema') {
|
|
21
22
|
this.#names.set(definition.schema, definition.name);
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
generateDocument(config) {
|
|
@@ -50,8 +52,9 @@ export class OpenAPIGenerator {
|
|
|
50
52
|
paths,
|
|
51
53
|
components: this.#buildComponents(configuredComponents, rawComponents, paths),
|
|
52
54
|
};
|
|
53
|
-
if (Object.keys(webhooks).length > 0)
|
|
55
|
+
if (Object.keys(webhooks).length > 0) {
|
|
54
56
|
document.webhooks = webhooks;
|
|
57
|
+
}
|
|
55
58
|
return document;
|
|
56
59
|
}
|
|
57
60
|
#buildComponents(configured, raw, paths) {
|
|
@@ -75,10 +78,11 @@ export class OpenAPIGenerator {
|
|
|
75
78
|
}
|
|
76
79
|
#generateOperation(route) {
|
|
77
80
|
const { method, parameters: declaredParameters, path: _path, request, responses, ...operationConfig } = route;
|
|
78
|
-
const parameters =
|
|
81
|
+
const parameters = (declaredParameters ?? []).concat(this.#generateParameters(request));
|
|
79
82
|
const operation = { ...operationConfig, responses: this.#generateResponses(responses) };
|
|
80
|
-
if (parameters.length > 0)
|
|
83
|
+
if (parameters.length > 0) {
|
|
81
84
|
operation.parameters = parameters;
|
|
85
|
+
}
|
|
82
86
|
const requestBody = request?.body;
|
|
83
87
|
if (requestBody != null) {
|
|
84
88
|
const { content, ...bodyConfig } = requestBody;
|
|
@@ -87,20 +91,23 @@ export class OpenAPIGenerator {
|
|
|
87
91
|
return { method, operation: reorderOperation(operation) };
|
|
88
92
|
}
|
|
89
93
|
#generateParameters(request) {
|
|
90
|
-
if (request == null)
|
|
94
|
+
if (request == null) {
|
|
91
95
|
return [];
|
|
96
|
+
}
|
|
92
97
|
return PARAMETER_SOURCES.flatMap(({ key, location }) => {
|
|
93
98
|
const schema = request[key];
|
|
94
|
-
if (schema == null)
|
|
99
|
+
if (schema == null) {
|
|
95
100
|
return [];
|
|
101
|
+
}
|
|
96
102
|
return this.#generateParametersFor(schema, location);
|
|
97
103
|
});
|
|
98
104
|
}
|
|
99
105
|
#generateParametersFor(schema, location) {
|
|
100
106
|
const converted = this.#convert(schema, 'input', false);
|
|
101
107
|
const properties = converted.properties;
|
|
102
|
-
if (converted.type !== 'object' || !
|
|
108
|
+
if (converted.type !== 'object' || !isObjectLike(properties)) {
|
|
103
109
|
throw new UnsupportedParameterSchemaError(location);
|
|
110
|
+
}
|
|
104
111
|
const required = Array.isArray(converted.required) ? converted.required : [];
|
|
105
112
|
return Object.entries(properties).map(([name, property]) => ({
|
|
106
113
|
...describeParameter(property, location === 'path' || required.includes(name)),
|
|
@@ -116,26 +123,27 @@ export class OpenAPIGenerator {
|
|
|
116
123
|
return generated;
|
|
117
124
|
}
|
|
118
125
|
#generateResponse(response) {
|
|
119
|
-
const {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (content != null)
|
|
124
|
-
generated.content = this.#generateContent(content, 'output');
|
|
125
|
-
|
|
126
|
-
generated.links = links;
|
|
126
|
+
const generated = { description: response.description, links: response.links };
|
|
127
|
+
if (response.headers != null) {
|
|
128
|
+
generated.headers = this.#generateResponseHeaders(response.headers);
|
|
129
|
+
}
|
|
130
|
+
if (response.content != null) {
|
|
131
|
+
generated.content = this.#generateContent(response.content, 'output');
|
|
132
|
+
}
|
|
127
133
|
return generated;
|
|
128
134
|
}
|
|
129
135
|
#generateResponseHeaders(headers) {
|
|
130
136
|
if (!isStandardJSONSchema(headers)) {
|
|
131
|
-
if (isStandardSchema(headers))
|
|
137
|
+
if (isStandardSchema(headers)) {
|
|
132
138
|
throw new UnsupportedSchemaError(headers['~standard'].vendor);
|
|
139
|
+
}
|
|
133
140
|
return headers;
|
|
134
141
|
}
|
|
135
142
|
const converted = this.#convert(headers, 'output', false);
|
|
136
143
|
const properties = converted.properties;
|
|
137
|
-
if (converted.type !== 'object' || !
|
|
144
|
+
if (converted.type !== 'object' || !isObjectLike(properties)) {
|
|
138
145
|
throw new UnsupportedParameterSchemaError('headers');
|
|
146
|
+
}
|
|
139
147
|
const required = Array.isArray(converted.required) ? converted.required : [];
|
|
140
148
|
const generated = {};
|
|
141
149
|
for (const [name, property] of Object.entries(properties)) {
|
|
@@ -145,17 +153,23 @@ export class OpenAPIGenerator {
|
|
|
145
153
|
}
|
|
146
154
|
/** Converts a schema, or passes an already-written OpenAPI schema through untouched. */
|
|
147
155
|
#describe(schema, io) {
|
|
148
|
-
if (isStandardJSONSchema(schema))
|
|
156
|
+
if (isStandardJSONSchema(schema)) {
|
|
149
157
|
return this.#convert(schema, io);
|
|
150
|
-
|
|
158
|
+
}
|
|
159
|
+
if (isStandardSchema(schema)) {
|
|
151
160
|
throw new UnsupportedSchemaError(schema['~standard'].vendor);
|
|
161
|
+
}
|
|
152
162
|
return schema;
|
|
153
163
|
}
|
|
154
164
|
#generateContent(content, io) {
|
|
155
165
|
const generated = {};
|
|
156
166
|
for (const [mediaType, media] of Object.entries(content)) {
|
|
157
167
|
const { schema, ...rest } = media;
|
|
158
|
-
|
|
168
|
+
const entry = { ...rest };
|
|
169
|
+
if (schema != null) {
|
|
170
|
+
entry.schema = this.#describe(schema, io);
|
|
171
|
+
}
|
|
172
|
+
generated[mediaType] = entry;
|
|
159
173
|
}
|
|
160
174
|
return generated;
|
|
161
175
|
}
|
|
@@ -168,35 +182,31 @@ export class OpenAPIGenerator {
|
|
|
168
182
|
*/
|
|
169
183
|
function describeParameter(property, required) {
|
|
170
184
|
const described = { schema: property, required };
|
|
171
|
-
if (
|
|
185
|
+
if (isObjectLike(property) && isJsonString(property.description)) {
|
|
172
186
|
described.description = property.description;
|
|
187
|
+
}
|
|
173
188
|
return described;
|
|
174
189
|
}
|
|
175
|
-
/** Puts an operation's keys in
|
|
190
|
+
/** Puts an operation's keys in alphabetical order for deterministic output. */
|
|
176
191
|
function reorderOperation(operation) {
|
|
177
|
-
|
|
178
|
-
const ordered = { ...rest };
|
|
179
|
-
if (parameters != null)
|
|
180
|
-
ordered.parameters = parameters;
|
|
181
|
-
if (requestBody != null)
|
|
182
|
-
ordered.requestBody = requestBody;
|
|
183
|
-
ordered.responses = responses;
|
|
184
|
-
return ordered;
|
|
192
|
+
return Object.fromEntries(Object.entries(operation).toSorted(([left], [right]) => left.localeCompare(right)));
|
|
185
193
|
}
|
|
186
194
|
function mergePathItem(paths, route, { method, operation }) {
|
|
187
195
|
paths[route.path] = { ...paths[route.path], [method]: operation };
|
|
188
196
|
}
|
|
189
197
|
function orderSchemas(schemas, order, paths) {
|
|
190
|
-
if (order === 'registration')
|
|
198
|
+
if (order === 'registration') {
|
|
191
199
|
return schemas;
|
|
200
|
+
}
|
|
192
201
|
if (order === 'alphabetical') {
|
|
193
202
|
return Object.fromEntries(Object.entries(schemas).sort(([left], [right]) => left.localeCompare(right)));
|
|
194
203
|
}
|
|
195
204
|
const ordered = {};
|
|
196
205
|
for (const name of referencedNames(paths, schemas)) {
|
|
197
206
|
const schema = schemas[name];
|
|
198
|
-
if (schema != null)
|
|
207
|
+
if (schema != null) {
|
|
199
208
|
ordered[name] = schema;
|
|
209
|
+
}
|
|
200
210
|
}
|
|
201
211
|
return { ...ordered, ...schemas };
|
|
202
212
|
}
|
|
@@ -205,28 +215,32 @@ function referencedNames(paths, schemas) {
|
|
|
205
215
|
const seen = [];
|
|
206
216
|
const visit = (node) => {
|
|
207
217
|
if (Array.isArray(node)) {
|
|
208
|
-
for (const entry of node)
|
|
218
|
+
for (const entry of node) {
|
|
209
219
|
visit(entry);
|
|
220
|
+
}
|
|
210
221
|
return;
|
|
211
222
|
}
|
|
212
|
-
if (!
|
|
223
|
+
if (!isObjectLike(node)) {
|
|
213
224
|
return;
|
|
225
|
+
}
|
|
214
226
|
const reference = node.$ref;
|
|
215
|
-
if (
|
|
227
|
+
if (isJsonString(reference)) {
|
|
216
228
|
const name = reference.startsWith('#/components/schemas/') ? reference.slice(21) : undefined;
|
|
217
|
-
if (name == null || seen.includes(name))
|
|
229
|
+
if (name == null || seen.includes(name)) {
|
|
218
230
|
return;
|
|
231
|
+
}
|
|
219
232
|
seen.push(name);
|
|
220
|
-
|
|
233
|
+
const referenced = schemas[name];
|
|
234
|
+
if (referenced !== undefined) {
|
|
235
|
+
visit(referenced);
|
|
236
|
+
}
|
|
221
237
|
return;
|
|
222
238
|
}
|
|
223
|
-
for (const value of Object.values(node))
|
|
239
|
+
for (const value of Object.values(node)) {
|
|
224
240
|
visit(value);
|
|
241
|
+
}
|
|
225
242
|
};
|
|
226
243
|
visit(paths);
|
|
227
244
|
return seen;
|
|
228
245
|
}
|
|
229
|
-
function isRecord(value) {
|
|
230
|
-
return typeof value === 'object' && value != null && !Array.isArray(value);
|
|
231
|
-
}
|
|
232
246
|
//# sourceMappingURL=generator.js.map
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
export { $,
|
|
2
|
-
export {
|
|
3
|
-
export { type DocumentConfig, type GeneratorOptions, OpenAPIGenerator, type OpenAPIVersion } from './generator.ts';
|
|
4
|
-
export { ComponentCollector, type ConvertOptions, type JSONSchemaTarget, type NormalizationOptions, convertSchema, } from './json-schema.ts';
|
|
5
|
-
export { type ComponentType, type OpenAPIDefinition, OpenAPIRegistry } from './registry.ts';
|
|
6
|
-
export { type RouteConfig, createRoute, toRoutingPath } from './route.ts';
|
|
7
|
-
export { type JSONSchema, type SchemaIO, type StandardSchema, isStandardJSONSchema, isStandardSchema, } from './standard-schema.ts';
|
|
8
|
-
export { type ComputeInput, type ConvertPathType, type RouteConfigToTypedResponse, type RouteHandler, type RouteHandlerResponse, } from './type-inference.ts';
|
|
9
|
-
export type { ContentObject, MediaTypeObject, ParameterLocation, ReferenceObject, RequestBody, ResponseConfig, RouteConfigBase, RouteMethod, RouteRequest, SchemaObject, SchemaOrReference, } from './types.ts';
|
|
10
|
-
export { flattenErrors, type Hook, sValidator } from '@hono/standard-validator';
|
|
1
|
+
export { $, StandardOpenAPIHono } from './app.ts';
|
|
2
|
+
export { createRoute } from './route.ts';
|
|
11
3
|
//# 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,OAAO,EAAE,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
1
|
export { $, StandardOpenAPIHono } from './app.js';
|
|
2
|
-
export {
|
|
3
|
-
export { OpenAPIGenerator } from './generator.js';
|
|
4
|
-
export { ComponentCollector, convertSchema, } from './json-schema.js';
|
|
5
|
-
export { OpenAPIRegistry } from './registry.js';
|
|
6
|
-
export { createRoute, toRoutingPath } from './route.js';
|
|
7
|
-
export { isStandardJSONSchema, isStandardSchema, } from './standard-schema.js';
|
|
8
|
-
export {} from './type-inference.js';
|
|
9
|
-
export { flattenErrors, sValidator } from '@hono/standard-validator';
|
|
2
|
+
export { createRoute } from './route.js';
|
|
10
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/json-schema.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StandardJSONSchemaV1 } from '@standard-schema/spec';
|
|
1
2
|
import { type JSONSchema, type SchemaIO } from './standard-schema.ts';
|
|
2
3
|
/** The JSON Schema dialect asked of the schema library. */
|
|
3
4
|
export type JSONSchemaTarget = 'draft-2020-12' | 'draft-07' | 'openapi-3.0';
|
|
@@ -34,7 +35,7 @@ export interface NormalizationOptions {
|
|
|
34
35
|
*/
|
|
35
36
|
export declare class ComponentCollector {
|
|
36
37
|
#private;
|
|
37
|
-
get schemas(): Record<string,
|
|
38
|
+
get schemas(): Record<string, Record<string, unknown>>;
|
|
38
39
|
has(name: string): boolean;
|
|
39
40
|
/** Holds a place for a schema that is about to be generated, keeping the document's order stable. */
|
|
40
41
|
reserve(name: string): void;
|
|
@@ -45,7 +46,7 @@ export interface ConvertOptions {
|
|
|
45
46
|
readonly target: JSONSchemaTarget;
|
|
46
47
|
readonly components: ComponentCollector;
|
|
47
48
|
/** Vendor-specific conversion options defined by Standard JSON Schema. */
|
|
48
|
-
readonly libraryOptions?:
|
|
49
|
+
readonly libraryOptions?: StandardJSONSchemaV1.Options['libraryOptions'];
|
|
49
50
|
readonly normalization?: NormalizationOptions | undefined;
|
|
50
51
|
/** Name for the schema itself, for schemas that don't name themselves through `$id`. */
|
|
51
52
|
readonly name?: string | undefined;
|
|
@@ -63,5 +64,5 @@ export interface ConvertOptions {
|
|
|
63
64
|
*
|
|
64
65
|
* The returned value is a `$ref` when the schema names itself, and the schema body when it doesn't.
|
|
65
66
|
*/
|
|
66
|
-
export declare function convertSchema(schema:
|
|
67
|
+
export declare function convertSchema<T>(schema: T, options: ConvertOptions): JSONSchema;
|
|
67
68
|
//# sourceMappingURL=json-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAE9B,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,UAAU,GAAG,aAAa,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,sFAAsF;IACtF,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAC7C,iFAAiF;IACjF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,6FAA6F;IAC7F,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AA0DD;;;;;GAKG;AACH,qBAAa,kBAAkB;;IAI7B,IAAI,OAAO,4CASV;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED,qGAAqG;IACrG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAI1B;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAW/C;CACF;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC1D,wFAAwF;IACxF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,CAyB/E"}
|
package/dist/json-schema.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ComponentNameConflictError, UnsupportedSchemaError } from './errors.js';
|
|
2
|
-
import {
|
|
2
|
+
import { isJsonString, isObjectLike } from './json-value.js';
|
|
3
|
+
import { isStandardJSONSchema, } from './standard-schema.js';
|
|
3
4
|
const DEFAULT_NORMALIZATION = {
|
|
4
5
|
dropStrictAdditionalProperties: true,
|
|
5
6
|
dropFormatImpliedPatterns: true,
|
|
@@ -62,8 +63,9 @@ export class ComponentCollector {
|
|
|
62
63
|
get schemas() {
|
|
63
64
|
const generated = {};
|
|
64
65
|
for (const [name, schema] of this.#schemas) {
|
|
65
|
-
if (schema != null)
|
|
66
|
+
if (schema != null) {
|
|
66
67
|
generated[name] = schema;
|
|
68
|
+
}
|
|
67
69
|
}
|
|
68
70
|
return generated;
|
|
69
71
|
}
|
|
@@ -72,14 +74,16 @@ export class ComponentCollector {
|
|
|
72
74
|
}
|
|
73
75
|
/** Holds a place for a schema that is about to be generated, keeping the document's order stable. */
|
|
74
76
|
reserve(name) {
|
|
75
|
-
if (!this.#schemas.has(name))
|
|
77
|
+
if (!this.#schemas.has(name)) {
|
|
76
78
|
this.#schemas.set(name, undefined);
|
|
79
|
+
}
|
|
77
80
|
}
|
|
78
81
|
register(name, schema) {
|
|
79
82
|
const existing = this.#schemas.get(name);
|
|
80
83
|
if (existing != null) {
|
|
81
|
-
if (!deepEquals(existing, schema))
|
|
84
|
+
if (!deepEquals(existing, schema)) {
|
|
82
85
|
throw new ComponentNameConflictError(name);
|
|
86
|
+
}
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
85
89
|
this.#schemas.set(name, schema);
|
|
@@ -107,13 +111,13 @@ export function convertSchema(schema, options) {
|
|
|
107
111
|
// reads ahead of its parts rather than after them.
|
|
108
112
|
reserve(named, context);
|
|
109
113
|
registerDefinitions(definitions, context);
|
|
110
|
-
if (options.hoistRoot === false)
|
|
114
|
+
if (options.hoistRoot === false) {
|
|
111
115
|
return prepare(stripIdentity(root), context);
|
|
116
|
+
}
|
|
112
117
|
return walk(named, context);
|
|
113
118
|
}
|
|
114
119
|
function describe(schema, io, target, libraryOptions) {
|
|
115
|
-
const
|
|
116
|
-
const { $schema: _dialect, ...rest } = converted;
|
|
120
|
+
const { $schema: _dialect, ...rest } = schema['~standard'].jsonSchema[io]({ libraryOptions, target });
|
|
117
121
|
return rest;
|
|
118
122
|
}
|
|
119
123
|
function splitDefinitions(raw) {
|
|
@@ -121,12 +125,14 @@ function splitDefinitions(raw) {
|
|
|
121
125
|
const definitions = {};
|
|
122
126
|
for (const keyword of DEFINITIONS_KEYWORDS) {
|
|
123
127
|
const block = root[keyword];
|
|
124
|
-
if (!
|
|
128
|
+
if (!isObjectLike(block)) {
|
|
125
129
|
continue;
|
|
130
|
+
}
|
|
126
131
|
delete root[keyword];
|
|
127
132
|
for (const [key, value] of Object.entries(block)) {
|
|
128
|
-
if (
|
|
133
|
+
if (isObjectLike(value)) {
|
|
129
134
|
definitions[key] = value;
|
|
135
|
+
}
|
|
130
136
|
}
|
|
131
137
|
}
|
|
132
138
|
return { definitions, root };
|
|
@@ -141,7 +147,7 @@ function registerDefinitions(definitions, context) {
|
|
|
141
147
|
const named = Object.entries(definitions).map(([key, definition]) => ({
|
|
142
148
|
definition,
|
|
143
149
|
key,
|
|
144
|
-
name:
|
|
150
|
+
name: isJsonString(definition.$id) ? definition.$id : key,
|
|
145
151
|
}));
|
|
146
152
|
for (const { key, name } of named) {
|
|
147
153
|
for (const keyword of DEFINITIONS_KEYWORDS) {
|
|
@@ -154,22 +160,24 @@ function registerDefinitions(definitions, context) {
|
|
|
154
160
|
}
|
|
155
161
|
/** Claims a component slot for a self-naming schema, to be filled once the schema is walked. */
|
|
156
162
|
function reserve(node, context) {
|
|
157
|
-
if (
|
|
163
|
+
if (isJsonString(node.$id)) {
|
|
158
164
|
context.components.reserve(node.$id);
|
|
165
|
+
}
|
|
159
166
|
}
|
|
160
167
|
/** Walks a node, hoisting it into components when it names itself. */
|
|
161
168
|
function walk(node, context) {
|
|
162
169
|
const prepared = prepare(node, context);
|
|
163
170
|
const name = prepared.$id;
|
|
164
|
-
if (
|
|
171
|
+
if (!isJsonString(name)) {
|
|
165
172
|
return prepared;
|
|
173
|
+
}
|
|
166
174
|
context.components.register(name, stripIdentity(prepared));
|
|
167
175
|
return { $ref: `${COMPONENT_SCHEMAS_POINTER}/${name}` };
|
|
168
176
|
}
|
|
169
177
|
/** Rewrites references, descends into subschemas, then normalizes — but leaves `$id` in place. */
|
|
170
178
|
function prepare(node, context) {
|
|
171
179
|
const reference = node.$ref;
|
|
172
|
-
if (
|
|
180
|
+
if (isJsonString(reference)) {
|
|
173
181
|
return { ...node, $ref: context.pointers.get(reference) ?? reference };
|
|
174
182
|
}
|
|
175
183
|
const walked = {};
|
|
@@ -179,10 +187,12 @@ function prepare(node, context) {
|
|
|
179
187
|
return normalize(walked, context.normalization);
|
|
180
188
|
}
|
|
181
189
|
function walkChild(value, context) {
|
|
182
|
-
if (Array.isArray(value))
|
|
190
|
+
if (Array.isArray(value)) {
|
|
183
191
|
return value.map(entry => walkChild(entry, context));
|
|
184
|
-
|
|
192
|
+
}
|
|
193
|
+
if (!isObjectLike(value)) {
|
|
185
194
|
return value;
|
|
195
|
+
}
|
|
186
196
|
return walk(value, context);
|
|
187
197
|
}
|
|
188
198
|
function stripIdentity(schema) {
|
|
@@ -193,10 +203,12 @@ function normalize(schema, options) {
|
|
|
193
203
|
const collapsed = options.collapseNullableUnions ? collapseNullableUnion(schema) : schema;
|
|
194
204
|
const normalized = {};
|
|
195
205
|
for (const [key, value] of Object.entries(collapsed)) {
|
|
196
|
-
if (options.dropStrictAdditionalProperties && key === 'additionalProperties' && value === false)
|
|
206
|
+
if (options.dropStrictAdditionalProperties && key === 'additionalProperties' && value === false) {
|
|
197
207
|
continue;
|
|
198
|
-
|
|
208
|
+
}
|
|
209
|
+
if (options.dropFormatImpliedPatterns && key === 'pattern' && isJsonString(collapsed.format)) {
|
|
199
210
|
continue;
|
|
211
|
+
}
|
|
200
212
|
if (options.constToEnum && key === 'const') {
|
|
201
213
|
normalized.enum = [value];
|
|
202
214
|
continue;
|
|
@@ -222,25 +234,26 @@ function orderKeywords(schema) {
|
|
|
222
234
|
*/
|
|
223
235
|
function collapseNullableUnion(schema) {
|
|
224
236
|
const branches = schema.anyOf;
|
|
225
|
-
if (!Array.isArray(branches) || branches.length !== 2)
|
|
237
|
+
if (!Array.isArray(branches) || branches.length !== 2) {
|
|
226
238
|
return schema;
|
|
227
|
-
|
|
228
|
-
|
|
239
|
+
}
|
|
240
|
+
const nullBranchIndex = branches.findIndex(branch => isObjectLike(branch) && branch.type === 'null');
|
|
241
|
+
if (nullBranchIndex === -1) {
|
|
229
242
|
return schema;
|
|
243
|
+
}
|
|
230
244
|
const valueBranch = branches[nullBranchIndex === 0 ? 1 : 0];
|
|
231
|
-
if (!
|
|
245
|
+
if (!isObjectLike(valueBranch) || !isJsonString(valueBranch.type)) {
|
|
232
246
|
return schema;
|
|
233
|
-
|
|
247
|
+
}
|
|
248
|
+
if (Object.keys(valueBranch).some(key => key === '$ref' || key === '$id')) {
|
|
234
249
|
return schema;
|
|
250
|
+
}
|
|
235
251
|
const { type, ...valueRest } = valueBranch;
|
|
236
252
|
const { anyOf: _branches, ...rest } = schema;
|
|
237
253
|
return { type: [null, type], ...valueRest, ...rest };
|
|
238
254
|
}
|
|
239
255
|
function isStandardSchemaLike(value) {
|
|
240
|
-
return
|
|
241
|
-
}
|
|
242
|
-
function isRecord(value) {
|
|
243
|
-
return typeof value === 'object' && value != null && !Array.isArray(value);
|
|
256
|
+
return isObjectLike(value) && isObjectLike(value['~standard']) && isJsonString(value['~standard'].vendor);
|
|
244
257
|
}
|
|
245
258
|
function deepEquals(left, right) {
|
|
246
259
|
return JSON.stringify(left) === JSON.stringify(right);
|
package/dist/json-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Any value that survives a JSON round-trip. */
|
|
2
|
+
export type JsonValue = string | number | boolean | null | readonly JsonValue[] | {
|
|
3
|
+
readonly [key: string]: JsonValue;
|
|
4
|
+
};
|
|
5
|
+
/** A JSON object: the shape every JSON Schema and OpenAPI document fragment here is built from. */
|
|
6
|
+
export type JsonObject = Record<string, JsonValue>;
|
|
7
|
+
/** Narrows a value of unknown provenance to a plain object, without claiming its property types. */
|
|
8
|
+
export declare function isObjectLike<T>(value: T): value is T & JsonObject;
|
|
9
|
+
export declare function isJsonString<T>(value: T): value is T & string;
|
|
10
|
+
//# sourceMappingURL=json-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-value.d.ts","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,SAAS,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAExH,mGAAmG;AACnG,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,oGAAoG;AACpG,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,UAAU,CAEjE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Narrows a value of unknown provenance to a plain object, without claiming its property types. */
|
|
2
|
+
export function isObjectLike(value) {
|
|
3
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
export function isJsonString(value) {
|
|
6
|
+
return typeof value === 'string';
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=json-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-value.js","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":"AAMA,oGAAoG;AACpG,MAAM,UAAU,YAAY,CAAI,KAAQ;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,KAAQ;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { JsonObject } from './json-value.ts';
|
|
2
2
|
import type { StandardSchema } from './standard-schema.ts';
|
|
3
3
|
import type { RouteConfigBase } from './types.ts';
|
|
4
4
|
export declare const COMPONENT_TYPES: readonly ['schemas', 'responses', 'parameters', 'examples', 'requestBodies', 'headers', 'securitySchemes', 'links', 'callbacks', 'pathItems'];
|
|
@@ -7,7 +7,7 @@ export type OpenAPIDefinition = {
|
|
|
7
7
|
readonly type: 'component';
|
|
8
8
|
readonly componentType: ComponentType;
|
|
9
9
|
readonly name: string;
|
|
10
|
-
readonly component:
|
|
10
|
+
readonly component: JsonObject;
|
|
11
11
|
} | {
|
|
12
12
|
readonly type: 'schema';
|
|
13
13
|
readonly schema: StandardSchema;
|
|
@@ -34,9 +34,11 @@ export declare class OpenAPIRegistry {
|
|
|
34
34
|
nameOf(schema: StandardSchema): string | undefined;
|
|
35
35
|
registerPath(route: RouteConfigBase): void;
|
|
36
36
|
registerWebhook(webhook: RouteConfigBase): void;
|
|
37
|
-
registerComponent<T extends ComponentType>(componentType: T, name: string, component:
|
|
37
|
+
registerComponent<T extends ComponentType>(componentType: T, name: string, component: JsonObject): {
|
|
38
38
|
name: string;
|
|
39
|
-
ref:
|
|
39
|
+
ref: {
|
|
40
|
+
$ref: string;
|
|
41
|
+
};
|
|
40
42
|
};
|
|
41
43
|
/** Copies another registry's definitions into this one, optionally re-rooting its routes. */
|
|
42
44
|
absorb(registry: OpenAPIRegistry, mapPath: (path: string) => string): void;
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,eAAe,YAC1B,SAAS,EACT,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,WAAW,CACH,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;CAChC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAEpE;;;;;GAKG;AACH,qBAAa,eAAe;;IAM1B,YAAY,OAAO,GAAE,eAAe,EAAO,EAE1C;IAED,IAAI,WAAW,IAAI,iBAAiB,EAAE,CAIrC;IAED,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,cAAc,CAK7D;IAED,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAcjD;IAED,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEzC;IAED,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAE9C;IAED,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU;;;YAGxE,IAAI;;MAC3B;IAED,6FAA6F;IAC7F,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAiBzE;CACF"}
|
package/dist/registry.js
CHANGED
|
@@ -36,12 +36,14 @@ export class OpenAPIRegistry {
|
|
|
36
36
|
}
|
|
37
37
|
nameOf(schema) {
|
|
38
38
|
const own = this.#names.get(schema);
|
|
39
|
-
if (own != null)
|
|
39
|
+
if (own != null) {
|
|
40
40
|
return own;
|
|
41
|
+
}
|
|
41
42
|
for (const parent of this.#parents) {
|
|
42
43
|
const inherited = parent.nameOf(schema);
|
|
43
|
-
if (inherited != null)
|
|
44
|
+
if (inherited != null) {
|
|
44
45
|
return inherited;
|
|
46
|
+
}
|
|
45
47
|
}
|
|
46
48
|
return undefined;
|
|
47
49
|
}
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS;IACT,WAAW;IACX,YAAY;IACZ,UAAU;IACV,eAAe;IACf,SAAS;IACT,iBAAiB;IACjB,OAAO;IACP,WAAW;IACX,WAAW;CACH,CAAC;AAeX;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IACjB,YAAY,GAAwB,EAAE,CAAC;IACvC,QAAQ,CAAoB;IACrC,gGAAgG;IACvF,MAAM,GAAG,IAAI,OAAO,EAA0B,CAAC;IAExD,YAAY,OAAO,GAAsB,EAAE;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,8EAA8E;IAC9E,QAAQ,CAAC,IAAY,EAAE,MAAsB;QAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEzD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAsB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBACtB,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,YAAY,CAAC,KAAsB;QACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,OAAwB;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,iBAAiB,CAA0B,aAAgB,EAAE,IAAY,EAAE,SAAqB;QAC9F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,gBAAgB,aAAa,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;IAC1E,CAAC;IAED,6FAA6F;IAC7F,MAAM,CAAC,QAAyB,EAAE,OAAiC;QACjE,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC9C,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,WAAW;oBACd,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;oBACxF,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBAClD,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjF,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACxF,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -7,10 +7,12 @@ import type { StandardJSONSchemaV1, StandardSchemaV1 } from '@standard-schema/sp
|
|
|
7
7
|
*/
|
|
8
8
|
export type StandardSchema = StandardSchemaV1 & StandardJSONSchemaV1;
|
|
9
9
|
/** A JSON Schema document fragment, as produced by a Standard JSON Schema converter. */
|
|
10
|
-
export type JSONSchema =
|
|
10
|
+
export type JSONSchema = ReturnType<StandardJSONSchemaV1.Converter['input']>;
|
|
11
|
+
/** One value inside a JSON Schema fragment: a keyword's value, or a nested schema. */
|
|
12
|
+
export type SchemaValue = JSONSchema[string];
|
|
11
13
|
/** Which side of a schema to describe: what a request accepts, or what a response produces. */
|
|
12
14
|
export type SchemaIO = 'input' | 'output';
|
|
13
|
-
export declare function isStandardSchema(value:
|
|
14
|
-
export declare function isStandardJSONSchema(value:
|
|
15
|
-
export declare function validateWithStandardSchema(schema: StandardSchemaV1, value:
|
|
15
|
+
export declare function isStandardSchema<T>(value: T): value is T & StandardSchemaV1;
|
|
16
|
+
export declare function isStandardJSONSchema<T>(value: T): value is T & StandardSchema;
|
|
17
|
+
export declare function validateWithStandardSchema<V>(schema: StandardSchemaV1, value: V): StandardSchemaV1.Result<unknown> | Promise<StandardSchemaV1.Result<unknown>>;
|
|
16
18
|
//# sourceMappingURL=standard-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;AAErE,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;AAErE,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7E,sFAAsF;AACtF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAE7C,+FAA+F;AAC/F,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAQ3E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,cAAc,CAQ7E;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,CAAC,GACP,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAE9E"}
|
package/dist/standard-schema.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
export function isStandardSchema(value) {
|
|
2
|
-
if (typeof value !== 'object' || value == null || !('~standard' in value))
|
|
2
|
+
if (typeof value !== 'object' || value == null || !('~standard' in value)) {
|
|
3
3
|
return false;
|
|
4
|
+
}
|
|
4
5
|
const props = value['~standard'];
|
|
5
6
|
return typeof props === 'object' && props != null && 'version' in props && props.version === 1;
|
|
6
7
|
}
|
|
7
8
|
export function isStandardJSONSchema(value) {
|
|
8
|
-
if (!isStandardSchema(value))
|
|
9
|
+
if (!isStandardSchema(value)) {
|
|
9
10
|
return false;
|
|
11
|
+
}
|
|
10
12
|
const props = value['~standard'];
|
|
11
13
|
return typeof props.jsonSchema === 'object' && props.jsonSchema != null;
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,gBAAgB,CAAI,KAAQ;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAY,KAAK,CAAC,WAAW,CAAC,CAAC;IAE1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAI,KAAQ;IAC9C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAsD,KAAK,CAAC,WAAW,CAAC,CAAC;IAEpF,OAAO,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAwB,EACxB,KAAQ;IAER,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
-
import type { HeadersObject, LinksObject, OperationObject, ParameterObject, ReferenceObject, RequestBodyObject, ResponsesObject, SchemaObject } from 'openapi3-ts/oas31';
|
|
2
|
+
import type { EncodingObject, ExamplesObject, HeadersObject, LinksObject, OperationObject, ParameterObject, ReferenceObject, RequestBodyObject, ResponsesObject, SchemaObject } from 'openapi3-ts/oas31';
|
|
3
3
|
import type { StandardSchema } from './standard-schema.ts';
|
|
4
4
|
export type { ReferenceObject, SchemaObject };
|
|
5
5
|
/** Either a schema to convert, or an already-written OpenAPI schema to pass through untouched. */
|
|
@@ -7,8 +7,8 @@ export type SchemaOrReference = StandardSchemaV1 | SchemaObject | ReferenceObjec
|
|
|
7
7
|
export interface MediaTypeObject {
|
|
8
8
|
readonly schema?: SchemaOrReference | undefined;
|
|
9
9
|
readonly example?: unknown;
|
|
10
|
-
readonly examples?:
|
|
11
|
-
readonly encoding?:
|
|
10
|
+
readonly examples?: ExamplesObject | undefined;
|
|
11
|
+
readonly encoding?: EncodingObject | undefined;
|
|
12
12
|
}
|
|
13
13
|
export type ContentObject = Record<string, MediaTypeObject>;
|
|
14
14
|
export interface RequestBody extends Omit<RequestBodyObject, 'content'> {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAE9C,kGAAkG;AAClG,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,YAAY,GAAG,eAAe,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAE9C,kGAAkG;AAClG,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,YAAY,GAAG,eAAe,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE5D,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CAC/C;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAErG,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,YAAY,CAAC;IACxF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS,CAAC;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC;CACtE;AAED,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvE,qFAAqF;AACrF,eAAO,MAAM,iBAAiB;kBACrB,QAAQ;uBAAY,MAAM;;kBAC1B,OAAO;uBAAY,OAAO;;kBAC1B,SAAS;uBAAY,QAAQ;;kBAC7B,SAAS;uBAAY,QAAQ;EACkD,CAAC"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAgEA,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnC,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IACnC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACtC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;CACgD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kamaalio/hono-standard-openapi",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "Generate OpenAPI documents from any Standard Schema library, for Hono.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hono",
|
|
@@ -37,9 +37,8 @@
|
|
|
37
37
|
"lint": "oxlint",
|
|
38
38
|
"prepare": "husky",
|
|
39
39
|
"release": "sh scripts/publish.sh",
|
|
40
|
-
"test": "vitest run",
|
|
40
|
+
"test": "vitest run --coverage",
|
|
41
41
|
"test:watch": "vitest",
|
|
42
|
-
"test:cov": "vitest run --coverage",
|
|
43
42
|
"type-check": "tsc --noEmit"
|
|
44
43
|
},
|
|
45
44
|
"dependencies": {
|
|
@@ -47,6 +46,8 @@
|
|
|
47
46
|
"openapi3-ts": "^4.5.0"
|
|
48
47
|
},
|
|
49
48
|
"devDependencies": {
|
|
49
|
+
"@kamaal111/oxlint-plugin-anti-slop": "^0.0.3",
|
|
50
|
+
"@oxlint/plugins": "^1.80.0",
|
|
50
51
|
"@standard-schema/spec": "^1.1.0",
|
|
51
52
|
"@types/node": "^26.2.0",
|
|
52
53
|
"@valibot/to-json-schema": "^1.7.1",
|
|
@@ -56,7 +57,7 @@
|
|
|
56
57
|
"husky": "^9.1.7",
|
|
57
58
|
"lint-staged": "^17.3.0",
|
|
58
59
|
"oxfmt": "^0.64.0",
|
|
59
|
-
"oxlint": "^1.
|
|
60
|
+
"oxlint": "^1.80.0",
|
|
60
61
|
"oxlint-tsgolint": "^7.0.2001",
|
|
61
62
|
"typescript": "^7.0.2",
|
|
62
63
|
"valibot": "^1.4.2",
|