hono-takibi 0.0.1
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 +471 -0
- package/dist/core/schema/references/find-references.d.ts +35 -0
- package/dist/core/schema/references/find-references.js +42 -0
- package/dist/core/schema/references/get-camel-case-schema-name.d.ts +7 -0
- package/dist/core/schema/references/get-camel-case-schema-name.js +14 -0
- package/dist/core/schema/references/get-ref-name.d.ts +38 -0
- package/dist/core/schema/references/get-ref-name.js +47 -0
- package/dist/core/schema/references/resolve-schema-order.d.ts +30 -0
- package/dist/core/schema/references/resolve-schema-order.js +48 -0
- package/dist/core/schema/references/resolve-schema-references.d.ts +49 -0
- package/dist/core/schema/references/resolve-schema-references.js +61 -0
- package/dist/core/schema/references/resolve-schemas-dependencies.d.ts +49 -0
- package/dist/core/schema/references/resolve-schemas-dependencies.js +65 -0
- package/dist/core/schema/references/traverse_schema.d.ts +48 -0
- package/dist/core/schema/references/traverse_schema.js +70 -0
- package/dist/core/text/capitalize.d.ts +18 -0
- package/dist/core/text/capitalize.js +23 -0
- package/dist/core/text/decapitalize.d.ts +17 -0
- package/dist/core/text/decapitalize.js +22 -0
- package/dist/core/text/remove-zod-prefix.d.ts +8 -0
- package/dist/core/text/remove-zod-prefix.js +13 -0
- package/dist/core/validator/is-format-number.d.ts +2 -0
- package/dist/core/validator/is-format-number.js +6 -0
- package/dist/core/validator/is-format-string.d.ts +2 -0
- package/dist/core/validator/is-format-string.js +24 -0
- package/dist/core/validator/is-http-method.d.ts +9 -0
- package/dist/core/validator/is-http-method.js +19 -0
- package/dist/core/validator/is-operation.d.ts +15 -0
- package/dist/core/validator/is-operation.js +19 -0
- package/dist/core/zod/get-zod-string-format.d.ts +30 -0
- package/dist/core/zod/get-zod-string-format.js +66 -0
- package/dist/generators/hono/generate-hono.d.ts +9 -0
- package/dist/generators/hono/generate-hono.js +29 -0
- package/dist/generators/openapi/components/generate-components-code.d.ts +46 -0
- package/dist/generators/openapi/components/generate-components-code.js +79 -0
- package/dist/generators/openapi/paths/generate-create-route.d.ts +58 -0
- package/dist/generators/openapi/paths/generate-create-route.js +61 -0
- package/dist/generators/openapi/paths/generate-route-code.d.ts +53 -0
- package/dist/generators/openapi/paths/generate-route-code.js +85 -0
- package/dist/generators/openapi/paths/generate-route-name.d.ts +30 -0
- package/dist/generators/openapi/paths/generate-route-name.js +48 -0
- package/dist/generators/openapi/paths/generate-route.d.ts +51 -0
- package/dist/generators/openapi/paths/generate-route.js +73 -0
- package/dist/generators/openapi/paths/generate-schemas-export.d.ts +11 -0
- package/dist/generators/openapi/paths/generate-schemas-export.js +18 -0
- package/dist/generators/request/body/generate-insert-request-body.d.ts +32 -0
- package/dist/generators/request/body/generate-insert-request-body.js +37 -0
- package/dist/generators/request/body/generate-request-body.d.ts +18 -0
- package/dist/generators/request/body/generate-request-body.js +23 -0
- package/dist/generators/request/object/generate-format-request-object.d.ts +29 -0
- package/dist/generators/request/object/generate-format-request-object.js +34 -0
- package/dist/generators/request/params/generate-params-object.d.ts +62 -0
- package/dist/generators/request/params/generate-params-object.js +93 -0
- package/dist/generators/request/params/generate-request-parameter.d.ts +49 -0
- package/dist/generators/request/params/generate-request-parameter.js +79 -0
- package/dist/generators/request/params/generate-request-params-array.d.ts +37 -0
- package/dist/generators/request/params/generate-request-params-array.js +56 -0
- package/dist/generators/request/params/generate-request-params.d.ts +34 -0
- package/dist/generators/request/params/generate-request-params.js +39 -0
- package/dist/generators/response/schemas/generate-response-schema.d.ts +59 -0
- package/dist/generators/response/schemas/generate-response-schema.js +83 -0
- package/dist/generators/zod/generate-zod-array.d.ts +31 -0
- package/dist/generators/zod/generate-zod-array.js +36 -0
- package/dist/generators/zod/generate-zod-coerce.d.ts +10 -0
- package/dist/generators/zod/generate-zod-coerce.js +17 -0
- package/dist/generators/zod/generate-zod-integer-schema.d.ts +15 -0
- package/dist/generators/zod/generate-zod-integer-schema.js +24 -0
- package/dist/generators/zod/generate-zod-number-schema.d.ts +16 -0
- package/dist/generators/zod/generate-zod-number-schema.js +26 -0
- package/dist/generators/zod/generate-zod-object-schema.d.ts +36 -0
- package/dist/generators/zod/generate-zod-object-schema.js +43 -0
- package/dist/generators/zod/generate-zod-properties-schema.d.ts +50 -0
- package/dist/generators/zod/generate-zod-properties-schema.js +60 -0
- package/dist/generators/zod/generate-zod-property-schema.d.ts +25 -0
- package/dist/generators/zod/generate-zod-property-schema.js +47 -0
- package/dist/generators/zod/generate-zod-record-schema.d.ts +34 -0
- package/dist/generators/zod/generate-zod-record-schema.js +37 -0
- package/dist/generators/zod/generate-zod-schema-definition.d.ts +22 -0
- package/dist/generators/zod/generate-zod-schema-definition.js +27 -0
- package/dist/generators/zod/generate-zod-schema.d.ts +59 -0
- package/dist/generators/zod/generate-zod-schema.js +136 -0
- package/dist/generators/zod/generate-zod-string-schema.d.ts +46 -0
- package/dist/generators/zod/generate-zod-string-schema.js +54 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +85 -0
- package/dist/types/index.d.ts +170 -0
- package/dist/types/index.js +2 -0
- package/package.json +47 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type SwaggerParser from '@apidevtools/swagger-parser';
|
|
2
|
+
/**
|
|
3
|
+
* Base OpenAPI type derived from SwaggerParser
|
|
4
|
+
*/
|
|
5
|
+
export type OpenAPI = Awaited<ReturnType<typeof SwaggerParser.parse>>;
|
|
6
|
+
/**
|
|
7
|
+
* Extended OpenAPI specification with required components and paths
|
|
8
|
+
*/
|
|
9
|
+
export type OpenAPISpec = OpenAPI & {
|
|
10
|
+
components: Components;
|
|
11
|
+
} & {
|
|
12
|
+
paths: OpenAPIPaths;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* OpenAPI paths with PathItem definitions
|
|
16
|
+
*/
|
|
17
|
+
export type OpenAPIPaths = {
|
|
18
|
+
[P in keyof NonNullable<OpenAPI['paths']>]: PathItem;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* HTTP methods supported in OpenAPI
|
|
22
|
+
*/
|
|
23
|
+
export type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head';
|
|
24
|
+
/**
|
|
25
|
+
* Parameter types in OpenAPI
|
|
26
|
+
*/
|
|
27
|
+
export type Parameter = 'query' | 'path' | 'header' | 'body';
|
|
28
|
+
/**
|
|
29
|
+
* Data types supported in OpenAPI schemas
|
|
30
|
+
*/
|
|
31
|
+
export type Type = 'string' | 'number' | 'integer' | 'bigint' | 'boolean' | 'date' | 'null' | 'any' | 'unknown' | 'array' | 'object';
|
|
32
|
+
export type Format = FormatString | FormatNumber;
|
|
33
|
+
/**
|
|
34
|
+
* Format specifications for string types
|
|
35
|
+
*/
|
|
36
|
+
export type FormatString = 'email' | 'uri' | 'emoji' | 'uuid' | 'nanoid' | 'cuid' | 'cuid2' | 'ulid' | 'date-time' | 'ip' | 'cidr' | 'trim' | 'toLowerCase' | 'toUpperCase' | 'date' | 'time' | 'duration' | 'base64' | 'binary';
|
|
37
|
+
export type FormatNumber = 'int32' | 'int64' | 'float' | 'double';
|
|
38
|
+
/**
|
|
39
|
+
* Content type definitions with their schemas
|
|
40
|
+
*/
|
|
41
|
+
type Content = {
|
|
42
|
+
'application/json'?: {
|
|
43
|
+
schema: Schema;
|
|
44
|
+
};
|
|
45
|
+
'application/xml'?: {
|
|
46
|
+
schema: Schema;
|
|
47
|
+
};
|
|
48
|
+
'application/x-www-form-urlencoded'?: {
|
|
49
|
+
schema: Schema;
|
|
50
|
+
};
|
|
51
|
+
'application/octet-stream'?: {
|
|
52
|
+
schema: {
|
|
53
|
+
type: Type;
|
|
54
|
+
format?: Format;
|
|
55
|
+
items?: Schema;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Path item definition with HTTP methods and parameters
|
|
61
|
+
*/
|
|
62
|
+
export type PathItem = {
|
|
63
|
+
summary?: string;
|
|
64
|
+
description?: string;
|
|
65
|
+
parameters?: Parameter[];
|
|
66
|
+
} & {
|
|
67
|
+
[Method in HttpMethod]?: Operation;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Security requirement object definition
|
|
71
|
+
*/
|
|
72
|
+
type SecurityRequirementObject = {
|
|
73
|
+
[key: string]: string[];
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Operation definition
|
|
77
|
+
*/
|
|
78
|
+
export type Operation = {
|
|
79
|
+
tags: string[];
|
|
80
|
+
summary?: string;
|
|
81
|
+
description?: string;
|
|
82
|
+
operationId?: string;
|
|
83
|
+
security?: SecurityRequirementObject[];
|
|
84
|
+
parameters?: Parameters[];
|
|
85
|
+
requestBody?: RequestBody;
|
|
86
|
+
responses: Response;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Response definition with description and content
|
|
90
|
+
*/
|
|
91
|
+
type ResponseDefinition = {
|
|
92
|
+
description: string;
|
|
93
|
+
content?: Content;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Response object with status codes
|
|
97
|
+
*/
|
|
98
|
+
type Response = {
|
|
99
|
+
[statusCode: string]: ResponseDefinition;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Schema definition for OpenAPI
|
|
103
|
+
*/
|
|
104
|
+
export type Schema = {
|
|
105
|
+
name?: string;
|
|
106
|
+
description?: string;
|
|
107
|
+
type?: Type;
|
|
108
|
+
format?: Format;
|
|
109
|
+
pattern?: string;
|
|
110
|
+
minLength?: number;
|
|
111
|
+
maxLength?: number;
|
|
112
|
+
minimum?: number;
|
|
113
|
+
maximum?: number;
|
|
114
|
+
example?: string | number | Array<string | number>;
|
|
115
|
+
properties?: Record<string, Schema>;
|
|
116
|
+
required?: string[];
|
|
117
|
+
items?: Schema;
|
|
118
|
+
enum?: string[];
|
|
119
|
+
additionalProperties?: {
|
|
120
|
+
type: Type;
|
|
121
|
+
format: Format;
|
|
122
|
+
};
|
|
123
|
+
$ref?: string;
|
|
124
|
+
xml?: {
|
|
125
|
+
name?: string;
|
|
126
|
+
wrapped?: boolean;
|
|
127
|
+
};
|
|
128
|
+
security?: SecurityRequirementObject[];
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Components section of OpenAPI spec
|
|
132
|
+
*/
|
|
133
|
+
export type Components = {
|
|
134
|
+
schemas: Record<string, Schema>;
|
|
135
|
+
parameters?: Record<string, Parameters>;
|
|
136
|
+
requestBodies?: Record<string, RequestBody>;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Object containing different types of parameters
|
|
140
|
+
*/
|
|
141
|
+
export type ParamsObject = {
|
|
142
|
+
query: Record<string, string>;
|
|
143
|
+
params: Record<string, string>;
|
|
144
|
+
headers: Record<string, string>;
|
|
145
|
+
body: Record<string, string>;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Parameter definition
|
|
149
|
+
*/
|
|
150
|
+
export type Parameters = {
|
|
151
|
+
schema: Schema;
|
|
152
|
+
description?: string;
|
|
153
|
+
required?: boolean;
|
|
154
|
+
name: string;
|
|
155
|
+
in: Parameter;
|
|
156
|
+
explode?: boolean;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Request body definition
|
|
160
|
+
*/
|
|
161
|
+
export type RequestBody = {
|
|
162
|
+
description?: string;
|
|
163
|
+
required?: boolean;
|
|
164
|
+
content?: Content;
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Response definitions mapped by status code
|
|
168
|
+
*/
|
|
169
|
+
export type Responses = Record<string, ResponseDefinition>;
|
|
170
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hono-takibi",
|
|
3
|
+
"description": "Hono Takibi is a CLI tool that generates Hono routes from OpenAPI specifications.",
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"hono",
|
|
8
|
+
"openapi"
|
|
9
|
+
],
|
|
10
|
+
"homepage": "https://github.com/nakita-Ypm/hono-takibi",
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/nakita-Ypm/hono-takibi.git"
|
|
17
|
+
},
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/nakita-Ypm/hono-takibi/issues"
|
|
20
|
+
},
|
|
21
|
+
"main": "dist/index.js",
|
|
22
|
+
"types": "dist/index.d.ts",
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"bin": {
|
|
27
|
+
"hono-takibi": "dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"deps": "rm -rf node_modules && pnpm install",
|
|
31
|
+
"build": "tsc",
|
|
32
|
+
"typecheck": "tsc --noEmit",
|
|
33
|
+
"test": "vitest run",
|
|
34
|
+
"coverage": "vitest run --coverage",
|
|
35
|
+
"release": "npm pkg fix && npm publish"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@apidevtools/swagger-parser": "^10.1.0",
|
|
39
|
+
"prettier": "^3.4.2"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^22.10.2",
|
|
43
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
44
|
+
"typescript": "^5.7.2",
|
|
45
|
+
"vitest": "^2.1.8"
|
|
46
|
+
}
|
|
47
|
+
}
|