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.
Files changed (103) hide show
  1. package/dist/core/schema/references/resolve-schemas-dependencies.js +8 -43
  2. package/dist/core/schema/references/traverse-schema-dependencies.d.ts +2 -0
  3. package/dist/core/schema/references/traverse-schema-dependencies.js +30 -0
  4. package/dist/core/text/escape-str.d.ts +7 -0
  5. package/dist/core/text/escape-str.js +24 -0
  6. package/dist/core/validator/is-array-with-schema-reference.d.ts +8 -0
  7. package/dist/core/validator/is-array-with-schema-reference.js +12 -0
  8. package/dist/core/validator/is-schema-reference.d.ts +9 -0
  9. package/dist/core/validator/is-schema-reference.js +13 -0
  10. package/dist/generators/zod/generate-zod-enum.js +12 -0
  11. package/dist/generators/zod/generate-zod-number-schema.d.ts +2 -0
  12. package/dist/generators/zod/generate-zod-number-schema.js +30 -3
  13. package/dist/generators/zod/generate-zod-object.js +3 -3
  14. package/dist/generators/zod/generate-zod-property-schema.d.ts +9 -2
  15. package/dist/generators/zod/generate-zod-property-schema.js +19 -23
  16. package/dist/generators/zod/generate-zod-string-schema.d.ts +1 -0
  17. package/dist/generators/zod/generate-zod-string-schema.js +3 -0
  18. package/dist/generators/zod/reference/generate-array-reference-schema.d.ts +10 -0
  19. package/dist/generators/zod/reference/generate-array-reference-schema.js +24 -0
  20. package/dist/generators/zod/reference/generate-reference-schema.d.ts +10 -0
  21. package/dist/generators/zod/reference/generate-reference-schema.js +22 -0
  22. package/dist/generators/zod/schema/generate-zod-schema.js +39 -5
  23. package/dist/generators/{app → zod-openapi-hono/app}/docs/generate-docs.d.ts +1 -1
  24. package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-apply-openapi-routes.js +1 -1
  25. package/dist/generators/{hono → zod-openapi-hono}/app/helper/get-route-maps.js +1 -1
  26. package/dist/generators/{hono → zod-openapi-hono}/app/index.js +2 -2
  27. package/dist/generators/{app → zod-openapi-hono/app}/register-component/generate-register-component.d.ts +1 -1
  28. package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler-name.js +1 -1
  29. package/dist/generators/{hono → zod-openapi-hono}/handler/generate-zod-openapi-hono-handler.js +2 -2
  30. package/dist/generators/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.js +21 -0
  31. package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-code.js +1 -3
  32. package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route.js +4 -6
  33. package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-params-object.js +1 -3
  34. package/dist/generators/{hono → zod-openapi-hono}/openapi/route/response/generate-response-schema.js +4 -6
  35. package/dist/index.js +3 -3
  36. package/dist/types/index.d.ts +4 -0
  37. package/dist/vite-plugin/vite-mode.js +1 -1
  38. package/package.json +1 -1
  39. package/dist/core/schema/references/resolve-schema-order.d.ts +0 -30
  40. package/dist/core/schema/references/resolve-schema-order.js +0 -48
  41. package/dist/core/schema/references/resolve-schema-references.d.ts +0 -49
  42. package/dist/core/schema/references/resolve-schema-references.js +0 -61
  43. package/dist/core/text/escape-quote.d.ts +0 -8
  44. package/dist/core/text/escape-quote.js +0 -13
  45. package/dist/core/text/sanitize.d.ts +0 -1
  46. package/dist/core/text/sanitize.js +0 -6
  47. package/dist/generators/hono/handler/helper/group-handlers-by-file-name-helper.js +0 -24
  48. /package/dist/generators/{app → zod-openapi-hono/app}/docs/generate-docs.js +0 -0
  49. /package/dist/generators/{app → zod-openapi-hono/app}/generate-app-route-handler.d.ts +0 -0
  50. /package/dist/generators/{app → zod-openapi-hono/app}/generate-app-route-handler.js +0 -0
  51. /package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-apply-openapi-routes.d.ts +0 -0
  52. /package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-import-routes.d.ts +0 -0
  53. /package/dist/generators/{hono → zod-openapi-hono}/app/generators/generate-import-routes.js +0 -0
  54. /package/dist/generators/{hono → zod-openapi-hono}/app/helper/get-route-maps.d.ts +0 -0
  55. /package/dist/generators/{hono → zod-openapi-hono}/app/helper/process-import-map.d.ts +0 -0
  56. /package/dist/generators/{hono → zod-openapi-hono}/app/helper/process-import-map.js +0 -0
  57. /package/dist/generators/{hono → zod-openapi-hono}/app/index.d.ts +0 -0
  58. /package/dist/generators/{app → zod-openapi-hono/app}/register-component/generate-register-component.js +0 -0
  59. /package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler-name.d.ts +0 -0
  60. /package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler.d.ts +0 -0
  61. /package/dist/generators/{handler → zod-openapi-hono/handler}/generate-handler.js +0 -0
  62. /package/dist/generators/{hono → zod-openapi-hono}/handler/generate-zod-openapi-hono-handler.d.ts +0 -0
  63. /package/dist/generators/{hono → zod-openapi-hono}/handler/helper/group-handlers-by-file-name-helper.d.ts +0 -0
  64. /package/dist/generators/{hono → zod-openapi-hono}/handler/import/generate-import-handlers.d.ts +0 -0
  65. /package/dist/generators/{hono → zod-openapi-hono}/handler/import/generate-import-handlers.js +0 -0
  66. /package/dist/generators/{hono → zod-openapi-hono}/handler/import/get-handler-imports.d.ts +0 -0
  67. /package/dist/generators/{hono → zod-openapi-hono}/handler/import/get-handler-imports.js +0 -0
  68. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/generate-allof-code.d.ts +0 -0
  69. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/generate-allof-code.js +0 -0
  70. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/process/process-alllof.d.ts +0 -0
  71. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/allof/process/process-alllof.js +0 -0
  72. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/anyof/generate-anyof-code.d.ts +0 -0
  73. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/anyof/generate-anyof-code.js +0 -0
  74. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/generate-components-code.d.ts +0 -0
  75. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/generate-components-code.js +0 -0
  76. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/oneof/generate-oneof-code.d.ts +0 -0
  77. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/oneof/generate-oneof-code.js +0 -0
  78. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/schema/generate-schemas-export.d.ts +0 -0
  79. /package/dist/generators/{hono → zod-openapi-hono}/openapi/component/schema/generate-schemas-export.js +0 -0
  80. /package/dist/generators/{hono → zod-openapi-hono}/openapi/generate-zod-openapi-hono.d.ts +0 -0
  81. /package/dist/generators/{hono → zod-openapi-hono}/openapi/generate-zod-openapi-hono.js +0 -0
  82. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-create-route.d.ts +0 -0
  83. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-create-route.js +0 -0
  84. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-code.d.ts +0 -0
  85. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-name.d.ts +0 -0
  86. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route-name.js +0 -0
  87. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/generate-route.d.ts +0 -0
  88. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-params-object.d.ts +0 -0
  89. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-parameter.d.ts +0 -0
  90. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-parameter.js +0 -0
  91. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params-array.d.ts +0 -0
  92. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params-array.js +0 -0
  93. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params.d.ts +0 -0
  94. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/params/generate-request-params.js +0 -0
  95. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-insert-request-body.d.ts +0 -0
  96. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-insert-request-body.js +0 -0
  97. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-request-body.d.ts +0 -0
  98. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/body/generate-request-body.js +0 -0
  99. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/object/generate-format-request-object.d.ts +0 -0
  100. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/request/object/generate-format-request-object.js +0 -0
  101. /package/dist/generators/{hono → zod-openapi-hono}/openapi/route/response/generate-response-schema.d.ts +0 -0
  102. /package/dist/generators/{hono → zod-openapi-hono}/openapi/type/generate-types-code.d.ts +0 -0
  103. /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 extract_refs_1 = require("./extract-refs");
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 temp = {};
68
- const result = [];
69
- const visit = (schemaName) => {
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[schemaName]) {
94
- visit(schemaName);
58
+ if (!visited.has(schemaName)) {
59
+ (0, traverse_schema_dependencies_1.traverseSchemaDependencies)(schemaName, schemas, visited, recursionStack, orderedSchemas);
95
60
  }
96
61
  }
97
- return result;
62
+ return orderedSchemas;
98
63
  }
@@ -0,0 +1,2 @@
1
+ import type { Schema } from '../../../types';
2
+ export declare function traverseSchemaDependencies(schemaName: string, schemas: Record<string, Schema>, visited: Set<string>, recursionStack: Set<string>, orderedSchemas: string[]): void;
@@ -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,7 @@
1
+ /**
2
+ * Escapes text for use in TypeScript code
3
+ *
4
+ * @param text - The text to escape
5
+ * @returns The escaped text
6
+ */
7
+ export declare function escapeStr(text: string): string;
@@ -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,8 @@
1
+ import type { Schema } from '../../types';
2
+ /**
3
+ * array has $ref
4
+ *
5
+ * @param schema - schema
6
+ * @returns boolean
7
+ */
8
+ export declare function isArrayWithSchemaReference(schema: Schema): boolean;
@@ -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,9 @@
1
+ import type { Schema } from '../../types';
2
+ /**
3
+ * isSchemaReference
4
+ * is schema reference
5
+ *
6
+ * @param schema
7
+ * @returns boolean
8
+ */
9
+ export declare function isSchemaReference(schema: Schema): boolean;
@@ -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
  }
@@ -5,6 +5,8 @@ type GenerateZodNumberSchemaParams = {
5
5
  maxLength?: number;
6
6
  minimum?: number;
7
7
  maximum?: number;
8
+ exclusiveMinimum?: boolean;
9
+ exclusiveMaximum?: boolean;
8
10
  default?: DefaultValue;
9
11
  example?: ExampleValue;
10
12
  paramName?: string;
@@ -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 (typeof args.minimum === 'number')
28
+ if (args.minimum)
30
29
  validations.push((0, generate_zod_min_1.generateZodMin)(args.minimum));
31
30
  // maximum
32
- if (typeof args.maximum === 'number')
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
- function generatePropertySchema(schema,
33
- // namingCase: 'camelCase' | 'PascalCase' = 'camelCase',
34
- config) {
35
- if (schema.$ref) {
36
- const refName = (0, get_ref_name_1.getRefName)(schema.$ref);
37
- if (refName) {
38
- const variableName = (0, get_variable_schema_name_helper_1.getVariableSchemaNameHelper)(refName, config);
39
- // return getRefName(variableName) || 'z.any()'
40
- return variableName || 'z.any()';
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 (schema.type === 'array' && schema.items?.$ref) {
44
- const refName = (0, get_ref_name_1.getRefName)(schema.items.$ref);
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
  }
@@ -4,6 +4,7 @@ type GenerateZodStringSchemaParams = {
4
4
  minLength?: number;
5
5
  maxLength?: number;
6
6
  format?: FormatString;
7
+ nullable?: boolean;
7
8
  default?: DefaultValue;
8
9
  example?: ExampleValue;
9
10
  paramName?: string;
@@ -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
- return (0, generate_zod_number_schema_1.generateZodNumberSchema)({
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
  }
@@ -1,4 +1,4 @@
1
- import type { OpenAPISpec } from '../../../types';
1
+ import type { OpenAPISpec } from '../../../../types';
2
2
  export declare function generateDocs(openAPISpec: OpenAPISpec): {
3
3
  openapi: string | undefined;
4
4
  info: OpenAPISpec['info'];
@@ -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("../../../app/generate-app-route-handler");
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("../../../handler/generate-handler-name");
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("../../app/docs/generate-docs");
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("../../app/register-component/generate-register-component");
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 '../../../types';
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("../hono/openapi/route/generate-route-name");
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
  }
@@ -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("../../handler/generate-handler");
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("../../handler/generate-handler-name");
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)) {