diff --git a/.changeset/fancy-actors-wait.md b/.changeset/fancy-actors-wait.md new file mode 100644 index 00000000..aee8635a --- /dev/null +++ b/.changeset/fancy-actors-wait.md @@ -0,0 +1,5 @@ +--- +"swagger-typescript-api": minor +--- + +Use `c12` for wider configuration file format support. diff --git a/index.ts b/index.ts index 182db548..bc9f9295 100644 --- a/index.ts +++ b/index.ts @@ -1,15 +1,14 @@ #!/usr/bin/env node import * as path from "node:path"; -import * as url from "node:url"; +import { loadConfig } from "c12"; import { defineCommand, runMain } from "citty"; -import { consola } from "consola"; import packageJson from "./package.json" with { type: "json" }; import { TemplatesGenConfig } from "./src/commands/generate-templates/configuration.js"; import { CodeGenConfig } from "./src/configuration.js"; import { HTTP_CLIENT } from "./src/constants.js"; import { generateApi, generateTemplates } from "./src/index.js"; -import type { HttpClientType } from "./types/index.js"; +import type { GenerateApiParams, HttpClientType } from "./types/index.js"; const templateGenBaseConfig = new TemplatesGenConfig({}); @@ -288,22 +287,9 @@ const generateCommand = defineCommand({ }, }, run: async ({ args }) => { - let customConfig = undefined; - - if (args["custom-config"]) { - try { - const customConfigPath = url - .pathToFileURL(path.resolve(process.cwd(), args["custom-config"])) - .toString(); - customConfig = await import(customConfigPath); - customConfig = customConfig.default || customConfig; - if (customConfig) { - consola.info(`Found custom config at: ${customConfigPath}`); - } - } catch (error) { - consola.error("Error loading custom config:", error); - } - } + const customConfig = await loadConfig({ + configFile: args["custom-config"], + }); await generateApi({ addReadonly: args["add-readonly"], @@ -346,7 +332,7 @@ const generateCommand = defineCommand({ typeSuffix: args["type-suffix"], unwrapResponseData: args["unwrap-response-data"], url: args.path, - ...customConfig, + ...customConfig.config, }); }, }); diff --git a/package.json b/package.json index 207965e8..4da84782 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ }, "dependencies": { "@types/swagger-schema-official": "^2.0.25", + "c12": "3.0.2", "citty": "^0.1.6", "consola": "^3.4.2", "cosmiconfig": "^9.0.0", diff --git a/yarn.lock b/yarn.lock index 85681698..4f9ada22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1156,6 +1156,31 @@ __metadata: languageName: node linkType: hard +"c12@npm:3.0.2": + version: 3.0.2 + resolution: "c12@npm:3.0.2" + dependencies: + chokidar: "npm:^4.0.3" + confbox: "npm:^0.1.8" + defu: "npm:^6.1.4" + dotenv: "npm:^16.4.7" + exsolve: "npm:^1.0.0" + giget: "npm:^2.0.0" + jiti: "npm:^2.4.2" + ohash: "npm:^2.0.5" + pathe: "npm:^2.0.3" + perfect-debounce: "npm:^1.0.0" + pkg-types: "npm:^2.0.0" + rc9: "npm:^2.1.2" + peerDependencies: + magicast: ^0.3.5 + peerDependenciesMeta: + magicast: + optional: true + checksum: 10c0/5ff4193c396f7ab05b52bcce9146b954e16cda16c317e018b8aa8d810b7cc678978fdcb203f6dde99276949ec25bb49104c7022d6c8915245425404abcb39750 + languageName: node + linkType: hard + "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -1309,6 +1334,20 @@ __metadata: languageName: node linkType: hard +"confbox@npm:^0.1.8": + version: 0.1.8 + resolution: "confbox@npm:0.1.8" + checksum: 10c0/fc2c68d97cb54d885b10b63e45bd8da83a8a71459d3ecf1825143dd4c7f9f1b696b3283e07d9d12a144c1301c2ebc7842380bdf0014e55acc4ae1c9550102418 + languageName: node + linkType: hard + +"confbox@npm:^0.2.1": + version: 0.2.1 + resolution: "confbox@npm:0.2.1" + checksum: 10c0/bd47ab24bf2c3c6ec3386ca59e934b34421c39b0a50aa8c47ab5da7fdf663965ed4793240e5377e74d91b73d3dcd05568c0e91608a72b327877f60cc51ec39e2 + languageName: node + linkType: hard + "consola@npm:^3.2.3, consola@npm:^3.4.0, consola@npm:^3.4.2": version: 3.4.2 resolution: "consola@npm:3.4.2" @@ -1370,6 +1409,13 @@ __metadata: languageName: node linkType: hard +"defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 10c0/2d6cc366262dc0cb8096e429368e44052fdf43ed48e53ad84cc7c9407f890301aa5fcb80d0995abaaf842b3949f154d060be4160f7a46cb2bc2f7726c81526f5 + languageName: node + linkType: hard + "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -1377,6 +1423,13 @@ __metadata: languageName: node linkType: hard +"destr@npm:^2.0.3": + version: 2.0.3 + resolution: "destr@npm:2.0.3" + checksum: 10c0/10e7eff5149e2839a4dd29a1e9617c3c675a3b53608d78d74fc6f4abc31daa977e6de08e0eea78965527a0d5a35467ae2f9624e0a4646d54aa1162caa094473e + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -1393,6 +1446,13 @@ __metadata: languageName: node linkType: hard +"dotenv@npm:^16.4.7": + version: 16.4.7 + resolution: "dotenv@npm:16.4.7" + checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 + languageName: node + linkType: hard + "dotenv@npm:^8.1.0": version: 8.6.0 resolution: "dotenv@npm:8.6.0" @@ -1656,6 +1716,13 @@ __metadata: languageName: node linkType: hard +"exsolve@npm:^1.0.0, exsolve@npm:^1.0.1": + version: 1.0.4 + resolution: "exsolve@npm:1.0.4" + checksum: 10c0/475a5cb8961fdc91dfe0ff7d5fad601cce3ac27226e3966d18277c10ddace696adc986871115383c449bac110c02e6eaaf5ae9d983b2cc731df805ecb55f2482 + languageName: node + linkType: hard + "extendable-error@npm:^0.1.5": version: 0.1.7 resolution: "extendable-error@npm:0.1.7" @@ -1858,6 +1925,22 @@ __metadata: languageName: node linkType: hard +"giget@npm:^2.0.0": + version: 2.0.0 + resolution: "giget@npm:2.0.0" + dependencies: + citty: "npm:^0.1.6" + consola: "npm:^3.4.0" + defu: "npm:^6.1.4" + node-fetch-native: "npm:^1.6.6" + nypm: "npm:^0.6.0" + pathe: "npm:^2.0.3" + bin: + giget: dist/cli.mjs + checksum: 10c0/606d81652643936ee7f76653b4dcebc09703524ff7fd19692634ce69e3fc6775a377760d7508162379451c03bf43cc6f46716aeadeb803f7cef3fc53d0671396 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -2111,6 +2194,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:^2.4.2": + version: 2.4.2 + resolution: "jiti@npm:2.4.2" + bin: + jiti: lib/jiti-cli.mjs + checksum: 10c0/4ceac133a08c8faff7eac84aabb917e85e8257f5ad659e843004ce76e981c457c390a220881748ac67ba1b940b9b729b30fb85cbaf6e7989f04b6002c94da331 + languageName: node + linkType: hard + "joycon@npm:^3.1.1": version: 3.1.1 resolution: "joycon@npm:3.1.1" @@ -2461,6 +2553,13 @@ __metadata: languageName: node linkType: hard +"node-fetch-native@npm:^1.6.6": + version: 1.6.6 + resolution: "node-fetch-native@npm:1.6.6" + checksum: 10c0/8c12dab0e640d8bc126a03d604af9cf3fc1b87f2cda5af0c71601079d5ed835c1dc149c7042b61c83f252a382e1cf1e541788f4c9e8e6c089af77497190f5dc3 + languageName: node + linkType: hard + "node-fetch@npm:^2.5.0, node-fetch@npm:^2.6.1": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" @@ -2515,6 +2614,21 @@ __metadata: languageName: node linkType: hard +"nypm@npm:^0.6.0": + version: 0.6.0 + resolution: "nypm@npm:0.6.0" + dependencies: + citty: "npm:^0.1.6" + consola: "npm:^3.4.0" + pathe: "npm:^2.0.3" + pkg-types: "npm:^2.0.0" + tinyexec: "npm:^0.3.2" + bin: + nypm: dist/cli.mjs + checksum: 10c0/899f16c2df1bdf3ef4de5f7d4ed5530e2e1ca097cc7dedbaa25abb6b8e44bb470c25cd26639f6e3e4f5734867e61f7f77c4ed5dfbe86b2a1bdef4525a2dc0026 + languageName: node + linkType: hard + "oas-kit-common@npm:^1.0.8": version: 1.0.8 resolution: "oas-kit-common@npm:1.0.8" @@ -2580,6 +2694,13 @@ __metadata: languageName: node linkType: hard +"ohash@npm:^2.0.5": + version: 2.0.11 + resolution: "ohash@npm:2.0.11" + checksum: 10c0/d07c8d79cc26da082c1a7c8d5b56c399dd4ed3b2bd069fcae6bae78c99a9bcc3ad813b1e1f49ca2f335292846d689c6141a762cf078727d2302a33d414e69c79 + languageName: node + linkType: hard + "openapi-types@npm:12.1.3, openapi-types@npm:^12.1.0": version: 12.1.3 resolution: "openapi-types@npm:12.1.3" @@ -2731,6 +2852,13 @@ __metadata: languageName: node linkType: hard +"perfect-debounce@npm:^1.0.0": + version: 1.0.0 + resolution: "perfect-debounce@npm:1.0.0" + checksum: 10c0/e2baac416cae046ef1b270812cf9ccfb0f91c04ea36ac7f5b00bc84cb7f41bdbba087c0ab21b4e02a7ef3a1f1f6db399f137cecec46868bd7d8d88c2a9ee431f + languageName: node + linkType: hard + "picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" @@ -2766,6 +2894,17 @@ __metadata: languageName: node linkType: hard +"pkg-types@npm:^2.0.0": + version: 2.1.0 + resolution: "pkg-types@npm:2.1.0" + dependencies: + confbox: "npm:^0.2.1" + exsolve: "npm:^1.0.1" + pathe: "npm:^2.0.3" + checksum: 10c0/7729d0a2367ba0aa2caf0f84a6ff0b73b13f4e9a3d62c229ddfa6d45d1f3898f590acdbaa64d779d56737d4ebea2d085961efd59094b8adf8baa34d829599b75 + languageName: node + linkType: hard + "postcss-load-config@npm:^6.0.1": version: 6.0.1 resolution: "postcss-load-config@npm:6.0.1" @@ -2863,6 +3002,16 @@ __metadata: languageName: node linkType: hard +"rc9@npm:^2.1.2": + version: 2.1.2 + resolution: "rc9@npm:2.1.2" + dependencies: + defu: "npm:^6.1.4" + destr: "npm:^2.0.3" + checksum: 10c0/a2ead3b94bf033e35e4ea40d70062a09feddb8f589c3f5a8fe4e9342976974296aee9f6e9e72bd5e78e6ae4b7bc16dc244f63699fd7322c16314e3238db982c9 + languageName: node + linkType: hard + "read-yaml-file@npm:^1.1.0": version: 1.1.0 resolution: "read-yaml-file@npm:1.1.0" @@ -3313,6 +3462,7 @@ __metadata: "@types/swagger-schema-official": "npm:^2.0.25" "@types/swagger2openapi": "npm:7.0.4" axios: "npm:1.8.4" + c12: "npm:3.0.2" citty: "npm:^0.1.6" consola: "npm:^3.4.2" cosmiconfig: "npm:^9.0.0"