@kubb/cli 3.0.0-alpha.3 → 3.0.0-alpha.5
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/dist/{chunk-NKSXZ2SM.cjs → chunk-H3BA33NF.cjs} +905 -3236
- package/dist/chunk-H3BA33NF.cjs.map +1 -0
- package/dist/{chunk-VGYRBGKV.js → chunk-WJ72QPXS.js} +89 -105
- package/dist/chunk-WJ72QPXS.js.map +1 -0
- package/dist/{generate-IC27XOTA.js → generate-LZOUPH5K.js} +19 -19
- package/dist/generate-LZOUPH5K.js.map +1 -0
- package/dist/{generate-SW6IGE4J.cjs → generate-M3IAQ4OY.cjs} +27 -27
- package/dist/generate-M3IAQ4OY.cjs.map +1 -0
- package/dist/index.cjs +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +9 -7
- package/src/commands/generate.ts +14 -12
- package/src/generate.ts +58 -52
- package/src/utils/Writables.ts +23 -0
- package/src/utils/executeHooks.ts +25 -41
- package/src/utils/getPlugins.ts +0 -10
- package/src/utils/getSummary.ts +8 -20
- package/src/utils/watcher.ts +4 -6
- package/dist/chunk-NKSXZ2SM.cjs.map +0 -1
- package/dist/chunk-VGYRBGKV.js.map +0 -1
- package/dist/generate-IC27XOTA.js.map +0 -1
- package/dist/generate-SW6IGE4J.cjs.map +0 -1
- package/src/utils/OraWritable.ts +0 -22
- package/src/utils/spinner.ts +0 -5
package/dist/index.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkH3BA33NFcjs = require('./chunk-H3BA33NF.cjs');
|
|
5
5
|
|
|
6
6
|
// src/index.ts
|
|
7
|
-
|
|
7
|
+
_chunkH3BA33NFcjs.init_cjs_shims.call(void 0, );
|
|
8
8
|
var _citty = require('citty');
|
|
9
9
|
var _latestversion = require('latest-version'); var _latestversion2 = _interopRequireDefault(_latestversion);
|
|
10
10
|
var _semver = require('semver');
|
|
11
11
|
var _consola = require('consola'); var _consola2 = _interopRequireDefault(_consola);
|
|
12
12
|
|
|
13
13
|
// package.json
|
|
14
|
-
var version = "3.0.0-alpha.
|
|
14
|
+
var version = "3.0.0-alpha.5";
|
|
15
15
|
|
|
16
16
|
// src/index.ts
|
|
17
17
|
var name = "kubb";
|
|
@@ -39,13 +39,13 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
39
39
|
} catch (_e) {
|
|
40
40
|
}
|
|
41
41
|
if (rawArgs[0] !== "generate") {
|
|
42
|
-
const generateCommand = await Promise.resolve().then(() => _interopRequireWildcard(require("./generate-
|
|
42
|
+
const generateCommand = await Promise.resolve().then(() => _interopRequireWildcard(require("./generate-M3IAQ4OY.cjs"))).then((r) => r.default);
|
|
43
43
|
await _citty.runCommand.call(void 0, generateCommand, { rawArgs });
|
|
44
44
|
process.exit(0);
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
subCommands: {
|
|
48
|
-
generate: () => Promise.resolve().then(() => _interopRequireWildcard(require("./generate-
|
|
48
|
+
generate: () => Promise.resolve().then(() => _interopRequireWildcard(require("./generate-M3IAQ4OY.cjs"))).then((r) => r.default)
|
|
49
49
|
}
|
|
50
50
|
});
|
|
51
51
|
async function run(_argv) {
|
|
@@ -54,5 +54,5 @@ async function run(_argv) {
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
exports.generate =
|
|
57
|
+
exports.generate = _chunkH3BA33NFcjs.generate; exports.run = run;
|
|
58
58
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/cli/dist/index.cjs","../src/index.ts","../package.json"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;ACLA,8CAAA,CAAA;AAAA,8BAAmD;AACnD,6GAA6B;AAC7B,gCAAmB;AAEnB,oFAAoB;ADOpB;AACA;AEVE,IAAA,QAAA,EAAW,eAAA;AFYb;AACA;ACRA,IAAM,KAAA,EAAO,MAAA;AAEb,IAAM,KAAA,EAAO,kCAAA;AAAc,EACzB,IAAA,EAAM;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA,EAAa;AAAA,EACf,CAAA;AAAA,EACA,MAAM,KAAA,CAAM,EAAE,QAAQ,CAAA,EAAG;AACvB,IAAA,IAAI;AACF,MAAA,MAAM,cAAA,EAAgB,MAAM,qCAAA,WAA4B,CAAA;AAExD,MAAA,GAAA,CAAI,wBAAA,OAAG,EAAS,aAAa,CAAA,EAAG;AAC9B,QAAA,iBAAA,CAAQ,GAAA,CAAI;AAAA,UACV,KAAA,EAAO,8BAAA;AAAA,UACP,OAAA,EAAS,CAAA,GAAA,EAAM,OAAO,CAAA,aAAA,EAAW,aAAa,CAAA;AAAA,0CAAA,CAAA;AAAA,UAE9C,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,CAAA;AAAA,YACT,WAAA,EAAa,QAAA;AAAA,YACb,WAAA,EAAa;AAAA,UACf;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF,EAAA,MAAA,CAAS,EAAA,EAAI;AAAA,IAAC;AAEd,IAAA,GAAA,CAAI,OAAA,CAAQ,CAAC,EAAA,IAAM,UAAA,EAAY;AAE7B,MAAA,MAAM,gBAAA,EAAkB,MAAM,4DAAA,CAAO,yBAAwB,GAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAO,CAAA;AAEpF,MAAA,MAAM,+BAAA,eAAW,EAAiB,EAAE,QAAQ,CAAC,CAAA;AAE7C,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,CAAA,EAAA,GAAM,4DAAA,CAAO,yBAAwB,GAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAO;AAAA,EACxE;AACF,CAAC,CAAA;AAED,MAAA,SAAsB,GAAA,CAAI,KAAA,EAAiC;AACzD,EAAA,MAAM,4BAAA,IAAY,CAAA;AACpB;ADIA;AACE;AACA;AACF,iEAAC","file":"/home/runner/work/kubb/kubb/packages/cli/dist/index.cjs","sourcesContent":[null,"import { defineCommand, runCommand, runMain } from 'citty'\nimport getLatestVersion from 'latest-version'\nimport { lt } from 'semver'\n\nimport consola from 'consola'\nimport { version } from '../package.json'\n\nconst name = 'kubb'\n\nconst main = defineCommand({\n meta: {\n name,\n version,\n description: 'Kubb generation',\n },\n async setup({ rawArgs }) {\n try {\n const latestVersion = await getLatestVersion('@kubb/cli')\n\n if (lt(version, latestVersion)) {\n consola.box({\n title: 'Update available for `Kubb` ',\n message: `\\`v${version}\\` → \\`v${latestVersion}\\`\nRun \\`npm install -g @kubb/cli\\` to update`,\n style: {\n padding: 2,\n borderColor: 'yellow',\n borderStyle: 'rounded',\n },\n })\n }\n } catch (_e) {}\n\n if (rawArgs[0] !== 'generate') {\n // generate is not being used\n const generateCommand = await import('./commands/generate.ts').then((r) => r.default)\n\n await runCommand(generateCommand, { rawArgs })\n\n process.exit(0)\n }\n },\n subCommands: {\n generate: () => import('./commands/generate.ts').then((r) => r.default),\n },\n})\n\nexport async function run(_argv?: string[]): Promise<void> {\n await runMain(main)\n}\n\nexport { generate } from './generate.ts'\n","{\n \"name\": \"@kubb/cli\",\n \"version\": \"3.0.0-alpha.
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/cli/dist/index.cjs","../src/index.ts","../package.json"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;ACLA,8CAAA,CAAA;AAAA,8BAAmD;AACnD,6GAA6B;AAC7B,gCAAmB;AAEnB,oFAAoB;ADOpB;AACA;AEVE,IAAA,QAAA,EAAW,eAAA;AFYb;AACA;ACRA,IAAM,KAAA,EAAO,MAAA;AAEb,IAAM,KAAA,EAAO,kCAAA;AAAc,EACzB,IAAA,EAAM;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA,EAAa;AAAA,EACf,CAAA;AAAA,EACA,MAAM,KAAA,CAAM,EAAE,QAAQ,CAAA,EAAG;AACvB,IAAA,IAAI;AACF,MAAA,MAAM,cAAA,EAAgB,MAAM,qCAAA,WAA4B,CAAA;AAExD,MAAA,GAAA,CAAI,wBAAA,OAAG,EAAS,aAAa,CAAA,EAAG;AAC9B,QAAA,iBAAA,CAAQ,GAAA,CAAI;AAAA,UACV,KAAA,EAAO,8BAAA;AAAA,UACP,OAAA,EAAS,CAAA,GAAA,EAAM,OAAO,CAAA,aAAA,EAAW,aAAa,CAAA;AAAA,0CAAA,CAAA;AAAA,UAE9C,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,CAAA;AAAA,YACT,WAAA,EAAa,QAAA;AAAA,YACb,WAAA,EAAa;AAAA,UACf;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF,EAAA,MAAA,CAAS,EAAA,EAAI;AAAA,IAAC;AAEd,IAAA,GAAA,CAAI,OAAA,CAAQ,CAAC,EAAA,IAAM,UAAA,EAAY;AAE7B,MAAA,MAAM,gBAAA,EAAkB,MAAM,4DAAA,CAAO,yBAAwB,GAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAO,CAAA;AAEpF,MAAA,MAAM,+BAAA,eAAW,EAAiB,EAAE,QAAQ,CAAC,CAAA;AAE7C,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,CAAA,EAAA,GAAM,4DAAA,CAAO,yBAAwB,GAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAO;AAAA,EACxE;AACF,CAAC,CAAA;AAED,MAAA,SAAsB,GAAA,CAAI,KAAA,EAAiC;AACzD,EAAA,MAAM,4BAAA,IAAY,CAAA;AACpB;ADIA;AACE;AACA;AACF,iEAAC","file":"/home/runner/work/kubb/kubb/packages/cli/dist/index.cjs","sourcesContent":[null,"import { defineCommand, runCommand, runMain } from 'citty'\nimport getLatestVersion from 'latest-version'\nimport { lt } from 'semver'\n\nimport consola from 'consola'\nimport { version } from '../package.json'\n\nconst name = 'kubb'\n\nconst main = defineCommand({\n meta: {\n name,\n version,\n description: 'Kubb generation',\n },\n async setup({ rawArgs }) {\n try {\n const latestVersion = await getLatestVersion('@kubb/cli')\n\n if (lt(version, latestVersion)) {\n consola.box({\n title: 'Update available for `Kubb` ',\n message: `\\`v${version}\\` → \\`v${latestVersion}\\`\nRun \\`npm install -g @kubb/cli\\` to update`,\n style: {\n padding: 2,\n borderColor: 'yellow',\n borderStyle: 'rounded',\n },\n })\n }\n } catch (_e) {}\n\n if (rawArgs[0] !== 'generate') {\n // generate is not being used\n const generateCommand = await import('./commands/generate.ts').then((r) => r.default)\n\n await runCommand(generateCommand, { rawArgs })\n\n process.exit(0)\n }\n },\n subCommands: {\n generate: () => import('./commands/generate.ts').then((r) => r.default),\n },\n})\n\nexport async function run(_argv?: string[]): Promise<void> {\n await runMain(main)\n}\n\nexport { generate } from './generate.ts'\n","{\n \"name\": \"@kubb/cli\",\n \"version\": \"3.0.0-alpha.5\",\n \"description\": \"Generator cli\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"cli\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/cli\"\n },\n \"license\": \"MIT\",\n \"author\": \"Stijn Van Hulle <stijn@stijnvanhulle.be\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"main\": \"dist/index.cjs\",\n \"module\": \"dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.cjs\"\n }\n },\n \"bin\": {\n \"kubb\": \"bin/kubb.cjs\",\n \"bkubb\": \"bin/bkubb.cjs\"\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"bin\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --apply-unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsup --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@kubb/fs\": \"workspace:*\",\n \"bundle-require\": \"^5.0.0\",\n \"chokidar\": \"^3.6.0\",\n \"citty\": \"^0.1.6\",\n \"cli-progress\": \"^3.12.0\",\n \"consola\": \"^3.2.3\",\n \"cosmiconfig\": \"^9.0.0\",\n \"esbuild\": \"^0.23.1\",\n \"execa\": \"^9.3.1\",\n \"js-runtime\": \"^0.0.8\",\n \"latest-version\": \"^9.0.0\",\n \"p-queue\": \"^8.0.1\",\n \"semver\": \"^7.6.3\",\n \"string-argv\": \"^0.3.2\",\n \"tinyrainbow\": \"^1.2.0\"\n },\n \"devDependencies\": {\n \"@kubb/config-ts\": \"workspace:*\",\n \"@kubb/config-tsup\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@types/cli-progress\": \"^3.11.6\",\n \"@types/node\": \"^20.16.1\",\n \"@types/semver\": \"^7.5.8\",\n \"source-map-support\": \"^0.5.21\",\n \"tsup\": \"^8.2.4\",\n \"typescript\": \"^5.5.4\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"preferGlobal\": true,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generate
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WJ72QPXS.js";
|
|
4
4
|
|
|
5
5
|
// src/index.ts
|
|
6
6
|
import { defineCommand, runCommand, runMain } from "citty";
|
|
@@ -9,7 +9,7 @@ import { lt } from "semver";
|
|
|
9
9
|
import consola from "consola";
|
|
10
10
|
|
|
11
11
|
// package.json
|
|
12
|
-
var version = "3.0.0-alpha.
|
|
12
|
+
var version = "3.0.0-alpha.5";
|
|
13
13
|
|
|
14
14
|
// src/index.ts
|
|
15
15
|
var name = "kubb";
|
|
@@ -37,13 +37,13 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
37
37
|
} catch (_e) {
|
|
38
38
|
}
|
|
39
39
|
if (rawArgs[0] !== "generate") {
|
|
40
|
-
const generateCommand = await import("./generate-
|
|
40
|
+
const generateCommand = await import("./generate-LZOUPH5K.js").then((r) => r.default);
|
|
41
41
|
await runCommand(generateCommand, { rawArgs });
|
|
42
42
|
process.exit(0);
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
subCommands: {
|
|
46
|
-
generate: () => import("./generate-
|
|
46
|
+
generate: () => import("./generate-LZOUPH5K.js").then((r) => r.default)
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
49
|
async function run(_argv) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../package.json"],"sourcesContent":["import { defineCommand, runCommand, runMain } from 'citty'\nimport getLatestVersion from 'latest-version'\nimport { lt } from 'semver'\n\nimport consola from 'consola'\nimport { version } from '../package.json'\n\nconst name = 'kubb'\n\nconst main = defineCommand({\n meta: {\n name,\n version,\n description: 'Kubb generation',\n },\n async setup({ rawArgs }) {\n try {\n const latestVersion = await getLatestVersion('@kubb/cli')\n\n if (lt(version, latestVersion)) {\n consola.box({\n title: 'Update available for `Kubb` ',\n message: `\\`v${version}\\` → \\`v${latestVersion}\\`\nRun \\`npm install -g @kubb/cli\\` to update`,\n style: {\n padding: 2,\n borderColor: 'yellow',\n borderStyle: 'rounded',\n },\n })\n }\n } catch (_e) {}\n\n if (rawArgs[0] !== 'generate') {\n // generate is not being used\n const generateCommand = await import('./commands/generate.ts').then((r) => r.default)\n\n await runCommand(generateCommand, { rawArgs })\n\n process.exit(0)\n }\n },\n subCommands: {\n generate: () => import('./commands/generate.ts').then((r) => r.default),\n },\n})\n\nexport async function run(_argv?: string[]): Promise<void> {\n await runMain(main)\n}\n\nexport { generate } from './generate.ts'\n","{\n \"name\": \"@kubb/cli\",\n \"version\": \"3.0.0-alpha.
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../package.json"],"sourcesContent":["import { defineCommand, runCommand, runMain } from 'citty'\nimport getLatestVersion from 'latest-version'\nimport { lt } from 'semver'\n\nimport consola from 'consola'\nimport { version } from '../package.json'\n\nconst name = 'kubb'\n\nconst main = defineCommand({\n meta: {\n name,\n version,\n description: 'Kubb generation',\n },\n async setup({ rawArgs }) {\n try {\n const latestVersion = await getLatestVersion('@kubb/cli')\n\n if (lt(version, latestVersion)) {\n consola.box({\n title: 'Update available for `Kubb` ',\n message: `\\`v${version}\\` → \\`v${latestVersion}\\`\nRun \\`npm install -g @kubb/cli\\` to update`,\n style: {\n padding: 2,\n borderColor: 'yellow',\n borderStyle: 'rounded',\n },\n })\n }\n } catch (_e) {}\n\n if (rawArgs[0] !== 'generate') {\n // generate is not being used\n const generateCommand = await import('./commands/generate.ts').then((r) => r.default)\n\n await runCommand(generateCommand, { rawArgs })\n\n process.exit(0)\n }\n },\n subCommands: {\n generate: () => import('./commands/generate.ts').then((r) => r.default),\n },\n})\n\nexport async function run(_argv?: string[]): Promise<void> {\n await runMain(main)\n}\n\nexport { generate } from './generate.ts'\n","{\n \"name\": \"@kubb/cli\",\n \"version\": \"3.0.0-alpha.5\",\n \"description\": \"Generator cli\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"cli\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/cli\"\n },\n \"license\": \"MIT\",\n \"author\": \"Stijn Van Hulle <stijn@stijnvanhulle.be\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"main\": \"dist/index.cjs\",\n \"module\": \"dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.cjs\"\n }\n },\n \"bin\": {\n \"kubb\": \"bin/kubb.cjs\",\n \"bkubb\": \"bin/bkubb.cjs\"\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"bin\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --apply-unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsup --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@kubb/fs\": \"workspace:*\",\n \"bundle-require\": \"^5.0.0\",\n \"chokidar\": \"^3.6.0\",\n \"citty\": \"^0.1.6\",\n \"cli-progress\": \"^3.12.0\",\n \"consola\": \"^3.2.3\",\n \"cosmiconfig\": \"^9.0.0\",\n \"esbuild\": \"^0.23.1\",\n \"execa\": \"^9.3.1\",\n \"js-runtime\": \"^0.0.8\",\n \"latest-version\": \"^9.0.0\",\n \"p-queue\": \"^8.0.1\",\n \"semver\": \"^7.6.3\",\n \"string-argv\": \"^0.3.2\",\n \"tinyrainbow\": \"^1.2.0\"\n },\n \"devDependencies\": {\n \"@kubb/config-ts\": \"workspace:*\",\n \"@kubb/config-tsup\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@types/cli-progress\": \"^3.11.6\",\n \"@types/node\": \"^20.16.1\",\n \"@types/semver\": \"^7.5.8\",\n \"source-map-support\": \"^0.5.21\",\n \"tsup\": \"^8.2.4\",\n \"typescript\": \"^5.5.4\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"preferGlobal\": true,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,eAAe,YAAY,eAAe;AACnD,OAAO,sBAAsB;AAC7B,SAAS,UAAU;AAEnB,OAAO,aAAa;;;ACFlB,cAAW;;;ADKb,IAAM,OAAO;AAEb,IAAM,OAAO,cAAc;AAAA,EACzB,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA,MAAM,MAAM,EAAE,QAAQ,GAAG;AACvB,QAAI;AACF,YAAM,gBAAgB,MAAM,iBAAiB,WAAW;AAExD,UAAI,GAAG,SAAS,aAAa,GAAG;AAC9B,gBAAQ,IAAI;AAAA,UACV,OAAO;AAAA,UACP,SAAS,MAAM,OAAO,gBAAW,aAAa;AAAA;AAAA,UAE9C,OAAO;AAAA,YACL,SAAS;AAAA,YACT,aAAa;AAAA,YACb,aAAa;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,SAAS,IAAI;AAAA,IAAC;AAEd,QAAI,QAAQ,CAAC,MAAM,YAAY;AAE7B,YAAM,kBAAkB,MAAM,OAAO,wBAAwB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAEpF,YAAM,WAAW,iBAAiB,EAAE,QAAQ,CAAC;AAE7C,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX,UAAU,MAAM,OAAO,wBAAwB,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO;AAAA,EACxE;AACF,CAAC;AAED,eAAsB,IAAI,OAAiC;AACzD,QAAM,QAAQ,IAAI;AACpB;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/cli",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.5",
|
|
4
4
|
"description": "Generator cli",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -43,28 +43,30 @@
|
|
|
43
43
|
"bundle-require": "^5.0.0",
|
|
44
44
|
"chokidar": "^3.6.0",
|
|
45
45
|
"citty": "^0.1.6",
|
|
46
|
+
"cli-progress": "^3.12.0",
|
|
46
47
|
"consola": "^3.2.3",
|
|
47
48
|
"cosmiconfig": "^9.0.0",
|
|
48
49
|
"esbuild": "^0.23.1",
|
|
49
50
|
"execa": "^9.3.1",
|
|
50
51
|
"js-runtime": "^0.0.8",
|
|
51
52
|
"latest-version": "^9.0.0",
|
|
52
|
-
"
|
|
53
|
+
"p-queue": "^8.0.1",
|
|
53
54
|
"semver": "^7.6.3",
|
|
54
55
|
"string-argv": "^0.3.2",
|
|
55
56
|
"tinyrainbow": "^1.2.0",
|
|
56
|
-
"@kubb/core": "3.0.0-alpha.
|
|
57
|
-
"@kubb/fs": "3.0.0-alpha.
|
|
57
|
+
"@kubb/core": "3.0.0-alpha.5",
|
|
58
|
+
"@kubb/fs": "3.0.0-alpha.5"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
61
|
+
"@types/cli-progress": "^3.11.6",
|
|
60
62
|
"@types/node": "^20.16.1",
|
|
61
63
|
"@types/semver": "^7.5.8",
|
|
62
64
|
"source-map-support": "^0.5.21",
|
|
63
65
|
"tsup": "^8.2.4",
|
|
64
66
|
"typescript": "^5.5.4",
|
|
65
|
-
"@kubb/config-ts": "3.0.0-alpha.
|
|
66
|
-
"@kubb/config-tsup": "3.0.0-alpha.
|
|
67
|
-
"@kubb/plugin-oas": "3.0.0-alpha.
|
|
67
|
+
"@kubb/config-ts": "3.0.0-alpha.5",
|
|
68
|
+
"@kubb/config-tsup": "3.0.0-alpha.5",
|
|
69
|
+
"@kubb/plugin-oas": "3.0.0-alpha.5"
|
|
68
70
|
},
|
|
69
71
|
"engines": {
|
|
70
72
|
"node": ">=20"
|
package/src/commands/generate.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { LogLevel } from '@kubb/core/logger'
|
|
2
1
|
import { defineCommand, showUsage } from 'citty'
|
|
3
2
|
import type { ArgsDef, ParsedArgs } from 'citty'
|
|
4
3
|
import { execa } from 'execa'
|
|
5
4
|
import c from 'tinyrainbow'
|
|
6
5
|
|
|
7
|
-
import path from 'node:path'
|
|
8
6
|
import { getConfig } from '../utils/getConfig.ts'
|
|
9
7
|
import { getCosmiConfig } from '../utils/getCosmiConfig.ts'
|
|
10
|
-
import { spinner } from '../utils/spinner.ts'
|
|
11
8
|
import { startWatcher } from '../utils/watcher.ts'
|
|
12
9
|
|
|
13
10
|
import { PromiseManager, isInputPath } from '@kubb/core'
|
|
14
11
|
import { generate } from '../generate.ts'
|
|
12
|
+
import path from 'node:path'
|
|
13
|
+
import { createLogger, LogMapper } from '@kubb/core/logger'
|
|
15
14
|
|
|
16
15
|
const args = {
|
|
17
16
|
config: {
|
|
@@ -23,8 +22,8 @@ const args = {
|
|
|
23
22
|
type: 'string',
|
|
24
23
|
description: 'Info, silent or debug',
|
|
25
24
|
alias: 'l',
|
|
26
|
-
default:
|
|
27
|
-
valueHint:
|
|
25
|
+
default: 'info',
|
|
26
|
+
valueHint: 'silent|info|debug',
|
|
28
27
|
},
|
|
29
28
|
watch: {
|
|
30
29
|
type: 'boolean',
|
|
@@ -60,9 +59,6 @@ const command = defineCommand({
|
|
|
60
59
|
description: "[input] Generate files based on a 'kubb.config.ts' file",
|
|
61
60
|
},
|
|
62
61
|
args,
|
|
63
|
-
setup() {
|
|
64
|
-
spinner.start('🔍 Loading config')
|
|
65
|
-
},
|
|
66
62
|
async run({ args }) {
|
|
67
63
|
const input = args._[0]
|
|
68
64
|
|
|
@@ -72,7 +68,7 @@ const command = defineCommand({
|
|
|
72
68
|
}
|
|
73
69
|
|
|
74
70
|
if (args.debug) {
|
|
75
|
-
args.logLevel =
|
|
71
|
+
args.logLevel = 'debug'
|
|
76
72
|
}
|
|
77
73
|
|
|
78
74
|
if (args.bun) {
|
|
@@ -82,8 +78,15 @@ const command = defineCommand({
|
|
|
82
78
|
return
|
|
83
79
|
}
|
|
84
80
|
|
|
81
|
+
const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3
|
|
82
|
+
const logger = createLogger({
|
|
83
|
+
logLevel,
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
logger.emit('start', 'Loading config')
|
|
87
|
+
|
|
85
88
|
const result = await getCosmiConfig('kubb', args.config)
|
|
86
|
-
|
|
89
|
+
logger.emit('success', `Config loaded(${c.dim(path.relative(process.cwd(), result.filepath))})`)
|
|
87
90
|
|
|
88
91
|
const config = await getConfig(result, args)
|
|
89
92
|
|
|
@@ -95,8 +98,7 @@ const command = defineCommand({
|
|
|
95
98
|
if (isInputPath(config)) {
|
|
96
99
|
return startWatcher([input || config.input.path], async (paths) => {
|
|
97
100
|
await generate({ config, args })
|
|
98
|
-
|
|
99
|
-
spinner.start(c.yellow(c.bold(`Watching for changes in ${paths.join(' and ')}`)))
|
|
101
|
+
logger.emit('start', c.yellow(c.bold(`Watching for changes in ${paths.join(' and ')}`)))
|
|
100
102
|
})
|
|
101
103
|
}
|
|
102
104
|
}
|
package/src/generate.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createLogger, LogMapper } from '@kubb/core/logger'
|
|
2
2
|
|
|
3
3
|
import c from 'tinyrainbow'
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
import { type Config, Warning, safeBuild } from '@kubb/core'
|
|
8
|
-
import { createConsola } from 'consola'
|
|
5
|
+
import { type Config, safeBuild } from '@kubb/core'
|
|
9
6
|
import type { Args } from './commands/generate.ts'
|
|
10
7
|
import { executeHooks } from './utils/executeHooks.ts'
|
|
11
8
|
import { getErrorCauses } from './utils/getErrorCauses.ts'
|
|
12
9
|
import { getSummary } from './utils/getSummary.ts'
|
|
13
10
|
import { writeLog } from './utils/writeLog.ts'
|
|
11
|
+
import type * as KubbFile from '@kubb/fs/types'
|
|
12
|
+
|
|
13
|
+
import { SingleBar, Presets } from 'cli-progress'
|
|
14
|
+
import { getRelativePath } from '@kubb/fs'
|
|
15
|
+
import { relative } from 'node:path'
|
|
14
16
|
|
|
15
17
|
type GenerateProps = {
|
|
16
18
|
input?: string
|
|
@@ -19,48 +21,40 @@ type GenerateProps = {
|
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
export async function generate({ input, config, args }: GenerateProps): Promise<void> {
|
|
22
|
-
const logLevel =
|
|
24
|
+
const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3
|
|
23
25
|
const logger = createLogger({
|
|
24
26
|
logLevel,
|
|
25
27
|
name: config.name,
|
|
26
|
-
spinner,
|
|
27
|
-
consola: createConsola({
|
|
28
|
-
level: LogMapper[logLevel] || 3,
|
|
29
|
-
}),
|
|
30
28
|
})
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
const progress = new SingleBar(
|
|
31
|
+
{
|
|
32
|
+
format: logLevel === LogMapper.info ? '{percentage}% {bar} {value}/{total} files | ETA: {eta}s | {filename}' : '{percentage}% {bar} ETA: {eta}s',
|
|
33
|
+
barsize: 40,
|
|
34
|
+
fps: 5,
|
|
35
|
+
clearOnComplete: true,
|
|
36
|
+
},
|
|
37
|
+
Presets.shades_grey,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
logger.on('progress', ({ count, size, file }) => {
|
|
41
|
+
if (count === 0) {
|
|
42
|
+
progress.start(size, 0)
|
|
43
|
+
} else if (count === size) {
|
|
44
|
+
progress.stop()
|
|
45
|
+
} else {
|
|
46
|
+
progress.update(count, { filename: relative(config.root, file.path) || '' })
|
|
35
47
|
}
|
|
36
48
|
})
|
|
37
49
|
|
|
38
|
-
logger.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
spinner.prefixText = randomCliColour(logger.name)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const hrstart = process.hrtime()
|
|
45
|
-
|
|
46
|
-
if (args.logLevel === LogLevel.debug) {
|
|
47
|
-
const { performance, PerformanceObserver } = await import('node:perf_hooks')
|
|
48
|
-
|
|
49
|
-
const performanceOpserver = new PerformanceObserver((items) => {
|
|
50
|
-
const message = `${items.getEntries()[0]?.duration.toFixed(0)}ms`
|
|
51
|
-
|
|
52
|
-
spinner.suffixText = c.yellow(message)
|
|
53
|
-
|
|
54
|
-
performance.clearMarks()
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
performanceOpserver.observe({ type: 'measure' })
|
|
58
|
-
}
|
|
50
|
+
logger.on('debug', async (messages: string[]) => {
|
|
51
|
+
await writeLog(messages.join('\n'))
|
|
52
|
+
})
|
|
59
53
|
|
|
60
54
|
const { root = process.cwd(), ...userConfig } = config
|
|
61
55
|
const inputPath = input ?? ('path' in userConfig.input ? userConfig.input.path : undefined)
|
|
62
56
|
|
|
63
|
-
|
|
57
|
+
logger.emit('start', `Building ${logLevel !== LogMapper.silent ? c.dim(inputPath) : ''}`)
|
|
64
58
|
|
|
65
59
|
const definedConfig: Config = {
|
|
66
60
|
root,
|
|
@@ -76,6 +70,7 @@ export async function generate({ input, config, args }: GenerateProps): Promise<
|
|
|
76
70
|
...userConfig.output,
|
|
77
71
|
},
|
|
78
72
|
}
|
|
73
|
+
const hrStart = process.hrtime()
|
|
79
74
|
const { pluginManager, error } = await safeBuild({
|
|
80
75
|
config: definedConfig,
|
|
81
76
|
logger,
|
|
@@ -85,25 +80,27 @@ export async function generate({ input, config, args }: GenerateProps): Promise<
|
|
|
85
80
|
pluginManager,
|
|
86
81
|
config: definedConfig,
|
|
87
82
|
status: error ? 'failed' : 'success',
|
|
88
|
-
|
|
83
|
+
hrStart,
|
|
89
84
|
logger,
|
|
90
85
|
})
|
|
91
86
|
|
|
92
|
-
if (error) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
87
|
+
if (error && logger.consola) {
|
|
88
|
+
logger.consola.error(`Build failed ${logLevel !== LogMapper.silent ? c.dim(inputPath) : ''}`)
|
|
89
|
+
|
|
90
|
+
logger.consola.box({
|
|
91
|
+
title: `${config.name || ''}`,
|
|
92
|
+
message: summary.join(''),
|
|
93
|
+
style: {
|
|
94
|
+
padding: 2,
|
|
95
|
+
borderColor: 'red',
|
|
96
|
+
borderStyle: 'rounded',
|
|
97
|
+
},
|
|
98
|
+
})
|
|
102
99
|
|
|
103
100
|
const errors = getErrorCauses([error])
|
|
104
|
-
if (logger.consola && errors.length && logLevel ===
|
|
101
|
+
if (logger.consola && errors.length && logLevel === LogMapper.debug) {
|
|
105
102
|
errors.forEach((err) => {
|
|
106
|
-
logger.consola
|
|
103
|
+
logger.consola?.error(err)
|
|
107
104
|
})
|
|
108
105
|
}
|
|
109
106
|
|
|
@@ -112,10 +109,19 @@ export async function generate({ input, config, args }: GenerateProps): Promise<
|
|
|
112
109
|
process.exit(0)
|
|
113
110
|
}
|
|
114
111
|
|
|
115
|
-
|
|
112
|
+
if (config.hooks) {
|
|
113
|
+
await executeHooks({ hooks: config.hooks, logger })
|
|
114
|
+
}
|
|
116
115
|
|
|
117
|
-
|
|
118
|
-
spinner.succeed(`🚀 Build completed ${logLevel !== 'silent' ? c.dim(inputPath) : ''}`)
|
|
116
|
+
logger.consola?.log(`⚡️Build completed ${logLevel !== LogMapper.silent ? c.dim(inputPath) : ''}`)
|
|
119
117
|
|
|
120
|
-
|
|
118
|
+
logger.consola?.box({
|
|
119
|
+
title: `${config.name || ''}`,
|
|
120
|
+
message: summary.join(''),
|
|
121
|
+
style: {
|
|
122
|
+
padding: 2,
|
|
123
|
+
borderColor: 'green',
|
|
124
|
+
borderStyle: 'rounded',
|
|
125
|
+
},
|
|
126
|
+
})
|
|
121
127
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Writable } from 'node:stream'
|
|
2
|
+
|
|
3
|
+
import c from 'tinyrainbow'
|
|
4
|
+
|
|
5
|
+
import type { WritableOptions } from 'node:stream'
|
|
6
|
+
import type { ConsolaInstance } from 'consola'
|
|
7
|
+
import * as process from 'node:process'
|
|
8
|
+
|
|
9
|
+
export class ConsolaWritable extends Writable {
|
|
10
|
+
consola: ConsolaInstance
|
|
11
|
+
command: string
|
|
12
|
+
constructor(consola: ConsolaInstance, command: string, opts?: WritableOptions) {
|
|
13
|
+
super(opts)
|
|
14
|
+
|
|
15
|
+
this.command = command
|
|
16
|
+
this.consola = consola
|
|
17
|
+
}
|
|
18
|
+
_write(chunk: any, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {
|
|
19
|
+
process.stdout.write(c.dim(chunk?.toString()))
|
|
20
|
+
|
|
21
|
+
callback()
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,65 +1,49 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Logger } from '@kubb/core/logger'
|
|
2
2
|
import { execa } from 'execa'
|
|
3
3
|
import { parseArgsStringToArgv } from 'string-argv'
|
|
4
4
|
import c from 'tinyrainbow'
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { spinner } from './spinner.ts'
|
|
6
|
+
import { ConsolaWritable } from './Writables.ts'
|
|
8
7
|
|
|
9
|
-
import type { Writable } from 'node:stream'
|
|
10
8
|
import type { Config } from '@kubb/core'
|
|
9
|
+
import { LogMapper } from '@kubb/core/logger'
|
|
10
|
+
import PQueue from 'p-queue'
|
|
11
11
|
|
|
12
12
|
type ExecutingHooksProps = {
|
|
13
|
-
hooks: Config['hooks']
|
|
14
|
-
|
|
13
|
+
hooks: NonNullable<Config['hooks']>
|
|
14
|
+
logger: Logger
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export async function executeHooks({ hooks,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
17
|
+
export async function executeHooks({ hooks, logger }: ExecutingHooksProps): Promise<void> {
|
|
18
|
+
const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done].filter(Boolean)
|
|
19
|
+
const queue = new PQueue({ concurrency: 1 })
|
|
21
20
|
|
|
22
|
-
const
|
|
21
|
+
const promises = commands.map(async (command) => {
|
|
22
|
+
const consolaWritable = new ConsolaWritable(logger.consola!, command)
|
|
23
|
+
const [cmd, ..._args] = [...parseArgsStringToArgv(command)]
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
if (!cmd) {
|
|
26
|
+
return null
|
|
27
|
+
}
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const oraWritable = new OraWritable(spinner, command)
|
|
31
|
-
const abortController = new AbortController()
|
|
32
|
-
const [cmd, ..._args] = [...parseArgsStringToArgv(command)]
|
|
33
|
-
|
|
34
|
-
if (!cmd) {
|
|
35
|
-
return null
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
spinner.start(`Executing hook ${logLevel !== 'silent' ? c.dim(command) : ''}`)
|
|
29
|
+
await queue.add(async () => {
|
|
30
|
+
logger.emit('start', `Executing hook ${logger.logLevel !== LogMapper.silent ? c.dim(command) : ''}`)
|
|
39
31
|
|
|
40
32
|
const subProcess = await execa(cmd, _args, {
|
|
41
33
|
detached: true,
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
stdout: logger.logLevel === LogMapper.silent ? undefined : ['pipe', consolaWritable],
|
|
35
|
+
stripFinalNewline: true,
|
|
44
36
|
})
|
|
45
|
-
spinner.suffixText = ''
|
|
46
37
|
|
|
47
|
-
|
|
48
|
-
spinner.succeed(`Executing hook ${logLevel !== 'silent' ? c.dim(command) : ''}`)
|
|
38
|
+
logger.emit('success', `Executing hook ${logger.logLevel !== LogMapper.silent ? c.dim(command) : ''}`)
|
|
49
39
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
40
|
+
if (subProcess) {
|
|
41
|
+
logger.emit('debug', [subProcess.stdout])
|
|
53
42
|
}
|
|
54
|
-
|
|
55
|
-
oraWritable.destroy()
|
|
56
|
-
return { subProcess, abort: abortController.abort.bind(abortController) }
|
|
57
43
|
})
|
|
58
|
-
|
|
44
|
+
})
|
|
59
45
|
|
|
60
|
-
await Promise.all(
|
|
46
|
+
await Promise.all(promises)
|
|
61
47
|
|
|
62
|
-
|
|
63
|
-
spinner.succeed('Executing hooks')
|
|
64
|
-
}
|
|
48
|
+
logger.emit('success', 'Executing hooks')
|
|
65
49
|
}
|
package/src/utils/getPlugins.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { PackageManager } from '@kubb/core'
|
|
2
|
-
|
|
3
1
|
import type { UserConfig } from '@kubb/core'
|
|
4
2
|
|
|
5
3
|
function isJSONPlugins(plugins: UserConfig['plugins']) {
|
|
@@ -12,14 +10,6 @@ function isObjectPlugins(plugins: UserConfig['plugins']): plugins is any {
|
|
|
12
10
|
return plugins instanceof Object && !Array.isArray(plugins)
|
|
13
11
|
}
|
|
14
12
|
|
|
15
|
-
async function importPlugin(name: string, options: object): Promise<UserConfig['plugins']> {
|
|
16
|
-
const packageManager = new PackageManager(process.cwd())
|
|
17
|
-
|
|
18
|
-
const importedPlugin: any = process.env.NODE_ENV === 'test' ? await import(name) : await packageManager.import(name)
|
|
19
|
-
|
|
20
|
-
return importedPlugin?.default ? importedPlugin.default(options) : importedPlugin(options)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
13
|
export function getPlugins(plugins: UserConfig['plugins']): Promise<UserConfig['plugins']> {
|
|
24
14
|
if (isObjectPlugins(plugins)) {
|
|
25
15
|
throw new Error('Object plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')
|
package/src/utils/getSummary.ts
CHANGED
|
@@ -12,15 +12,14 @@ import type { Logger } from '@kubb/core/logger'
|
|
|
12
12
|
type SummaryProps = {
|
|
13
13
|
pluginManager: PluginManager
|
|
14
14
|
status: 'success' | 'failed'
|
|
15
|
-
|
|
15
|
+
hrStart: [number, number]
|
|
16
16
|
config: Config
|
|
17
17
|
logger: Logger
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export function getSummary({ pluginManager, status,
|
|
21
|
-
const { logLevel } = logger
|
|
20
|
+
export function getSummary({ pluginManager, status, hrStart, config, logger }: SummaryProps): string[] {
|
|
22
21
|
const logs: string[] = []
|
|
23
|
-
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(
|
|
22
|
+
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart))
|
|
24
23
|
|
|
25
24
|
const buildStartPlugins = pluginManager.executed
|
|
26
25
|
.filter((item) => item.hookName === 'buildStart' && item.plugin.name !== 'core')
|
|
@@ -44,34 +43,23 @@ export function getSummary({ pluginManager, status, hrstart, config, logger }: S
|
|
|
44
43
|
})
|
|
45
44
|
|
|
46
45
|
const meta = {
|
|
47
|
-
name: config.name,
|
|
48
46
|
plugins:
|
|
49
47
|
status === 'success'
|
|
50
48
|
? `${c.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total`
|
|
51
49
|
: `${c.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,
|
|
52
50
|
pluginsFailed: status === 'failed' ? failedPlugins?.map((name) => randomCliColour(name))?.join(', ') : undefined,
|
|
53
51
|
filesCreated: files.length,
|
|
54
|
-
time: c.yellow(`${elapsedSeconds}s`),
|
|
55
|
-
endTime: c.yellow(Date()),
|
|
52
|
+
time: `${c.yellow(`${elapsedSeconds}s`)} - finished at ${c.yellow(new Date().toLocaleString('en-GB', { timeZone: 'UTC' }))}`,
|
|
56
53
|
output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root,
|
|
57
54
|
} as const
|
|
58
55
|
|
|
59
|
-
logger.emit('debug', ['\nGenerated files:\n'])
|
|
60
|
-
logger.emit(
|
|
61
|
-
'debug',
|
|
62
|
-
files.map((file) => `${randomCliColour(JSON.stringify(file.meta?.pluginKey))} ${file.path}`),
|
|
63
|
-
)
|
|
64
|
-
|
|
65
56
|
logs.push(
|
|
66
57
|
[
|
|
67
|
-
['
|
|
68
|
-
[
|
|
69
|
-
[` ${c.bold('Plugins:')} ${meta.plugins}`, true],
|
|
70
|
-
[` ${c.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],
|
|
58
|
+
[`${c.bold('Plugins:')} ${meta.plugins}`, true],
|
|
59
|
+
[`${c.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],
|
|
71
60
|
[`${c.bold('Generated:')} ${meta.filesCreated} files`, true],
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[` ${c.bold('Output:')} ${meta.output}`, true],
|
|
61
|
+
[`${c.bold('Time:')} ${meta.time}`, true],
|
|
62
|
+
[`${c.bold('Output:')} ${meta.output}`, true],
|
|
75
63
|
]
|
|
76
64
|
.map((item) => {
|
|
77
65
|
if (item.at(1)) {
|