@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 = ESLINT_DISABLE + astToString(ast);
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,EAChC,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;KACxC;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,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,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAEhD,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@map-colonies/openapi-helpers",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "A package that provides utilities for working with openapi files",
5
5
  "exports": {
6
6
  "./requestSender": {