@ts-dev-tools/core 1.12.1 → 1.12.2
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/bin.js +26 -76
- package/dist/constants.js +2 -2
- package/dist/eslint-plugin-ts-dev-tools/index.js +18 -30
- package/dist/install/command.js +30 -80
- package/dist/install/migrations/20201024173398-init.js +89 -141
- package/dist/install/migrations/20220617100200-prettier-cache.js +9 -49
- package/dist/install/migrations/20240329200200-eslint-ignore.js +9 -49
- package/dist/install/migrations/20240412185500-eslint-config.js +16 -53
- package/dist/install/migrations/20240617094000-config-nx-scopes.js +22 -67
- package/dist/install/migrations/20250623095500-add-prettier-oxc.js +9 -49
- package/dist/install/migrations/20250623095600-remove-prettier-oxc.js +15 -55
- package/dist/services/CmdService.js +17 -21
- package/dist/services/CorePackageService.js +8 -11
- package/dist/services/DuplicateDependenciesService.js +28 -33
- package/dist/services/FileService.js +11 -14
- package/dist/services/GitService.js +36 -83
- package/dist/services/MigrationsService.js +52 -121
- package/dist/services/PackageJson.js +47 -57
- package/dist/services/PackageJsonMerge.js +17 -21
- package/dist/services/PackageManagerService.js +25 -80
- package/dist/services/PeerDependenciesService.js +92 -157
- package/dist/services/PluginService.js +32 -39
- package/dist/services/SymlinkDependenciesService.js +52 -133
- package/dist/services/package-manager/AbstractPackageManagerAdapter.js +84 -138
- package/dist/services/package-manager/NpmPackageManagerAdapter.js +58 -158
- package/dist/services/package-manager/YarnPackageManagerAdapter.js +122 -235
- package/dist/tests/cli.js +12 -57
- package/dist/tests/console.js +5 -6
- package/dist/tests/file-system.js +23 -92
- package/dist/tests/test-cache.js +5 -5
- package/dist/tests/test-packages.js +33 -95
- package/dist/tests/test-project-monorepo.js +22 -85
- package/dist/tests/test-project.js +49 -127
- package/package.json +12 -12
package/dist/bin.js
CHANGED
|
@@ -1,83 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
13
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
14
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
15
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
16
|
-
function step(op) {
|
|
17
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
18
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
19
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
20
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
21
|
-
switch (op[0]) {
|
|
22
|
-
case 0: case 1: t = op; break;
|
|
23
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
24
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
25
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
26
|
-
default:
|
|
27
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
28
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
29
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
-
if (t[2]) _.ops.pop();
|
|
32
|
-
_.trys.pop(); continue;
|
|
33
|
-
}
|
|
34
|
-
op = body.call(thisArg, _);
|
|
35
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
function bin() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
switch (_b) {
|
|
53
|
-
case arg === "install": return [3 /*break*/, 1];
|
|
54
|
-
case ["--version", "-v"].includes(arg): return [3 /*break*/, 3];
|
|
55
|
-
}
|
|
56
|
-
return [3 /*break*/, 4];
|
|
57
|
-
case 1:
|
|
58
|
-
// Check if script is not run by the package himself
|
|
59
|
-
if (process.cwd() === (0, path_1.dirname)(__dirname)) {
|
|
60
|
-
console.info("Do not install itself!");
|
|
61
|
-
return [3 /*break*/, 5];
|
|
62
|
-
}
|
|
63
|
-
return [4 /*yield*/, (0, command_1.install)({
|
|
64
|
-
cwd: process.cwd(),
|
|
65
|
-
dir: params[0],
|
|
66
|
-
})];
|
|
67
|
-
case 2:
|
|
68
|
-
_c.sent();
|
|
69
|
-
return [3 /*break*/, 5];
|
|
70
|
-
case 3:
|
|
71
|
-
console.info(PackageJson_1.PackageJson.fromDirPath((0, path_1.join)(__dirname, "..")).getPackageVersion());
|
|
72
|
-
return [3 /*break*/, 5];
|
|
73
|
-
case 4:
|
|
74
|
-
console.info("Usage\n ".concat(constants_1.PROJECT_NAME, " install [path from project root]\n "));
|
|
75
|
-
_c.label = 5;
|
|
76
|
-
case 5: return [2 /*return*/];
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const command_1 = require("./install/command");
|
|
7
|
+
const PackageJson_1 = require("./services/PackageJson");
|
|
8
|
+
async function bin() {
|
|
9
|
+
const [, , arg, ...params] = process.argv;
|
|
10
|
+
switch (true) {
|
|
11
|
+
case arg === "install":
|
|
12
|
+
// Check if script is not run by the package himself
|
|
13
|
+
if (process.cwd() === (0, path_1.dirname)(__dirname)) {
|
|
14
|
+
console.info("Do not install itself!");
|
|
15
|
+
break;
|
|
77
16
|
}
|
|
78
|
-
|
|
79
|
-
|
|
17
|
+
await (0, command_1.install)({
|
|
18
|
+
cwd: process.cwd(),
|
|
19
|
+
dir: params[0],
|
|
20
|
+
});
|
|
21
|
+
break;
|
|
22
|
+
case ["--version", "-v"].includes(arg):
|
|
23
|
+
console.info(PackageJson_1.PackageJson.fromDirPath((0, path_1.join)(__dirname, "..")).getPackageVersion());
|
|
24
|
+
break;
|
|
25
|
+
default:
|
|
26
|
+
console.info(`Usage
|
|
27
|
+
${constants_1.PROJECT_NAME} install [path from project root]
|
|
28
|
+
`);
|
|
29
|
+
}
|
|
80
30
|
}
|
|
81
31
|
bin()
|
|
82
32
|
.then()
|
|
83
|
-
.catch(
|
|
33
|
+
.catch((error) => console.error(error));
|
package/dist/constants.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PROJECT_URL = exports.PACKAGE_BASE_NAME = exports.PROJECT_NAME = void 0;
|
|
4
4
|
exports.PROJECT_NAME = "ts-dev-tools";
|
|
5
|
-
exports.PACKAGE_BASE_NAME =
|
|
6
|
-
exports.PROJECT_URL =
|
|
5
|
+
exports.PACKAGE_BASE_NAME = `@${exports.PROJECT_NAME}`;
|
|
6
|
+
exports.PROJECT_URL = `https://escemi-tech.github.io/${exports.PROJECT_NAME}/`;
|
|
@@ -1,41 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Must be duplicated "packages/core/eslint.config.mjs" and "packages/react/eslint.config.mjs" files
|
|
3
|
-
var __assign = (this && this.__assign) || function () {
|
|
4
|
-
__assign = Object.assign || function(t) {
|
|
5
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
-
s = arguments[i];
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
-
t[p] = s[p];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
return __assign.apply(this, arguments);
|
|
13
|
-
};
|
|
14
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
15
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
16
|
-
if (ar || !(i in from)) {
|
|
17
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
18
|
-
ar[i] = from[i];
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
22
|
-
};
|
|
23
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
24
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
25
5
|
};
|
|
26
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
|
|
28
|
-
|
|
7
|
+
const globals_1 = __importDefault(require("globals"));
|
|
8
|
+
const typescript_eslint_1 = __importDefault(require("typescript-eslint"));
|
|
29
9
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
30
|
-
|
|
10
|
+
const pluginJs = require("@eslint/js");
|
|
31
11
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
32
|
-
|
|
12
|
+
const eslintConfigPrettier = require("eslint-config-prettier");
|
|
33
13
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
34
|
-
|
|
35
|
-
exports.default =
|
|
14
|
+
const eslintConfigJest = require("eslint-plugin-jest");
|
|
15
|
+
exports.default = [
|
|
36
16
|
{ languageOptions: { globals: globals_1.default.node } },
|
|
37
|
-
pluginJs.configs.recommended
|
|
38
|
-
|
|
17
|
+
pluginJs.configs.recommended,
|
|
18
|
+
...typescript_eslint_1.default.configs.recommended,
|
|
39
19
|
eslintConfigPrettier,
|
|
40
|
-
|
|
41
|
-
|
|
20
|
+
{
|
|
21
|
+
languageOptions: { globals: globals_1.default.jest },
|
|
22
|
+
files: ["**/src/**/__tests__/**/*.[jt]s?(x)", "**/src/**/?(*.)+(spec|test)?(.*).+(ts|tsx|js)"],
|
|
23
|
+
...eslintConfigJest.configs["flat/recommended"],
|
|
24
|
+
rules: {
|
|
25
|
+
...eslintConfigJest.configs["flat/recommended"].rules,
|
|
26
|
+
"jest/prefer-expect-assertions": "off",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
];
|
package/dist/install/command.js
CHANGED
|
@@ -1,84 +1,34 @@
|
|
|
1
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
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.install = install;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
function install(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
case 1:
|
|
71
|
-
_d.sent();
|
|
72
|
-
return [4 /*yield*/, SymlinkDependenciesService_1.SymlinkDependenciesService.executeSymlinking(absoluteProjectDir)];
|
|
73
|
-
case 2:
|
|
74
|
-
_d.sent();
|
|
75
|
-
return [4 /*yield*/, PeerDependenciesService_1.PeerDependenciesService.executeResolution(absoluteProjectDir)];
|
|
76
|
-
case 3:
|
|
77
|
-
_d.sent();
|
|
78
|
-
DuplicateDependenciesService_1.DuplicateDependenciesService.executeDeduplication(absoluteProjectDir);
|
|
79
|
-
console.info("Installation done!");
|
|
80
|
-
return [2 /*return*/];
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
});
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const DuplicateDependenciesService_1 = require("../services/DuplicateDependenciesService");
|
|
8
|
+
const MigrationsService_1 = require("../services/MigrationsService");
|
|
9
|
+
const PackageJson_1 = require("../services/PackageJson");
|
|
10
|
+
const PeerDependenciesService_1 = require("../services/PeerDependenciesService");
|
|
11
|
+
const SymlinkDependenciesService_1 = require("../services/SymlinkDependenciesService");
|
|
12
|
+
async function install({ cwd, dir = "." }) {
|
|
13
|
+
// Ensure that we're not trying to install outside cwd
|
|
14
|
+
const absoluteProjectDir = (0, path_1.resolve)(cwd, dir);
|
|
15
|
+
if (!(0, fs_1.existsSync)(absoluteProjectDir)) {
|
|
16
|
+
throw new Error(`Unable to install ${constants_1.PROJECT_NAME} in given directory ${(0, path_1.join)(cwd, dir)}`);
|
|
17
|
+
}
|
|
18
|
+
if (!absoluteProjectDir.startsWith(cwd)) {
|
|
19
|
+
throw new Error(`Unable to install ${constants_1.PROJECT_NAME} in a different folder than current process`);
|
|
20
|
+
}
|
|
21
|
+
// Run installation migration
|
|
22
|
+
const currentVersion = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir).getTsDevToolsVersion();
|
|
23
|
+
if (currentVersion) {
|
|
24
|
+
console.info(`Updating ${constants_1.PROJECT_NAME} installation...`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.info(`Installing ${constants_1.PROJECT_NAME}...`);
|
|
28
|
+
}
|
|
29
|
+
await MigrationsService_1.MigrationsService.executeMigrations(absoluteProjectDir, currentVersion);
|
|
30
|
+
await SymlinkDependenciesService_1.SymlinkDependenciesService.executeSymlinking(absoluteProjectDir);
|
|
31
|
+
await PeerDependenciesService_1.PeerDependenciesService.executeResolution(absoluteProjectDir);
|
|
32
|
+
DuplicateDependenciesService_1.DuplicateDependenciesService.executeDeduplication(absoluteProjectDir);
|
|
33
|
+
console.info(`Installation done!`);
|
|
84
34
|
}
|
|
@@ -1,146 +1,94 @@
|
|
|
1
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
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.up = void 0;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
"lint-staged": lintStaged,
|
|
116
|
-
importSort: importSort,
|
|
117
|
-
scripts: scripts,
|
|
118
|
-
jest: jest,
|
|
119
|
-
});
|
|
120
|
-
return [4 /*yield*/, GitService_1.GitService.isGitRepository(absoluteProjectDir)];
|
|
121
|
-
case 1:
|
|
122
|
-
isGitRepository = _b.sent();
|
|
123
|
-
if (!isGitRepository) return [3 /*break*/, 5];
|
|
124
|
-
gitHooks = {
|
|
125
|
-
"pre-commit": "npx --no-install lint-staged && npx --no-install pretty-quick --staged",
|
|
126
|
-
"commit-msg": "npx --no-install commitlint --edit $1",
|
|
127
|
-
"pre-push": "".concat(packageManager, " run lint && ").concat(packageManager, " run build && ").concat(packageManager, " run test"),
|
|
128
|
-
};
|
|
129
|
-
_i = 0, _a = Object.keys(gitHooks);
|
|
130
|
-
_b.label = 2;
|
|
131
|
-
case 2:
|
|
132
|
-
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
133
|
-
gitHookName = _a[_i];
|
|
134
|
-
gitHookCommand = gitHooks[gitHookName];
|
|
135
|
-
return [4 /*yield*/, GitService_1.GitService.addGitHook(absoluteProjectDir, gitHookName, gitHookCommand)];
|
|
136
|
-
case 3:
|
|
137
|
-
_b.sent();
|
|
138
|
-
_b.label = 4;
|
|
139
|
-
case 4:
|
|
140
|
-
_i++;
|
|
141
|
-
return [3 /*break*/, 2];
|
|
142
|
-
case 5: return [2 /*return*/];
|
|
143
|
-
}
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
5
|
+
const GitService_1 = require("../../services/GitService");
|
|
6
|
+
const PackageJson_1 = require("../../services/PackageJson");
|
|
7
|
+
const PackageManagerService_1 = require("../../services/PackageManagerService");
|
|
8
|
+
const up = async (absoluteProjectDir) => {
|
|
9
|
+
const jest = {
|
|
10
|
+
preset: "ts-jest",
|
|
11
|
+
testEnvironment: "node",
|
|
12
|
+
testMatch: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test)?(.*).+(ts|tsx|js)"],
|
|
13
|
+
collectCoverageFrom: ["**/src/**/*.[jt]s?(x)"],
|
|
14
|
+
};
|
|
15
|
+
const eslintConfig = {
|
|
16
|
+
root: true,
|
|
17
|
+
parser: "@typescript-eslint/parser",
|
|
18
|
+
plugins: ["@typescript-eslint", "jest"],
|
|
19
|
+
extends: [
|
|
20
|
+
"eslint:recommended",
|
|
21
|
+
"plugin:@typescript-eslint/recommended",
|
|
22
|
+
"plugin:jest/recommended",
|
|
23
|
+
"prettier",
|
|
24
|
+
],
|
|
25
|
+
env: {
|
|
26
|
+
es2021: true,
|
|
27
|
+
},
|
|
28
|
+
parserOptions: {
|
|
29
|
+
ecmaFeatures: {
|
|
30
|
+
jsx: true,
|
|
31
|
+
},
|
|
32
|
+
ecmaVersion: 12,
|
|
33
|
+
sourceType: "module",
|
|
34
|
+
},
|
|
35
|
+
settings: {
|
|
36
|
+
jest: {
|
|
37
|
+
version: "detect",
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
const prettier = {
|
|
42
|
+
semi: true,
|
|
43
|
+
printWidth: 100,
|
|
44
|
+
trailingComma: "es5",
|
|
45
|
+
};
|
|
46
|
+
const commitlint = {
|
|
47
|
+
extends: ["@commitlint/config-conventional"],
|
|
48
|
+
};
|
|
49
|
+
const lintStaged = {
|
|
50
|
+
"*.{js,ts,tsx}": ["eslint --fix"],
|
|
51
|
+
};
|
|
52
|
+
const importSort = {
|
|
53
|
+
".js, .jsx, .ts, .tsx": {
|
|
54
|
+
style: "module",
|
|
55
|
+
parser: "typescript",
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
const packageManager = PackageManagerService_1.PackageManagerService.detectPackageManager(absoluteProjectDir);
|
|
59
|
+
const scripts = {
|
|
60
|
+
build: "tsc --noEmit",
|
|
61
|
+
format: "prettier --write '**/*.js'",
|
|
62
|
+
lint: 'eslint "src/**/*.{ts,tsx}"',
|
|
63
|
+
jest: "jest --detectOpenHandles --forceExit",
|
|
64
|
+
test: `${packageManager} run jest --maxWorkers=50%`,
|
|
65
|
+
"test:watch": `${packageManager} run jest --watch --maxWorkers=25%`,
|
|
66
|
+
"test:cov": `${packageManager} run test --coverage`,
|
|
67
|
+
"test:ci": `${packageManager} run test:cov --runInBand`,
|
|
68
|
+
prepare: `${constants_1.PROJECT_NAME} install`,
|
|
69
|
+
};
|
|
70
|
+
const packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
|
|
71
|
+
packageJson.merge({
|
|
72
|
+
eslintConfig,
|
|
73
|
+
prettier,
|
|
74
|
+
commitlint,
|
|
75
|
+
"lint-staged": lintStaged,
|
|
76
|
+
importSort,
|
|
77
|
+
scripts,
|
|
78
|
+
jest,
|
|
144
79
|
});
|
|
145
|
-
|
|
80
|
+
// Install Git hooks (only if we are in a git repository)
|
|
81
|
+
const isGitRepository = await GitService_1.GitService.isGitRepository(absoluteProjectDir);
|
|
82
|
+
if (isGitRepository) {
|
|
83
|
+
const gitHooks = {
|
|
84
|
+
"pre-commit": "npx --no-install lint-staged && npx --no-install pretty-quick --staged",
|
|
85
|
+
"commit-msg": "npx --no-install commitlint --edit $1",
|
|
86
|
+
"pre-push": `${packageManager} run lint && ${packageManager} run build && ${packageManager} run test`,
|
|
87
|
+
};
|
|
88
|
+
for (const gitHookName of Object.keys(gitHooks)) {
|
|
89
|
+
const gitHookCommand = gitHooks[gitHookName];
|
|
90
|
+
await GitService_1.GitService.addGitHook(absoluteProjectDir, gitHookName, gitHookCommand);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
146
94
|
exports.up = up;
|
|
@@ -1,54 +1,14 @@
|
|
|
1
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
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.up = void 0;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
packageJson.merge({
|
|
49
|
-
scripts: scripts,
|
|
50
|
-
});
|
|
51
|
-
return [2 /*return*/];
|
|
4
|
+
const PackageJson_1 = require("../../services/PackageJson");
|
|
5
|
+
const up = async (absoluteProjectDir) => {
|
|
6
|
+
const scripts = {
|
|
7
|
+
format: "prettier --cache --write '**/*.ts'",
|
|
8
|
+
};
|
|
9
|
+
const packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
|
|
10
|
+
packageJson.merge({
|
|
11
|
+
scripts,
|
|
52
12
|
});
|
|
53
|
-
}
|
|
13
|
+
};
|
|
54
14
|
exports.up = up;
|