@public-ui/kolibri-cli 1.7.0-rc.2 → 1.7.0-rc.3
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/index.js +1 -1
- package/dist/migrate/index.js +3 -3
- package/dist/migrate/runner/abstract-task.js +2 -1
- package/dist/migrate/runner/task-runner.js +7 -4
- package/dist/migrate/runner/tasks/common/GenericRenamePropertyTask.js +3 -3
- package/dist/migrate/runner/tasks/common/LabelExpertSlot.js +46 -0
- package/dist/migrate/runner/tasks/common/RemovePropertyNameTask.js +2 -2
- package/dist/migrate/runner/tasks/test/index.js +2 -6
- package/dist/migrate/runner/tasks/v1/index.js +3 -0
- package/dist/migrate/shares/reuse.js +51 -8
- package/package.json +5 -4
package/dist/index.js
CHANGED
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
const commander_1 = require("commander");
|
|
8
|
-
const migrate_1 = __importDefault(require("./migrate"));
|
|
9
8
|
const gradient_string_1 = __importDefault(require("gradient-string"));
|
|
9
|
+
const migrate_1 = __importDefault(require("./migrate"));
|
|
10
10
|
const reuse_1 = require("./migrate/shares/reuse");
|
|
11
11
|
const versionOfPublicUiKoliBriCli = (0, reuse_1.getVersionOfPublicUiKoliBriCli)();
|
|
12
12
|
const banner = gradient_string_1.default.atlas.multiline(`
|
package/dist/migrate/index.js
CHANGED
|
@@ -20,7 +20,7 @@ function default_1(program) {
|
|
|
20
20
|
program
|
|
21
21
|
.command('migrate')
|
|
22
22
|
.description('This command migrates KoliBri code to the current version.')
|
|
23
|
-
.argument('
|
|
23
|
+
.argument('[string]', 'Source code folder to migrate', 'src')
|
|
24
24
|
.addOption(new commander_1.Option('--ignore-uncommitted-changes', 'Allows execution with uncommitted changes').default(false))
|
|
25
25
|
.addOption(new commander_1.Option('--remove-mode <mode>', 'Prefix property name or delete property').choices(types_1.REMOVE_MODE).default('prefix'))
|
|
26
26
|
.addOption(new commander_1.Option('--test-tasks', 'Run additional test tasks').default(false).hideHelp())
|
|
@@ -31,7 +31,7 @@ function default_1(program) {
|
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
33
|
if (!options.ignoreUncommittedChanges && stdout) {
|
|
34
|
-
throw
|
|
34
|
+
throw (0, reuse_1.logAndCreateError)('There are uncommitted changes');
|
|
35
35
|
}
|
|
36
36
|
(0, reuse_1.setRemoveMode)(options.removeMode);
|
|
37
37
|
const versionOfPublicUiComponents = (0, reuse_1.getVersionOfPublicUiComponents)();
|
|
@@ -63,7 +63,7 @@ Source folder to migrate: ${baseDir}
|
|
|
63
63
|
runner.run();
|
|
64
64
|
if (version !== runner.getPendingMinVersion()) {
|
|
65
65
|
version = runner.getPendingMinVersion();
|
|
66
|
-
let packageJson = (0, reuse_1.
|
|
66
|
+
let packageJson = (0, reuse_1.getContentOfProjectPkgJson)();
|
|
67
67
|
packageJson = packageJson.replace(/"(@public-ui\/[^"]+)":\s*".*"/g, `"$1": "${version}"`);
|
|
68
68
|
fs_1.default.writeFileSync(path_1.default.resolve(process.cwd(), 'package.json'), packageJson);
|
|
69
69
|
runner.setProjectVersion(version);
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.AbstractTask = void 0;
|
|
7
7
|
const semver_1 = __importDefault(require("semver"));
|
|
8
8
|
const types_1 = require("../../types");
|
|
9
|
+
const reuse_1 = require("../shares/reuse");
|
|
9
10
|
class AbstractTask {
|
|
10
11
|
constructor(identifier, title, extensions, versionRange, dependentTasks = [], options = {}) {
|
|
11
12
|
this.identifier = identifier;
|
|
@@ -17,7 +18,7 @@ class AbstractTask {
|
|
|
17
18
|
this.description = options.description;
|
|
18
19
|
this.extensions = this.extensions.filter((ext) => types_1.FILE_EXTENSIONS.includes(ext));
|
|
19
20
|
if (!semver_1.default.validRange(this.versionRange)) {
|
|
20
|
-
throw
|
|
21
|
+
throw (0, reuse_1.logAndCreateError)(`[${this.identifier}] Invalid semver range version: ${this.versionRange}`);
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
getDependentTasks() {
|
|
@@ -4,9 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TaskRunner = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
7
8
|
const fs_1 = __importDefault(require("fs"));
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
9
10
|
const semver_1 = __importDefault(require("semver"));
|
|
11
|
+
const reuse_1 = require("../shares/reuse");
|
|
10
12
|
class TaskRunner {
|
|
11
13
|
constructor(baseDir, cliVersion, projectVersion, config) {
|
|
12
14
|
this.tasks = new Map();
|
|
@@ -25,19 +27,19 @@ class TaskRunner {
|
|
|
25
27
|
}
|
|
26
28
|
setBaseDir(baseDir) {
|
|
27
29
|
if (!fs_1.default.existsSync(path_1.default.resolve(process.cwd(), baseDir))) {
|
|
28
|
-
throw
|
|
30
|
+
throw (0, reuse_1.logAndCreateError)(`Base directory "${baseDir}" does not exist`);
|
|
29
31
|
}
|
|
30
32
|
this.baseDir = baseDir;
|
|
31
33
|
}
|
|
32
34
|
setCliVersion(version) {
|
|
33
35
|
if (semver_1.default.valid(version) === null) {
|
|
34
|
-
throw
|
|
36
|
+
throw (0, reuse_1.logAndCreateError)(`Invalid CLI version: ${version}`);
|
|
35
37
|
}
|
|
36
38
|
this.cliVersion = version;
|
|
37
39
|
}
|
|
38
40
|
setProjectVersion(version) {
|
|
39
41
|
if (semver_1.default.valid(version) === null) {
|
|
40
|
-
throw
|
|
42
|
+
throw (0, reuse_1.logAndCreateError)(`Invalid project version: ${version}`);
|
|
41
43
|
}
|
|
42
44
|
if (this.projectVersion !== version) {
|
|
43
45
|
this.projectVersion = version;
|
|
@@ -118,7 +120,8 @@ class TaskRunner {
|
|
|
118
120
|
break;
|
|
119
121
|
}
|
|
120
122
|
if (outline) {
|
|
121
|
-
|
|
123
|
+
const status = task.getStatus();
|
|
124
|
+
console.log(`- ${task.getTitle()}:`, status === 'done' ? chalk_1.default.green(status) : chalk_1.default.yellow(status));
|
|
122
125
|
}
|
|
123
126
|
});
|
|
124
127
|
return {
|
|
@@ -15,13 +15,13 @@ class GenericRenamePropertyTask extends abstract_task_1.AbstractTask {
|
|
|
15
15
|
constructor(identifier, description, tag, oldProperty, newProperty, versionRange, dependentTasks = [], options = {}) {
|
|
16
16
|
super(identifier, description, EXTENSIONS, versionRange, dependentTasks, options);
|
|
17
17
|
if (!reuse_1.isTagKebabCaseRegExp.test(tag)) {
|
|
18
|
-
|
|
18
|
+
(0, reuse_1.logAndCreateError)(`Tag "${tag}" is not in kebab case.`);
|
|
19
19
|
}
|
|
20
20
|
if (!reuse_1.isPropertyKebabCaseRegExp.test(oldProperty)) {
|
|
21
|
-
|
|
21
|
+
(0, reuse_1.logAndCreateError)(`Old property "${oldProperty}" is not in kebab case.`);
|
|
22
22
|
}
|
|
23
23
|
if (!reuse_1.isPropertyKebabCaseRegExp.test(newProperty)) {
|
|
24
|
-
throw
|
|
24
|
+
throw (0, reuse_1.logAndCreateError)(`New property "${newProperty}" is not in kebab case.`);
|
|
25
25
|
}
|
|
26
26
|
this.newProperty = newProperty;
|
|
27
27
|
this.oldPropertyInCamelCase = (0, reuse_1.kebabToCapitalCase)(oldProperty);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LabelExpertSlot = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const types_1 = require("../../../../types");
|
|
9
|
+
const reuse_1 = require("../../../shares/reuse");
|
|
10
|
+
const abstract_task_1 = require("../../abstract-task");
|
|
11
|
+
class LabelExpertSlot extends abstract_task_1.AbstractTask {
|
|
12
|
+
static getInstance(identifier, title, extensions, versionRange, dependentTasks = [], options = {}) {
|
|
13
|
+
if (!this.instances.has(identifier)) {
|
|
14
|
+
this.instances.set(identifier, new LabelExpertSlot(identifier, title, extensions, versionRange, dependentTasks, options));
|
|
15
|
+
}
|
|
16
|
+
return this.instances.get(identifier);
|
|
17
|
+
}
|
|
18
|
+
run(baseDir) {
|
|
19
|
+
this.transpileComponentFileDelete(baseDir);
|
|
20
|
+
this.transpileCustomElementFileDelete(baseDir);
|
|
21
|
+
}
|
|
22
|
+
transpileComponentFileDelete(baseDir) {
|
|
23
|
+
(0, reuse_1.filterFilesByExt)(baseDir, types_1.COMPONENT_FILE_EXTENSIONS).forEach((file) => {
|
|
24
|
+
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
25
|
+
const newContent = content;
|
|
26
|
+
console.log(content.match(/<\/KolSelect/));
|
|
27
|
+
// Replacements
|
|
28
|
+
if (content !== newContent) {
|
|
29
|
+
reuse_1.MODIFIED_FILES.add(file);
|
|
30
|
+
fs_1.default.writeFileSync(file, newContent);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
transpileCustomElementFileDelete(baseDir) {
|
|
35
|
+
(0, reuse_1.filterFilesByExt)(baseDir, types_1.COMPONENT_FILE_EXTENSIONS).forEach((file) => {
|
|
36
|
+
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
37
|
+
const newContent = content;
|
|
38
|
+
// Replacements
|
|
39
|
+
if (content !== newContent) {
|
|
40
|
+
reuse_1.MODIFIED_FILES.add(file);
|
|
41
|
+
fs_1.default.writeFileSync(file, newContent);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.LabelExpertSlot = LabelExpertSlot;
|
|
@@ -13,10 +13,10 @@ class RemovePropertyNameTask extends GenericRenamePropertyTask_1.GenericRenamePr
|
|
|
13
13
|
constructor(identifier, tag, property, versionRange, dependentTasks, options) {
|
|
14
14
|
super(identifier, `Remove property "${property}" of "${tag}" component`, tag, property, `data-removed-${property}`, versionRange, dependentTasks, options);
|
|
15
15
|
if (!reuse_1.isTagKebabCaseRegExp.test(tag)) {
|
|
16
|
-
throw
|
|
16
|
+
throw (0, reuse_1.logAndCreateError)(`Tag "${tag}" is not in kebab case.`);
|
|
17
17
|
}
|
|
18
18
|
if (!reuse_1.isPropertyKebabCaseRegExp.test(property)) {
|
|
19
|
-
throw
|
|
19
|
+
throw (0, reuse_1.logAndCreateError)(`Property "${property}" is not in kebab case.`);
|
|
20
20
|
}
|
|
21
21
|
this.propertyInCamelCase = (0, reuse_1.kebabToCapitalCase)(property);
|
|
22
22
|
this.componentRegExpBoolean = new RegExp(`(<${(0, reuse_1.kebabToCapitalCase)(tag)}[^>]+)${this.propertyInCamelCase}([ >])`, 'g');
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.testTasks = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
4
|
const reuse_1 = require("../../../shares/reuse");
|
|
9
5
|
const test_version_1_3_1 = require("./test-version-1.3");
|
|
6
|
+
const test_version_current_1 = require("./test-version-current");
|
|
10
7
|
const test_version_next_2_1 = require("./test-version-next-2");
|
|
11
8
|
const test_version_next_3_1 = require("./test-version-next-3");
|
|
12
9
|
const test_version_zero_1 = require("./test-version-zero");
|
|
13
|
-
const test_version_current_1 = require("./test-version-current");
|
|
14
10
|
exports.testTasks = [];
|
|
15
11
|
exports.testTasks.push(test_version_zero_1.TestVersionZero.getInstance());
|
|
16
12
|
exports.testTasks.push(test_version_next_2_1.TestVersionNext2.getInstance());
|
|
17
13
|
exports.testTasks.push(test_version_next_3_1.TestVersionNext3.getInstance());
|
|
18
14
|
exports.testTasks.push(test_version_1_3_1.TestVersion13.getInstance());
|
|
19
|
-
const versionOfPublicUiComponents = (0, reuse_1.
|
|
15
|
+
const versionOfPublicUiComponents = (0, reuse_1.getVersionOfPublicUiComponents)();
|
|
20
16
|
exports.testTasks.push(test_version_current_1.TestVersionCurrent.getInstance(versionOfPublicUiComponents));
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.v1Tasks = void 0;
|
|
4
|
+
const types_1 = require("../../../../types");
|
|
5
|
+
const LabelExpertSlot_1 = require("../common/LabelExpertSlot");
|
|
4
6
|
const abbr_1 = require("./abbr");
|
|
5
7
|
const accordion_1 = require("./accordion");
|
|
6
8
|
const badge_1 = require("./badge");
|
|
@@ -103,3 +105,4 @@ exports.v1Tasks.push(tabs_1.TabsRenamePropertyAriaLabelToLabel);
|
|
|
103
105
|
exports.v1Tasks.push(tabs_1.TabsRenamePropertyTabAlignToAlign);
|
|
104
106
|
exports.v1Tasks.push(toast_1.ToastRenamePropertyHeadingToLabel);
|
|
105
107
|
exports.v1Tasks.push(version_1.VersionRenamePropertyVersionToLabel);
|
|
108
|
+
exports.v1Tasks.push(LabelExpertSlot_1.LabelExpertSlot.getInstance('label-expert-slot', 'Label Expert Slot', types_1.COMPONENT_FILE_EXTENSIONS, '^1'));
|
|
@@ -3,9 +3,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getVersionOfPublicUiKoliBriCli = exports.getVersionOfPublicUiComponents = exports.getRemoveMode = exports.setRemoveMode = exports.MODIFIED_FILES = exports.kebabToCapitalCase = exports.isPropertyKebabCaseRegExp = exports.isTagKebabCaseRegExp = exports.getPackageManagerInstallCommand = exports.
|
|
6
|
+
exports.getVersionOfPublicUiKoliBriCli = exports.getVersionOfPublicUiComponents = exports.getContentOfProjectPkgJson = exports.getRemoveMode = exports.setRemoveMode = exports.MODIFIED_FILES = exports.kebabToCapitalCase = exports.isPropertyKebabCaseRegExp = exports.isTagKebabCaseRegExp = exports.getPackageManagerInstallCommand = exports.filterFilesByExt = exports.logAndCreateError = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
7
8
|
const fs_1 = __importDefault(require("fs"));
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
/**
|
|
11
|
+
* This function is used to exit the process with an error message.
|
|
12
|
+
* @param {string} msg The error message
|
|
13
|
+
* @param {string} hint The hint message
|
|
14
|
+
* @returns {Error} The error object
|
|
15
|
+
*/
|
|
16
|
+
function logAndCreateError(msg, hint) {
|
|
17
|
+
const hintText = hint
|
|
18
|
+
? chalk_1.default.yellow(`
|
|
19
|
+
ℹ️ `, chalk_1.default.underline.bold(`Hinweis:`), hint, `
|
|
20
|
+
`)
|
|
21
|
+
: '';
|
|
22
|
+
console.log(chalk_1.default.red(chalk_1.default.underline.bold(`
|
|
23
|
+
Error:`), `${msg}
|
|
24
|
+
`), hintText, `
|
|
25
|
+
👉 You can report this error to`, chalk_1.default.blue(`https://github.com/public-ui/kolibri/issues/new?title=CLI:+`), `
|
|
26
|
+
`);
|
|
27
|
+
// @todo process.exit(1); // makes `hint` undefined - ?!
|
|
28
|
+
return new Error();
|
|
29
|
+
}
|
|
30
|
+
exports.logAndCreateError = logAndCreateError;
|
|
9
31
|
/**
|
|
10
32
|
* Recursively searches for files with the specified extension in the specified directory.
|
|
11
33
|
* @param {string} dir The directory to search in
|
|
@@ -36,11 +58,10 @@ exports.filterFilesByExt = filterFilesByExt;
|
|
|
36
58
|
function readPackageString(offsetPath) {
|
|
37
59
|
offsetPath = path_1.default.resolve(offsetPath, 'package.json');
|
|
38
60
|
if (!fs_1.default.existsSync(offsetPath)) {
|
|
39
|
-
throw
|
|
61
|
+
throw logAndCreateError(`The following "package.json" does not exists: ${offsetPath}`);
|
|
40
62
|
}
|
|
41
63
|
return fs_1.default.readFileSync(offsetPath, 'utf8');
|
|
42
64
|
}
|
|
43
|
-
exports.readPackageString = readPackageString;
|
|
44
65
|
/**
|
|
45
66
|
* This function is used to get the version of the package.json.
|
|
46
67
|
* @param {string} offsetPath The offset path to the package.json
|
|
@@ -53,11 +74,10 @@ function readPackageJson(offsetPath) {
|
|
|
53
74
|
json = JSON.parse(content);
|
|
54
75
|
}
|
|
55
76
|
catch (err) {
|
|
56
|
-
throw
|
|
77
|
+
throw logAndCreateError(`The following "package.json" content could not parse: ${content}`);
|
|
57
78
|
}
|
|
58
79
|
return json;
|
|
59
80
|
}
|
|
60
|
-
exports.readPackageJson = readPackageJson;
|
|
61
81
|
/**
|
|
62
82
|
* This function is used to get the package manager install command.
|
|
63
83
|
* @param {string} baseDir The base directory to start searching for the package manager
|
|
@@ -72,7 +92,7 @@ function getPackageManagerInstallCommand(baseDir = process.cwd()) {
|
|
|
72
92
|
return 'npm i';
|
|
73
93
|
baseDir = path_1.default.resolve(baseDir, '..');
|
|
74
94
|
if (baseDir === '/') {
|
|
75
|
-
throw
|
|
95
|
+
throw logAndCreateError('Package manager could not detected.');
|
|
76
96
|
}
|
|
77
97
|
return getPackageManagerInstallCommand(baseDir);
|
|
78
98
|
}
|
|
@@ -109,7 +129,30 @@ function getRemoveMode() {
|
|
|
109
129
|
return REMOVE_MODE;
|
|
110
130
|
}
|
|
111
131
|
exports.getRemoveMode = getRemoveMode;
|
|
112
|
-
const
|
|
132
|
+
const getContentOfProjectPkgJson = () => {
|
|
133
|
+
try {
|
|
134
|
+
return readPackageString(path_1.default.resolve(process.cwd()));
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
throw logAndCreateError('Could not read content of project "package.json"!');
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
exports.getContentOfProjectPkgJson = getContentOfProjectPkgJson;
|
|
141
|
+
const getVersionOfPublicUiComponents = () => {
|
|
142
|
+
try {
|
|
143
|
+
return readPackageJson(path_1.default.resolve(process.cwd(), 'node_modsules/@public-ui/components')).version;
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
throw logAndCreateError('Could not get version of installed "@public-ui/components" package!', 'Check that you are in the root directory of your project and that the package "@public-ui/components" is installed.');
|
|
147
|
+
}
|
|
148
|
+
};
|
|
113
149
|
exports.getVersionOfPublicUiComponents = getVersionOfPublicUiComponents;
|
|
114
|
-
const getVersionOfPublicUiKoliBriCli = () =>
|
|
150
|
+
const getVersionOfPublicUiKoliBriCli = () => {
|
|
151
|
+
try {
|
|
152
|
+
return readPackageJson(path_1.default.resolve(__dirname, '..', '..', '..')).version;
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
throw logAndCreateError('Could not get version of global installed "@public-ui/kolibri-cli" package!', 'Install the package with: npm i -g @public-ui/kolibri-cli');
|
|
156
|
+
}
|
|
157
|
+
};
|
|
115
158
|
exports.getVersionOfPublicUiKoliBriCli = getVersionOfPublicUiKoliBriCli;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@public-ui/kolibri-cli",
|
|
3
|
-
"version": "1.7.0-rc.
|
|
3
|
+
"version": "1.7.0-rc.3",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"homepage": "https://public-ui.github.io",
|
|
6
6
|
"repository": "https://github.com/public-ui/kolibri",
|
|
@@ -22,14 +22,15 @@
|
|
|
22
22
|
"format": "prettier -c src",
|
|
23
23
|
"lint": "eslint src && tsc --noEmit",
|
|
24
24
|
"prepack": "tsc",
|
|
25
|
-
"start": "ts-node src/index.ts migrate --test-tasks test",
|
|
25
|
+
"start": "ts-node src/index.ts migrate --ignore-uncommitted-changes --test-tasks test",
|
|
26
26
|
"restart": "pnpm reset && pnpm start",
|
|
27
27
|
"unused": "knip",
|
|
28
28
|
"update": "ncu -t minor -u && ncu",
|
|
29
|
-
"watch": "nodemon --ignore package.json src/index.ts migrate --test-tasks test"
|
|
29
|
+
"watch": "nodemon --ignore package.json src/index.ts migrate --ignore-uncommitted-changes --test-tasks test"
|
|
30
30
|
},
|
|
31
|
+
"type": "commonjs",
|
|
31
32
|
"dependencies": {
|
|
32
|
-
"chalk": "
|
|
33
|
+
"chalk": "^4",
|
|
33
34
|
"commander": "11.0.0",
|
|
34
35
|
"gradient-string": "2.0.2",
|
|
35
36
|
"loglevel": "1.8.1",
|