@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.
Files changed (34) hide show
  1. package/dist/bin.js +26 -76
  2. package/dist/constants.js +2 -2
  3. package/dist/eslint-plugin-ts-dev-tools/index.js +18 -30
  4. package/dist/install/command.js +30 -80
  5. package/dist/install/migrations/20201024173398-init.js +89 -141
  6. package/dist/install/migrations/20220617100200-prettier-cache.js +9 -49
  7. package/dist/install/migrations/20240329200200-eslint-ignore.js +9 -49
  8. package/dist/install/migrations/20240412185500-eslint-config.js +16 -53
  9. package/dist/install/migrations/20240617094000-config-nx-scopes.js +22 -67
  10. package/dist/install/migrations/20250623095500-add-prettier-oxc.js +9 -49
  11. package/dist/install/migrations/20250623095600-remove-prettier-oxc.js +15 -55
  12. package/dist/services/CmdService.js +17 -21
  13. package/dist/services/CorePackageService.js +8 -11
  14. package/dist/services/DuplicateDependenciesService.js +28 -33
  15. package/dist/services/FileService.js +11 -14
  16. package/dist/services/GitService.js +36 -83
  17. package/dist/services/MigrationsService.js +52 -121
  18. package/dist/services/PackageJson.js +47 -57
  19. package/dist/services/PackageJsonMerge.js +17 -21
  20. package/dist/services/PackageManagerService.js +25 -80
  21. package/dist/services/PeerDependenciesService.js +92 -157
  22. package/dist/services/PluginService.js +32 -39
  23. package/dist/services/SymlinkDependenciesService.js +52 -133
  24. package/dist/services/package-manager/AbstractPackageManagerAdapter.js +84 -138
  25. package/dist/services/package-manager/NpmPackageManagerAdapter.js +58 -158
  26. package/dist/services/package-manager/YarnPackageManagerAdapter.js +122 -235
  27. package/dist/tests/cli.js +12 -57
  28. package/dist/tests/console.js +5 -6
  29. package/dist/tests/file-system.js +23 -92
  30. package/dist/tests/test-cache.js +5 -5
  31. package/dist/tests/test-packages.js +33 -95
  32. package/dist/tests/test-project-monorepo.js +22 -85
  33. package/dist/tests/test-project.js +49 -127
  34. 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
- var path_1 = require("path");
41
- var constants_1 = require("./constants");
42
- var command_1 = require("./install/command");
43
- var PackageJson_1 = require("./services/PackageJson");
44
- function bin() {
45
- return __awaiter(this, void 0, void 0, function () {
46
- var _a, arg, params, _b;
47
- return __generator(this, function (_c) {
48
- switch (_c.label) {
49
- case 0:
50
- _a = process.argv, arg = _a[2], params = _a.slice(3);
51
- _b = true;
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(function (error) { return console.error(error); });
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 = "@".concat(exports.PROJECT_NAME);
6
- exports.PROJECT_URL = "https://escemi-tech.github.io/".concat(exports.PROJECT_NAME, "/");
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
- var globals_1 = __importDefault(require("globals"));
28
- var typescript_eslint_1 = __importDefault(require("typescript-eslint"));
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
- var pluginJs = require("@eslint/js");
10
+ const pluginJs = require("@eslint/js");
31
11
  // eslint-disable-next-line @typescript-eslint/no-require-imports
32
- var eslintConfigPrettier = require("eslint-config-prettier");
12
+ const eslintConfigPrettier = require("eslint-config-prettier");
33
13
  // eslint-disable-next-line @typescript-eslint/no-require-imports
34
- var eslintConfigJest = require("eslint-plugin-jest");
35
- exports.default = __spreadArray(__spreadArray([
14
+ const eslintConfigJest = require("eslint-plugin-jest");
15
+ exports.default = [
36
16
  { languageOptions: { globals: globals_1.default.node } },
37
- pluginJs.configs.recommended
38
- ], typescript_eslint_1.default.configs.recommended, true), [
17
+ pluginJs.configs.recommended,
18
+ ...typescript_eslint_1.default.configs.recommended,
39
19
  eslintConfigPrettier,
40
- __assign(__assign({ languageOptions: { globals: globals_1.default.jest }, files: ["**/src/**/__tests__/**/*.[jt]s?(x)", "**/src/**/?(*.)+(spec|test)?(.*).+(ts|tsx|js)"] }, eslintConfigJest.configs["flat/recommended"]), { rules: __assign(__assign({}, eslintConfigJest.configs["flat/recommended"].rules), { "jest/prefer-expect-assertions": "off" }) }),
41
- ], false);
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
+ ];
@@ -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
- var fs_1 = require("fs");
41
- var path_1 = require("path");
42
- var constants_1 = require("../constants");
43
- var DuplicateDependenciesService_1 = require("../services/DuplicateDependenciesService");
44
- var MigrationsService_1 = require("../services/MigrationsService");
45
- var PackageJson_1 = require("../services/PackageJson");
46
- var PeerDependenciesService_1 = require("../services/PeerDependenciesService");
47
- var SymlinkDependenciesService_1 = require("../services/SymlinkDependenciesService");
48
- function install(_a) {
49
- return __awaiter(this, arguments, void 0, function (_b) {
50
- var absoluteProjectDir, currentVersion;
51
- var cwd = _b.cwd, _c = _b.dir, dir = _c === void 0 ? "." : _c;
52
- return __generator(this, function (_d) {
53
- switch (_d.label) {
54
- case 0:
55
- absoluteProjectDir = (0, path_1.resolve)(cwd, dir);
56
- if (!(0, fs_1.existsSync)(absoluteProjectDir)) {
57
- throw new Error("Unable to install ".concat(constants_1.PROJECT_NAME, " in given directory ").concat((0, path_1.join)(cwd, dir)));
58
- }
59
- if (!absoluteProjectDir.startsWith(cwd)) {
60
- throw new Error("Unable to install ".concat(constants_1.PROJECT_NAME, " in a different folder than current process"));
61
- }
62
- currentVersion = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir).getTsDevToolsVersion();
63
- if (currentVersion) {
64
- console.info("Updating ".concat(constants_1.PROJECT_NAME, " installation..."));
65
- }
66
- else {
67
- console.info("Installing ".concat(constants_1.PROJECT_NAME, "..."));
68
- }
69
- return [4 /*yield*/, MigrationsService_1.MigrationsService.executeMigrations(absoluteProjectDir, currentVersion)];
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
- var constants_1 = require("../../constants");
41
- var GitService_1 = require("../../services/GitService");
42
- var PackageJson_1 = require("../../services/PackageJson");
43
- var PackageManagerService_1 = require("../../services/PackageManagerService");
44
- var up = function (absoluteProjectDir) { return __awaiter(void 0, void 0, void 0, function () {
45
- var jest, eslintConfig, prettier, commitlint, lintStaged, importSort, packageManager, scripts, packageJson, isGitRepository, gitHooks, _i, _a, gitHookName, gitHookCommand;
46
- return __generator(this, function (_b) {
47
- switch (_b.label) {
48
- case 0:
49
- jest = {
50
- preset: "ts-jest",
51
- testEnvironment: "node",
52
- testMatch: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test)?(.*).+(ts|tsx|js)"],
53
- collectCoverageFrom: ["**/src/**/*.[jt]s?(x)"],
54
- };
55
- eslintConfig = {
56
- root: true,
57
- parser: "@typescript-eslint/parser",
58
- plugins: ["@typescript-eslint", "jest"],
59
- extends: [
60
- "eslint:recommended",
61
- "plugin:@typescript-eslint/recommended",
62
- "plugin:jest/recommended",
63
- "prettier",
64
- ],
65
- env: {
66
- es2021: true,
67
- },
68
- parserOptions: {
69
- ecmaFeatures: {
70
- jsx: true,
71
- },
72
- ecmaVersion: 12,
73
- sourceType: "module",
74
- },
75
- settings: {
76
- jest: {
77
- version: "detect",
78
- },
79
- },
80
- };
81
- prettier = {
82
- semi: true,
83
- printWidth: 100,
84
- trailingComma: "es5",
85
- };
86
- commitlint = {
87
- extends: ["@commitlint/config-conventional"],
88
- };
89
- lintStaged = {
90
- "*.{js,ts,tsx}": ["eslint --fix"],
91
- };
92
- importSort = {
93
- ".js, .jsx, .ts, .tsx": {
94
- style: "module",
95
- parser: "typescript",
96
- },
97
- };
98
- packageManager = PackageManagerService_1.PackageManagerService.detectPackageManager(absoluteProjectDir);
99
- scripts = {
100
- build: "tsc --noEmit",
101
- format: "prettier --write '**/*.js'",
102
- lint: 'eslint "src/**/*.{ts,tsx}"',
103
- jest: "jest --detectOpenHandles --forceExit",
104
- test: "".concat(packageManager, " run jest --maxWorkers=50%"),
105
- "test:watch": "".concat(packageManager, " run jest --watch --maxWorkers=25%"),
106
- "test:cov": "".concat(packageManager, " run test --coverage"),
107
- "test:ci": "".concat(packageManager, " run test:cov --runInBand"),
108
- prepare: "".concat(constants_1.PROJECT_NAME, " install"),
109
- };
110
- packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
111
- packageJson.merge({
112
- eslintConfig: eslintConfig,
113
- prettier: prettier,
114
- commitlint: commitlint,
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
- var PackageJson_1 = require("../../services/PackageJson");
41
- var up = function (absoluteProjectDir) { return __awaiter(void 0, void 0, void 0, function () {
42
- var scripts, packageJson;
43
- return __generator(this, function (_a) {
44
- scripts = {
45
- format: "prettier --cache --write '**/*.ts'",
46
- };
47
- packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
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;