@map-colonies/openapi-helpers 4.0.0 → 5.1.0
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 +81 -0
- package/dist/cli/entrypoint.d.mts +1 -0
- package/dist/cli/entrypoint.d.mts.map +1 -0
- package/dist/cli/entrypoint.mjs +2 -2
- package/dist/cli/entrypoint.mjs.map +1 -1
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.d.ts.map +1 -0
- package/dist/common/types.d.ts +1 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/generator/generateErrors.d.ts +10 -0
- package/dist/generator/generateErrors.d.ts.map +1 -0
- package/dist/generator/{generateErrors.mjs → generateErrors.js} +56 -13
- package/dist/generator/generateErrors.js.map +1 -0
- package/dist/generator/{generateTypes.d.mts → generateTypes.d.ts} +5 -0
- package/dist/generator/generateTypes.d.ts.map +1 -0
- package/dist/generator/generateTypes.js +66 -0
- package/dist/generator/generateTypes.js.map +1 -0
- package/dist/generator/index.d.ts +3 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +19 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/requestSender/expect.d.ts +38 -0
- package/dist/requestSender/expect.d.ts.map +1 -0
- package/dist/requestSender/expect.js +28 -0
- package/dist/requestSender/expect.js.map +1 -0
- package/dist/requestSender/requestSender.d.ts +9 -5
- package/dist/requestSender/requestSender.d.ts.map +1 -0
- package/dist/requestSender/requestSender.js +8 -4
- package/dist/requestSender/requestSender.js.map +1 -1
- package/dist/requestSender/types.d.ts +5 -0
- package/dist/requestSender/types.d.ts.map +1 -0
- package/dist/typedRequestHandler/typedRequestHandler.d.ts +2 -0
- package/dist/typedRequestHandler/typedRequestHandler.d.ts.map +1 -0
- package/package.json +48 -63
- package/dist/generator/generateErrors.d.mts +0 -5
- package/dist/generator/generateErrors.mjs.map +0 -1
- package/dist/generator/generateTypes.mjs +0 -23
- package/dist/generator/generateTypes.mjs.map +0 -1
- package/dist/generator/index.d.mts +0 -2
- package/dist/generator/index.mjs +0 -3
- package/dist/generator/index.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -187,6 +187,87 @@ const response = await requestSender.sendRequest({
|
|
|
187
187
|
|
|
188
188
|
The package supports all the operations defined in the OpenAPI schema, either by operation name, or by using the `sendRequest` function with the method, path and parameters.
|
|
189
189
|
|
|
190
|
+
### Response Status Assertion
|
|
191
|
+
|
|
192
|
+
The `expectResponseStatusFactory` provides TypeScript type narrowing for response status assertions in tests. This utility creates an assertion function that narrows the response type based on the expected status code, giving you full type safety when working with different response types.
|
|
193
|
+
|
|
194
|
+
#### Usage
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
import { expectResponseStatusFactory } from '@map-colonies/openapi-helpers/requestSender';
|
|
198
|
+
import type { ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender';
|
|
199
|
+
import { describe, it, expect } from 'vitest';
|
|
200
|
+
|
|
201
|
+
// Create the assertion function with the exported type
|
|
202
|
+
const expectResponseStatus: ExpectResponseStatus = expectResponseStatusFactory(expect);
|
|
203
|
+
|
|
204
|
+
it('should return user data on success', async () => {
|
|
205
|
+
const response = await requestSender.getUser({ pathParams: { id: '123' } });
|
|
206
|
+
|
|
207
|
+
// Assert the status and narrow the type
|
|
208
|
+
expectResponseStatus(response, 200);
|
|
209
|
+
|
|
210
|
+
// TypeScript now knows response is the 200 response type
|
|
211
|
+
// You can safely access response.body with full autocomplete
|
|
212
|
+
console.log(response.body.id);
|
|
213
|
+
console.log(response.body.name);
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it('should handle error responses', async () => {
|
|
217
|
+
const response = await requestSender.getUser({ pathParams: { id: 'invalid' } });
|
|
218
|
+
|
|
219
|
+
if (response.status === 404) {
|
|
220
|
+
expectResponseStatus(response, 404);
|
|
221
|
+
// TypeScript knows this is a 404 response
|
|
222
|
+
console.log(response.body.error);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
> [!TIP]
|
|
228
|
+
> **Avoiding TS2775 Error**: When using `expectResponseStatusFactory`, you must provide an explicit type annotation using the exported `ExpectResponseStatus` type as shown above. This is required by TypeScript's strict mode for assertion functions.
|
|
229
|
+
|
|
230
|
+
#### Reusable Setup
|
|
231
|
+
|
|
232
|
+
To avoid repeating the setup in every test file, create a shared test utility:
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
// test/utils/assertions.ts
|
|
236
|
+
import { expectResponseStatusFactory } from '@map-colonies/openapi-helpers/requestSender';
|
|
237
|
+
import type { ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender';
|
|
238
|
+
import { expect } from 'vitest';
|
|
239
|
+
|
|
240
|
+
export const expectResponseStatus: ExpectResponseStatus = expectResponseStatusFactory(expect);
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Then import and use it in your tests:
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
// test/api.spec.ts
|
|
247
|
+
import { expectResponseStatus } from './utils/assertions';
|
|
248
|
+
|
|
249
|
+
it('should work', async () => {
|
|
250
|
+
const response = await requestSender.getUser({ pathParams: { id: '123' } });
|
|
251
|
+
expectResponseStatus(response, 200);
|
|
252
|
+
// TypeScript knows the exact response type
|
|
253
|
+
});
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
#### How it works
|
|
257
|
+
|
|
258
|
+
The `expectResponseStatusFactory` takes an expect function (from your test framework) and returns a function that:
|
|
259
|
+
1. Asserts that the response status matches the expected status
|
|
260
|
+
2. Narrows the TypeScript type of the response to only include the matching status code
|
|
261
|
+
|
|
262
|
+
This is particularly useful when working with OpenAPI-generated types that have multiple possible response types (e.g., 200 success, 404 not found, 500 error). After calling `expectResponseStatus`, TypeScript will know exactly which response type you're working with.
|
|
263
|
+
|
|
264
|
+
#### Benefits
|
|
265
|
+
|
|
266
|
+
- **Type Safety**: Full TypeScript support with automatic type narrowing
|
|
267
|
+
- **Autocomplete**: Get accurate autocomplete for response body based on the status code
|
|
268
|
+
- **Test Clarity**: Combine assertion and type narrowing in a single function call
|
|
269
|
+
- **Prevents Errors**: Catch type mismatches at compile time instead of runtime
|
|
270
|
+
|
|
190
271
|
|
|
191
272
|
> [!IMPORTANT]
|
|
192
273
|
> For the package to function properly, you need to make sure that the following values are configured in your `tsconfig.json` or `jsconfig.json` files under compilerOptions:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoint.d.mts","sourceRoot":"","sources":["../../src/cli/entrypoint.mts"],"names":[],"mappings":""}
|
package/dist/cli/entrypoint.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { setTimeout as sleep } from 'node:timers/promises';
|
|
3
3
|
import { program } from '@commander-js/extra-typings';
|
|
4
|
-
import { generateTypes } from '../generator/generateTypes.
|
|
5
|
-
import { generateErrors } from '../generator/generateErrors.
|
|
4
|
+
import { generateTypes } from '../generator/generateTypes.js';
|
|
5
|
+
import { generateErrors } from '../generator/generateErrors.js';
|
|
6
6
|
import ora from 'ora';
|
|
7
7
|
import { PACKAGE_VERSION } from '../common/constants.js';
|
|
8
8
|
const errorOutput = ['all', 'map', 'classes'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint.mjs","sourceRoot":"","sources":["../../src/cli/entrypoint.mts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"entrypoint.mjs","sourceRoot":"","sources":["../../src/cli/entrypoint.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,eAAe,QAAmC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/common/types.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpF,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjG,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,MAAM,CAChC,MAAM,EACN;IACE,UAAU,EAAE;QACV,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,MAAM,CAAC,EAAE,GAAG,CAAC;KACd,CAAC;CACH,GAAG;KACD,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,kBAAkB;CACtC,CACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates TypeScript error classes and an optional error mapping from an OpenAPI specification file and writes them to the specified destination path.
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateErrors(openapiPath: string, destinationPath: string, options: {
|
|
6
|
+
shouldFormat?: boolean;
|
|
7
|
+
includeMapping?: boolean;
|
|
8
|
+
includeErrorClasses?: boolean;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=generateErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateErrors.d.ts","sourceRoot":"","sources":["../../src/generator/generateErrors.ts"],"names":[],"mappings":"AAsCA;;;GAGG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE;IACP,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,OAAO,CAAC,IAAI,CAAC,CAuFf"}
|
|
@@ -1,8 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.generateErrors = generateErrors;
|
|
40
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
41
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
42
|
+
const json_schema_ref_parser_1 = require("@apidevtools/json-schema-ref-parser");
|
|
43
|
+
const prettier_1 = require("prettier");
|
|
44
|
+
const changeCase = __importStar(require("change-case"));
|
|
6
45
|
const ESLINT_DISABLE = '/* eslint-disable */\n';
|
|
7
46
|
const FILE_HEADER = `${ESLINT_DISABLE}// This file was auto-generated. Do not edit manually.
|
|
8
47
|
// To update, run the error generation script again.\n\n`;
|
|
@@ -29,8 +68,12 @@ function buildErrorMapping(errorCodes) {
|
|
|
29
68
|
.map((code) => `'${code}': '${code}'`)
|
|
30
69
|
.join(', ');
|
|
31
70
|
}
|
|
32
|
-
|
|
33
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Generates TypeScript error classes and an optional error mapping from an OpenAPI specification file and writes them to the specified destination path.
|
|
73
|
+
* @public
|
|
74
|
+
*/
|
|
75
|
+
async function generateErrors(openapiPath, destinationPath, options) {
|
|
76
|
+
const openapi = await (0, json_schema_ref_parser_1.dereference)(openapiPath);
|
|
34
77
|
if (openapi.paths === undefined) {
|
|
35
78
|
console.error('No paths found in the OpenAPI document.');
|
|
36
79
|
process.exit(1);
|
|
@@ -94,11 +137,11 @@ export async function generateErrors(openapiPath, destinationPath, options) {
|
|
|
94
137
|
errorFile += ` export const API_ERRORS_MAP = { ${buildErrorMapping(errorCodes)} } as const;\n`;
|
|
95
138
|
}
|
|
96
139
|
if (options.shouldFormat === true) {
|
|
97
|
-
const prettierOptions = await resolveConfig('./src/index.ts');
|
|
98
|
-
errorFile = await format(errorFile, { ...prettierOptions, parser: 'typescript' });
|
|
140
|
+
const prettierOptions = await (0, prettier_1.resolveConfig)('./src/index.ts');
|
|
141
|
+
errorFile = await (0, prettier_1.format)(errorFile, { ...prettierOptions, parser: 'typescript' });
|
|
99
142
|
}
|
|
100
|
-
const directory =
|
|
101
|
-
await
|
|
102
|
-
await
|
|
143
|
+
const directory = node_path_1.default.dirname(destinationPath);
|
|
144
|
+
await promises_1.default.mkdir(directory, { recursive: true });
|
|
145
|
+
await promises_1.default.writeFile(destinationPath, errorFile);
|
|
103
146
|
}
|
|
104
|
-
//# sourceMappingURL=generateErrors.
|
|
147
|
+
//# sourceMappingURL=generateErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateErrors.js","sourceRoot":"","sources":["../../src/generator/generateErrors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { SchemaObject, TransformNodeOptions, TransformObject } from 'openapi-typescript';
|
|
3
3
|
import { TypeNode } from 'typescript';
|
|
4
|
+
/**
|
|
5
|
+
* Generates TypeScript types from an OpenAPI specification file and writes them to the specified destination path.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
4
8
|
export declare function generateTypes(openapiPath: string, destinationPath: string, options: {
|
|
5
9
|
shouldFormat?: boolean;
|
|
6
10
|
addTypedRequestHandler?: boolean;
|
|
7
11
|
inject?: string;
|
|
8
12
|
transform?: (schemaObject: SchemaObject, metadata: TransformNodeOptions) => TypeNode | TransformObject | undefined;
|
|
9
13
|
}): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=generateTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTypes.d.ts","sourceRoot":"","sources":["../../src/generator/generateTypes.ts"],"names":[],"mappings":";AAGA,OAAkB,EAAe,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUtC;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE;IACP,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAoB,KAAK,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;CACpH,GACA,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.generateTypes = generateTypes;
|
|
41
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
42
|
+
const prettier_1 = require("prettier");
|
|
43
|
+
const openapi_typescript_1 = __importStar(require("openapi-typescript"));
|
|
44
|
+
const ESLINT_DISABLE = '/* eslint-disable */\n';
|
|
45
|
+
const FILE_HEADER = `${ESLINT_DISABLE}// This file was auto-generated. Do not edit manually.
|
|
46
|
+
// To update, run the error generation script again.\n\n`;
|
|
47
|
+
const typedRequestHandlerImport = "import type { TypedRequestHandlers as ImportedTypedRequestHandlers } from '@map-colonies/openapi-helpers/typedRequestHandler';\n";
|
|
48
|
+
const exportTypedRequestHandlers = 'export type TypedRequestHandlers = ImportedTypedRequestHandlers<paths, operations>;\n';
|
|
49
|
+
/**
|
|
50
|
+
* Generates TypeScript types from an OpenAPI specification file and writes them to the specified destination path.
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
async function generateTypes(openapiPath, destinationPath, options) {
|
|
54
|
+
const ast = await (0, openapi_typescript_1.default)(await promises_1.default.readFile(openapiPath, 'utf-8'), { exportType: true, inject: options.inject, transform: options.transform });
|
|
55
|
+
let content = (0, openapi_typescript_1.astToString)(ast);
|
|
56
|
+
if (options.addTypedRequestHandler === true) {
|
|
57
|
+
content = typedRequestHandlerImport + content + exportTypedRequestHandlers;
|
|
58
|
+
}
|
|
59
|
+
content = FILE_HEADER + content;
|
|
60
|
+
if (options.shouldFormat === true) {
|
|
61
|
+
const prettierOptions = await (0, prettier_1.resolveConfig)('./src/index.ts');
|
|
62
|
+
content = await (0, prettier_1.format)(content, { ...prettierOptions, parser: 'typescript' });
|
|
63
|
+
}
|
|
64
|
+
await promises_1.default.writeFile(destinationPath, content);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=generateTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTypes.js","sourceRoot":"","sources":["../../src/generator/generateTypes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,sCA2BC;AA5CD,gEAAkC;AAClC,uCAAiD;AACjD,yEAAiH;AAGjH,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAChD,MAAM,WAAW,GAAG,GAAG,cAAc;yDACoB,CAAC;AAE1D,MAAM,yBAAyB,GAC7B,kIAAkI,CAAC;AACrI,MAAM,0BAA0B,GAAG,uFAAuF,CAAC;AAE3H;;;GAGG;AACI,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,eAAuB,EACvB,OAKC;IAED,MAAM,GAAG,GAAG,MAAM,IAAA,4BAAS,EAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEjJ,IAAI,OAAO,GAAG,IAAA,gCAAW,EAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,OAAO,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,GAAG,yBAAyB,GAAG,OAAO,GAAG,0BAA0B,CAAC;IAC7E,CAAC;IAED,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;IAEhC,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,MAAM,IAAA,wBAAa,EAAC,gBAAgB,CAAC,CAAC;QAE9D,OAAO,GAAG,MAAM,IAAA,iBAAM,EAAC,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,kBAAE,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./generateTypes.js"), exports);
|
|
18
|
+
__exportStar(require("./generateErrors.js"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
type Status = number | string;
|
|
2
|
+
interface Response {
|
|
3
|
+
status: Status;
|
|
4
|
+
}
|
|
5
|
+
interface Expect {
|
|
6
|
+
(actual: unknown): {
|
|
7
|
+
toBe: (expected: unknown) => void;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Type for the assertion function returned by expectResponseStatusFactory
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export type ExpectResponseStatus = <TResponse extends Response, TStatus extends TResponse['status']>(res: TResponse, expectedStatus: TStatus) => asserts res is Extract<TResponse, {
|
|
15
|
+
status: TStatus;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a function to assert that the response status matches the expected status
|
|
19
|
+
* It forces TypeScript to narrow the response type based on the expected status
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { expectResponseStatusFactory } from '@map-colonies/openapi-helpers/requestSender';
|
|
24
|
+
* import type { ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender';
|
|
25
|
+
* import { expect } from 'vitest';
|
|
26
|
+
*
|
|
27
|
+
* const expectResponseStatus: ExpectResponseStatus = expectResponseStatusFactory(expect);
|
|
28
|
+
*
|
|
29
|
+
* // Now use it in tests
|
|
30
|
+
* const response = await requestSender.getUser({ pathParams: { id: '123' } });
|
|
31
|
+
* expectResponseStatus(response, 200);
|
|
32
|
+
* // TypeScript now knows response is the 200 response type
|
|
33
|
+
* ```
|
|
34
|
+
* @public
|
|
35
|
+
*/
|
|
36
|
+
export declare function expectResponseStatusFactory(expect: Expect): ExpectResponseStatus;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=expect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/requestSender/expect.ts"],"names":[],"mappings":"AAAA,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9B,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,MAAM;IACd,CAAC,MAAM,EAAE,OAAO,GAAG;QACjB,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;KACnC,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,SAAS,QAAQ,EAAE,OAAO,SAAS,SAAS,CAAC,QAAQ,CAAC,EACjG,GAAG,EAAE,SAAS,EACd,cAAc,EAAE,OAAO,KACpB,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAIhF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expectResponseStatusFactory = expectResponseStatusFactory;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function to assert that the response status matches the expected status
|
|
6
|
+
* It forces TypeScript to narrow the response type based on the expected status
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { expectResponseStatusFactory } from '@map-colonies/openapi-helpers/requestSender';
|
|
11
|
+
* import type { ExpectResponseStatus } from '@map-colonies/openapi-helpers/requestSender';
|
|
12
|
+
* import { expect } from 'vitest';
|
|
13
|
+
*
|
|
14
|
+
* const expectResponseStatus: ExpectResponseStatus = expectResponseStatusFactory(expect);
|
|
15
|
+
*
|
|
16
|
+
* // Now use it in tests
|
|
17
|
+
* const response = await requestSender.getUser({ pathParams: { id: '123' } });
|
|
18
|
+
* expectResponseStatus(response, 200);
|
|
19
|
+
* // TypeScript now knows response is the 200 response type
|
|
20
|
+
* ```
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
function expectResponseStatusFactory(expect) {
|
|
24
|
+
return (res, expectedStatus) => {
|
|
25
|
+
expect(res.status).toBe(expectedStatus);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=expect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/requestSender/expect.ts"],"names":[],"mappings":";;AAwCA,kEAIC;AAvBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,2BAA2B,CAAC,MAAc;IACxD,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import type express from 'express';
|
|
2
2
|
import { PathsTemplate, OperationsTemplate } from '../common/types';
|
|
3
|
+
import { expectResponseStatusFactory } from './expect';
|
|
4
|
+
import type { ExpectResponseStatus } from './expect';
|
|
3
5
|
import type { RequestSender, RequestSenderOptions } from './types';
|
|
4
|
-
export { RequestSender };
|
|
6
|
+
export { RequestSender, expectResponseStatusFactory, ExpectResponseStatus };
|
|
5
7
|
/**
|
|
6
8
|
* Creates a request sender object that can be used to send fake HTTP requests using supertest based on an OpenAPI specification.
|
|
7
9
|
* The openapi types should be generated using the openapi-typescript package.
|
|
8
10
|
*
|
|
9
11
|
* @template Paths - The type representing the paths defined in the OpenAPI specification.
|
|
10
12
|
* @template Operations - The type representing the operations defined in the OpenAPI specification.
|
|
11
|
-
* @param
|
|
12
|
-
* @param
|
|
13
|
-
* @param
|
|
14
|
-
* @returns
|
|
13
|
+
* @param openapiFilePath - The file path to the OpenAPI specification file.
|
|
14
|
+
* @param app - The Express application instance.
|
|
15
|
+
* @param options - Optional configuration options for the request sender.
|
|
16
|
+
* @returns A promise that resolves to a RequestSender object.
|
|
15
17
|
*
|
|
16
18
|
* @example
|
|
17
19
|
* ```typescript
|
|
@@ -33,5 +35,7 @@ export { RequestSender };
|
|
|
33
35
|
* path: '/simple-request'
|
|
34
36
|
* });
|
|
35
37
|
* ```
|
|
38
|
+
* @public
|
|
36
39
|
*/
|
|
37
40
|
export declare function createRequestSender<Paths extends PathsTemplate = never, Operations extends OperationsTemplate = never>(openapiFilePath: Operations extends never ? never : string, app: express.Application, options?: RequestSenderOptions): Promise<RequestSender<Paths, Operations>>;
|
|
41
|
+
//# sourceMappingURL=requestSender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSender.d.ts","sourceRoot":"","sources":["../../src/requestSender/requestSender.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,EAAE,aAAa,EAAW,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAuD,aAAa,EAAiB,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAsFvI,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,SAAS,aAAa,GAAG,KAAK,EAAE,UAAU,SAAS,kBAAkB,GAAG,KAAK,EAC1H,eAAe,EAAE,UAAU,SAAS,KAAK,GAAG,KAAK,GAAG,MAAM,EAC1D,GAAG,EAAE,OAAO,CAAC,WAAW,EACxB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAsB3C"}
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.expectResponseStatusFactory = void 0;
|
|
6
7
|
exports.createRequestSender = createRequestSender;
|
|
7
8
|
/**
|
|
8
9
|
* @module requestSender
|
|
@@ -10,6 +11,8 @@ exports.createRequestSender = createRequestSender;
|
|
|
10
11
|
const node_fs_1 = require("node:fs");
|
|
11
12
|
const supertest_1 = __importDefault(require("supertest"));
|
|
12
13
|
const oas_normalize_1 = __importDefault(require("oas-normalize"));
|
|
14
|
+
const expect_1 = require("./expect");
|
|
15
|
+
Object.defineProperty(exports, "expectResponseStatusFactory", { enumerable: true, get: function () { return expect_1.expectResponseStatusFactory; } });
|
|
13
16
|
function sendRequest(app, options, internalOptions = {}) {
|
|
14
17
|
const method = options.method;
|
|
15
18
|
let actualPath = (internalOptions.baseUrl ?? '') + options.path;
|
|
@@ -73,10 +76,10 @@ function getOperationsPathAndMethod(openapi) {
|
|
|
73
76
|
*
|
|
74
77
|
* @template Paths - The type representing the paths defined in the OpenAPI specification.
|
|
75
78
|
* @template Operations - The type representing the operations defined in the OpenAPI specification.
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
* @param
|
|
79
|
-
* @returns
|
|
79
|
+
* @param openapiFilePath - The file path to the OpenAPI specification file.
|
|
80
|
+
* @param app - The Express application instance.
|
|
81
|
+
* @param options - Optional configuration options for the request sender.
|
|
82
|
+
* @returns A promise that resolves to a RequestSender object.
|
|
80
83
|
*
|
|
81
84
|
* @example
|
|
82
85
|
* ```typescript
|
|
@@ -98,6 +101,7 @@ function getOperationsPathAndMethod(openapi) {
|
|
|
98
101
|
* path: '/simple-request'
|
|
99
102
|
* });
|
|
100
103
|
* ```
|
|
104
|
+
* @public
|
|
101
105
|
*/
|
|
102
106
|
async function createRequestSender(openapiFilePath, app, options = {}) {
|
|
103
107
|
const fileContent = (0, node_fs_1.readFileSync)(openapiFilePath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestSender.js","sourceRoot":"","sources":["../../src/requestSender/requestSender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requestSender.js","sourceRoot":"","sources":["../../src/requestSender/requestSender.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,9 +86,14 @@ export type OperationsNames<Operations extends OperationsTemplate> = keyof Opera
|
|
|
86
86
|
type OperationRequestOptional<Operations extends OperationsTemplate, Operation extends OperationsNames<Operations>> = (options?: RequestOptions<Operations[Operation]>) => RequestReturn<Operations[Operation]>;
|
|
87
87
|
type OperationRequestRequired<Operations extends OperationsTemplate, Operation extends OperationsNames<Operations>> = (options: RequestOptions<Operations[Operation]>) => RequestReturn<Operations[Operation]>;
|
|
88
88
|
type SendRequest<Paths extends PathsTemplate> = <Path extends keyof Paths, Method extends keyof OmitProperties<Omit<Paths[Path], 'parameters'>, undefined>>(options: PathRequestOptions<Paths, Path, Method>) => RequestReturn<Paths[Path][Method]>;
|
|
89
|
+
/**
|
|
90
|
+
* Represents a request sender that can send requests to an Express application
|
|
91
|
+
* @public
|
|
92
|
+
*/
|
|
89
93
|
export type RequestSender<Paths extends PathsTemplate, Operations extends OperationsTemplate> = Prettify<{
|
|
90
94
|
sendRequest: SendRequest<Paths>;
|
|
91
95
|
} & {
|
|
92
96
|
[operation in OperationsNames<Operations>]: RequiredKeys<RequestOptions<Operations[operation]>> extends OptionalKeys<RequestOptions<Operations[operation]>> ? OperationRequestOptional<Operations, operation> : OperationRequestRequired<Operations, operation>;
|
|
93
97
|
}>;
|
|
94
98
|
export {};
|
|
99
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/requestSender/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,KAAK,KAAK,SAAS,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEtG;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;AAE/F,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAAE,SAAS,EAAE,GAAG,CAAA;CAAE,CAAC,GAClE;KACG,GAAG,IAAI,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;KAAE;CACtF,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,GACvB,KAAK,CAAC;AAEV,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAAE,UAAU,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC,GAAG;IAAE,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,KAAK,CAAC;AAEnI,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAAE,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC,GAC/E,CAAC,CAAC,CAAC,SAAS,CAAC;IAAE,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAA;CAAE,CAAC,GAC7C;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACxC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GACvF;IAAE,WAAW,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAA;CAAE,GAC1C;IAAE,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAA;CAAE,GAC7C;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE7C,KAAK,kBAAkB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,CAAC,GACxG,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,GAAG,SAAS,GAChE,SAAS,CAAC;AAEd,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAAE,WAAW,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;CAAE,CAAC,GACpE;IAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAA;CAAE,GAC9E,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE,SAAS,CAAA;CAAE,GACnC;IAAE,WAAW,CAAC,EAAE,GAAG,CAAA;CAAE,GACrB,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;CAAE,GAC1C;IAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAA;CAAE,GACtD;IAAE,WAAW,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAE9B,KAAK,+BAA+B,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAE1F,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,aAAa,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpG,MAAM,MAAM,kBAAkB,CAC5B,KAAK,SAAS,aAAa,EAC3B,IAAI,SAAS,MAAM,KAAK,EACxB,MAAM,SAAS,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,IAC7E,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;AAEpI,MAAM,MAAM,eAAe,CAAC,UAAU,SAAS,kBAAkB,IAAI,MAAM,UAAU,CAAC;AAEtF,KAAK,wBAAwB,CAAC,UAAU,SAAS,kBAAkB,EAAE,SAAS,SAAS,eAAe,CAAC,UAAU,CAAC,IAAI,CACpH,OAAO,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAC5C,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAE1C,KAAK,wBAAwB,CAAC,UAAU,SAAS,kBAAkB,EAAE,SAAS,SAAS,eAAe,CAAC,UAAU,CAAC,IAAI,CACpH,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAC3C,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAE1C,KAAK,WAAW,CAAC,KAAK,SAAS,aAAa,IAAI,CAC9C,IAAI,SAAS,MAAM,KAAK,EACxB,MAAM,SAAS,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAE/E,OAAO,EAAE,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,KAC7C,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,aAAa,EAAE,UAAU,SAAS,kBAAkB,IAAI,QAAQ,CACtG;IACE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CACjC,GAAG;KACD,SAAS,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,YAAY,CAClH,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CACtC,GACG,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,GAC/C,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;CACpD,CACF,CAAC"}
|
|
@@ -64,6 +64,8 @@ type PathHandlers<Paths extends PathsTemplate> = {
|
|
|
64
64
|
* app.get('/example', handlers['GET /example']);
|
|
65
65
|
* app.post('/exampleOperation', handlers.exampleOperation);
|
|
66
66
|
* ```
|
|
67
|
+
* @public
|
|
67
68
|
*/
|
|
68
69
|
export type TypedRequestHandlers<Paths extends PathsTemplate, Operations extends OperationsTemplate> = OperationHandlers<Operations> & PathHandlers<Paths>;
|
|
69
70
|
export {};
|
|
71
|
+
//# sourceMappingURL=typedRequestHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typedRequestHandler.d.ts","sourceRoot":"","sources":["../../src/typedRequestHandler/typedRequestHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKzE,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,UAAU,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAEnH,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,WAAW,EAAE,GAAG,CAAA;CAAE,GACnD,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,GAC/C,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE,GAAG,CAAA;CAAE,GAC7B,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,GAAG,SAAS,GAC/E,SAAS,CAAC;AAEhB,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAGvH,KAAK,qBAAqB,CAAC,CAAC,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAExI,KAAK,iBAAiB,CAAC,UAAU,SAAS,kBAAkB,IAAI;KAC7D,GAAG,IAAI,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;CAClE,CAAC;AAEF,KAAK,cAAc,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjE,KAAK,uBAAuB,CAAC,KAAK,SAAS,aAAa,IAAI;KACzD,IAAI,IAAI,MAAM,KAAK,GAAG;SACpB,MAAM,IAAI,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG;YAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,IAAI,CAAA;SAAE;KAC9G,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;CACrC,CAAC,MAAM,KAAK,CAAC,CAAC;AAEf,KAAK,YAAY,CAAC,KAAK,SAAS,aAAa,IAAI;KAC9C,CAAC,IAAI,uBAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;CAC3I,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,aAAa,EAAE,UAAU,SAAS,kBAAkB,IAAI,iBAAiB,CAAC,UAAU,CAAC,GAClI,YAAY,CAAC,KAAK,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,48 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@map-colonies/openapi-helpers",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "A package that provides utilities for working with openapi files",
|
|
5
|
+
"type": "commonjs",
|
|
5
6
|
"exports": {
|
|
6
7
|
"./requestSender": {
|
|
7
|
-
"
|
|
8
|
-
"
|
|
8
|
+
"types": "./dist/requestSender/requestSender.d.ts",
|
|
9
|
+
"default": "./dist/requestSender/requestSender.js"
|
|
9
10
|
},
|
|
10
11
|
"./typedRequestHandler": {
|
|
11
|
-
"
|
|
12
|
-
"
|
|
12
|
+
"types": "./dist/typedRequestHandler/typedRequestHandler.d.ts",
|
|
13
|
+
"default": "./dist/typedRequestHandler/typedRequestHandler.js"
|
|
13
14
|
},
|
|
14
15
|
"./generators": {
|
|
15
|
-
"
|
|
16
|
-
"
|
|
16
|
+
"types": "./dist/generator/index.d.ts",
|
|
17
|
+
"default": "./dist/generator/index.js"
|
|
17
18
|
}
|
|
18
19
|
},
|
|
19
20
|
"bin": "./dist/cli/entrypoint.mjs",
|
|
20
|
-
"
|
|
21
|
-
"format": "prettier --check .",
|
|
22
|
-
"format:fix": "prettier --write .",
|
|
23
|
-
"prelint:fix": "npm run format:fix",
|
|
24
|
-
"prelint": "npm run format",
|
|
25
|
-
"lint": "eslint .",
|
|
26
|
-
"lint:fix": "eslint --fix .",
|
|
27
|
-
"test": "tsc --project tsconfig.test.json && jest --config=./tests/configurations/jest.config.js",
|
|
28
|
-
"prebuild": "npm run clean",
|
|
29
|
-
"build": "tsc --project tsconfig.build.json",
|
|
30
|
-
"generate:test:types": "npm run build && node dist/generator/generateTypes.mjs tests/openapi3.yaml tests/types.d.ts",
|
|
31
|
-
"clean": "rimraf dist",
|
|
32
|
-
"prepublish": "npm run build",
|
|
33
|
-
"prepack": "npm run build",
|
|
34
|
-
"prepare": "husky",
|
|
35
|
-
"docs": "typedoc"
|
|
36
|
-
},
|
|
37
|
-
"repository": {
|
|
38
|
-
"type": "git",
|
|
39
|
-
"url": "git+https://github.com/MapColonies/openapi-helpers.git"
|
|
40
|
-
},
|
|
41
|
-
"author": "MapColonies",
|
|
42
|
-
"license": "ISC",
|
|
43
|
-
"bugs": {
|
|
44
|
-
"url": "https://github.com/MapColonies/openapi-helpers/issues"
|
|
45
|
-
},
|
|
21
|
+
"repository": "github:MapColonies/infra-packages",
|
|
46
22
|
"files": [
|
|
47
23
|
"dist/**/*"
|
|
48
24
|
],
|
|
@@ -50,19 +26,18 @@
|
|
|
50
26
|
"access": "public"
|
|
51
27
|
},
|
|
52
28
|
"engines": {
|
|
53
|
-
"node": ">=
|
|
29
|
+
"node": ">=24"
|
|
54
30
|
},
|
|
55
|
-
"homepage": "https://github.com/MapColonies/openapi-helpers#readme",
|
|
56
31
|
"dependencies": {
|
|
57
|
-
"@apidevtools/json-schema-ref-parser": "^
|
|
32
|
+
"@apidevtools/json-schema-ref-parser": "^15.0.0",
|
|
58
33
|
"@commander-js/extra-typings": "^14.0.0",
|
|
59
|
-
"@map-colonies/read-pkg": "^1.0.0",
|
|
60
34
|
"change-case": "^5.4.4",
|
|
61
35
|
"commander": "^14.0.0",
|
|
62
|
-
"oas-normalize": "^
|
|
63
|
-
"ora": "^
|
|
36
|
+
"oas-normalize": "^15.0.0",
|
|
37
|
+
"ora": "^9.0.0",
|
|
64
38
|
"ts-essentials": "^10.1.1",
|
|
65
|
-
"yaml": "^2.8.0"
|
|
39
|
+
"yaml": "^2.8.0",
|
|
40
|
+
"@map-colonies/read-pkg": "^2.0.0"
|
|
66
41
|
},
|
|
67
42
|
"peerDependencies": {
|
|
68
43
|
"@types/express": "^4.17.21",
|
|
@@ -71,27 +46,37 @@
|
|
|
71
46
|
"supertest": "^7.0.0"
|
|
72
47
|
},
|
|
73
48
|
"devDependencies": {
|
|
74
|
-
"@
|
|
75
|
-
"@
|
|
76
|
-
"@
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
49
|
+
"@types/supertest": "6.0.3",
|
|
50
|
+
"@types/node": "24.10.9",
|
|
51
|
+
"@types/body-parser": "1.19.6",
|
|
52
|
+
"openapi-types": "12.1.3",
|
|
53
|
+
"body-parser": "2.2.2",
|
|
54
|
+
"eslint": "^9.39.1",
|
|
55
|
+
"express": "5.2.1",
|
|
56
|
+
"rimraf": "^6.1.2",
|
|
57
|
+
"typescript": "5.9.3",
|
|
58
|
+
"vitest": "^4.0.15",
|
|
59
|
+
"@microsoft/api-extractor": "^7.55.2",
|
|
60
|
+
"@map-colonies/eslint-config": "^7.1.0",
|
|
61
|
+
"@map-colonies/tsconfig": "^2.0.0",
|
|
62
|
+
"vitest-config": "^0.0.0"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"test": "vitest run",
|
|
66
|
+
"lint": "eslint .",
|
|
67
|
+
"lint:fix": "eslint --fix .",
|
|
68
|
+
"prebuild": "pnpm run clean",
|
|
69
|
+
"build": "tsc --project tsconfig.build.json",
|
|
70
|
+
"clean": "rimraf dist",
|
|
71
|
+
"check-dist": "publint && attw --profile node16 --pack .",
|
|
72
|
+
"knip": "knip --directory ../.. --workspace packages/openapi-helpers",
|
|
73
|
+
"api:check": "pnpm run handler:api:check && pnpm run sender:api:check && pnpm run generators:api:check",
|
|
74
|
+
"handler:api": "api-extractor run --local --verbose --config ./api-extractor.handler.json",
|
|
75
|
+
"handler:api:check": "api-extractor run --verbose --config ./api-extractor.handler.json",
|
|
76
|
+
"sender:api": "api-extractor run --local --verbose --config ./api-extractor.sender.json",
|
|
77
|
+
"sender:api:check": "api-extractor run --verbose --config ./api-extractor.sender.json",
|
|
78
|
+
"generators:api": "api-extractor run --local --verbose --config ./api-extractor.generators.json",
|
|
79
|
+
"generators:api:check": "api-extractor run --verbose --config ./api-extractor.generators.json",
|
|
80
|
+
"generate:test:types": "pnpm run build && node dist/generator/generateTypes.mjs tests/openapi3.yaml tests/types.d.ts"
|
|
96
81
|
}
|
|
97
|
-
}
|
|
82
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateErrors.mjs","sourceRoot":"","sources":["../../src/generator/generateErrors.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import fs from 'node:fs/promises';
|
|
3
|
-
import { format, resolveConfig } from 'prettier';
|
|
4
|
-
import openapiTS, { astToString } from 'openapi-typescript';
|
|
5
|
-
const ESLINT_DISABLE = '/* eslint-disable */\n';
|
|
6
|
-
const FILE_HEADER = `${ESLINT_DISABLE}// This file was auto-generated. Do not edit manually.
|
|
7
|
-
// To update, run the error generation script again.\n\n`;
|
|
8
|
-
const typedRequestHandlerImport = "import type { TypedRequestHandlers as ImportedTypedRequestHandlers } from '@map-colonies/openapi-helpers/typedRequestHandler';\n";
|
|
9
|
-
const exportTypedRequestHandlers = 'export type TypedRequestHandlers = ImportedTypedRequestHandlers<paths, operations>;\n';
|
|
10
|
-
export async function generateTypes(openapiPath, destinationPath, options) {
|
|
11
|
-
const ast = await openapiTS(await fs.readFile(openapiPath, 'utf-8'), { exportType: true, inject: options.inject, transform: options.transform });
|
|
12
|
-
let content = astToString(ast);
|
|
13
|
-
if (options.addTypedRequestHandler === true) {
|
|
14
|
-
content = typedRequestHandlerImport + content + exportTypedRequestHandlers;
|
|
15
|
-
}
|
|
16
|
-
content = FILE_HEADER + content;
|
|
17
|
-
if (options.shouldFormat === true) {
|
|
18
|
-
const prettierOptions = await resolveConfig('./src/index.ts');
|
|
19
|
-
content = await format(content, { ...prettierOptions, parser: 'typescript' });
|
|
20
|
-
}
|
|
21
|
-
await fs.writeFile(destinationPath, content);
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=generateTypes.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateTypes.mjs","sourceRoot":"","sources":["../../src/generator/generateTypes.mts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,SAAS,EAAE,EAAE,WAAW,EAAuD,MAAM,oBAAoB,CAAC;AAGjH,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAChD,MAAM,WAAW,GAAG,GAAG,cAAc;yDACoB,CAAC;AAE1D,MAAM,yBAAyB,GAC7B,kIAAkI,CAAC;AACrI,MAAM,0BAA0B,GAAG,uFAAuF,CAAC;AAE3H,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,eAAuB,EACvB,OAKC;IAED,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEjJ,IAAI,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,OAAO,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,GAAG,yBAAyB,GAAG,OAAO,GAAG,0BAA0B,CAAC;IAC7E,CAAC;IAED,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;IAEhC,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE9D,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/generator/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/generator/index.mts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|