hono-takibi 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/schema/references/resolve-schemas-dependencies.js +8 -43
- package/dist/core/schema/references/traverse-schema-dependencies.d.ts +2 -0
- package/dist/core/schema/references/traverse-schema-dependencies.js +30 -0
- package/dist/core/text/escape-str.d.ts +7 -0
- package/dist/core/text/escape-str.js +24 -0
- package/dist/core/validator/is-array-with-schema-reference.d.ts +8 -0
- package/dist/core/validator/is-array-with-schema-reference.js +12 -0
- package/dist/core/validator/is-schema-reference.d.ts +9 -0
- package/dist/core/validator/is-schema-reference.js +13 -0
- package/dist/generators/zod/generate-zod-enum.js +12 -0
- package/dist/generators/zod/generate-zod-number-schema.d.ts +2 -0
- package/dist/generators/zod/generate-zod-number-schema.js +30 -3
- package/dist/generators/zod/generate-zod-object.js +3 -3
- package/dist/generators/zod/generate-zod-property-schema.d.ts +9 -2
- package/dist/generators/zod/generate-zod-property-schema.js +19 -23
- package/dist/generators/zod/generate-zod-string-schema.d.ts +1 -0
- package/dist/generators/zod/generate-zod-string-schema.js +3 -0
- package/dist/generators/zod/reference/generate-array-reference-schema.d.ts +10 -0
- package/dist/generators/zod/reference/generate-array-reference-schema.js +24 -0
- package/dist/generators/zod/reference/generate-reference-schema.d.ts +10 -0
- package/dist/generators/zod/reference/generate-reference-schema.js +22 -0
- package/dist/generators/zod/schema/generate-zod-schema.js +39 -5
- package/dist/generators/{app → zod-openapi-hono/app}/docs/generate-docs.d.ts +1 -1
- package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-apply-openapi-routes.js +1 -1
- package/dist/generators/{hono → zod-openapi-hono}/app/helper/get-route-maps.js +1 -1
- package/dist/generators/{hono → zod-openapi-hono}/app/index.js +2 -2
- package/dist/generators/{app → zod-openapi-hono/app}/register-component/generate-register-component.d.ts +1 -1
- package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler-name.js +1 -1
- package/dist/generators/{hono → zod-openapi-hono}/handler/generate-zod-openapi-hono-handler.js +2 -2
- package/dist/generators/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.js +21 -0
- package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-code.js +1 -3
- package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route.js +4 -6
- package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-params-object.js +1 -3
- package/dist/generators/{hono → zod-openapi-hono}/openapi/route/response/generate-response-schema.js +4 -6
- package/dist/index.js +3 -3
- package/dist/types/index.d.ts +4 -0
- package/dist/vite-plugin/vite-mode.js +1 -1
- package/package.json +1 -1
- package/dist/core/schema/references/resolve-schema-order.d.ts +0 -30
- package/dist/core/schema/references/resolve-schema-order.js +0 -48
- package/dist/core/schema/references/resolve-schema-references.d.ts +0 -49
- package/dist/core/schema/references/resolve-schema-references.js +0 -61
- package/dist/core/text/escape-quote.d.ts +0 -8
- package/dist/core/text/escape-quote.js +0 -13
- package/dist/core/text/sanitize.d.ts +0 -1
- package/dist/core/text/sanitize.js +0 -6
- package/dist/generators/hono/handler/helper/group-handlers-by-file-name-helper.js +0 -24
- /package/dist/generators/{app → zod-openapi-hono/app}/docs/generate-docs.js +0 -0
- /package/dist/generators/{app → zod-openapi-hono/app}/generate-app-route-handler.d.ts +0 -0
- /package/dist/generators/{app → zod-openapi-hono/app}/generate-app-route-handler.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-apply-openapi-routes.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-import-routes.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-import-routes.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/app/helper/get-route-maps.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/app/helper/process-import-map.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/app/helper/process-import-map.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/app/index.d.ts +0 -0
- /package/dist/generators/{app → zod-openapi-hono/app}/register-component/generate-register-component.js +0 -0
- /package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler-name.d.ts +0 -0
- /package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler.d.ts +0 -0
- /package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/handler/generate-zod-openapi-hono-handler.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/handler/helper/group-handlers-by-file-name-helper.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/handler/import/generate-import-handlers.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/handler/import/generate-import-handlers.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/handler/import/get-handler-imports.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/handler/import/get-handler-imports.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/generate-allof-code.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/generate-allof-code.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/process/process-alllof.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/process/process-alllof.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/anyof/generate-anyof-code.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/anyof/generate-anyof-code.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/generate-components-code.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/generate-components-code.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/oneof/generate-oneof-code.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/oneof/generate-oneof-code.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/schema/generate-schemas-export.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/schema/generate-schemas-export.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/generate-zod-openapi-hono.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/generate-zod-openapi-hono.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-create-route.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-create-route.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-code.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-name.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-name.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-params-object.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-parameter.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-parameter.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params-array.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params-array.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-insert-request-body.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-insert-request-body.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-request-body.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-request-body.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/object/generate-format-request-object.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/object/generate-format-request-object.js +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/response/generate-response-schema.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/type/generate-types-code.d.ts +0 -0
- /package/dist/generators/{hono → zod-openapi-hono}/openapi/type/generate-types-code.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveSchemasDependencies = resolveSchemasDependencies;
|
|
4
|
-
const
|
|
4
|
+
const traverse_schema_dependencies_1 = require("./traverse-schema-dependencies");
|
|
5
5
|
/**
|
|
6
6
|
* Resolves dependencies between schemas and returns them in topological order for safe processing
|
|
7
7
|
*
|
|
@@ -49,50 +49,15 @@ const extract_refs_1 = require("./extract-refs");
|
|
|
49
49
|
* - Uses depth-first search for dependency resolution
|
|
50
50
|
* - Automatically handles circular dependencies by preventing infinite recursion
|
|
51
51
|
*/
|
|
52
|
-
// export function resolveSchemasDependencies(schemas: Record<string, Schema>): string[] {
|
|
53
|
-
// // 1. get schema reference relations as a map
|
|
54
|
-
// const dependencies = resolveSchemaReferences(schemas)
|
|
55
|
-
// // 2. initialize ordered list and visited set
|
|
56
|
-
// const ordered: string[] = []
|
|
57
|
-
// const visited = new Set<string>()
|
|
58
|
-
// // 3. resolve schema order
|
|
59
|
-
// for (const name of Object.keys(schemas)) {
|
|
60
|
-
// resolveSchemaOrder(name, dependencies, visited, ordered)
|
|
61
|
-
// }
|
|
62
|
-
// // 4. return ordered list
|
|
63
|
-
// return ordered
|
|
64
|
-
// }
|
|
65
52
|
function resolveSchemasDependencies(schemas) {
|
|
66
|
-
const visited =
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
if (temp[schemaName]) {
|
|
71
|
-
throw new Error(`bad schema: ${schemaName}`);
|
|
72
|
-
}
|
|
73
|
-
if (!visited[schemaName]) {
|
|
74
|
-
temp[schemaName] = true;
|
|
75
|
-
const schema = schemas[schemaName];
|
|
76
|
-
if (schema) {
|
|
77
|
-
const refs = (0, extract_refs_1.extractRefs)(schema);
|
|
78
|
-
for (const ref of refs) {
|
|
79
|
-
if (schemas[ref]) {
|
|
80
|
-
visit(ref);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
console.warn(`not found schema: ${ref}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
visited[schemaName] = true;
|
|
88
|
-
temp[schemaName] = false;
|
|
89
|
-
result.push(schemaName);
|
|
90
|
-
}
|
|
91
|
-
};
|
|
53
|
+
const visited = new Set();
|
|
54
|
+
const recursionStack = new Set();
|
|
55
|
+
const orderedSchemas = [];
|
|
56
|
+
// Conduct visits for each schema
|
|
92
57
|
for (const schemaName of Object.keys(schemas)) {
|
|
93
|
-
if (!visited
|
|
94
|
-
|
|
58
|
+
if (!visited.has(schemaName)) {
|
|
59
|
+
(0, traverse_schema_dependencies_1.traverseSchemaDependencies)(schemaName, schemas, visited, recursionStack, orderedSchemas);
|
|
95
60
|
}
|
|
96
61
|
}
|
|
97
|
-
return
|
|
62
|
+
return orderedSchemas;
|
|
98
63
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.traverseSchemaDependencies = traverseSchemaDependencies;
|
|
4
|
+
const extract_refs_1 = require("./extract-refs");
|
|
5
|
+
function traverseSchemaDependencies(schemaName, schemas, visited, recursionStack, orderedSchemas) {
|
|
6
|
+
// Circular dependencies occur if they already exist on the recursing stack
|
|
7
|
+
if (recursionStack.has(schemaName)) {
|
|
8
|
+
throw new Error(`Circular dependency detected in schema: ${schemaName}`);
|
|
9
|
+
}
|
|
10
|
+
// Processed only if not visited
|
|
11
|
+
if (!visited.has(schemaName)) {
|
|
12
|
+
recursionStack.add(schemaName);
|
|
13
|
+
const schema = schemas[schemaName];
|
|
14
|
+
if (schema) {
|
|
15
|
+
// Get other schemas referenced by the current schema
|
|
16
|
+
const references = (0, extract_refs_1.extractRefs)(schema);
|
|
17
|
+
for (const ref of references) {
|
|
18
|
+
if (ref in schemas) {
|
|
19
|
+
traverseSchemaDependencies(ref, schemas, visited, recursionStack, orderedSchemas);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.warn(`Schema reference not found: ${ref}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
recursionStack.delete(schemaName);
|
|
27
|
+
visited.add(schemaName);
|
|
28
|
+
orderedSchemas.push(schemaName);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.escapeStr = escapeStr;
|
|
4
|
+
/**
|
|
5
|
+
* Escapes text for use in TypeScript code
|
|
6
|
+
*
|
|
7
|
+
* @param text - The text to escape
|
|
8
|
+
* @returns The escaped text
|
|
9
|
+
*/
|
|
10
|
+
function escapeStr(text) {
|
|
11
|
+
return (text
|
|
12
|
+
// Basic text cleaning
|
|
13
|
+
.replace(/\n/g, ' ') // Replace line breaks with spaces
|
|
14
|
+
.replace(/\s+/g, ' ') // Replace consecutive spaces with a single space
|
|
15
|
+
.replace(/\t/g, ' ') // Replace tabs with spaces
|
|
16
|
+
// Escaping special characters
|
|
17
|
+
.replace(/\\/g, '\\\\') // Escaping backslash
|
|
18
|
+
.replace(/'/g, "\\'") // Escaping single quote
|
|
19
|
+
// Convert full-width spaces to half-width
|
|
20
|
+
.replace(/ /g, ' ')
|
|
21
|
+
// Removing zero-width characters
|
|
22
|
+
.replace(/\u200B|\u200C|\u200D|\uFEFF/g, '')
|
|
23
|
+
.trim());
|
|
24
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isArrayWithSchemaReference = isArrayWithSchemaReference;
|
|
4
|
+
/**
|
|
5
|
+
* array has $ref
|
|
6
|
+
*
|
|
7
|
+
* @param schema - schema
|
|
8
|
+
* @returns boolean
|
|
9
|
+
*/
|
|
10
|
+
function isArrayWithSchemaReference(schema) {
|
|
11
|
+
return schema.type === 'array' && Boolean(schema.items?.$ref);
|
|
12
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSchemaReference = isSchemaReference;
|
|
4
|
+
/**
|
|
5
|
+
* isSchemaReference
|
|
6
|
+
* is schema reference
|
|
7
|
+
*
|
|
8
|
+
* @param schema
|
|
9
|
+
* @returns boolean
|
|
10
|
+
*/
|
|
11
|
+
function isSchemaReference(schema) {
|
|
12
|
+
return Boolean(schema.$ref);
|
|
13
|
+
}
|
|
@@ -7,5 +7,17 @@ function generateZodEnum(schema) {
|
|
|
7
7
|
const openapi_example = (0, generate_zod_to_openapi_1.generateZodToOpenAPI)(schema.example);
|
|
8
8
|
return `z.enum(${JSON.stringify(schema.enum)})${openapi_example}`;
|
|
9
9
|
}
|
|
10
|
+
// number
|
|
11
|
+
if (schema.type === 'number' && schema.enum) {
|
|
12
|
+
return `z.literal(${schema.enum})`;
|
|
13
|
+
}
|
|
14
|
+
// bigint
|
|
15
|
+
if (schema.type === 'bigint' && schema.enum) {
|
|
16
|
+
return `z.literal(${schema.enum}n)`;
|
|
17
|
+
}
|
|
18
|
+
// boolean
|
|
19
|
+
if (schema.type === 'boolean' && schema.enum) {
|
|
20
|
+
return `z.literal(${schema.enum})`;
|
|
21
|
+
}
|
|
10
22
|
return `z.enum(${JSON.stringify(schema.enum)})`;
|
|
11
23
|
}
|
|
@@ -24,12 +24,11 @@ function generateZodNumberSchema(args) {
|
|
|
24
24
|
// maxLength
|
|
25
25
|
if (args.maxLength)
|
|
26
26
|
validations.push((0, generate_zod_max_1.generateZodMax)(args.maxLength));
|
|
27
|
-
// 0 falsy value
|
|
28
27
|
// minimum
|
|
29
|
-
if (
|
|
28
|
+
if (args.minimum)
|
|
30
29
|
validations.push((0, generate_zod_min_1.generateZodMin)(args.minimum));
|
|
31
30
|
// maximum
|
|
32
|
-
if (
|
|
31
|
+
if (args.maximum)
|
|
33
32
|
validations.push((0, generate_zod_max_1.generateZodMax)(args.maximum));
|
|
34
33
|
// default
|
|
35
34
|
if (args.default)
|
|
@@ -37,5 +36,33 @@ function generateZodNumberSchema(args) {
|
|
|
37
36
|
// example
|
|
38
37
|
if (args.example)
|
|
39
38
|
validations.push((0, generate_zod_to_openapi_1.generateZodToOpenAPI)(args.example, args.paramName, args.isPath));
|
|
39
|
+
// 0 falsy value
|
|
40
|
+
// minimum === 0
|
|
41
|
+
// positive
|
|
42
|
+
if (args.minimum === 0 && args.exclusiveMinimum) {
|
|
43
|
+
validations.push('.positive()');
|
|
44
|
+
}
|
|
45
|
+
// nonpositive
|
|
46
|
+
if (args.minimum === 0 && !args.exclusiveMinimum) {
|
|
47
|
+
validations.push('.nonpositive()');
|
|
48
|
+
}
|
|
49
|
+
// negative
|
|
50
|
+
if (args.maximum === 0 && args.exclusiveMaximum) {
|
|
51
|
+
validations.push('.negative()');
|
|
52
|
+
}
|
|
53
|
+
// gt
|
|
54
|
+
if (args.minimum) {
|
|
55
|
+
if (args.minimum > 0 && args.exclusiveMinimum) {
|
|
56
|
+
const res = `.gt(${args.minimum})`;
|
|
57
|
+
validations.push(res);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// lt
|
|
61
|
+
if (args.maximum) {
|
|
62
|
+
if (args.maximum > 0 && args.exclusiveMaximum) {
|
|
63
|
+
const res = `.lt(${args.maximum})`;
|
|
64
|
+
validations.push(res);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
40
67
|
return validations.join('');
|
|
41
68
|
}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateZodObject = generateZodObject;
|
|
4
4
|
const generate_zod_record_schema_1 = require("./generate-zod-record-schema");
|
|
5
|
-
const generate_allof_code_1 = require("../hono/openapi/component/allof/generate-allof-code");
|
|
6
|
-
const generate_oneof_code_1 = require("../hono/openapi/component/oneof/generate-oneof-code");
|
|
7
|
-
const generate_anyof_code_1 = require("../hono/openapi/component/anyof/generate-anyof-code");
|
|
5
|
+
const generate_allof_code_1 = require("../zod-openapi-hono/openapi/component/allof/generate-allof-code");
|
|
6
|
+
const generate_oneof_code_1 = require("../zod-openapi-hono/openapi/component/oneof/generate-oneof-code");
|
|
7
|
+
const generate_anyof_code_1 = require("../zod-openapi-hono/openapi/component/anyof/generate-anyof-code");
|
|
8
8
|
const generate_zod_properties_schema_1 = require("./generate-zod-properties-schema");
|
|
9
9
|
function generateZodObject(schema, config) {
|
|
10
10
|
if (schema.additionalProperties)
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { Schema } from '../../types';
|
|
2
|
-
import type { Config } from '../../config';
|
|
3
1
|
/**
|
|
4
2
|
* Generates a Zod schema string for a given OpenAPI schema definition
|
|
5
3
|
*
|
|
@@ -23,4 +21,13 @@ import type { Config } from '../../config';
|
|
|
23
21
|
* generatePropertySchema({ type: 'string' })
|
|
24
22
|
* // Returns: 'z.string()'
|
|
25
23
|
*/
|
|
24
|
+
import type { Schema } from '../../types';
|
|
25
|
+
import type { Config } from '../../config';
|
|
26
|
+
/**
|
|
27
|
+
* generatePropertySchema
|
|
28
|
+
* generate property schema
|
|
29
|
+
*
|
|
30
|
+
* @param schema
|
|
31
|
+
* @param config
|
|
32
|
+
*/
|
|
26
33
|
export declare function generatePropertySchema(schema: Schema, config: Config): string;
|
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generatePropertySchema = generatePropertySchema;
|
|
4
|
-
const get_ref_name_1 = require("../../core/schema/references/get-ref-name");
|
|
5
|
-
const generate_zod_array_1 = require("./generate-zod-array");
|
|
6
|
-
const generate_zod_schema_1 = require("./schema/generate-zod-schema");
|
|
7
|
-
const get_variable_schema_name_helper_1 = require("../../core/helper/get-variable-schema-name-helper");
|
|
8
|
-
// import { generateZodOpenAPIExample } from './generate-zod-openapi-example'
|
|
9
2
|
/**
|
|
10
3
|
* Generates a Zod schema string for a given OpenAPI schema definition
|
|
11
4
|
*
|
|
@@ -29,23 +22,26 @@ const get_variable_schema_name_helper_1 = require("../../core/helper/get-variabl
|
|
|
29
22
|
* generatePropertySchema({ type: 'string' })
|
|
30
23
|
* // Returns: 'z.string()'
|
|
31
24
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.generatePropertySchema = generatePropertySchema;
|
|
27
|
+
const generate_zod_schema_1 = require("./schema/generate-zod-schema");
|
|
28
|
+
const is_schema_reference_1 = require("../../core/validator/is-schema-reference");
|
|
29
|
+
const is_array_with_schema_reference_1 = require("../../core/validator/is-array-with-schema-reference");
|
|
30
|
+
const generate_reference_schema_1 = require("./reference/generate-reference-schema");
|
|
31
|
+
const generate_array_reference_schema_1 = require("./reference/generate-array-reference-schema");
|
|
32
|
+
/**
|
|
33
|
+
* generatePropertySchema
|
|
34
|
+
* generate property schema
|
|
35
|
+
*
|
|
36
|
+
* @param schema
|
|
37
|
+
* @param config
|
|
38
|
+
*/
|
|
39
|
+
function generatePropertySchema(schema, config) {
|
|
40
|
+
if ((0, is_schema_reference_1.isSchemaReference)(schema)) {
|
|
41
|
+
return (0, generate_reference_schema_1.generateReferenceSchema)(schema, config);
|
|
42
42
|
}
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
if (refName) {
|
|
46
|
-
const variableName = (0, get_variable_schema_name_helper_1.getVariableSchemaNameHelper)(refName, config);
|
|
47
|
-
return (0, generate_zod_array_1.generateZodArray)(variableName);
|
|
48
|
-
}
|
|
43
|
+
if ((0, is_array_with_schema_reference_1.isArrayWithSchemaReference)(schema)) {
|
|
44
|
+
return (0, generate_array_reference_schema_1.generateArrayReferenceSchema)(schema, config);
|
|
49
45
|
}
|
|
50
46
|
return (0, generate_zod_schema_1.generateZodSchema)(config, schema, undefined, undefined);
|
|
51
47
|
}
|
|
@@ -61,6 +61,9 @@ function generateZodStringSchema(args) {
|
|
|
61
61
|
// default
|
|
62
62
|
if (args.default)
|
|
63
63
|
validations.push((0, generate_zod_default_1.generateZodDefault)(args.default));
|
|
64
|
+
// nullable
|
|
65
|
+
if (args.nullable)
|
|
66
|
+
validations.push('.nullable()');
|
|
64
67
|
// example
|
|
65
68
|
if (args.example)
|
|
66
69
|
validations.push((0, generate_zod_to_openapi_1.generateZodToOpenAPI)(args.example, args.paramName, args.isPath));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Config } from '../../../config';
|
|
2
|
+
import type { Schema } from '../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* generateArrayReferenceSchema
|
|
5
|
+
* generate array reference schema
|
|
6
|
+
*
|
|
7
|
+
* @param schema
|
|
8
|
+
* @param config
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateArrayReferenceSchema(schema: Schema, config: Config): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateArrayReferenceSchema = generateArrayReferenceSchema;
|
|
4
|
+
const get_variable_schema_name_helper_1 = require("../../../core/helper/get-variable-schema-name-helper");
|
|
5
|
+
const get_ref_name_1 = require("../../../core/schema/references/get-ref-name");
|
|
6
|
+
const generate_zod_array_1 = require("../generate-zod-array");
|
|
7
|
+
/**
|
|
8
|
+
* generateArrayReferenceSchema
|
|
9
|
+
* generate array reference schema
|
|
10
|
+
*
|
|
11
|
+
* @param schema
|
|
12
|
+
* @param config
|
|
13
|
+
*/
|
|
14
|
+
function generateArrayReferenceSchema(schema, config) {
|
|
15
|
+
if (!schema.items?.$ref) {
|
|
16
|
+
return 'z.array(z.any())';
|
|
17
|
+
}
|
|
18
|
+
const refName = (0, get_ref_name_1.getRefName)(schema.items?.$ref);
|
|
19
|
+
if (!refName) {
|
|
20
|
+
return 'z.array(z.any())';
|
|
21
|
+
}
|
|
22
|
+
const variableName = (0, get_variable_schema_name_helper_1.getVariableSchemaNameHelper)(refName, config);
|
|
23
|
+
return (0, generate_zod_array_1.generateZodArray)(variableName);
|
|
24
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Config } from '../../../config';
|
|
2
|
+
import type { Schema } from '../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* generateReferenceSchema
|
|
5
|
+
* generate reference schema
|
|
6
|
+
*
|
|
7
|
+
* @param schema
|
|
8
|
+
* @param config
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateReferenceSchema(schema: Schema, config: Config): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateReferenceSchema = generateReferenceSchema;
|
|
4
|
+
const get_variable_schema_name_helper_1 = require("../../../core/helper/get-variable-schema-name-helper");
|
|
5
|
+
const get_ref_name_1 = require("../../../core/schema/references/get-ref-name");
|
|
6
|
+
/**
|
|
7
|
+
* generateReferenceSchema
|
|
8
|
+
* generate reference schema
|
|
9
|
+
*
|
|
10
|
+
* @param schema
|
|
11
|
+
* @param config
|
|
12
|
+
*/
|
|
13
|
+
function generateReferenceSchema(schema, config) {
|
|
14
|
+
if (!schema.$ref) {
|
|
15
|
+
return 'z.any()';
|
|
16
|
+
}
|
|
17
|
+
const refName = (0, get_ref_name_1.getRefName)(schema.$ref);
|
|
18
|
+
if (!refName) {
|
|
19
|
+
return 'z.any()';
|
|
20
|
+
}
|
|
21
|
+
return (0, get_variable_schema_name_helper_1.getVariableSchemaNameHelper)(refName, config) || 'z.any()';
|
|
22
|
+
}
|
|
@@ -6,12 +6,14 @@ const generate_zod_string_schema_1 = require("../generate-zod-string-schema");
|
|
|
6
6
|
const is_format_string_1 = require("../../../core/validator/is-format-string");
|
|
7
7
|
const generate_zod_number_schema_1 = require("../generate-zod-number-schema");
|
|
8
8
|
const generate_zod_integer_schema_1 = require("../generate-zod-integer-schema");
|
|
9
|
-
const generate_allof_code_1 = require("../../hono/openapi/component/allof/generate-allof-code");
|
|
10
|
-
const generate_anyof_code_1 = require("../../hono/openapi/component/anyof/generate-anyof-code");
|
|
11
|
-
const generate_oneof_code_1 = require("../../hono/openapi/component/oneof/generate-oneof-code");
|
|
9
|
+
const generate_allof_code_1 = require("../../zod-openapi-hono/openapi/component/allof/generate-allof-code");
|
|
10
|
+
const generate_anyof_code_1 = require("../../zod-openapi-hono/openapi/component/anyof/generate-anyof-code");
|
|
11
|
+
const generate_oneof_code_1 = require("../../zod-openapi-hono/openapi/component/oneof/generate-oneof-code");
|
|
12
12
|
const get_variable_schema_name_helper_1 = require("../../../core/helper/get-variable-schema-name-helper");
|
|
13
13
|
const generate_zod_object_1 = require("../generate-zod-object");
|
|
14
14
|
const generate_zod_enum_1 = require("../generate-zod-enum");
|
|
15
|
+
const generate_zod_max_1 = require("../generate-zod-max");
|
|
16
|
+
const generate_zod_min_1 = require("../generate-zod-min");
|
|
15
17
|
/**
|
|
16
18
|
* Mapping of OpenAPI/JSON Schema types to Zod schema strings
|
|
17
19
|
*
|
|
@@ -106,6 +108,7 @@ function generateZodSchema(config, schema, paramName, isPath) {
|
|
|
106
108
|
minLength: schema.minLength,
|
|
107
109
|
maxLength: schema.maxLength,
|
|
108
110
|
format: schema.format && (0, is_format_string_1.isFormatString)(schema.format) ? schema.format : undefined,
|
|
111
|
+
nullable: schema.nullable,
|
|
109
112
|
default: schema.default,
|
|
110
113
|
example: schema.example,
|
|
111
114
|
paramName,
|
|
@@ -114,7 +117,7 @@ function generateZodSchema(config, schema, paramName, isPath) {
|
|
|
114
117
|
}
|
|
115
118
|
// number
|
|
116
119
|
if (schema.type === 'number') {
|
|
117
|
-
|
|
120
|
+
const res = (0, generate_zod_number_schema_1.generateZodNumberSchema)({
|
|
118
121
|
pattern: schema.pattern,
|
|
119
122
|
minLength: schema.minLength,
|
|
120
123
|
maxLength: schema.maxLength,
|
|
@@ -124,7 +127,18 @@ function generateZodSchema(config, schema, paramName, isPath) {
|
|
|
124
127
|
example: schema.example,
|
|
125
128
|
paramName,
|
|
126
129
|
isPath,
|
|
130
|
+
exclusiveMinimum: schema.exclusiveMinimum,
|
|
131
|
+
exclusiveMaximum: schema.exclusiveMaximum,
|
|
127
132
|
});
|
|
133
|
+
// gt
|
|
134
|
+
if (res.includes(`min(${schema.minimum})`) && res.includes(`gt(${schema.minimum})`)) {
|
|
135
|
+
return res.replace(`.min(${schema.minimum})`, '');
|
|
136
|
+
}
|
|
137
|
+
// lt
|
|
138
|
+
if (res.includes(`max(${schema.maximum})`) && res.includes(`lt(${schema.maximum})`)) {
|
|
139
|
+
return res.replace(`.max(${schema.maximum})`, '');
|
|
140
|
+
}
|
|
141
|
+
return res;
|
|
128
142
|
}
|
|
129
143
|
// integer
|
|
130
144
|
if (schema.type === 'integer') {
|
|
@@ -140,8 +154,28 @@ function generateZodSchema(config, schema, paramName, isPath) {
|
|
|
140
154
|
});
|
|
141
155
|
}
|
|
142
156
|
// array
|
|
143
|
-
if (schema.type === 'array' && schema.items)
|
|
157
|
+
if (schema.type === 'array' && schema.items) {
|
|
158
|
+
if (schema.minItems && schema.maxItems) {
|
|
159
|
+
const minItemsSchema = (0, generate_zod_min_1.generateZodMin)(schema.minItems);
|
|
160
|
+
const maxItemsSchema = (0, generate_zod_max_1.generateZodMax)(schema.maxItems);
|
|
161
|
+
const zodArray = (0, generate_zod_array_1.generateZodArray)(generateZodSchema(config, schema.items, undefined, undefined));
|
|
162
|
+
const res = `${zodArray}${minItemsSchema}${maxItemsSchema}`;
|
|
163
|
+
return res;
|
|
164
|
+
}
|
|
165
|
+
if (schema.minItems) {
|
|
166
|
+
const minItemsSchema = (0, generate_zod_min_1.generateZodMin)(schema.minItems);
|
|
167
|
+
const zodArray = (0, generate_zod_array_1.generateZodArray)(generateZodSchema(config, schema.items, undefined, undefined));
|
|
168
|
+
const res = `${zodArray}${minItemsSchema}`;
|
|
169
|
+
return res;
|
|
170
|
+
}
|
|
171
|
+
if (schema.maxItems) {
|
|
172
|
+
const maxItemsSchema = (0, generate_zod_max_1.generateZodMax)(schema.maxItems);
|
|
173
|
+
const zodArray = (0, generate_zod_array_1.generateZodArray)(generateZodSchema(config, schema.items, undefined, undefined));
|
|
174
|
+
const res = `${zodArray}${maxItemsSchema}`;
|
|
175
|
+
return res;
|
|
176
|
+
}
|
|
144
177
|
return (0, generate_zod_array_1.generateZodArray)(generateZodSchema(config, schema.items, undefined, undefined));
|
|
178
|
+
}
|
|
145
179
|
if (schema.allOf) {
|
|
146
180
|
return (0, generate_allof_code_1.generateAllOfCode)(schema, config);
|
|
147
181
|
}
|
package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-apply-openapi-routes.js
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateApplyOpenapiRoutes = generateApplyOpenapiRoutes;
|
|
4
|
-
const generate_app_route_handler_1 = require("
|
|
4
|
+
const generate_app_route_handler_1 = require("../generate-app-route-handler");
|
|
5
5
|
function generateApplyOpenapiRoutes(routeMappings) {
|
|
6
6
|
return routeMappings
|
|
7
7
|
.map(({ routeName, handlerName }) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getRouteMaps = getRouteMaps;
|
|
4
|
-
const generate_handler_name_1 = require("
|
|
4
|
+
const generate_handler_name_1 = require("../../handler/generate-handler-name");
|
|
5
5
|
const generate_route_name_1 = require("../../openapi/route/generate-route-name");
|
|
6
6
|
function getRouteMaps(openAPISpec) {
|
|
7
7
|
const paths = openAPISpec.paths;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateApp = generateApp;
|
|
4
|
-
const generate_docs_1 = require("
|
|
4
|
+
const generate_docs_1 = require("./docs/generate-docs");
|
|
5
5
|
const get_handler_imports_1 = require("../handler/import/get-handler-imports");
|
|
6
6
|
const get_route_maps_1 = require("./helper/get-route-maps");
|
|
7
7
|
const generate_import_handlers_1 = require("../handler/import/generate-import-handlers");
|
|
8
|
-
const generate_register_component_1 = require("
|
|
8
|
+
const generate_register_component_1 = require("./register-component/generate-register-component");
|
|
9
9
|
const generate_import_routes_1 = require("./generators/generate-import-routes");
|
|
10
10
|
const generate_apply_openapi_routes_1 = require("./generators/generate-apply-openapi-routes");
|
|
11
11
|
const process_import_map_1 = require("./helper/process-import-map");
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { SecuritySchemes } from '
|
|
1
|
+
import type { SecuritySchemes } from '../../../../types';
|
|
2
2
|
export declare function generateRegisterComponent(securitySchemes: SecuritySchemes): string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateHandlerName = generateHandlerName;
|
|
4
|
-
const generate_route_name_1 = require("../
|
|
4
|
+
const generate_route_name_1 = require("../openapi/route/generate-route-name");
|
|
5
5
|
function generateHandlerName(method, path) {
|
|
6
6
|
return `${(0, generate_route_name_1.generateRouteName)(method, path)}Handler`;
|
|
7
7
|
}
|
package/dist/generators/{hono → zod-openapi-hono}/handler/generate-zod-openapi-hono-handler.js
RENAMED
|
@@ -5,11 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.generateZodOpenapiHonoHandler = generateZodOpenapiHonoHandler;
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
-
const generate_handler_1 = require("
|
|
8
|
+
const generate_handler_1 = require("./generate-handler");
|
|
9
9
|
const generate_route_name_1 = require("../openapi/route/generate-route-name");
|
|
10
10
|
const group_handlers_by_file_name_helper_1 = require("./helper/group-handlers-by-file-name-helper");
|
|
11
11
|
const format_1 = require("../../../format");
|
|
12
|
-
const generate_handler_name_1 = require("
|
|
12
|
+
const generate_handler_name_1 = require("../handler/generate-handler-name");
|
|
13
13
|
const ROUTE_HANDLER = `import type { RouteHandler } from '@hono/zod-openapi'`;
|
|
14
14
|
async function generateZodOpenapiHonoHandler(openapi, config) {
|
|
15
15
|
const paths = openapi.paths;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.groupHandlersByFileNameHelper = groupHandlersByFileNameHelper;
|
|
4
|
+
function groupHandlersByFileNameHelper(handlers) {
|
|
5
|
+
return Array.from(handlers
|
|
6
|
+
.reduce((acc, handler) => {
|
|
7
|
+
const existing = acc.get(handler.fileName);
|
|
8
|
+
const mergedHandler = {
|
|
9
|
+
fileName: handler.fileName,
|
|
10
|
+
testFileName: handler.testFileName,
|
|
11
|
+
routeHandlerContents: existing
|
|
12
|
+
? [...existing.routeHandlerContents, ...handler.routeHandlerContents]
|
|
13
|
+
: [...handler.routeHandlerContents],
|
|
14
|
+
routeNames: existing
|
|
15
|
+
? [...existing.routeNames, ...handler.routeNames]
|
|
16
|
+
: [...handler.routeNames],
|
|
17
|
+
};
|
|
18
|
+
return acc.set(handler.fileName, mergedHandler);
|
|
19
|
+
}, new Map())
|
|
20
|
+
.values());
|
|
21
|
+
}
|
|
@@ -23,9 +23,7 @@ const is_operation_1 = require("../../../../core/validator/is-operation");
|
|
|
23
23
|
* - Generates type-safe route handlers using zod validation
|
|
24
24
|
* - Combines all routes with proper spacing
|
|
25
25
|
*/
|
|
26
|
-
function generateRouteCode(openAPIPaths,
|
|
27
|
-
// namingCase: 'camelCase' | 'PascalCase' = 'camelCase',
|
|
28
|
-
config) {
|
|
26
|
+
function generateRouteCode(openAPIPaths, config) {
|
|
29
27
|
const routes = [];
|
|
30
28
|
// 1. flattening and processing OpenAPI paths
|
|
31
29
|
for (const [path, pathItem] of Object.entries(openAPIPaths)) {
|