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.
- package/README.md +1 -1
- package/dist/core/schema/references/extract-refs.d.ts +6 -0
- package/dist/core/schema/references/extract-refs.js +6 -0
- package/dist/core/schema/references/get-ref-schema-name.d.ts +1 -0
- package/dist/core/schema/references/get-ref-schema-name.js +1 -0
- package/dist/core/schema/references/traverse-schema-dependencies.d.ts +7 -0
- package/dist/core/schema/references/traverse-schema-dependencies.js +7 -0
- package/dist/core/validator/is-format-number.d.ts +0 -1
- package/dist/core/validator/is-format-number.js +0 -1
- package/dist/core/validator/is-ref-object.d.ts +7 -0
- package/dist/core/validator/is-ref-object.js +7 -0
- package/dist/core/validator/is-schema-reference.d.ts +2 -2
- package/dist/core/validator/is-schema-reference.js +2 -2
- package/dist/generator/zod/generate-zod-enum.js +4 -0
- package/dist/generator/zod/property/generate-zod-properties-schema.js +1 -3
- package/dist/generator/zod-openapi-hono/app/docs/generate-docs.d.ts +7 -0
- package/dist/generator/zod-openapi-hono/app/docs/generate-docs.js +7 -0
- package/dist/generator/zod-openapi-hono/app/generate-app-route-handler.d.ts +8 -0
- package/dist/generator/zod-openapi-hono/app/generate-app-route-handler.js +8 -0
- package/dist/generator/zod-openapi-hono/app/index.d.ts +7 -0
- package/dist/generator/zod-openapi-hono/app/index.js +7 -0
- package/dist/generator/zod-openapi-hono/app/register-component/generate-register-component.d.ts +7 -0
- package/dist/generator/zod-openapi-hono/app/register-component/generate-register-component.js +7 -0
- package/dist/generator/zod-openapi-hono/handler/generate-handler-name.d.ts +8 -0
- package/dist/generator/zod-openapi-hono/handler/generate-handler-name.js +8 -0
- package/dist/generator/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.d.ts +7 -0
- package/dist/generator/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.js +7 -0
- package/dist/generator/zod-openapi-hono/handler/import/generate-import-handlers.d.ts +8 -0
- package/dist/generator/zod-openapi-hono/handler/import/generate-import-handlers.js +8 -0
- package/dist/generator/zod-openapi-hono/handler/import/get-handler-imports.d.ts +7 -0
- package/dist/generator/zod-openapi-hono/handler/import/get-handler-imports.js +7 -0
- package/dist/generator/zod-openapi-hono/openapi/component/generate-components-code.js +1 -3
- package/dist/index.js +1 -1
- package/dist/type/index.d.ts +1 -1
- package/dist/vite-plugin/index.js +1 -1
- 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.
|
|
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)) {
|
|
@@ -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
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isSchemaReference = isSchemaReference;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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);
|
package/dist/generator/zod-openapi-hono/app/register-component/generate-register-component.d.ts
CHANGED
|
@@ -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;
|
package/dist/generator/zod-openapi-hono/app/register-component/generate-register-component.js
CHANGED
|
@@ -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]) => {
|
|
@@ -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
|
}
|
package/dist/generator/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.d.ts
CHANGED
|
@@ -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[];
|
package/dist/generator/zod-openapi-hono/handler/helper/group-handlers-by-file-name-helper.js
CHANGED
|
@@ -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,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
|
}
|
package/dist/type/index.d.ts
CHANGED
|
@@ -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' | '
|
|
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:
|
|
9
|
+
// biome-ignore lint/suspicious/noExplicitAny:
|
|
10
10
|
configureServer(server) {
|
|
11
11
|
const config = (0, config_1.getConfig)();
|
|
12
12
|
server.watcher.on('change', () => {
|