@lenne.tech/cli 0.0.66 → 0.0.70
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/build/commands/angular/create.js +65 -82
- package/build/commands/server/test.js +75 -0
- package/package.json +10 -10
|
@@ -19,7 +19,7 @@ const NewCommand = {
|
|
|
19
19
|
hidden: false,
|
|
20
20
|
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
21
|
// Retrieve the tools we need
|
|
22
|
-
const { filesystem, git, helper, parameters,
|
|
22
|
+
const { filesystem, git, helper, parameters, print: { error, info, spin, success }, prompt: { confirm }, strings: { kebabCase }, system, } = toolbox;
|
|
23
23
|
// Start timer
|
|
24
24
|
const timer = system.startTimer();
|
|
25
25
|
// Info
|
|
@@ -28,12 +28,6 @@ const NewCommand = {
|
|
|
28
28
|
if (!(yield git.gitInstalled())) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
// Check ng
|
|
32
|
-
if (!system.which('nx') && (yield confirm(`Install nx global?`))) {
|
|
33
|
-
const nxSpinner = spin('Install nx global');
|
|
34
|
-
yield system.run(`npm i -g @nrwl/cli`);
|
|
35
|
-
nxSpinner.succeed('nx global installed');
|
|
36
|
-
}
|
|
37
31
|
// Get name of the workspace
|
|
38
32
|
const name = yield helper.getInput(parameters.first, {
|
|
39
33
|
name: 'workspace name',
|
|
@@ -50,88 +44,81 @@ const NewCommand = {
|
|
|
50
44
|
error(`There's already a folder named "${projectDir}" here.`);
|
|
51
45
|
return undefined;
|
|
52
46
|
}
|
|
53
|
-
// Get name of the app
|
|
54
|
-
let appName = yield helper.getInput(parameters.second, {
|
|
55
|
-
name: 'app name',
|
|
56
|
-
showError: true,
|
|
57
|
-
});
|
|
58
|
-
if (!appName) {
|
|
59
|
-
appName = 'app';
|
|
60
|
-
}
|
|
61
47
|
// Set preset
|
|
62
48
|
// See https://github.com/nrwl/nx/blob/4bcd25ec01d793ca59e0ebaf1578bae275b6821d/packages/create-nx-workspace/bin/create-nx-workspace.ts#L32
|
|
63
|
-
const preset = parameters.
|
|
49
|
+
const preset = parameters.second === 'true' || (!parameters.second && (yield confirm(`Add API (Nest server)?`)))
|
|
64
50
|
? 'angular-nest'
|
|
65
51
|
: 'angular';
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
let addToGit = yield confirm(`Add workspace to a new git repository?`);
|
|
53
|
+
let gitLink;
|
|
54
|
+
// Check if git init is active
|
|
55
|
+
if (addToGit) {
|
|
56
|
+
// Get name of the app
|
|
57
|
+
gitLink = yield helper.getInput(null, {
|
|
58
|
+
name: 'git repository link',
|
|
59
|
+
showError: true,
|
|
60
|
+
});
|
|
61
|
+
if (!gitLink) {
|
|
62
|
+
addToGit = false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const workspaceSpinner = spin(`Create ${preset} workspace ${projectDir} with ${name} app`);
|
|
66
|
+
// Clone monorepo
|
|
67
|
+
yield system.run(`git clone https://github.com/lenneTech/lt-monorepo.git ${projectDir}`);
|
|
68
|
+
// Check for directory
|
|
70
69
|
if (!filesystem.isDirectory(`./${projectDir}`)) {
|
|
71
70
|
error(`The directory "${projectDir}" could not be created.`);
|
|
72
71
|
return undefined;
|
|
73
72
|
}
|
|
74
|
-
workspaceSpinner.succeed(`Create ${preset} workspace ${projectDir} for ${
|
|
73
|
+
workspaceSpinner.succeed(`Create ${preset} workspace ${projectDir} for ${name} created`);
|
|
75
74
|
// Include example app
|
|
76
75
|
const ngBaseSpinner = spin('Integrate example for Angular');
|
|
77
|
-
//
|
|
78
|
-
yield system.run(`cd ${projectDir} &&
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
// Remove git folder after clone
|
|
77
|
+
yield system.run(`cd ${projectDir} && rm -rf .git`);
|
|
78
|
+
// Check if git init is active
|
|
79
|
+
if (addToGit) {
|
|
80
|
+
yield system.run(`cd ${projectDir} && git init --initial-branch=main`);
|
|
81
|
+
yield system.run(`cd ${projectDir} && git remote add origin ${gitLink}`);
|
|
82
|
+
yield system.run(`cd ${projectDir} && git add .`);
|
|
83
|
+
yield system.run(`cd ${projectDir} && git commit -m "Initial commit"`);
|
|
84
|
+
yield system.run(`cd ${projectDir} && git push -u origin main`);
|
|
85
|
+
}
|
|
86
|
+
// Clone ng-base-starter
|
|
87
|
+
yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/ng-base-starter.git app`);
|
|
88
|
+
// Remove gitkeep file
|
|
89
|
+
yield system.run(`cd ${projectDir}/projects && rm .gitkeep`);
|
|
90
|
+
// Remove git folder after clone
|
|
91
|
+
yield system.run(`cd ${projectDir}/projects/app && rm -rf .git`);
|
|
87
92
|
// Integrate files
|
|
88
|
-
if (filesystem.isDirectory(`./${projectDir}/
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
filesystem.remove(`./${projectDir}/temp`);
|
|
95
|
-
// Commit changes
|
|
96
|
-
yield system.run(`cd ${projectDir} && git add . && git commit -am "Angular example integrated"`);
|
|
93
|
+
if (filesystem.isDirectory(`./${projectDir}/projects/app`)) {
|
|
94
|
+
// Check if git init is active
|
|
95
|
+
if (addToGit) {
|
|
96
|
+
// Commit changes
|
|
97
|
+
yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Angular example integrated" && git push`);
|
|
98
|
+
}
|
|
97
99
|
// Angular example integration done
|
|
98
100
|
ngBaseSpinner.succeed('Example for Angular integrated');
|
|
99
101
|
// Include files from https://github.com/lenneTech/nest-server-starter
|
|
100
102
|
if (preset === 'angular-nest') {
|
|
101
103
|
// Init
|
|
102
104
|
const serverSpinner = spin(`Integrate Nest Server Starter`);
|
|
103
|
-
|
|
104
|
-
yield system.run(`cd ${projectDir} && git clone https://github.com/lenneTech/nest-server-starter
|
|
105
|
+
// Clone api
|
|
106
|
+
yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/nest-server-starter api`);
|
|
105
107
|
// Integrate files
|
|
106
|
-
if (filesystem.isDirectory(`./${projectDir}/
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
if (filesystem.isDirectory(`./${projectDir}/projects/api`)) {
|
|
109
|
+
// Remove git folder from clone
|
|
110
|
+
yield system.run(`cd ${projectDir}/projects/api && rm -rf .git`);
|
|
111
|
+
// Prepare meta.json in api
|
|
112
|
+
filesystem.write(`./${projectDir}/projects/api/src/meta.json`, {
|
|
113
|
+
name: `${name}-api-server`,
|
|
114
|
+
description: `API for ${name} app`,
|
|
112
115
|
version: '0.0.0',
|
|
113
116
|
});
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
// Extend ts config
|
|
120
|
-
yield patching.update(`./${projectDir}/apps/api/tsconfig.app.json`, (config) => {
|
|
121
|
-
config.compilerOptions.resolveJsonModule = true;
|
|
122
|
-
return config;
|
|
123
|
-
});
|
|
124
|
-
// Remove temp files
|
|
125
|
-
filesystem.remove(`./${projectDir}/temp`);
|
|
126
|
-
// Add scripts
|
|
127
|
-
yield patching.update(`./${projectDir}/package.json`, (config) => {
|
|
128
|
-
config.scripts['start:app'] = 'npm start';
|
|
129
|
-
config.scripts['start:server'] = 'nx serve api';
|
|
130
|
-
config.scripts['e2e'] = `nx e2e ${appName}-e2e`;
|
|
131
|
-
return config;
|
|
132
|
-
});
|
|
133
|
-
// Commit changes
|
|
134
|
-
yield system.run(`cd ${projectDir} && git add . && git commit -am "Nest Server Starter integrated"`);
|
|
117
|
+
// Check if git init is active
|
|
118
|
+
if (addToGit) {
|
|
119
|
+
// Commit changes
|
|
120
|
+
yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Nest Server Starter integrated" && git push`);
|
|
121
|
+
}
|
|
135
122
|
// Done
|
|
136
123
|
serverSpinner.succeed('Nest Server Starter integrated');
|
|
137
124
|
}
|
|
@@ -139,27 +126,23 @@ const NewCommand = {
|
|
|
139
126
|
serverSpinner.warn('Nest Server Starter not integrated');
|
|
140
127
|
}
|
|
141
128
|
}
|
|
129
|
+
// Install all packages
|
|
130
|
+
const installSpinner = spin('Install all packages');
|
|
131
|
+
yield system.run(`cd ${projectDir} && npm i && npm run init`);
|
|
132
|
+
installSpinner.succeed('Successfull installed all packages');
|
|
142
133
|
// We're done, so show what to do next
|
|
143
134
|
info(``);
|
|
144
|
-
success(`Generated ${preset} workspace ${projectDir} with ${
|
|
135
|
+
success(`Generated ${preset} workspace ${projectDir} with ${name} app in ${helper.msToMinutesAndSeconds(timer())}m.`);
|
|
145
136
|
info(``);
|
|
146
137
|
info(`Next:`);
|
|
147
|
-
info(` Run ${
|
|
138
|
+
info(` Run ${name}`);
|
|
148
139
|
info(` $ cd ${projectDir}`);
|
|
149
|
-
|
|
150
|
-
info(` $ npm run start:server`);
|
|
151
|
-
info(` $ npm run start:app`);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
info(` $ npm start`);
|
|
155
|
-
}
|
|
156
|
-
info(``);
|
|
157
|
-
info(`More infos about Nx and Angular: https://nx.dev/angular`);
|
|
140
|
+
info(` $ npm run start`);
|
|
158
141
|
info(``);
|
|
159
142
|
// For tests
|
|
160
|
-
return `new workspace ${projectDir} with ${
|
|
143
|
+
return `new workspace ${projectDir} with ${name}`;
|
|
161
144
|
}
|
|
162
145
|
}),
|
|
163
146
|
};
|
|
164
147
|
exports.default = NewCommand;
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2FuZ3VsYXIvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0E7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsNkNBQTZDO0lBQzFELE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLEdBQUcsRUFDSCxNQUFNLEVBQ04sVUFBVSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFDbkIsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQ3RCLE1BQU0sR0FDUCxHQUFHLE9BQU8sQ0FBQztRQUVaLGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsT0FBTztRQUNQLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBRW5ELFlBQVk7UUFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNuRCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCx3QkFBd0I7UUFDeEIsTUFBTSxVQUFV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
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const path_1 = require("path");
|
|
13
|
+
/**
|
|
14
|
+
* Create a new server
|
|
15
|
+
*/
|
|
16
|
+
const NewCommand = {
|
|
17
|
+
name: 'test',
|
|
18
|
+
alias: ['t'],
|
|
19
|
+
description: 'Creates a new test file',
|
|
20
|
+
hidden: false,
|
|
21
|
+
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
// Retrieve the tools we need
|
|
23
|
+
const { filesystem, helper, parameters, print: { error, info, spin, success }, strings: { camelCase, kebabCase, pascalCase }, system, template, } = toolbox;
|
|
24
|
+
// Start timer
|
|
25
|
+
const timer = system.startTimer();
|
|
26
|
+
// Info
|
|
27
|
+
info('Create a new test file');
|
|
28
|
+
// Get name
|
|
29
|
+
const name = yield helper.getInput(parameters.first, {
|
|
30
|
+
name: 'test name',
|
|
31
|
+
});
|
|
32
|
+
if (!name) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
// Set up initial props (to pass into templates)
|
|
36
|
+
const nameCamel = camelCase(name);
|
|
37
|
+
const nameKebab = kebabCase(name);
|
|
38
|
+
const namePascal = pascalCase(name);
|
|
39
|
+
// Check if directory
|
|
40
|
+
const cwd = filesystem.cwd();
|
|
41
|
+
const path = cwd.substr(0, cwd.lastIndexOf('src'));
|
|
42
|
+
if (!filesystem.exists((0, path_1.join)(path, 'tests'))) {
|
|
43
|
+
info(``);
|
|
44
|
+
error(`No tests directory in "${path}".`);
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const testsDir = (0, path_1.join)(path, 'tests');
|
|
48
|
+
const filePath = (0, path_1.join)(testsDir, nameKebab + '.e2e-spec.ts');
|
|
49
|
+
// Check if file already exists
|
|
50
|
+
if (filesystem.exists(filePath)) {
|
|
51
|
+
info(``);
|
|
52
|
+
error(`There's already a file named "${filePath}"`);
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const generateSpinner = spin('Generate test file');
|
|
56
|
+
// nest-server-tests/tests.e2e-spec.ts.ejs
|
|
57
|
+
yield template.generate({
|
|
58
|
+
template: 'nest-server-tests/tests.e2e-spec.ts.ejs',
|
|
59
|
+
target: filePath,
|
|
60
|
+
props: { nameCamel, nameKebab, namePascal },
|
|
61
|
+
});
|
|
62
|
+
generateSpinner.succeed('Generate test file');
|
|
63
|
+
// We're done, so show what to do next
|
|
64
|
+
info(``);
|
|
65
|
+
success(`Generated ${namePascal} test file in ${helper.msToMinutesAndSeconds(timer())}m.`);
|
|
66
|
+
info(``);
|
|
67
|
+
if (!toolbox.parameters.options.fromGluegunMenu) {
|
|
68
|
+
process.exit();
|
|
69
|
+
}
|
|
70
|
+
// For tests
|
|
71
|
+
return `new test ${name}`;
|
|
72
|
+
}),
|
|
73
|
+
};
|
|
74
|
+
exports.default = NewCommand;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9zZXJ2ZXIvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBLCtCQUE0QjtBQUc1Qjs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNaLFdBQVcsRUFBRSx5QkFBeUI7SUFDdEMsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFDckMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFDN0MsTUFBTSxFQUNOLFFBQVEsR0FDVCxHQUFHLE9BQU8sQ0FBQztRQUVaLGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsT0FBTztRQUNQLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRS9CLFdBQVc7UUFDWCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNuRCxJQUFJLEVBQUUsV0FBVztTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsZ0RBQWdEO1FBQ2hELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLHFCQUFxQjtRQUNyQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUEsV0FBSSxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNULEtBQUssQ0FBQywwQkFBMEIsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUMxQyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUEsV0FBSSxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFBLFdBQUksRUFBQyxRQUFRLEVBQUUsU0FBUyxHQUFHLGNBQWMsQ0FBQyxDQUFDO1FBRTVELCtCQUErQjtRQUMvQixJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsS0FBSyxDQUFDLGlDQUFpQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbkQsMENBQTBDO1FBQzFDLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QixRQUFRLEVBQUUseUNBQXlDO1lBQ25ELE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFO1NBQzVDLENBQUMsQ0FBQztRQUVILGVBQWUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUU5QyxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsT0FBTyxDQUFDLGFBQWEsVUFBVSxpQkFBaUIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVULElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDL0MsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2hCO1FBRUQsWUFBWTtRQUNaLE9BQU8sWUFBWSxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDLENBQUE7Q0FDRixDQUFDO0FBRUYsa0JBQWUsVUFBVSxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lenne.tech/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.70",
|
|
4
4
|
"description": "lenne.Tech CLI: lt",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lenne.Tech",
|
|
@@ -53,26 +53,26 @@
|
|
|
53
53
|
"find-file-up": "2.0.1",
|
|
54
54
|
"gluegun": "5.1.2",
|
|
55
55
|
"open": "8.4.0",
|
|
56
|
-
"standard-version": "^9.
|
|
56
|
+
"standard-version": "^9.5.0",
|
|
57
57
|
"ts-node": "10.7.0",
|
|
58
58
|
"typescript": "4.6.4"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@lenne.tech/npm-package-helper": "0.0.12",
|
|
62
|
-
"@types/jest": "27.5.
|
|
63
|
-
"@types/node": "
|
|
64
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
65
|
-
"@typescript-eslint/parser": "5.
|
|
62
|
+
"@types/jest": "27.5.1",
|
|
63
|
+
"@types/node": "17.0.34",
|
|
64
|
+
"@typescript-eslint/eslint-plugin": "5.24.0",
|
|
65
|
+
"@typescript-eslint/parser": "5.24.0",
|
|
66
66
|
"cpy-cli": "4.1.0",
|
|
67
|
-
"eslint": "8.
|
|
67
|
+
"eslint": "8.15.0",
|
|
68
68
|
"eslint-config-prettier": "8.5.0",
|
|
69
|
-
"husky": "
|
|
70
|
-
"jest": "28.0
|
|
69
|
+
"husky": "8.0.1",
|
|
70
|
+
"jest": "28.1.0",
|
|
71
71
|
"path-exists-cli": "2.0.0",
|
|
72
72
|
"prettier": "2.6.2",
|
|
73
73
|
"pretty-quick": "3.1.3",
|
|
74
74
|
"rimraf": "3.0.2",
|
|
75
|
-
"ts-jest": "28.0.
|
|
75
|
+
"ts-jest": "28.0.2"
|
|
76
76
|
},
|
|
77
77
|
"jest": {
|
|
78
78
|
"preset": "ts-jest",
|