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.
Files changed (88) hide show
  1. package/README.md +471 -0
  2. package/dist/core/schema/references/find-references.d.ts +35 -0
  3. package/dist/core/schema/references/find-references.js +42 -0
  4. package/dist/core/schema/references/get-camel-case-schema-name.d.ts +7 -0
  5. package/dist/core/schema/references/get-camel-case-schema-name.js +14 -0
  6. package/dist/core/schema/references/get-ref-name.d.ts +38 -0
  7. package/dist/core/schema/references/get-ref-name.js +47 -0
  8. package/dist/core/schema/references/resolve-schema-order.d.ts +30 -0
  9. package/dist/core/schema/references/resolve-schema-order.js +48 -0
  10. package/dist/core/schema/references/resolve-schema-references.d.ts +49 -0
  11. package/dist/core/schema/references/resolve-schema-references.js +61 -0
  12. package/dist/core/schema/references/resolve-schemas-dependencies.d.ts +49 -0
  13. package/dist/core/schema/references/resolve-schemas-dependencies.js +65 -0
  14. package/dist/core/schema/references/traverse_schema.d.ts +48 -0
  15. package/dist/core/schema/references/traverse_schema.js +70 -0
  16. package/dist/core/text/capitalize.d.ts +18 -0
  17. package/dist/core/text/capitalize.js +23 -0
  18. package/dist/core/text/decapitalize.d.ts +17 -0
  19. package/dist/core/text/decapitalize.js +22 -0
  20. package/dist/core/text/remove-zod-prefix.d.ts +8 -0
  21. package/dist/core/text/remove-zod-prefix.js +13 -0
  22. package/dist/core/validator/is-format-number.d.ts +2 -0
  23. package/dist/core/validator/is-format-number.js +6 -0
  24. package/dist/core/validator/is-format-string.d.ts +2 -0
  25. package/dist/core/validator/is-format-string.js +24 -0
  26. package/dist/core/validator/is-http-method.d.ts +9 -0
  27. package/dist/core/validator/is-http-method.js +19 -0
  28. package/dist/core/validator/is-operation.d.ts +15 -0
  29. package/dist/core/validator/is-operation.js +19 -0
  30. package/dist/core/zod/get-zod-string-format.d.ts +30 -0
  31. package/dist/core/zod/get-zod-string-format.js +66 -0
  32. package/dist/generators/hono/generate-hono.d.ts +9 -0
  33. package/dist/generators/hono/generate-hono.js +29 -0
  34. package/dist/generators/openapi/components/generate-components-code.d.ts +46 -0
  35. package/dist/generators/openapi/components/generate-components-code.js +79 -0
  36. package/dist/generators/openapi/paths/generate-create-route.d.ts +58 -0
  37. package/dist/generators/openapi/paths/generate-create-route.js +61 -0
  38. package/dist/generators/openapi/paths/generate-route-code.d.ts +53 -0
  39. package/dist/generators/openapi/paths/generate-route-code.js +85 -0
  40. package/dist/generators/openapi/paths/generate-route-name.d.ts +30 -0
  41. package/dist/generators/openapi/paths/generate-route-name.js +48 -0
  42. package/dist/generators/openapi/paths/generate-route.d.ts +51 -0
  43. package/dist/generators/openapi/paths/generate-route.js +73 -0
  44. package/dist/generators/openapi/paths/generate-schemas-export.d.ts +11 -0
  45. package/dist/generators/openapi/paths/generate-schemas-export.js +18 -0
  46. package/dist/generators/request/body/generate-insert-request-body.d.ts +32 -0
  47. package/dist/generators/request/body/generate-insert-request-body.js +37 -0
  48. package/dist/generators/request/body/generate-request-body.d.ts +18 -0
  49. package/dist/generators/request/body/generate-request-body.js +23 -0
  50. package/dist/generators/request/object/generate-format-request-object.d.ts +29 -0
  51. package/dist/generators/request/object/generate-format-request-object.js +34 -0
  52. package/dist/generators/request/params/generate-params-object.d.ts +62 -0
  53. package/dist/generators/request/params/generate-params-object.js +93 -0
  54. package/dist/generators/request/params/generate-request-parameter.d.ts +49 -0
  55. package/dist/generators/request/params/generate-request-parameter.js +79 -0
  56. package/dist/generators/request/params/generate-request-params-array.d.ts +37 -0
  57. package/dist/generators/request/params/generate-request-params-array.js +56 -0
  58. package/dist/generators/request/params/generate-request-params.d.ts +34 -0
  59. package/dist/generators/request/params/generate-request-params.js +39 -0
  60. package/dist/generators/response/schemas/generate-response-schema.d.ts +59 -0
  61. package/dist/generators/response/schemas/generate-response-schema.js +83 -0
  62. package/dist/generators/zod/generate-zod-array.d.ts +31 -0
  63. package/dist/generators/zod/generate-zod-array.js +36 -0
  64. package/dist/generators/zod/generate-zod-coerce.d.ts +10 -0
  65. package/dist/generators/zod/generate-zod-coerce.js +17 -0
  66. package/dist/generators/zod/generate-zod-integer-schema.d.ts +15 -0
  67. package/dist/generators/zod/generate-zod-integer-schema.js +24 -0
  68. package/dist/generators/zod/generate-zod-number-schema.d.ts +16 -0
  69. package/dist/generators/zod/generate-zod-number-schema.js +26 -0
  70. package/dist/generators/zod/generate-zod-object-schema.d.ts +36 -0
  71. package/dist/generators/zod/generate-zod-object-schema.js +43 -0
  72. package/dist/generators/zod/generate-zod-properties-schema.d.ts +50 -0
  73. package/dist/generators/zod/generate-zod-properties-schema.js +60 -0
  74. package/dist/generators/zod/generate-zod-property-schema.d.ts +25 -0
  75. package/dist/generators/zod/generate-zod-property-schema.js +47 -0
  76. package/dist/generators/zod/generate-zod-record-schema.d.ts +34 -0
  77. package/dist/generators/zod/generate-zod-record-schema.js +37 -0
  78. package/dist/generators/zod/generate-zod-schema-definition.d.ts +22 -0
  79. package/dist/generators/zod/generate-zod-schema-definition.js +27 -0
  80. package/dist/generators/zod/generate-zod-schema.d.ts +59 -0
  81. package/dist/generators/zod/generate-zod-schema.js +136 -0
  82. package/dist/generators/zod/generate-zod-string-schema.d.ts +46 -0
  83. package/dist/generators/zod/generate-zod-string-schema.js +54 -0
  84. package/dist/index.d.ts +20 -0
  85. package/dist/index.js +85 -0
  86. package/dist/types/index.d.ts +170 -0
  87. package/dist/types/index.js +2 -0
  88. 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 {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
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
+ }