@dokploy/trpc-openapi 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 (126) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +369 -0
  3. package/assets/trpc-openapi-graph.png +0 -0
  4. package/assets/trpc-openapi-readme.png +0 -0
  5. package/assets/trpc-openapi.svg +4 -0
  6. package/dist/adapters/express.d.ts +6 -0
  7. package/dist/adapters/express.d.ts.map +1 -0
  8. package/dist/adapters/express.js +12 -0
  9. package/dist/adapters/express.js.map +1 -0
  10. package/dist/adapters/index.d.ts +4 -0
  11. package/dist/adapters/index.d.ts.map +1 -0
  12. package/dist/adapters/index.js +20 -0
  13. package/dist/adapters/index.js.map +1 -0
  14. package/dist/adapters/next.d.ts +6 -0
  15. package/dist/adapters/next.d.ts.map +1 -0
  16. package/dist/adapters/next.js +45 -0
  17. package/dist/adapters/next.js.map +1 -0
  18. package/dist/adapters/node-http/core.d.ts +6 -0
  19. package/dist/adapters/node-http/core.d.ts.map +1 -0
  20. package/dist/adapters/node-http/core.js +140 -0
  21. package/dist/adapters/node-http/core.js.map +1 -0
  22. package/dist/adapters/node-http/errors.d.ts +4 -0
  23. package/dist/adapters/node-http/errors.d.ts.map +1 -0
  24. package/dist/adapters/node-http/errors.js +43 -0
  25. package/dist/adapters/node-http/errors.js.map +1 -0
  26. package/dist/adapters/node-http/input.d.ts +4 -0
  27. package/dist/adapters/node-http/input.d.ts.map +1 -0
  28. package/dist/adapters/node-http/input.js +76 -0
  29. package/dist/adapters/node-http/input.js.map +1 -0
  30. package/dist/adapters/node-http/procedures.d.ts +12 -0
  31. package/dist/adapters/node-http/procedures.d.ts.map +1 -0
  32. package/dist/adapters/node-http/procedures.js +51 -0
  33. package/dist/adapters/node-http/procedures.js.map +1 -0
  34. package/dist/adapters/standalone.d.ts +6 -0
  35. package/dist/adapters/standalone.d.ts.map +1 -0
  36. package/dist/adapters/standalone.js +12 -0
  37. package/dist/adapters/standalone.js.map +1 -0
  38. package/dist/generator/index.d.ts +14 -0
  39. package/dist/generator/index.d.ts.map +1 -0
  40. package/dist/generator/index.js +39 -0
  41. package/dist/generator/index.js.map +1 -0
  42. package/dist/generator/paths.d.ts +4 -0
  43. package/dist/generator/paths.d.ts.map +1 -0
  44. package/dist/generator/paths.js +76 -0
  45. package/dist/generator/paths.js.map +1 -0
  46. package/dist/generator/schema.d.ts +7 -0
  47. package/dist/generator/schema.d.ts.map +1 -0
  48. package/dist/generator/schema.js +195 -0
  49. package/dist/generator/schema.js.map +1 -0
  50. package/dist/index.d.ts +6 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +11 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/types.d.ts +53 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +3 -0
  57. package/dist/types.js.map +1 -0
  58. package/dist/utils/method.d.ts +3 -0
  59. package/dist/utils/method.d.ts.map +1 -0
  60. package/dist/utils/method.js +11 -0
  61. package/dist/utils/method.js.map +1 -0
  62. package/dist/utils/path.d.ts +4 -0
  63. package/dist/utils/path.d.ts.map +1 -0
  64. package/dist/utils/path.js +17 -0
  65. package/dist/utils/path.js.map +1 -0
  66. package/dist/utils/procedure.d.ts +14 -0
  67. package/dist/utils/procedure.d.ts.map +1 -0
  68. package/dist/utils/procedure.js +39 -0
  69. package/dist/utils/procedure.js.map +1 -0
  70. package/dist/utils/zod.d.ts +19 -0
  71. package/dist/utils/zod.d.ts.map +1 -0
  72. package/dist/utils/zod.js +87 -0
  73. package/dist/utils/zod.js.map +1 -0
  74. package/examples/with-express/README.md +11 -0
  75. package/examples/with-express/package.json +28 -0
  76. package/examples/with-express/src/database.ts +67 -0
  77. package/examples/with-express/src/index.ts +27 -0
  78. package/examples/with-express/src/openapi.ts +13 -0
  79. package/examples/with-express/src/router.ts +424 -0
  80. package/examples/with-express/tsconfig.json +102 -0
  81. package/examples/with-interop/README.md +10 -0
  82. package/examples/with-interop/package.json +13 -0
  83. package/examples/with-interop/src/index.ts +17 -0
  84. package/examples/with-interop/tsconfig.json +103 -0
  85. package/examples/with-nextjs/.eslintrc.json +3 -0
  86. package/examples/with-nextjs/README.md +12 -0
  87. package/examples/with-nextjs/next-env.d.ts +5 -0
  88. package/examples/with-nextjs/next.config.js +6 -0
  89. package/examples/with-nextjs/package.json +33 -0
  90. package/examples/with-nextjs/public/favicon.ico +0 -0
  91. package/examples/with-nextjs/src/pages/_app.tsx +7 -0
  92. package/examples/with-nextjs/src/pages/api/[...trpc].ts +18 -0
  93. package/examples/with-nextjs/src/pages/api/openapi.json.ts +10 -0
  94. package/examples/with-nextjs/src/pages/api/trpc/[...trpc].ts +9 -0
  95. package/examples/with-nextjs/src/pages/index.tsx +12 -0
  96. package/examples/with-nextjs/src/server/database.ts +67 -0
  97. package/examples/with-nextjs/src/server/openapi.ts +13 -0
  98. package/examples/with-nextjs/src/server/router.ts +426 -0
  99. package/examples/with-nextjs/tsconfig.json +24 -0
  100. package/jest.config.ts +12 -0
  101. package/package.json +74 -0
  102. package/pnpm-workspace.yaml +7 -0
  103. package/src/adapters/express.ts +20 -0
  104. package/src/adapters/index.ts +3 -0
  105. package/src/adapters/next.ts +64 -0
  106. package/src/adapters/node-http/core.ts +203 -0
  107. package/src/adapters/node-http/errors.ts +45 -0
  108. package/src/adapters/node-http/input.ts +76 -0
  109. package/src/adapters/node-http/procedures.ts +64 -0
  110. package/src/adapters/standalone.ts +19 -0
  111. package/src/generator/index.ts +51 -0
  112. package/src/generator/paths.ts +127 -0
  113. package/src/generator/schema.ts +238 -0
  114. package/src/index.ts +42 -0
  115. package/src/types.ts +79 -0
  116. package/src/utils/method.ts +8 -0
  117. package/src/utils/path.ts +12 -0
  118. package/src/utils/procedure.ts +45 -0
  119. package/src/utils/zod.ts +115 -0
  120. package/test/adapters/express.test.ts +150 -0
  121. package/test/adapters/next.test.ts +162 -0
  122. package/test/adapters/standalone.test.ts +1335 -0
  123. package/test/generator.test.ts +2897 -0
  124. package/tsconfig.build.json +4 -0
  125. package/tsconfig.eslint.json +5 -0
  126. package/tsconfig.json +19 -0
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.getResponsesObject = exports.errorResponseObject = exports.getRequestBodyObject = exports.getParameterObjects = void 0;
18
+ // @ts-nocheck
19
+ const server_1 = require("@trpc/server");
20
+ const zod_1 = require("zod");
21
+ const zod_to_json_schema_1 = __importDefault(require("zod-to-json-schema"));
22
+ const zod_2 = require("../utils/zod");
23
+ const zodSchemaToOpenApiSchemaObject = (zodSchema) => {
24
+ // FIXME: https://github.com/StefanTerdell/zod-to-json-schema/issues/35
25
+ return (0, zod_to_json_schema_1.default)(zodSchema, {
26
+ target: "openApi3",
27
+ $refStrategy: "none",
28
+ });
29
+ };
30
+ const getParameterObjects = (currentSchema, pathParameters, inType, example) => {
31
+ const schema = currentSchema !== null && currentSchema !== void 0 ? currentSchema : zod_1.z.void();
32
+ const isRequired = !schema.isOptional();
33
+ const unwrappedSchema = (0, zod_2.unwrapZodType)(schema, true);
34
+ if (pathParameters.length === 0 &&
35
+ (0, zod_2.instanceofZodTypeLikeVoid)(unwrappedSchema)) {
36
+ return undefined;
37
+ }
38
+ if (!(0, zod_2.instanceofZodTypeObject)(unwrappedSchema)) {
39
+ throw new server_1.TRPCError({
40
+ message: "Input parser must be a ZodObject",
41
+ code: "INTERNAL_SERVER_ERROR",
42
+ });
43
+ }
44
+ const shape = unwrappedSchema.shape;
45
+ const shapeKeys = Object.keys(shape);
46
+ for (const pathParameter of pathParameters) {
47
+ if (!shapeKeys.includes(pathParameter)) {
48
+ throw new server_1.TRPCError({
49
+ message: `Input parser expects key from path: "${pathParameter}"`,
50
+ code: "INTERNAL_SERVER_ERROR",
51
+ });
52
+ }
53
+ }
54
+ return shapeKeys
55
+ .filter((shapeKey) => {
56
+ const isPathParameter = pathParameters.includes(shapeKey);
57
+ if (inType === "path") {
58
+ return isPathParameter;
59
+ }
60
+ else if (inType === "query") {
61
+ return !isPathParameter;
62
+ }
63
+ return true;
64
+ })
65
+ .map((shapeKey) => {
66
+ let shapeSchema = shape[shapeKey];
67
+ const isShapeRequired = !shapeSchema.isOptional();
68
+ const isPathParameter = pathParameters.includes(shapeKey);
69
+ if (!(0, zod_2.instanceofZodTypeLikeString)(shapeSchema)) {
70
+ if (zod_2.zodSupportsCoerce) {
71
+ if (!(0, zod_2.instanceofZodTypeCoercible)(shapeSchema)) {
72
+ throw new server_1.TRPCError({
73
+ message: `Input parser key: "${shapeKey}" must be ZodString, ZodNumber, ZodBoolean, ZodBigInt or ZodDate`,
74
+ code: "INTERNAL_SERVER_ERROR",
75
+ });
76
+ }
77
+ }
78
+ else {
79
+ throw new server_1.TRPCError({
80
+ message: `Input parser key: "${shapeKey}" must be ZodString`,
81
+ code: "INTERNAL_SERVER_ERROR",
82
+ });
83
+ }
84
+ }
85
+ if ((0, zod_2.instanceofZodTypeOptional)(shapeSchema)) {
86
+ if (isPathParameter) {
87
+ throw new server_1.TRPCError({
88
+ message: `Path parameter: "${shapeKey}" must not be optional`,
89
+ code: "INTERNAL_SERVER_ERROR",
90
+ });
91
+ }
92
+ shapeSchema = shapeSchema.unwrap();
93
+ }
94
+ const _a = zodSchemaToOpenApiSchemaObject(shapeSchema), { description } = _a, openApiSchemaObject = __rest(_a, ["description"]);
95
+ return {
96
+ name: shapeKey,
97
+ in: isPathParameter ? "path" : "query",
98
+ required: isPathParameter || (isRequired && isShapeRequired),
99
+ schema: openApiSchemaObject,
100
+ description: description,
101
+ example: example === null || example === void 0 ? void 0 : example[shapeKey],
102
+ };
103
+ });
104
+ };
105
+ exports.getParameterObjects = getParameterObjects;
106
+ const getRequestBodyObject = (currentSchema, pathParameters, contentTypes, example) => {
107
+ // if (!instanceofZodType(schema)) {
108
+ // throw new TRPCError({
109
+ // message: "Input parser expects a Zod validator",
110
+ // code: "INTERNAL_SERVER_ERROR",
111
+ // });
112
+ // }
113
+ const schema = currentSchema !== null && currentSchema !== void 0 ? currentSchema : zod_1.z.void();
114
+ const isRequired = !schema.isOptional();
115
+ const unwrappedSchema = (0, zod_2.unwrapZodType)(schema, true);
116
+ if (pathParameters.length === 0 &&
117
+ (0, zod_2.instanceofZodTypeLikeVoid)(unwrappedSchema)) {
118
+ return undefined;
119
+ }
120
+ if (!(0, zod_2.instanceofZodTypeObject)(unwrappedSchema)) {
121
+ throw new server_1.TRPCError({
122
+ message: "Input parser must be a ZodObject",
123
+ code: "INTERNAL_SERVER_ERROR",
124
+ });
125
+ }
126
+ // remove path parameters
127
+ const mask = {};
128
+ const dedupedExample = example && Object.assign({}, example);
129
+ pathParameters.forEach((pathParameter) => {
130
+ mask[pathParameter] = true;
131
+ if (dedupedExample) {
132
+ delete dedupedExample[pathParameter];
133
+ }
134
+ });
135
+ const dedupedSchema = unwrappedSchema.omit(mask);
136
+ // if all keys are path parameters
137
+ if (pathParameters.length > 0 &&
138
+ Object.keys(dedupedSchema.shape).length === 0) {
139
+ return undefined;
140
+ }
141
+ const openApiSchemaObject = zodSchemaToOpenApiSchemaObject(dedupedSchema);
142
+ const content = {};
143
+ for (const contentType of contentTypes) {
144
+ content[contentType] = {
145
+ schema: openApiSchemaObject,
146
+ example: dedupedExample,
147
+ };
148
+ }
149
+ return {
150
+ required: isRequired,
151
+ content,
152
+ };
153
+ };
154
+ exports.getRequestBodyObject = getRequestBodyObject;
155
+ exports.errorResponseObject = {
156
+ description: "Error response",
157
+ content: {
158
+ "application/json": {
159
+ schema: zodSchemaToOpenApiSchemaObject(zod_1.z.object({
160
+ message: zod_1.z.string(),
161
+ code: zod_1.z.string(),
162
+ issues: zod_1.z.array(zod_1.z.object({ message: zod_1.z.string() })).optional(),
163
+ })),
164
+ },
165
+ },
166
+ };
167
+ const getResponsesObject = (schema, example, headers) => {
168
+ // if (!instanceofZodType(schema)) {
169
+ // throw new TRPCError({
170
+ // message: 'Output parser expects a Zod validator',
171
+ // code: 'INTERNAL_SERVER_ERROR',
172
+ // });
173
+ // }
174
+ console.log(schema);
175
+ const successResponseObject = {
176
+ description: "Successful response",
177
+ headers: headers,
178
+ content: {
179
+ "application/json": Object.assign(Object.assign({}, (schema && {
180
+ schema: zodSchemaToOpenApiSchemaObject(schema),
181
+ })), {
182
+ // schema: zodSchemaToOpenApiSchemaObject(schema),
183
+ example }),
184
+ },
185
+ };
186
+ // console.log(zodSchemaToOpenApiSchemaObject(schema));
187
+ return {
188
+ 200: successResponseObject,
189
+ default: {
190
+ $ref: "#/components/responses/error",
191
+ },
192
+ };
193
+ };
194
+ exports.getResponsesObject = getResponsesObject;
195
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/generator/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { CreateOpenApiExpressMiddlewareOptions, CreateOpenApiHttpHandlerOptions, CreateOpenApiNextHandlerOptions, createOpenApiExpressMiddleware, createOpenApiHttpHandler, createOpenApiNextHandler } from "./adapters";
2
+ import { GenerateOpenApiDocumentOptions, generateOpenApiDocument, openApiVersion } from "./generator";
3
+ import { OpenApiErrorResponse, OpenApiMeta, OpenApiMethod, OpenApiResponse, OpenApiRouter, OpenApiSuccessResponse } from "./types";
4
+ import { ZodTypeLikeString, ZodTypeLikeVoid } from "./utils/zod";
5
+ export { CreateOpenApiExpressMiddlewareOptions, CreateOpenApiHttpHandlerOptions, CreateOpenApiNextHandlerOptions, createOpenApiExpressMiddleware, createOpenApiHttpHandler, createOpenApiNextHandler, openApiVersion, generateOpenApiDocument, GenerateOpenApiDocumentOptions, OpenApiRouter, OpenApiMeta, OpenApiMethod, OpenApiResponse, OpenApiSuccessResponse, OpenApiErrorResponse, ZodTypeLikeString, ZodTypeLikeVoid, };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,qCAAqC,EACrC,+BAA+B,EAC/B,+BAA+B,EAC/B,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,EACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,8BAA8B,EAC9B,uBAAuB,EACvB,cAAc,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EACN,qCAAqC,EACrC,+BAA+B,EAC/B,+BAA+B,EAC/B,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,8BAA8B,EAC9B,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GACf,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateOpenApiDocument = exports.openApiVersion = exports.createOpenApiNextHandler = exports.createOpenApiHttpHandler = exports.createOpenApiExpressMiddleware = void 0;
4
+ const adapters_1 = require("./adapters");
5
+ Object.defineProperty(exports, "createOpenApiExpressMiddleware", { enumerable: true, get: function () { return adapters_1.createOpenApiExpressMiddleware; } });
6
+ Object.defineProperty(exports, "createOpenApiHttpHandler", { enumerable: true, get: function () { return adapters_1.createOpenApiHttpHandler; } });
7
+ Object.defineProperty(exports, "createOpenApiNextHandler", { enumerable: true, get: function () { return adapters_1.createOpenApiNextHandler; } });
8
+ const generator_1 = require("./generator");
9
+ Object.defineProperty(exports, "generateOpenApiDocument", { enumerable: true, get: function () { return generator_1.generateOpenApiDocument; } });
10
+ Object.defineProperty(exports, "openApiVersion", { enumerable: true, get: function () { return generator_1.openApiVersion; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAOoB;AAoBnB,+GAvBA,yCAA8B,OAuBA;AAC9B,yGAvBA,mCAAwB,OAuBA;AACxB,yGAvBA,mCAAwB,OAuBA;AArBzB,2CAIqB;AAmBpB,wGArBA,mCAAuB,OAqBA;AADvB,+FAnBA,0BAAc,OAmBA"}
@@ -0,0 +1,53 @@
1
+ import { Procedure, ProcedureParams, Router } from '@trpc/server';
2
+ import type { RootConfig } from '@trpc/server/dist/core/internals/config';
3
+ import { TRPC_ERROR_CODE_KEY } from '@trpc/server/rpc';
4
+ import type { RouterDef } from '@trpc/server/src/core/router';
5
+ import { OpenAPIV3 } from 'openapi-types';
6
+ import { ZodIssue } from 'zod';
7
+ export type OpenApiMethod = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';
8
+ type TRPCMeta = Record<string, unknown>;
9
+ export type OpenApiContentType = 'application/json' | 'application/x-www-form-urlencoded' | (string & {});
10
+ export type OpenApiMeta<TMeta = TRPCMeta> = TMeta & {
11
+ openapi?: {
12
+ enabled?: boolean;
13
+ method: OpenApiMethod;
14
+ path: `/${string}`;
15
+ summary?: string;
16
+ description?: string;
17
+ protect?: boolean;
18
+ tags?: string[];
19
+ headers?: (OpenAPIV3.ParameterBaseObject & {
20
+ name: string;
21
+ in?: 'header';
22
+ })[];
23
+ contentTypes?: OpenApiContentType[];
24
+ deprecated?: boolean;
25
+ example?: {
26
+ request?: Record<string, any>;
27
+ response?: Record<string, any>;
28
+ };
29
+ responseHeaders?: Record<string, OpenAPIV3.HeaderObject | OpenAPIV3.ReferenceObject>;
30
+ };
31
+ };
32
+ export type OpenApiProcedure<TMeta = TRPCMeta> = Procedure<'query' | 'mutation', ProcedureParams<RootConfig<{
33
+ transformer: any;
34
+ errorShape: any;
35
+ ctx: any;
36
+ meta: OpenApiMeta<TMeta>;
37
+ }>, any, any, any, any, any, OpenApiMeta<TMeta>>>;
38
+ export type OpenApiProcedureRecord<TMeta = TRPCMeta> = Record<string, OpenApiProcedure<TMeta>>;
39
+ export type OpenApiRouter<TMeta = TRPCMeta> = Router<RouterDef<RootConfig<{
40
+ transformer: any;
41
+ errorShape: any;
42
+ ctx: any;
43
+ meta: OpenApiMeta<TMeta>;
44
+ }>, any, any>>;
45
+ export type OpenApiSuccessResponse<D = any> = D;
46
+ export type OpenApiErrorResponse = {
47
+ message: string;
48
+ code: TRPC_ERROR_CODE_KEY;
49
+ issues?: ZodIssue[];
50
+ };
51
+ export type OpenApiResponse<D = any> = OpenApiSuccessResponse<D> | OpenApiErrorResponse;
52
+ export {};
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { OpenApiMethod } from '../types';
2
+ export declare const acceptsRequestBody: (method: OpenApiMethod) => boolean;
3
+ //# sourceMappingURL=method.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../src/utils/method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,kBAAkB,WAAY,aAAa,YAKvD,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.acceptsRequestBody = void 0;
4
+ const acceptsRequestBody = (method) => {
5
+ if (method === 'GET' || method === 'DELETE') {
6
+ return false;
7
+ }
8
+ return true;
9
+ };
10
+ exports.acceptsRequestBody = acceptsRequestBody;
11
+ //# sourceMappingURL=method.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.js","sourceRoot":"","sources":["../../src/utils/method.ts"],"names":[],"mappings":";;;AAEO,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAE,EAAE;IAC1D,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B"}
@@ -0,0 +1,4 @@
1
+ export declare const normalizePath: (path: string) => string;
2
+ export declare const getPathParameters: (path: string) => string[];
3
+ export declare const getPathRegExp: (path: string) => RegExp;
4
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,SAAU,MAAM,WAEzC,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAU,MAAM,aAE7C,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,MAAM,WAGzC,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPathRegExp = exports.getPathParameters = exports.normalizePath = void 0;
4
+ const normalizePath = (path) => {
5
+ return `/${path.replace(/^\/|\/$/g, '')}`;
6
+ };
7
+ exports.normalizePath = normalizePath;
8
+ const getPathParameters = (path) => {
9
+ return Array.from(path.matchAll(/\{(.+?)\}/g)).map(([_, key]) => key);
10
+ };
11
+ exports.getPathParameters = getPathParameters;
12
+ const getPathRegExp = (path) => {
13
+ const groupedExp = path.replace(/\{(.+?)\}/g, (_, key) => `(?<${key}>[^/]+)`);
14
+ return new RegExp(`^${groupedExp}$`, 'i');
15
+ };
16
+ exports.getPathRegExp = getPathRegExp;
17
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":";;;AAAO,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;IAC5C,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5C,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAI,CAAC,CAAC;AACzE,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtF,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC,CAAC;AAHW,QAAA,aAAa,iBAGxB"}
@@ -0,0 +1,14 @@
1
+ import { ProcedureType } from '@trpc/server';
2
+ import { AnyZodObject } from 'zod';
3
+ import { OpenApiMeta, OpenApiProcedure, OpenApiProcedureRecord } from '../types';
4
+ export declare const getInputOutputParsers: (procedure: OpenApiProcedure) => {
5
+ inputParser: AnyZodObject | import("@trpc/server/dist/core/parser").Parser | undefined;
6
+ outputParser: import("@trpc/server/dist/core/parser").Parser | undefined;
7
+ };
8
+ export declare const forEachOpenApiProcedure: (procedureRecord: OpenApiProcedureRecord, callback: (values: {
9
+ path: string;
10
+ type: ProcedureType;
11
+ procedure: OpenApiProcedure;
12
+ openapi: NonNullable<OpenApiMeta["openapi"]>;
13
+ }) => void) => void;
14
+ //# sourceMappingURL=procedure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/utils/procedure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAK,MAAM,KAAK,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AASjF,eAAO,MAAM,qBAAqB,cAAe,gBAAgB;;;CAMhE,CAAC;AASF,eAAO,MAAM,uBAAuB,oBACjB,sBAAsB,YAC7B,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;CAC9C,KAAK,IAAI,SASX,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.forEachOpenApiProcedure = exports.getInputOutputParsers = void 0;
4
+ const zod_1 = require("zod");
5
+ const mergeInputs = (inputParsers) => {
6
+ return inputParsers.reduce((acc, inputParser) => {
7
+ return acc.merge(inputParser);
8
+ }, zod_1.z.object({}));
9
+ };
10
+ // `inputParser` & `outputParser` are private so this is a hack to access it
11
+ const getInputOutputParsers = (procedure) => {
12
+ const { inputs, output } = procedure._def;
13
+ return {
14
+ inputParser: inputs.length >= 2 ? mergeInputs(inputs) : inputs[0],
15
+ outputParser: output,
16
+ };
17
+ };
18
+ exports.getInputOutputParsers = getInputOutputParsers;
19
+ const getProcedureType = (procedure) => {
20
+ if (procedure._def.query)
21
+ return 'query';
22
+ if (procedure._def.mutation)
23
+ return 'mutation';
24
+ if (procedure._def.subscription)
25
+ return 'subscription';
26
+ throw new Error('Unknown procedure type');
27
+ };
28
+ const forEachOpenApiProcedure = (procedureRecord, callback) => {
29
+ var _a;
30
+ for (const [path, procedure] of Object.entries(procedureRecord)) {
31
+ const { openapi } = (_a = procedure._def.meta) !== null && _a !== void 0 ? _a : {};
32
+ if (openapi && openapi.enabled !== false) {
33
+ const type = getProcedureType(procedure);
34
+ callback({ path, type, procedure, openapi });
35
+ }
36
+ }
37
+ };
38
+ exports.forEachOpenApiProcedure = forEachOpenApiProcedure;
39
+ //# sourceMappingURL=procedure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure.js","sourceRoot":"","sources":["../../src/utils/procedure.ts"],"names":[],"mappings":";;;AAEA,6BAAsC;AAItC,MAAM,WAAW,GAAG,CAAC,YAA4B,EAAgB,EAAE;IACjE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,4EAA4E;AACrE,MAAM,qBAAqB,GAAG,CAAC,SAA2B,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;IAC1C,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAwB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACnF,YAAY,EAAE,MAAM;KACrB,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC;AAEF,MAAM,gBAAgB,GAAG,CAAC,SAA2B,EAAiB,EAAE;IACtE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;IAC/C,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO,cAAc,CAAC;IACvD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CACrC,eAAuC,EACvC,QAKU,EACV,EAAE;;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAChE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAA,SAAS,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;QAC9C,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACzC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,uBAAuB,2BAgBlC"}
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ export declare const instanceofZodType: (type: any) => type is z.ZodTypeAny;
3
+ export declare const instanceofZodTypeKind: <Z extends z.ZodFirstPartyTypeKind>(type: z.ZodTypeAny, zodTypeKind: Z) => type is InstanceType<(typeof z)[Z]>;
4
+ export declare const instanceofZodTypeOptional: (type: z.ZodTypeAny) => type is z.ZodOptional<z.ZodTypeAny>;
5
+ export declare const instanceofZodTypeObject: (type: z.ZodTypeAny) => type is z.ZodObject<z.ZodRawShape>;
6
+ export type ZodTypeLikeVoid = z.ZodVoid | z.ZodUndefined | z.ZodNever;
7
+ export declare const instanceofZodTypeLikeVoid: (type: z.ZodTypeAny) => type is ZodTypeLikeVoid;
8
+ export declare const unwrapZodType: (type: z.ZodTypeAny, unwrapPreprocess: boolean) => z.ZodTypeAny;
9
+ type NativeEnumType = {
10
+ [k: string]: string | number;
11
+ [nu: number]: string;
12
+ };
13
+ export type ZodTypeLikeString = z.ZodString | z.ZodOptional<ZodTypeLikeString> | z.ZodDefault<ZodTypeLikeString> | z.ZodEffects<ZodTypeLikeString, unknown, unknown> | z.ZodUnion<[ZodTypeLikeString, ...ZodTypeLikeString[]]> | z.ZodIntersection<ZodTypeLikeString, ZodTypeLikeString> | z.ZodLazy<ZodTypeLikeString> | z.ZodLiteral<string> | z.ZodEnum<[string, ...string[]]> | z.ZodNativeEnum<NativeEnumType>;
14
+ export declare const instanceofZodTypeLikeString: (_type: z.ZodTypeAny) => _type is ZodTypeLikeString;
15
+ export declare const zodSupportsCoerce: boolean;
16
+ export type ZodTypeCoercible = z.ZodNumber | z.ZodBoolean | z.ZodBigInt | z.ZodDate;
17
+ export declare const instanceofZodTypeCoercible: (_type: z.ZodTypeAny) => _type is ZodTypeCoercible;
18
+ export {};
19
+ //# sourceMappingURL=zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/utils/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,SAAU,GAAG,KAAG,IAAI,IAAI,CAAC,CAAC,UAEvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,CAAC,CAAC,qBAAqB,QAC/D,CAAC,CAAC,UAAU,eACL,CAAC,KACb,IAAI,IAAI,YAAY,CAAC,CAAA,OAAO,CAAC,EAAC,CAAC,CAAC,CAElC,CAAC;AAEF,eAAO,MAAM,yBAAyB,SAC9B,CAAC,CAAC,UAAU,KACjB,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAEpC,CAAC;AAEF,eAAO,MAAM,uBAAuB,SAAU,CAAC,CAAC,UAAU,KAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAE7F,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC;AAEtE,eAAO,MAAM,yBAAyB,SAAU,CAAC,CAAC,UAAU,KAAG,IAAI,IAAI,eAMtE,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,CAAC,CAAC,UAAU,oBAAoB,OAAO,KAAG,CAAC,CAAC,UAsB/E,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,CAAC,CAAC,SAAS,GACX,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAChC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAC/B,CAAC,CAAC,UAAU,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,GACjD,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC,GACvD,CAAC,CAAC,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GACvD,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAC5B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GACpB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,GAChC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAEpC,eAAO,MAAM,2BAA2B,UAAW,CAAC,CAAC,UAAU,KAAG,KAAK,IAAI,iBA0B1E,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAgB,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC;AAEpF,eAAO,MAAM,0BAA0B,UAAW,CAAC,CAAC,UAAU,KAAG,KAAK,IAAI,gBAQzE,CAAC"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.instanceofZodTypeCoercible = exports.zodSupportsCoerce = exports.instanceofZodTypeLikeString = exports.unwrapZodType = exports.instanceofZodTypeLikeVoid = exports.instanceofZodTypeObject = exports.instanceofZodTypeOptional = exports.instanceofZodTypeKind = exports.instanceofZodType = void 0;
4
+ const zod_1 = require("zod");
5
+ const instanceofZodType = (type) => {
6
+ var _a;
7
+ return !!((_a = type === null || type === void 0 ? void 0 : type._def) === null || _a === void 0 ? void 0 : _a.typeName);
8
+ };
9
+ exports.instanceofZodType = instanceofZodType;
10
+ const instanceofZodTypeKind = (type, zodTypeKind) => {
11
+ var _a;
12
+ return ((_a = type === null || type === void 0 ? void 0 : type._def) === null || _a === void 0 ? void 0 : _a.typeName) === zodTypeKind;
13
+ };
14
+ exports.instanceofZodTypeKind = instanceofZodTypeKind;
15
+ const instanceofZodTypeOptional = (type) => {
16
+ return (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodOptional);
17
+ };
18
+ exports.instanceofZodTypeOptional = instanceofZodTypeOptional;
19
+ const instanceofZodTypeObject = (type) => {
20
+ return (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodObject);
21
+ };
22
+ exports.instanceofZodTypeObject = instanceofZodTypeObject;
23
+ const instanceofZodTypeLikeVoid = (type) => {
24
+ return ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodVoid) ||
25
+ (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodUndefined) ||
26
+ (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodNever));
27
+ };
28
+ exports.instanceofZodTypeLikeVoid = instanceofZodTypeLikeVoid;
29
+ const unwrapZodType = (type, unwrapPreprocess) => {
30
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodOptional)) {
31
+ return (0, exports.unwrapZodType)(type.unwrap(), unwrapPreprocess);
32
+ }
33
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodDefault)) {
34
+ return (0, exports.unwrapZodType)(type.removeDefault(), unwrapPreprocess);
35
+ }
36
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodLazy)) {
37
+ return (0, exports.unwrapZodType)(type._def.getter(), unwrapPreprocess);
38
+ }
39
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodEffects)) {
40
+ if (type._def.effect.type === 'refinement') {
41
+ return (0, exports.unwrapZodType)(type._def.schema, unwrapPreprocess);
42
+ }
43
+ if (type._def.effect.type === 'transform') {
44
+ return (0, exports.unwrapZodType)(type._def.schema, unwrapPreprocess);
45
+ }
46
+ if (unwrapPreprocess && type._def.effect.type === 'preprocess') {
47
+ return (0, exports.unwrapZodType)(type._def.schema, unwrapPreprocess);
48
+ }
49
+ }
50
+ return type;
51
+ };
52
+ exports.unwrapZodType = unwrapZodType;
53
+ const instanceofZodTypeLikeString = (_type) => {
54
+ const type = (0, exports.unwrapZodType)(_type, false);
55
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodEffects)) {
56
+ if (type._def.effect.type === 'preprocess') {
57
+ return true;
58
+ }
59
+ }
60
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodUnion)) {
61
+ return !type._def.options.some((option) => !(0, exports.instanceofZodTypeLikeString)(option));
62
+ }
63
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodIntersection)) {
64
+ return ((0, exports.instanceofZodTypeLikeString)(type._def.left) && (0, exports.instanceofZodTypeLikeString)(type._def.right));
65
+ }
66
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodLiteral)) {
67
+ return typeof type._def.value === 'string';
68
+ }
69
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodEnum)) {
70
+ return true;
71
+ }
72
+ if ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodNativeEnum)) {
73
+ return !Object.values(type._def.values).some((value) => typeof value === 'number');
74
+ }
75
+ return (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodString);
76
+ };
77
+ exports.instanceofZodTypeLikeString = instanceofZodTypeLikeString;
78
+ exports.zodSupportsCoerce = 'coerce' in zod_1.z;
79
+ const instanceofZodTypeCoercible = (_type) => {
80
+ const type = (0, exports.unwrapZodType)(_type, false);
81
+ return ((0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodNumber) ||
82
+ (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodBoolean) ||
83
+ (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodBigInt) ||
84
+ (0, exports.instanceofZodTypeKind)(type, zod_1.z.ZodFirstPartyTypeKind.ZodDate));
85
+ };
86
+ exports.instanceofZodTypeCoercible = instanceofZodTypeCoercible;
87
+ //# sourceMappingURL=zod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/utils/zod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ # [**`trpc-openapi`**](../../README.md) (with-express)
2
+
3
+ ### Getting started
4
+
5
+ Make sure your current working directory is at `/trpc-openapi` root.
6
+
7
+ ```bash
8
+ npm install
9
+ npm run build
10
+ npm run dev -w with-express
11
+ ```
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "with-express",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "ts-node-dev --respawn --transpile-only --exit-child ./src/index.ts"
7
+ },
8
+ "dependencies": {
9
+ "@trpc/server": "^10.27.1",
10
+ "cors": "^2.8.5",
11
+ "express": "^4.18.2",
12
+ "jsonwebtoken": "^9.0.0",
13
+ "swagger-ui-express": "^4.6.3",
14
+ "uuid": "^9.0.0",
15
+ "zod": "^3.21.4"
16
+ },
17
+ "devDependencies": {
18
+ "@types/cors": "^2.8.13",
19
+ "@types/express": "^4.17.17",
20
+ "@types/jsonwebtoken": "^9.0.2",
21
+ "@types/node": "^20.2.3",
22
+ "@types/swagger-ui-express": "^4.1.3",
23
+ "@types/uuid": "^9.0.1",
24
+ "ts-node": "^10.9.1",
25
+ "ts-node-dev": "^2.0.0",
26
+ "typescript": "^5.0.4"
27
+ }
28
+ }