hono-takibi 0.5.5 → 0.5.7

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 (36) hide show
  1. package/README.md +1 -1
  2. package/dist/core/schema/references/extract-refs.d.ts +6 -0
  3. package/dist/core/schema/references/extract-refs.js +6 -0
  4. package/dist/core/schema/references/get-ref-schema-name.d.ts +1 -0
  5. package/dist/core/schema/references/get-ref-schema-name.js +1 -0
  6. package/dist/core/schema/references/traverse-schema-dependencies.d.ts +7 -0
  7. package/dist/core/schema/references/traverse-schema-dependencies.js +7 -0
  8. package/dist/core/validator/is-format-number.d.ts +0 -1
  9. package/dist/core/validator/is-format-number.js +0 -1
  10. package/dist/core/validator/is-ref-object.d.ts +7 -0
  11. package/dist/core/validator/is-ref-object.js +7 -0
  12. package/dist/core/validator/is-schema-reference.d.ts +2 -2
  13. package/dist/core/validator/is-schema-reference.js +2 -2
  14. package/dist/generator/zod/generate-zod-enum.js +4 -0
  15. package/dist/generator/zod/property/generate-zod-properties-schema.js +1 -3
  16. package/dist/generator/zod-openapi-hono/app/docs/generate-docs.d.ts +7 -0
  17. package/dist/generator/zod-openapi-hono/app/docs/generate-docs.js +7 -0
  18. package/dist/generator/zod-openapi-hono/app/generate-app-route-handler.d.ts +8 -0
  19. package/dist/generator/zod-openapi-hono/app/generate-app-route-handler.js +8 -0
  20. package/dist/generator/zod-openapi-hono/app/index.d.ts +7 -0
  21. package/dist/generator/zod-openapi-hono/app/index.js +7 -0
  22. package/dist/generator/zod-openapi-hono/app/register-component/generate-register-component.d.ts +7 -0
  23. package/dist/generator/zod-openapi-hono/app/register-component/generate-register-component.js +7 -0
  24. package/dist/generator/zod-openapi-hono/handler/generate-handler-name.d.ts +8 -0
  25. package/dist/generator/zod-openapi-hono/handler/generate-handler-name.js +8 -0
  26. package/dist/generator/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.d.ts +7 -0
  27. package/dist/generator/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.js +7 -0
  28. package/dist/generator/zod-openapi-hono/handler/import/generate-import-handlers.d.ts +8 -0
  29. package/dist/generator/zod-openapi-hono/handler/import/generate-import-handlers.js +8 -0
  30. package/dist/generator/zod-openapi-hono/handler/import/get-handler-imports.d.ts +7 -0
  31. package/dist/generator/zod-openapi-hono/handler/import/get-handler-imports.js +7 -0
  32. package/dist/generator/zod-openapi-hono/openapi/component/generate-components-code.js +1 -3
  33. package/dist/index.js +1 -1
  34. package/dist/type/index.d.ts +1 -1
  35. package/dist/vite-plugin/index.js +1 -1
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -564,4 +564,4 @@ Let's make this tool better together! 🔥
564
564
 
565
565
  ## License
566
566
 
567
- Distributed under the MIT License. See [LICENSE](https://github.com/nakita-Ypm/hono-takibi?tab=MIT-1-ov-file) for more information.z
567
+ Distributed under the MIT License. See [LICENSE](https://github.com/nakita-Ypm/hono-takibi?tab=MIT-1-ov-file) for more information.
@@ -1,2 +1,8 @@
1
1
  import type { Schema } from '../../../type';
2
+ /**
3
+ * Extracts all references from a given schema
4
+ * @function extractRefs
5
+ * @param schema - The schema to extract references from
6
+ * @returns An array of reference names
7
+ */
2
8
  export declare function extractRefs(schema: Schema): string[];
@@ -2,6 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.extractRefs = extractRefs;
4
4
  const is_ref_object_1 = require("../../validator/is-ref-object");
5
+ /**
6
+ * Extracts all references from a given schema
7
+ * @function extractRefs
8
+ * @param schema - The schema to extract references from
9
+ * @returns An array of reference names
10
+ */
5
11
  function extractRefs(schema) {
6
12
  const refs = [];
7
13
  const traverse = (obj) => {
@@ -3,6 +3,7 @@ import type { Schema } from '../../../type';
3
3
  /**
4
4
  * Retrieves the referenced schema name from a schema object.
5
5
  *
6
+ * @function getRefSchemaName
6
7
  * @param schema - The schema object
7
8
  * @param config - The configuration object
8
9
  * @returns The referenced schema name
@@ -6,6 +6,7 @@ const get_ref_name_1 = require("./get-ref-name");
6
6
  /**
7
7
  * Retrieves the referenced schema name from a schema object.
8
8
  *
9
+ * @function getRefSchemaName
9
10
  * @param schema - The schema object
10
11
  * @param config - The configuration object
11
12
  * @returns The referenced schema name
@@ -1,2 +1,9 @@
1
1
  import type { Schema } from '../../../type';
2
+ /**
3
+ * Traverses the schema dependencies and returns them in topological order
4
+ *
5
+ * @function traverseSchemaDependencies
6
+ * @param schemaName - The name of the schema to traverse
7
+ * @param schemas - The schemas to traverse
8
+ */
2
9
  export declare function traverseSchemaDependencies(schemaName: string, schemas: Record<string, Schema>, visited: Set<string>, recursionStack: Set<string>, orderedSchemas: string[]): void;
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.traverseSchemaDependencies = traverseSchemaDependencies;
4
4
  const extract_refs_1 = require("./extract-refs");
5
+ /**
6
+ * Traverses the schema dependencies and returns them in topological order
7
+ *
8
+ * @function traverseSchemaDependencies
9
+ * @param schemaName - The name of the schema to traverse
10
+ * @param schemas - The schemas to traverse
11
+ */
5
12
  function traverseSchemaDependencies(schemaName, schemas, visited, recursionStack, orderedSchemas) {
6
13
  // Circular dependencies occur if they already exist on the recursing stack
7
14
  if (recursionStack.has(schemaName)) {
@@ -3,7 +3,6 @@ import type { Format, FormatNumber } from '../../type';
3
3
  * Checks if the format is a number type
4
4
  *
5
5
  * @function isFormatNumber
6
- *
7
6
  * @param format - OpenAPI format type
8
7
  * @returns true if the format is a number type, false otherwise
9
8
  */
@@ -5,7 +5,6 @@ exports.isFormatNumber = isFormatNumber;
5
5
  * Checks if the format is a number type
6
6
  *
7
7
  * @function isFormatNumber
8
- *
9
8
  * @param format - OpenAPI format type
10
9
  * @returns true if the format is a number type, false otherwise
11
10
  */
@@ -2,5 +2,12 @@ type RefObject = {
2
2
  $ref?: string;
3
3
  [key: string]: unknown;
4
4
  };
5
+ /**
6
+ * Checks if the value is a reference object
7
+ *
8
+ * @function isRefObject
9
+ * @param value - The value to check
10
+ * @returns true if the value is a reference object, false otherwise
11
+ */
5
12
  export declare function isRefObject(value: unknown): value is RefObject;
6
13
  export {};
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isRefObject = isRefObject;
4
+ /**
5
+ * Checks if the value is a reference object
6
+ *
7
+ * @function isRefObject
8
+ * @param value - The value to check
9
+ * @returns true if the value is a reference object, false otherwise
10
+ */
4
11
  function isRefObject(value) {
5
12
  return typeof value === 'object' && value !== null;
6
13
  }
@@ -1,7 +1,7 @@
1
1
  import type { Schema } from '../../type';
2
2
  /**
3
- * isSchemaReference
4
- * is schema reference
3
+ * Checks if the schema is a reference
4
+ *
5
5
  * @function isSchemaReference
6
6
  * @param schema
7
7
  * @returns boolean
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isSchemaReference = isSchemaReference;
4
4
  /**
5
- * isSchemaReference
6
- * is schema reference
5
+ * Checks if the schema is a reference
6
+ *
7
7
  * @function isSchemaReference
8
8
  * @param schema
9
9
  * @returns boolean
@@ -10,6 +10,10 @@ const generate_zod_to_openapi_1 = require("./openapi/generate-zod-to-openapi");
10
10
  * @returns string - Generated Zod enum string
11
11
  */
12
12
  function generateZodEnum(schema) {
13
+ if (!schema.enum) {
14
+ throw new Error('enum is not found');
15
+ }
16
+ // example
13
17
  if (schema.example) {
14
18
  const openapi_example = (0, generate_zod_to_openapi_1.generateZodToOpenAPI)(schema.example);
15
19
  return `z.enum(${JSON.stringify(schema.enum)})${openapi_example}`;
@@ -52,9 +52,7 @@ const generate_zod_property_schema_1 = require("./generate-zod-property-schema")
52
52
  * - Uses .partial() when no properties are required
53
53
  * - Maintains property order from input
54
54
  */
55
- function generateZodPropertiesSchema(properties, required,
56
- // namingCase: 'camelCase' | 'PascalCase' = 'camelCase',
57
- config) {
55
+ function generateZodPropertiesSchema(properties, required, config) {
58
56
  const objectProperties = Object.entries(properties).map(([key, schema]) => {
59
57
  const isRequired = required.includes(key);
60
58
  const propertySchema = (0, generate_zod_property_schema_1.generatePropertySchema)(schema, config);
@@ -1,4 +1,11 @@
1
1
  import type { OpenAPISpec } from '../../../../type';
2
+ /**
3
+ * Generate docs
4
+ *
5
+ * @function generateDocs
6
+ * @param openAPISpec - OpenAPI spec
7
+ * @returns docs
8
+ */
2
9
  export declare function generateDocs(openAPISpec: OpenAPISpec): {
3
10
  openapi: string | undefined;
4
11
  info: OpenAPISpec['info'];
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDocs = generateDocs;
4
+ /**
5
+ * Generate docs
6
+ *
7
+ * @function generateDocs
8
+ * @param openAPISpec - OpenAPI spec
9
+ * @returns docs
10
+ */
4
11
  function generateDocs(openAPISpec) {
5
12
  return {
6
13
  openapi: openAPISpec.openapi,
@@ -1 +1,9 @@
1
+ /**
2
+ * Generate app route handler
3
+ *
4
+ * @function generateAppRouteHandler
5
+ * @param routeName - Route name
6
+ * @param handlerName - Handler name
7
+ * @returns app route handler
8
+ */
1
9
  export declare function generateAppRouteHandler(routeName: string, handlerName: string): string;
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateAppRouteHandler = generateAppRouteHandler;
4
+ /**
5
+ * Generate app route handler
6
+ *
7
+ * @function generateAppRouteHandler
8
+ * @param routeName - Route name
9
+ * @param handlerName - Handler name
10
+ * @returns app route handler
11
+ */
4
12
  function generateAppRouteHandler(routeName, handlerName) {
5
13
  return `.openapi(${routeName},${handlerName})`;
6
14
  }
@@ -1,3 +1,10 @@
1
1
  import type { OpenAPISpec } from '../../../type';
2
2
  import type { Config } from '../../../config';
3
+ /**
4
+ * Generate app
5
+ *
6
+ * @function generateApp
7
+ * @param openAPISpec - OpenAPI spec
8
+ * @param config - Config
9
+ */
3
10
  export declare function generateApp(openAPISpec: OpenAPISpec, config: Config, env: string | undefined, basePath: string | undefined): string;
@@ -14,6 +14,13 @@ const SWAGGER_UI_IMPORT = `import { swaggerUI } from '@hono/swagger-ui'`;
14
14
  const APP = 'const app = new OpenAPIHono()';
15
15
  const ADD_TYPE = 'export type AddType = typeof api';
16
16
  const EXPORT_APP = 'export default app';
17
+ /**
18
+ * Generate app
19
+ *
20
+ * @function generateApp
21
+ * @param openAPISpec - OpenAPI spec
22
+ * @param config - Config
23
+ */
17
24
  function generateApp(openAPISpec, config, env, basePath) {
18
25
  const routeMappings = (0, get_route_maps_1.getRouteMaps)(openAPISpec);
19
26
  const importsMap = (0, process_import_map_1.processImportMap)(routeMappings, config);
@@ -1,2 +1,9 @@
1
1
  import type { SecuritySchemes } from '../../../../type';
2
+ /**
3
+ * Generate register component
4
+ *
5
+ * @function generateRegisterComponent
6
+ * @param securitySchemes - Security schemes
7
+ * @returns register component
8
+ */
2
9
  export declare function generateRegisterComponent(securitySchemes: SecuritySchemes): string;
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateRegisterComponent = generateRegisterComponent;
4
+ /**
5
+ * Generate register component
6
+ *
7
+ * @function generateRegisterComponent
8
+ * @param securitySchemes - Security schemes
9
+ * @returns register component
10
+ */
4
11
  function generateRegisterComponent(securitySchemes) {
5
12
  return Object.entries(securitySchemes)
6
13
  .map(([name, scheme]) => {
@@ -1 +1,9 @@
1
+ /**
2
+ * Generate handler name
3
+ *
4
+ * @function generateHandlerName
5
+ * @param method - Method
6
+ * @param path - Path
7
+ * @returns Handler name
8
+ */
1
9
  export declare function generateHandlerName(method: string, path: string): string;
@@ -2,6 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateHandlerName = generateHandlerName;
4
4
  const generate_route_name_1 = require("../openapi/route/generate-route-name");
5
+ /**
6
+ * Generate handler name
7
+ *
8
+ * @function generateHandlerName
9
+ * @param method - Method
10
+ * @param path - Path
11
+ * @returns Handler name
12
+ */
5
13
  function generateHandlerName(method, path) {
6
14
  return `${(0, generate_route_name_1.generateRouteName)(method, path)}Handler`;
7
15
  }
@@ -1,2 +1,9 @@
1
1
  import type { HandlerOutput } from '../generate-zod-openapi-hono-handler';
2
+ /**
3
+ * Group handlers by file name helper
4
+ *
5
+ * @function groupHandlersByFileNameHelper
6
+ * @param handlers - Handlers
7
+ * @returns Grouped handlers
8
+ */
2
9
  export declare function groupHandlersByFileNameHelper(handlers: HandlerOutput[]): HandlerOutput[];
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.groupHandlersByFileNameHelper = groupHandlersByFileNameHelper;
4
+ /**
5
+ * Group handlers by file name helper
6
+ *
7
+ * @function groupHandlersByFileNameHelper
8
+ * @param handlers - Handlers
9
+ * @returns Grouped handlers
10
+ */
4
11
  function groupHandlersByFileNameHelper(handlers) {
5
12
  return Array.from(handlers
6
13
  .reduce((acc, handler) => {
@@ -1,4 +1,12 @@
1
1
  import type { Config } from '../../../../config';
2
+ /**
3
+ * Generate import handlers
4
+ *
5
+ * @function generateImportHandlers
6
+ * @param handlerImportsMap - Handler imports map
7
+ * @param config - Config
8
+ * @returns Import handlers
9
+ */
2
10
  export declare function generateImportHandlers(handlerImportsMap: {
3
11
  [fileName: string]: string[];
4
12
  }, config: Config): string[];
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateImportHandlers = generateImportHandlers;
4
+ /**
5
+ * Generate import handlers
6
+ *
7
+ * @function generateImportHandlers
8
+ * @param handlerImportsMap - Handler imports map
9
+ * @param config - Config
10
+ * @returns Import handlers
11
+ */
4
12
  function generateImportHandlers(handlerImportsMap, config) {
5
13
  const importHandlers = [];
6
14
  for (const [fileName, handlers] of Object.entries(handlerImportsMap)) {
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Get handler imports
3
+ *
4
+ * @function getHandlerImports
5
+ * @param handlerMaps - Handler maps
6
+ * @returns Handler imports
7
+ */
1
8
  export declare function getHandlerImports(handlerMaps: {
2
9
  routeName: string;
3
10
  handlerName: string;
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getHandlerImports = getHandlerImports;
4
+ /**
5
+ * Get handler imports
6
+ *
7
+ * @function getHandlerImports
8
+ * @param handlerMaps - Handler maps
9
+ * @returns Handler imports
10
+ */
4
11
  function getHandlerImports(handlerMaps) {
5
12
  const getHandlerImports = {};
6
13
  for (const { handlerName, path } of handlerMaps) {
@@ -22,9 +22,7 @@ const get_variable_schema_name_helper_1 = require("../../../../core/helper/get-v
22
22
  * 5. Creates exports for all schemas
23
23
  * 6. Returns the complete code with proper ordering to avoid reference errors
24
24
  */
25
- function generateComponentsCode(components,
26
- // namingCase: 'camelCase' | 'PascalCase' = 'camelCase',
27
- config) {
25
+ function generateComponentsCode(components, config) {
28
26
  // 1. schema extraction
29
27
  const { schemas } = components;
30
28
  if (!schemas) {
package/dist/index.js CHANGED
@@ -34,7 +34,7 @@ const node_process_1 = require("node:process");
34
34
  */
35
35
  async function main(dev = false, config = (0, config_1.getConfig)()) {
36
36
  // argv ['**/bin/node', '**/dist/index.js', 'example/pet-store.yaml', '-o', 'routes/petstore-index.ts']
37
- if (!node_process_1.argv.includes('-o')) {
37
+ if (config.output === undefined && !node_process_1.argv.includes('-o')) {
38
38
  console.error('Usage: hono-takibi <input-file> [-o output-file]');
39
39
  process.exit(1);
40
40
  }
@@ -24,7 +24,7 @@ export type OpenAPIPaths = {
24
24
  /**
25
25
  * HTTP methods supported in OpenAPI
26
26
  */
27
- export type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head' | 'trace';
27
+ export type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'options' | 'trace';
28
28
  /**
29
29
  * Data types supported in OpenAPI schemas
30
30
  */
@@ -6,7 +6,7 @@ const vite_mode_1 = require("./vite-mode");
6
6
  function honoTakibiPlugin() {
7
7
  return {
8
8
  name: 'hono-takibi-plugin',
9
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
9
+ // biome-ignore lint/suspicious/noExplicitAny:
10
10
  configureServer(server) {
11
11
  const config = (0, config_1.getConfig)();
12
12
  server.watcher.on('change', () => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hono-takibi",
3
3
  "description": "Hono Takibi is a CLI tool that generates Hono routes from OpenAPI specifications.",
4
- "version": "0.5.5",
4
+ "version": "0.5.7",
5
5
  "license": "MIT",
6
6
  "keywords": [
7
7
  "hono",