@map-colonies/openapi-helpers 1.1.1 → 1.2.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
CHANGED
|
@@ -14,14 +14,18 @@ The package contains a script that wraps the `openapi-typescript` package and ge
|
|
|
14
14
|
|
|
15
15
|
The command structure is as follows:
|
|
16
16
|
```bash
|
|
17
|
-
npx @map-colonies/openapi-helpers <input-file> <output-file> --format
|
|
17
|
+
npx @map-colonies/openapi-helpers <input-file> <output-file> --format --add-typed-request-handler
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
For example:
|
|
21
21
|
```bash
|
|
22
|
-
npx @map-colonies/openapi-helpers ./openapi3.yaml ./src/openapi.d.ts --format
|
|
22
|
+
npx @map-colonies/openapi-helpers ./openapi3.yaml ./src/openapi.d.ts --format --add-typed-request-handler
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
### options
|
|
26
|
+
- `--format` - format the generated types using `prettier`.
|
|
27
|
+
- `--add-typed-request-handler` - add the `TypedRequestHandler` type to the generated types.
|
|
28
|
+
|
|
25
29
|
## TypedRequestHandler
|
|
26
30
|
The package contains a wrapper for the `express` types package that provides autocomplete for all the request Handlers to the API based on the openapi. The TypedRequestHandler is initialized with the the typed generated by `openapi-typescript`, and is configured based on operation name or method and path.
|
|
27
31
|
|
|
@@ -4,17 +4,25 @@ import { parseArgs } from 'node:util';
|
|
|
4
4
|
import { format, resolveConfig } from 'prettier';
|
|
5
5
|
import openapiTS, { astToString } from 'openapi-typescript';
|
|
6
6
|
const ARGS_SLICE = 2;
|
|
7
|
-
const { values: { format: shouldFormat }, positionals, } = parseArgs({
|
|
7
|
+
const { values: { format: shouldFormat, 'add-typed-request-handler': addTypedRequestHandler }, positionals, } = parseArgs({
|
|
8
8
|
args: process.argv.slice(ARGS_SLICE),
|
|
9
9
|
options: {
|
|
10
10
|
format: { type: 'boolean', alias: 'f' },
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
12
|
+
'add-typed-request-handler': { type: 'boolean', alias: 't' },
|
|
11
13
|
},
|
|
12
14
|
allowPositionals: true,
|
|
13
15
|
});
|
|
14
16
|
const [openapiPath, destinationPath] = positionals;
|
|
15
17
|
const ESLINT_DISABLE = '/* eslint-disable */\n';
|
|
18
|
+
const typedRequestHandlerImport = "import type { TypedRequestHandlers as ImportedTypedRequestHandlers } from '@map-colonies/openapi-helpers/typedRequestHandler';\n";
|
|
19
|
+
const exportTypedRequestHandlers = 'export type TypedRequestHandlers = ImportedTypedRequestHandlers<paths, operations>;\n';
|
|
16
20
|
const ast = await openapiTS(await fs.readFile(openapiPath, 'utf-8'), { exportType: true });
|
|
17
|
-
let content =
|
|
21
|
+
let content = astToString(ast);
|
|
22
|
+
if (addTypedRequestHandler === true) {
|
|
23
|
+
content = typedRequestHandlerImport + content + exportTypedRequestHandlers;
|
|
24
|
+
}
|
|
25
|
+
content = ESLINT_DISABLE + content;
|
|
18
26
|
if (shouldFormat === true) {
|
|
19
27
|
const prettierOptions = await resolveConfig('./src/index.ts');
|
|
20
28
|
content = await format(content, { ...prettierOptions, parser: 'typescript' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateTypes.mjs","sourceRoot":"","sources":["../../src/generator/generateTypes.mts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,EACJ,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"generateTypes.mjs","sourceRoot":"","sources":["../../src/generator/generateTypes.mts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,EACJ,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,EACrF,WAAW,GACZ,GAAG,SAAS,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IACpC,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACvC,gEAAgE;QAChE,2BAA2B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;KAC7D;IACD,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,GAAG,WAAW,CAAC;AAEnD,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,MAAM,yBAAyB,GAC7B,kIAAkI,CAAC;AACrI,MAAM,0BAA0B,GAAG,uFAAuF,CAAC;AAE3H,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAE3F,IAAI,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAE/B,IAAI,sBAAsB,KAAK,IAAI,EAAE,CAAC;IACpC,OAAO,GAAG,yBAAyB,GAAG,OAAO,GAAG,0BAA0B,CAAC;AAC7E,CAAC;AAED,OAAO,GAAG,cAAc,GAAG,OAAO,CAAC;AAEnC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;IAC1B,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAE9D,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAE7C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC"}
|