@kubb/cli 0.33.0 → 0.35.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.
Files changed (3) hide show
  1. package/dist/index.js +121 -78
  2. package/dist/index.mjs +121 -78
  3. package/package.json +4 -2
package/dist/index.js CHANGED
@@ -2,13 +2,78 @@
2
2
  'use strict';
3
3
 
4
4
  var commander = require('commander');
5
- var cosmiconfig = require('cosmiconfig');
6
- var cosmiconfigTypescriptLoader = require('cosmiconfig-typescript-loader');
7
- var pc2 = require('picocolors');
5
+ var pc3 = require('picocolors');
8
6
  var ora = require('ora');
9
7
  var execa = require('execa');
10
8
  var stringArgv = require('string-argv');
11
9
  var core = require('@kubb/core');
10
+ var cosmiconfig = require('cosmiconfig');
11
+ var cosmiconfigTypescriptLoader = require('cosmiconfig-typescript-loader');
12
+
13
+ async function run({ config, options, spinner: spinner2 }) {
14
+ const logger = {
15
+ log(message, logLevel) {
16
+ if (logLevel === "error") {
17
+ spinner2.fail(message);
18
+ }
19
+ spinner2[logLevel](message);
20
+ },
21
+ spinner: spinner2
22
+ };
23
+ const onDone = async (config2) => {
24
+ if (!config2.hooks?.done) {
25
+ return;
26
+ }
27
+ spinner2.start("Running hooks");
28
+ let commands = [];
29
+ if (typeof config2.hooks?.done === "string") {
30
+ commands = [config2.hooks.done];
31
+ } else {
32
+ commands = config2.hooks.done;
33
+ }
34
+ const promises = commands.map(async (command) => {
35
+ const [cmd, ..._args] = [...stringArgv.parseArgsStringToArgv(command)];
36
+ return execa.execa(cmd, _args);
37
+ });
38
+ await Promise.all(promises);
39
+ spinner2.succeed("Running hooks completed");
40
+ };
41
+ try {
42
+ spinner2.start("Building");
43
+ await core.build({
44
+ config: {
45
+ root: process.cwd(),
46
+ ...config
47
+ },
48
+ mode: options.mode || "development",
49
+ logger
50
+ });
51
+ spinner2.succeed(pc3.blue("Kubb generation done"));
52
+ await onDone(config);
53
+ } catch (err) {
54
+ spinner2.fail("Something went wrong\n");
55
+ console.error(err);
56
+ }
57
+ return true;
58
+ }
59
+ var startWatcher = async (cb, options) => {
60
+ const { spinner: spinner2, path } = options;
61
+ const { watch } = await import('chokidar');
62
+ const ignored = ["**/{.git,node_modules}/**"];
63
+ const watcher = watch(path, {
64
+ ignorePermissionErrors: true,
65
+ ignored
66
+ });
67
+ watcher.on("all", async (type, file) => {
68
+ spinner2.succeed(pc3.yellow(pc3.bold(`Change detected: ${type} ${file}`)));
69
+ spinner2.spinner = "clock";
70
+ try {
71
+ await cb(options.path);
72
+ } catch (e) {
73
+ spinner2.warn(pc3.red(e));
74
+ }
75
+ });
76
+ };
12
77
 
13
78
  // src/utils/getPlugins.ts
14
79
  var isJSONPlugins = (plugins) => {
@@ -48,92 +113,70 @@ var getConfig = async (result, options) => {
48
113
  }
49
114
  return config;
50
115
  };
51
-
52
- // src/run.ts
53
- async function run({ result, options, spinner: spinner2 }) {
54
- const logger = {
55
- log(message, logLevel) {
56
- if (logLevel === "error") {
57
- spinner2.fail(message);
58
- }
59
- spinner2[logLevel](message);
60
- },
61
- spinner: spinner2
62
- };
63
- const onDone = async (config) => {
64
- if (!config.hooks?.done) {
65
- return;
116
+ var getCosmiConfig = async (moduleName2, config) => {
117
+ const explorer = cosmiconfig.cosmiconfig(moduleName2, {
118
+ cache: false,
119
+ searchPlaces: [
120
+ "package.json",
121
+ `.${moduleName2}rc`,
122
+ `.${moduleName2}rc.json`,
123
+ `.${moduleName2}rc.js`,
124
+ `.${moduleName2}rc.cjs`,
125
+ `${moduleName2}.config.js`,
126
+ `${moduleName2}.config.cjs`,
127
+ `.${moduleName2}rc.ts`,
128
+ `${moduleName2}.config.ts`
129
+ ],
130
+ loaders: {
131
+ ".ts": cosmiconfigTypescriptLoader.TypeScriptLoader({
132
+ swc: true,
133
+ typeCheck: false
134
+ }),
135
+ noExt: cosmiconfig.defaultLoaders[".js"]
66
136
  }
67
- spinner2.start("Running hooks");
68
- let commands = [];
69
- if (typeof config.hooks?.done === "string") {
70
- commands = [config.hooks.done];
71
- } else {
72
- commands = config.hooks.done;
73
- }
74
- const promises = commands.map(async (command) => {
75
- const [cmd, ..._args] = [...stringArgv.parseArgsStringToArgv(command)];
76
- return execa.execa(cmd, _args);
77
- });
78
- await Promise.all(promises);
79
- spinner2.succeed("Running hooks completed");
80
- };
81
- try {
82
- spinner2.start("Building");
83
- const config = await getConfig(result, options);
84
- await core.build({
85
- config: {
86
- root: process.cwd(),
87
- ...config
88
- },
89
- mode: options.mode || "development",
90
- logger
91
- });
92
- spinner2.succeed(pc2.blue("Kubb generation done"));
93
- await onDone(config);
94
- } catch (err) {
95
- spinner2.fail("Something went wrong\n");
96
- console.error(err);
137
+ });
138
+ const result = config ? await explorer.load(config) : await explorer.search();
139
+ if (result?.isEmpty || !result || !result.config) {
140
+ throw new Error("Config not defined, create a kubb.config.js or pass through your config with the option --config");
97
141
  }
98
- return true;
99
- }
142
+ return result;
143
+ };
100
144
 
101
145
  // package.json
102
- var version = "0.33.0";
146
+ var version = "0.35.0";
103
147
 
104
148
  // src/index.ts
105
149
  var moduleName = "kubb";
106
150
  var spinner = ora({
107
151
  color: "blue",
108
- text: pc2.blue("Kubb generation started"),
152
+ text: pc3.blue("Kubb generation started"),
109
153
  spinner: "clock"
110
154
  }).start();
111
- var explorer = cosmiconfig.cosmiconfig(moduleName, {
112
- searchPlaces: [
113
- "package.json",
114
- `.${moduleName}rc`,
115
- `.${moduleName}rc.json`,
116
- `.${moduleName}rc.js`,
117
- `.${moduleName}rc.cjs`,
118
- `${moduleName}.config.js`,
119
- `${moduleName}.config.cjs`,
120
- `.${moduleName}rc.ts`,
121
- `${moduleName}.config.ts`
122
- ],
123
- loaders: {
124
- ".ts": cosmiconfigTypescriptLoader.TypeScriptLoader(),
125
- noExt: cosmiconfig.defaultLoaders[".js"]
126
- }
127
- });
128
155
  var program = new commander.Command(moduleName).description("Kubb").action(async (options) => {
129
- spinner.succeed(pc2.blue("Kubb generation started"));
130
- spinner.start("Loading config");
131
- const result = options.config ? await explorer.load(options.config) : await explorer.search();
132
- if (result?.isEmpty || !result || !result.config) {
133
- spinner.fail(pc2.red("Config not defined, create a kubb.config.js or pass through your config with the option --config"));
134
- return;
156
+ try {
157
+ spinner.succeed(pc3.blue("Kubb generation started"));
158
+ spinner.start("Loading config");
159
+ const result = await getCosmiConfig(moduleName, options.config);
160
+ spinner.succeed("Config loaded");
161
+ if (options.watch) {
162
+ const config = await getConfig(result, options);
163
+ startWatcher(
164
+ async (paths) => {
165
+ await run({ config, spinner, options });
166
+ spinner.spinner = "simpleDotsScrolling";
167
+ spinner.start(pc3.yellow(pc3.bold(`Watching for changes in ${paths.join(" and ")}`)));
168
+ },
169
+ {
170
+ spinner,
171
+ path: [config.input.path]
172
+ }
173
+ );
174
+ } else {
175
+ const config = await getConfig(result, options);
176
+ await run({ config, spinner, options });
177
+ }
178
+ } catch (e) {
179
+ spinner.fail(pc3.red(e.message));
135
180
  }
136
- spinner.succeed("Config loaded");
137
- await run({ result, spinner, options });
138
- }).addOption(new commander.Option("-m, --mode <mode>", "Mode of Kubb, development or production").default("development")).addOption(new commander.Option("-c, --config <path>", "Path to @kubb config")).addOption(new commander.Option("-d, --debug", "Debug mode").default(false));
181
+ }).addOption(new commander.Option("-m, --mode <mode>", "Mode of Kubb, development or production").default("development")).addOption(new commander.Option("-c, --config <path>", "Path to @kubb config")).addOption(new commander.Option("-d, --debug", "Debug mode").default(false)).addOption(new commander.Option("-w, --watch", "Watch mode based on the input file"));
139
182
  program.name(moduleName).description("Generate").version(version, "-v").parse();
package/dist/index.mjs CHANGED
@@ -1,12 +1,77 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command, Option } from 'commander';
3
- import { cosmiconfig, defaultLoaders } from 'cosmiconfig';
4
- import { TypeScriptLoader } from 'cosmiconfig-typescript-loader';
5
- import pc2 from 'picocolors';
3
+ import pc3 from 'picocolors';
6
4
  import ora from 'ora';
7
5
  import { execa } from 'execa';
8
6
  import { parseArgsStringToArgv } from 'string-argv';
9
7
  import { build, isPromise } from '@kubb/core';
8
+ import { cosmiconfig, defaultLoaders } from 'cosmiconfig';
9
+ import { TypeScriptLoader } from 'cosmiconfig-typescript-loader';
10
+
11
+ async function run({ config, options, spinner: spinner2 }) {
12
+ const logger = {
13
+ log(message, logLevel) {
14
+ if (logLevel === "error") {
15
+ spinner2.fail(message);
16
+ }
17
+ spinner2[logLevel](message);
18
+ },
19
+ spinner: spinner2
20
+ };
21
+ const onDone = async (config2) => {
22
+ if (!config2.hooks?.done) {
23
+ return;
24
+ }
25
+ spinner2.start("Running hooks");
26
+ let commands = [];
27
+ if (typeof config2.hooks?.done === "string") {
28
+ commands = [config2.hooks.done];
29
+ } else {
30
+ commands = config2.hooks.done;
31
+ }
32
+ const promises = commands.map(async (command) => {
33
+ const [cmd, ..._args] = [...parseArgsStringToArgv(command)];
34
+ return execa(cmd, _args);
35
+ });
36
+ await Promise.all(promises);
37
+ spinner2.succeed("Running hooks completed");
38
+ };
39
+ try {
40
+ spinner2.start("Building");
41
+ await build({
42
+ config: {
43
+ root: process.cwd(),
44
+ ...config
45
+ },
46
+ mode: options.mode || "development",
47
+ logger
48
+ });
49
+ spinner2.succeed(pc3.blue("Kubb generation done"));
50
+ await onDone(config);
51
+ } catch (err) {
52
+ spinner2.fail("Something went wrong\n");
53
+ console.error(err);
54
+ }
55
+ return true;
56
+ }
57
+ var startWatcher = async (cb, options) => {
58
+ const { spinner: spinner2, path } = options;
59
+ const { watch } = await import('chokidar');
60
+ const ignored = ["**/{.git,node_modules}/**"];
61
+ const watcher = watch(path, {
62
+ ignorePermissionErrors: true,
63
+ ignored
64
+ });
65
+ watcher.on("all", async (type, file) => {
66
+ spinner2.succeed(pc3.yellow(pc3.bold(`Change detected: ${type} ${file}`)));
67
+ spinner2.spinner = "clock";
68
+ try {
69
+ await cb(options.path);
70
+ } catch (e) {
71
+ spinner2.warn(pc3.red(e));
72
+ }
73
+ });
74
+ };
10
75
 
11
76
  // src/utils/getPlugins.ts
12
77
  var isJSONPlugins = (plugins) => {
@@ -46,92 +111,70 @@ var getConfig = async (result, options) => {
46
111
  }
47
112
  return config;
48
113
  };
49
-
50
- // src/run.ts
51
- async function run({ result, options, spinner: spinner2 }) {
52
- const logger = {
53
- log(message, logLevel) {
54
- if (logLevel === "error") {
55
- spinner2.fail(message);
56
- }
57
- spinner2[logLevel](message);
58
- },
59
- spinner: spinner2
60
- };
61
- const onDone = async (config) => {
62
- if (!config.hooks?.done) {
63
- return;
114
+ var getCosmiConfig = async (moduleName2, config) => {
115
+ const explorer = cosmiconfig(moduleName2, {
116
+ cache: false,
117
+ searchPlaces: [
118
+ "package.json",
119
+ `.${moduleName2}rc`,
120
+ `.${moduleName2}rc.json`,
121
+ `.${moduleName2}rc.js`,
122
+ `.${moduleName2}rc.cjs`,
123
+ `${moduleName2}.config.js`,
124
+ `${moduleName2}.config.cjs`,
125
+ `.${moduleName2}rc.ts`,
126
+ `${moduleName2}.config.ts`
127
+ ],
128
+ loaders: {
129
+ ".ts": TypeScriptLoader({
130
+ swc: true,
131
+ typeCheck: false
132
+ }),
133
+ noExt: defaultLoaders[".js"]
64
134
  }
65
- spinner2.start("Running hooks");
66
- let commands = [];
67
- if (typeof config.hooks?.done === "string") {
68
- commands = [config.hooks.done];
69
- } else {
70
- commands = config.hooks.done;
71
- }
72
- const promises = commands.map(async (command) => {
73
- const [cmd, ..._args] = [...parseArgsStringToArgv(command)];
74
- return execa(cmd, _args);
75
- });
76
- await Promise.all(promises);
77
- spinner2.succeed("Running hooks completed");
78
- };
79
- try {
80
- spinner2.start("Building");
81
- const config = await getConfig(result, options);
82
- await build({
83
- config: {
84
- root: process.cwd(),
85
- ...config
86
- },
87
- mode: options.mode || "development",
88
- logger
89
- });
90
- spinner2.succeed(pc2.blue("Kubb generation done"));
91
- await onDone(config);
92
- } catch (err) {
93
- spinner2.fail("Something went wrong\n");
94
- console.error(err);
135
+ });
136
+ const result = config ? await explorer.load(config) : await explorer.search();
137
+ if (result?.isEmpty || !result || !result.config) {
138
+ throw new Error("Config not defined, create a kubb.config.js or pass through your config with the option --config");
95
139
  }
96
- return true;
97
- }
140
+ return result;
141
+ };
98
142
 
99
143
  // package.json
100
- var version = "0.33.0";
144
+ var version = "0.35.0";
101
145
 
102
146
  // src/index.ts
103
147
  var moduleName = "kubb";
104
148
  var spinner = ora({
105
149
  color: "blue",
106
- text: pc2.blue("Kubb generation started"),
150
+ text: pc3.blue("Kubb generation started"),
107
151
  spinner: "clock"
108
152
  }).start();
109
- var explorer = cosmiconfig(moduleName, {
110
- searchPlaces: [
111
- "package.json",
112
- `.${moduleName}rc`,
113
- `.${moduleName}rc.json`,
114
- `.${moduleName}rc.js`,
115
- `.${moduleName}rc.cjs`,
116
- `${moduleName}.config.js`,
117
- `${moduleName}.config.cjs`,
118
- `.${moduleName}rc.ts`,
119
- `${moduleName}.config.ts`
120
- ],
121
- loaders: {
122
- ".ts": TypeScriptLoader(),
123
- noExt: defaultLoaders[".js"]
124
- }
125
- });
126
153
  var program = new Command(moduleName).description("Kubb").action(async (options) => {
127
- spinner.succeed(pc2.blue("Kubb generation started"));
128
- spinner.start("Loading config");
129
- const result = options.config ? await explorer.load(options.config) : await explorer.search();
130
- if (result?.isEmpty || !result || !result.config) {
131
- spinner.fail(pc2.red("Config not defined, create a kubb.config.js or pass through your config with the option --config"));
132
- return;
154
+ try {
155
+ spinner.succeed(pc3.blue("Kubb generation started"));
156
+ spinner.start("Loading config");
157
+ const result = await getCosmiConfig(moduleName, options.config);
158
+ spinner.succeed("Config loaded");
159
+ if (options.watch) {
160
+ const config = await getConfig(result, options);
161
+ startWatcher(
162
+ async (paths) => {
163
+ await run({ config, spinner, options });
164
+ spinner.spinner = "simpleDotsScrolling";
165
+ spinner.start(pc3.yellow(pc3.bold(`Watching for changes in ${paths.join(" and ")}`)));
166
+ },
167
+ {
168
+ spinner,
169
+ path: [config.input.path]
170
+ }
171
+ );
172
+ } else {
173
+ const config = await getConfig(result, options);
174
+ await run({ config, spinner, options });
175
+ }
176
+ } catch (e) {
177
+ spinner.fail(pc3.red(e.message));
133
178
  }
134
- spinner.succeed("Config loaded");
135
- await run({ result, spinner, options });
136
- }).addOption(new Option("-m, --mode <mode>", "Mode of Kubb, development or production").default("development")).addOption(new Option("-c, --config <path>", "Path to @kubb config")).addOption(new Option("-d, --debug", "Debug mode").default(false));
179
+ }).addOption(new Option("-m, --mode <mode>", "Mode of Kubb, development or production").default("development")).addOption(new Option("-c, --config <path>", "Path to @kubb config")).addOption(new Option("-d, --debug", "Debug mode").default(false)).addOption(new Option("-w, --watch", "Watch mode based on the input file"));
137
180
  program.name(moduleName).description("Generate").version(version, "-v").parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/cli",
3
- "version": "0.33.0",
3
+ "version": "0.35.0",
4
4
  "description": "Generator cli",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,8 @@
20
20
  "!/**/__tests__/**"
21
21
  ],
22
22
  "dependencies": {
23
- "@kubb/core": "0.33.0",
23
+ "@kubb/core": "0.35.0",
24
+ "chokidar": "^3.5.3",
24
25
  "commander": "^9.4.1",
25
26
  "cosmiconfig": "^8.0.0",
26
27
  "cosmiconfig-typescript-loader": "^4.3.0",
@@ -31,6 +32,7 @@
31
32
  },
32
33
  "devDependencies": {
33
34
  "@types/node": "^18.11.18",
35
+ "ts-node": "^10.9.1",
34
36
  "tsup": "^6.5.0",
35
37
  "typescript": "^4.9.4"
36
38
  },