@ts-dev-tools/core 1.5.18 → 1.5.21

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 CHANGED
@@ -38,6 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  var path_1 = require("path");
41
+ var constants_1 = require("./constants");
41
42
  var command_1 = require("./install/command");
42
43
  var PackageJson_1 = require("./services/PackageJson");
43
44
  function bin() {
@@ -70,7 +71,7 @@ function bin() {
70
71
  console.info(PackageJson_1.PackageJson.fromDirPath((0, path_1.join)(__dirname, "..")).getPackageVersion());
71
72
  return [3 /*break*/, 5];
72
73
  case 4:
73
- console.info("Usage\n ts-dev-tools install [path from project root]\n ");
74
+ console.info("Usage\n ".concat(constants_1.PROJECT_NAME, " install [path from project root]\n "));
74
75
  _c.label = 5;
75
76
  case 5: return [2 /*return*/];
76
77
  }
@@ -0,0 +1,3 @@
1
+ export declare const PROJECT_NAME = "ts-dev-tools";
2
+ export declare const PACKAGE_BASE_NAME: string;
3
+ export declare const PROJECT_URL: string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROJECT_URL = exports.PACKAGE_BASE_NAME = exports.PROJECT_NAME = void 0;
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, "/");
@@ -37,22 +37,26 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.install = void 0;
40
+ var fs_1 = require("fs");
40
41
  var path_1 = require("path");
42
+ var CorePackageService_1 = require("../services/CorePackageService");
41
43
  var DuplicateDependenciesService_1 = require("../services/DuplicateDependenciesService");
42
44
  var MigrationsService_1 = require("../services/MigrationsService");
43
45
  var PackageJson_1 = require("../services/PackageJson");
44
46
  function install(_a) {
45
47
  var cwd = _a.cwd, _b = _a.dir, dir = _b === void 0 ? "." : _b;
46
48
  return __awaiter(this, void 0, void 0, function () {
47
- var tsDevToolsRootPath, packageName, absoluteProjectDir, currentVersion;
49
+ var packageName, absoluteProjectDir, currentVersion;
48
50
  return __generator(this, function (_c) {
49
51
  switch (_c.label) {
50
52
  case 0:
51
- tsDevToolsRootPath = (0, path_1.resolve)(__dirname, "../..");
52
- packageName = PackageJson_1.PackageJson.fromDirPath(tsDevToolsRootPath).getPackageName();
53
+ packageName = CorePackageService_1.CorePackageService.getPackageName();
53
54
  absoluteProjectDir = (0, path_1.resolve)(cwd, dir);
55
+ if (!(0, fs_1.existsSync)(absoluteProjectDir)) {
56
+ throw new Error("Unable to install ".concat(packageName, " in given directory ").concat((0, path_1.join)(cwd, dir)));
57
+ }
54
58
  if (!absoluteProjectDir.startsWith(cwd)) {
55
- throw new Error(".. not allowed");
59
+ throw new Error("Unable to install ".concat(packageName, " in a different folder than current process"));
56
60
  }
57
61
  currentVersion = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir).getTsDevToolsVersion();
58
62
  if (currentVersion) {
@@ -61,10 +65,10 @@ function install(_a) {
61
65
  else {
62
66
  console.info("Installing ".concat(packageName, "..."));
63
67
  }
64
- return [4 /*yield*/, MigrationsService_1.MigrationsService.executeMigrations(tsDevToolsRootPath, absoluteProjectDir, currentVersion)];
68
+ return [4 /*yield*/, MigrationsService_1.MigrationsService.executeMigrations(absoluteProjectDir, currentVersion)];
65
69
  case 1:
66
70
  _c.sent();
67
- DuplicateDependenciesService_1.DuplicateDependenciesService.duplicateDependencies(tsDevToolsRootPath, absoluteProjectDir);
71
+ DuplicateDependenciesService_1.DuplicateDependenciesService.duplicateDependencies(absoluteProjectDir);
68
72
  console.info("Installation done!");
69
73
  return [2 /*return*/];
70
74
  }
@@ -37,6 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.up = void 0;
40
+ var constants_1 = require("../../constants");
40
41
  var GitService_1 = require("../../services/GitService");
41
42
  var PackageJson_1 = require("../../services/PackageJson");
42
43
  var PackageManagerService_1 = require("../../services/PackageManagerService");
@@ -48,7 +49,7 @@ var up = function (absoluteProjectDir) { return __awaiter(void 0, void 0, void 0
48
49
  jest = {
49
50
  preset: "ts-jest",
50
51
  testEnvironment: "node",
51
- testMatch: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).+(ts|tsx|js)"],
52
+ testMatch: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test)?(.*).+(ts|tsx|js)"],
52
53
  };
53
54
  eslintConfig = {
54
55
  root: true,
@@ -102,7 +103,7 @@ var up = function (absoluteProjectDir) { return __awaiter(void 0, void 0, void 0
102
103
  "test:watch": "yarn jest --watch --maxWorkers=25%",
103
104
  "test:cov": "yarn jest --coverage",
104
105
  "test:ci": "yarn test:cov --runInBand",
105
- prepare: "ts-dev-tools install",
106
+ prepare: "".concat(constants_1.PROJECT_NAME, " install"),
106
107
  };
107
108
  packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
108
109
  packageJson.merge({
@@ -0,0 +1,4 @@
1
+ export declare class CorePackageService {
2
+ static getPackageRootPath(): string;
3
+ static getPackageName(): string | undefined;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CorePackageService = void 0;
4
+ var path_1 = require("path");
5
+ var PackageJson_1 = require("./PackageJson");
6
+ var CorePackageService = /** @class */ (function () {
7
+ function CorePackageService() {
8
+ }
9
+ CorePackageService.getPackageRootPath = function () {
10
+ return (0, path_1.resolve)(__dirname, "../..");
11
+ };
12
+ CorePackageService.getPackageName = function () {
13
+ return PackageJson_1.PackageJson.fromDirPath(CorePackageService.getPackageRootPath()).getPackageName();
14
+ };
15
+ return CorePackageService;
16
+ }());
17
+ exports.CorePackageService = CorePackageService;
@@ -1,5 +1,5 @@
1
1
  export declare class DuplicateDependenciesService {
2
- static duplicateDependencies(tsDevToolsRootPath: string, absoluteProjectDir: string): void;
2
+ static duplicateDependencies(absoluteProjectDir: string): void;
3
3
  private static getProjectDuplicateDependencies;
4
4
  private static getPluginDuplicateDependencies;
5
5
  private static printDuplicateDependencies;
@@ -1,38 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DuplicateDependenciesService = void 0;
4
- var path_1 = require("path");
5
4
  var PackageJson_1 = require("./PackageJson");
5
+ var PluginService_1 = require("./PluginService");
6
6
  var DuplicateDependenciesService = /** @class */ (function () {
7
7
  function DuplicateDependenciesService() {
8
8
  }
9
- DuplicateDependenciesService.duplicateDependencies = function (tsDevToolsRootPath, absoluteProjectDir) {
9
+ DuplicateDependenciesService.duplicateDependencies = function (absoluteProjectDir) {
10
10
  console.info("Checking for duplicate dev dependencies...");
11
11
  var duplicateDependencies = new Map();
12
- DuplicateDependenciesService.getProjectDuplicateDependencies(tsDevToolsRootPath, absoluteProjectDir, duplicateDependencies);
12
+ DuplicateDependenciesService.getProjectDuplicateDependencies(absoluteProjectDir, duplicateDependencies);
13
13
  DuplicateDependenciesService.printDuplicateDependencies(duplicateDependencies);
14
14
  console.info("Check for duplicate dev dependencies done!");
15
15
  };
16
- DuplicateDependenciesService.getProjectDuplicateDependencies = function (tsDevToolsRootPath, absoluteProjectDir, duplicateDependencies) {
16
+ DuplicateDependenciesService.getProjectDuplicateDependencies = function (absoluteProjectDir, duplicateDependencies) {
17
+ var installedPlugins = PluginService_1.PluginService.getInstalledPlugins(absoluteProjectDir);
17
18
  var projectPackageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
18
- var installedPlugins = projectPackageJson.getInstalledPlugins();
19
19
  var projectDevDependencies = projectPackageJson.getDevDependenciesPackageNames();
20
20
  for (var _i = 0, installedPlugins_1 = installedPlugins; _i < installedPlugins_1.length; _i++) {
21
21
  var plugin = installedPlugins_1[_i];
22
- DuplicateDependenciesService.getPluginDuplicateDependencies(tsDevToolsRootPath, plugin, projectDevDependencies, duplicateDependencies);
22
+ DuplicateDependenciesService.getPluginDuplicateDependencies(plugin, projectDevDependencies, duplicateDependencies);
23
23
  }
24
24
  return duplicateDependencies;
25
25
  };
26
- DuplicateDependenciesService.getPluginDuplicateDependencies = function (tsDevToolsRootPath, plugin, projectDevDependencies, duplicateDependencies) {
27
- var absolutePluginDir = (0, path_1.resolve)(tsDevToolsRootPath, "../../", plugin);
26
+ DuplicateDependenciesService.getPluginDuplicateDependencies = function (plugin, projectDevDependencies, duplicateDependencies) {
28
27
  // First check for duplicate of inherited plugins
29
- DuplicateDependenciesService.getProjectDuplicateDependencies(tsDevToolsRootPath, absolutePluginDir, duplicateDependencies);
30
- var pluginPackageJson = PackageJson_1.PackageJson.fromDirPath(absolutePluginDir);
28
+ DuplicateDependenciesService.getProjectDuplicateDependencies(plugin.path, duplicateDependencies);
29
+ var pluginPackageJson = PackageJson_1.PackageJson.fromDirPath(plugin.path);
31
30
  var pluginDependencies = pluginPackageJson.getDependenciesPackageNames();
32
- var pluginDuplicateDependencies = duplicateDependencies.get(plugin);
31
+ var pluginDuplicateDependencies = duplicateDependencies.get(plugin.fullname);
33
32
  if (!pluginDuplicateDependencies) {
34
33
  pluginDuplicateDependencies = new Set();
35
- duplicateDependencies.set(plugin, pluginDuplicateDependencies);
34
+ duplicateDependencies.set(plugin.fullname, pluginDuplicateDependencies);
36
35
  }
37
36
  for (var _i = 0, projectDevDependencies_1 = projectDevDependencies; _i < projectDevDependencies_1.length; _i++) {
38
37
  var projectDevDependency = projectDevDependencies_1[_i];
@@ -39,6 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.GitService = void 0;
40
40
  var fs_1 = require("fs");
41
41
  var path_1 = require("path");
42
+ var constants_1 = require("../constants");
42
43
  var CmdService_1 = require("./CmdService");
43
44
  var GitService = /** @class */ (function () {
44
45
  function GitService() {
@@ -83,7 +84,7 @@ var GitService = /** @class */ (function () {
83
84
  return mode & parseInt("777", 8);
84
85
  };
85
86
  GitService.GIT_HOOK_MODE = 493;
86
- GitService.GIT_HOOK_TEMPLATE = "#!/bin/sh\n\n# Created by ts-dev-tools (https://escemi-tech.github.io/ts-dev-tools/)\n\n%gitHookCommand%";
87
+ GitService.GIT_HOOK_TEMPLATE = "#!/bin/sh\n\n# Created by ".concat(constants_1.PROJECT_NAME, " (").concat(constants_1.PROJECT_URL, ")\n\n%gitHookCommand%");
87
88
  return GitService;
88
89
  }());
89
90
  exports.GitService = GitService;
@@ -4,7 +4,7 @@ export declare type Migration = {
4
4
  };
5
5
  export declare type MigrationUpFunction = (absoluteProjectDir: string) => Promise<void>;
6
6
  export declare class MigrationsService {
7
- static executeMigrations(tsDevToolsRootPath: string, absoluteProjectDir: string, currentVersion: string | undefined): Promise<void>;
7
+ static executeMigrations(absoluteProjectDir: string, currentVersion: string | undefined): Promise<void>;
8
8
  private static getAvailableMigrations;
9
9
  private static getPluginMigrations;
10
10
  }
@@ -40,16 +40,17 @@ exports.MigrationsService = void 0;
40
40
  var fs_1 = require("fs");
41
41
  var path_1 = require("path");
42
42
  var PackageJson_1 = require("../services/PackageJson");
43
+ var PluginService_1 = require("./PluginService");
43
44
  var MigrationsService = /** @class */ (function () {
44
45
  function MigrationsService() {
45
46
  }
46
- MigrationsService.executeMigrations = function (tsDevToolsRootPath, absoluteProjectDir, currentVersion) {
47
+ MigrationsService.executeMigrations = function (absoluteProjectDir, currentVersion) {
47
48
  return __awaiter(this, void 0, void 0, function () {
48
49
  var migrations, packageJson, packageJsonBackupPath, _i, migrations_1, migration, up, error_1;
49
50
  return __generator(this, function (_a) {
50
51
  switch (_a.label) {
51
52
  case 0:
52
- migrations = MigrationsService.getAvailableMigrations(tsDevToolsRootPath, absoluteProjectDir, currentVersion);
53
+ migrations = MigrationsService.getAvailableMigrations(absoluteProjectDir, currentVersion);
53
54
  packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
54
55
  packageJsonBackupPath = packageJson.backup();
55
56
  _a.label = 1;
@@ -89,13 +90,12 @@ var MigrationsService = /** @class */ (function () {
89
90
  });
90
91
  });
91
92
  };
92
- MigrationsService.getAvailableMigrations = function (tsDevToolsRootPath, absoluteProjectDir, currentVersion) {
93
- var packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
94
- var installedPlugins = packageJson.getInstalledPlugins();
93
+ MigrationsService.getAvailableMigrations = function (absoluteProjectDir, currentVersion) {
94
+ var installedPlugins = PluginService_1.PluginService.getInstalledPlugins(absoluteProjectDir);
95
95
  var migrationFiles = [];
96
96
  for (var _i = 0, installedPlugins_1 = installedPlugins; _i < installedPlugins_1.length; _i++) {
97
97
  var installedPlugin = installedPlugins_1[_i];
98
- migrationFiles.push.apply(migrationFiles, MigrationsService.getPluginMigrations(tsDevToolsRootPath, installedPlugin, currentVersion));
98
+ migrationFiles.push.apply(migrationFiles, MigrationsService.getPluginMigrations(installedPlugin, currentVersion));
99
99
  }
100
100
  migrationFiles.sort(function (_a, _b) {
101
101
  var nameA = _a.name;
@@ -104,12 +104,11 @@ var MigrationsService = /** @class */ (function () {
104
104
  });
105
105
  return Array.from(new Set(migrationFiles));
106
106
  };
107
- MigrationsService.getPluginMigrations = function (tsDevToolsRootPath, plugin, currentVersion) {
108
- var pluginDirPath = (0, path_1.resolve)(tsDevToolsRootPath, "../../", plugin);
107
+ MigrationsService.getPluginMigrations = function (plugin, currentVersion) {
109
108
  // First retrieve migration of inherited plugins
110
- var migrationFiles = MigrationsService.getAvailableMigrations(tsDevToolsRootPath, pluginDirPath, currentVersion);
109
+ var migrationFiles = MigrationsService.getAvailableMigrations(plugin.path, currentVersion);
111
110
  // Then retrieve
112
- var pluginMigrationsDirPath = (0, path_1.resolve)(pluginDirPath, "dist/install/migrations");
111
+ var pluginMigrationsDirPath = (0, path_1.resolve)(plugin.path, "dist/install/migrations");
113
112
  for (var _i = 0, _a = (0, fs_1.readdirSync)(pluginMigrationsDirPath); _i < _a.length; _i++) {
114
113
  var migrationFile = _a[_i];
115
114
  if (!migrationFile.match(/^[0-9]{14}-[a-z]+\.(js|ts)$/)) {
@@ -16,7 +16,6 @@ export declare class PackageJson {
16
16
  getPackageVersion(): string | undefined;
17
17
  isPrivate(): boolean;
18
18
  getTsDevToolsVersion(): string | undefined;
19
- getInstalledPlugins(): string[];
20
19
  getDependenciesPackageNames(): string[];
21
20
  getDevDependenciesPackageNames(): string[];
22
21
  getAllDependenciesPackageNames(): string[];
@@ -48,18 +48,6 @@ var PackageJson = /** @class */ (function () {
48
48
  var version = tsDevToolsConfig === null || tsDevToolsConfig === void 0 ? void 0 : tsDevToolsConfig.version;
49
49
  return version;
50
50
  };
51
- PackageJson.prototype.getInstalledPlugins = function () {
52
- var allDependenciesPackageNames = this.getAllDependenciesPackageNames();
53
- if (!allDependenciesPackageNames.length) {
54
- return [];
55
- }
56
- var plugins = allDependenciesPackageNames.filter(function (packageName) {
57
- return packageName.match(/^@ts-dev-tools\/.*$/);
58
- });
59
- var sortPlugins = function (pluginA, pluginB) { return pluginA.localeCompare(pluginB); };
60
- plugins.sort(sortPlugins);
61
- return plugins;
62
- };
63
51
  PackageJson.prototype.getDependenciesPackageNames = function () {
64
52
  var dependencies = this.getContent().dependencies;
65
53
  return dependencies ? Object.keys(dependencies) : [];
@@ -0,0 +1,11 @@
1
+ export declare type Plugin = {
2
+ fullname: string;
3
+ shortname: string;
4
+ path: string;
5
+ };
6
+ export declare class PluginService {
7
+ static packageNameIsPlugin(packageName: string): RegExpMatchArray | null;
8
+ static getInstalledPlugins(absoluteProjectDir: string): Plugin[];
9
+ static getPluginShortname(fullname: string): string;
10
+ private static getPluginFromFullname;
11
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginService = void 0;
4
+ var fs_1 = require("fs");
5
+ var path_1 = require("path");
6
+ var constants_1 = require("../constants");
7
+ var CorePackageService_1 = require("./CorePackageService");
8
+ var PackageJson_1 = require("./PackageJson");
9
+ var PluginService = /** @class */ (function () {
10
+ function PluginService() {
11
+ }
12
+ PluginService.packageNameIsPlugin = function (packageName) {
13
+ return packageName.match(new RegExp("^".concat(constants_1.PACKAGE_BASE_NAME, "/.*$")));
14
+ };
15
+ PluginService.getInstalledPlugins = function (absoluteProjectDir) {
16
+ var packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
17
+ var allDependenciesPackageNames = packageJson.getAllDependenciesPackageNames();
18
+ if (!allDependenciesPackageNames.length) {
19
+ return [];
20
+ }
21
+ var plugins = allDependenciesPackageNames.filter(function (packageName) {
22
+ return PluginService.packageNameIsPlugin(packageName);
23
+ });
24
+ var sortPlugins = function (pluginA, pluginB) { return pluginA.localeCompare(pluginB); };
25
+ plugins.sort(sortPlugins);
26
+ return plugins.map(PluginService.getPluginFromFullname);
27
+ };
28
+ PluginService.getPluginShortname = function (fullname) {
29
+ var shortname = fullname.replace("".concat(constants_1.PACKAGE_BASE_NAME, "/"), "");
30
+ return shortname;
31
+ };
32
+ PluginService.getPluginFromFullname = function (fullname) {
33
+ var corePackageRootPath = CorePackageService_1.CorePackageService.getPackageRootPath();
34
+ var shortname = PluginService.getPluginShortname(fullname);
35
+ var path = (0, path_1.resolve)(corePackageRootPath, "../", shortname);
36
+ if (!(0, fs_1.existsSync)(path)) {
37
+ throw new Error("Plugin \"".concat(fullname, "\" is required but cannot be found in ").concat(path, "."));
38
+ }
39
+ return {
40
+ fullname: fullname,
41
+ shortname: shortname,
42
+ path: path,
43
+ };
44
+ };
45
+ return PluginService;
46
+ }());
47
+ exports.PluginService = PluginService;
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { ExecException } from "child_process";
3
+ export declare function exec(cwd: string, cmd: string): Promise<{
4
+ code: number;
5
+ error: ExecException | null;
6
+ stdout: string;
7
+ stderr: string;
8
+ }>;
9
+ export declare function safeExec(cwd: string, cmd: string): Promise<string>;
@@ -0,0 +1,71 @@
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;
13
+ return g = { next: verb(0), "throw": verb(1), "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 (_) 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
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.safeExec = exports.exec = void 0;
40
+ var child_process_1 = require("child_process");
41
+ function exec(cwd, cmd) {
42
+ return new Promise(function (resolve) {
43
+ (0, child_process_1.exec)(cmd, { cwd: cwd }, function (error, stdout, stderr) {
44
+ resolve({
45
+ code: error && error.code ? error.code : 0,
46
+ error: error,
47
+ stdout: stdout.trim(),
48
+ stderr: stderr,
49
+ });
50
+ });
51
+ });
52
+ }
53
+ exports.exec = exec;
54
+ function safeExec(cwd, cmd) {
55
+ return __awaiter(this, void 0, void 0, function () {
56
+ var _a, code, stderr, stdout, error;
57
+ return __generator(this, function (_b) {
58
+ switch (_b.label) {
59
+ case 0: return [4 /*yield*/, exec(cwd, cmd)];
60
+ case 1:
61
+ _a = _b.sent(), code = _a.code, stderr = _a.stderr, stdout = _a.stdout;
62
+ if (code !== 0) {
63
+ error = [stderr, stdout].filter(function (error) { return !!error; }).join("\n");
64
+ throw new Error("An error occured while executing command \"".concat(cmd, "\": ").concat(error));
65
+ }
66
+ return [2 /*return*/, stdout];
67
+ }
68
+ });
69
+ });
70
+ }
71
+ exports.safeExec = safeExec;
@@ -0,0 +1,2 @@
1
+ export declare function deleteFolderRecursive(path: string): void;
2
+ export declare function copyFolderSync(from: string, to: string): void;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyFolderSync = exports.deleteFolderRecursive = void 0;
4
+ var fs_1 = require("fs");
5
+ var path_1 = require("path");
6
+ function deleteFolderRecursive(path) {
7
+ if ((0, fs_1.existsSync)(path)) {
8
+ (0, fs_1.readdirSync)(path).forEach(function (file) {
9
+ var curPath = (0, path_1.join)(path, file);
10
+ if ((0, fs_1.lstatSync)(curPath).isDirectory()) {
11
+ // recurse
12
+ deleteFolderRecursive(curPath);
13
+ }
14
+ else {
15
+ // delete file
16
+ (0, fs_1.unlinkSync)(curPath);
17
+ }
18
+ });
19
+ (0, fs_1.rmdirSync)(path);
20
+ }
21
+ }
22
+ exports.deleteFolderRecursive = deleteFolderRecursive;
23
+ function copyFolderSync(from, to) {
24
+ if (!(0, fs_1.existsSync)(to)) {
25
+ (0, fs_1.mkdirSync)(to);
26
+ }
27
+ (0, fs_1.readdirSync)(from).forEach(function (element) {
28
+ if ((0, fs_1.lstatSync)((0, path_1.join)(from, element)).isFile()) {
29
+ (0, fs_1.copyFileSync)((0, path_1.join)(from, element), (0, path_1.join)(to, element));
30
+ }
31
+ else {
32
+ copyFolderSync((0, path_1.join)(from, element), (0, path_1.join)(to, element));
33
+ }
34
+ });
35
+ }
36
+ exports.copyFolderSync = copyFolderSync;
@@ -0,0 +1,13 @@
1
+ export declare const testProjectDir: string;
2
+ export declare function createTestProjectDir(filename: string): string;
3
+ export declare function createTestProjectDirWithFixtures(filename: string): string;
4
+ export declare function getCorePackageRootPath(filename: string): string;
5
+ export declare function restorePackageJson(filename: string): void;
6
+ export declare function removeTestProjectDir(filename: string): void;
7
+ export declare const createTestMonorepoProjectDir: (projectDir: string, createProject: (projectDir: string) => Promise<void>) => Promise<void>;
8
+ /**
9
+ * Create a full file structure for testing ts-dev-tools packages installation
10
+ * @param projectDir path where to prepare packages
11
+ * @returns packages directory path
12
+ */
13
+ export declare const createTestPackagesDir: (projectDir: string) => Promise<string>;
@@ -0,0 +1,169 @@
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;
13
+ return g = { next: verb(0), "throw": verb(1), "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 (_) 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
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createTestPackagesDir = exports.createTestMonorepoProjectDir = exports.removeTestProjectDir = exports.restorePackageJson = exports.getCorePackageRootPath = exports.createTestProjectDirWithFixtures = exports.createTestProjectDir = exports.testProjectDir = void 0;
40
+ var fs_1 = require("fs");
41
+ var os_1 = require("os");
42
+ var path_1 = require("path");
43
+ var PackageJson_1 = require("../services/PackageJson");
44
+ var PluginService_1 = require("../services/PluginService");
45
+ var cli_1 = require("./cli");
46
+ var file_system_1 = require("./file-system");
47
+ exports.testProjectDir = (0, path_1.resolve)("__tests__/test-project");
48
+ var getTestProjectDirPath = function (filename) {
49
+ return (0, path_1.join)((0, os_1.tmpdir)(), "test-" + (0, path_1.basename)(filename).split(".")[0]);
50
+ };
51
+ var defaultPackageJsonPath = (0, path_1.join)(exports.testProjectDir, "package.json");
52
+ function createTestProjectDir(filename) {
53
+ var testProjectDirPath = getTestProjectDirPath(filename);
54
+ if ((0, fs_1.existsSync)(testProjectDirPath)) {
55
+ (0, file_system_1.deleteFolderRecursive)(testProjectDirPath);
56
+ }
57
+ (0, fs_1.mkdirSync)(testProjectDirPath);
58
+ return testProjectDirPath;
59
+ }
60
+ exports.createTestProjectDir = createTestProjectDir;
61
+ function createTestProjectDirWithFixtures(filename) {
62
+ var testProjectDirPath = createTestProjectDir(filename);
63
+ (0, fs_1.mkdirSync)((0, path_1.join)(testProjectDirPath, ".git/hooks"), { recursive: true });
64
+ // Fake node_modules
65
+ var corePackageRootPath = getCorePackageRootPath(filename);
66
+ (0, fs_1.mkdirSync)(corePackageRootPath, { recursive: true });
67
+ (0, fs_1.copyFileSync)((0, path_1.resolve)(__dirname, "../../package.json"), (0, path_1.join)(corePackageRootPath, "package.json"));
68
+ // Fake migrations
69
+ var tsDevToolsDistPath = (0, path_1.join)(corePackageRootPath, "dist");
70
+ (0, fs_1.symlinkSync)((0, path_1.resolve)(__dirname, ".."), tsDevToolsDistPath);
71
+ restorePackageJson(filename);
72
+ return testProjectDirPath;
73
+ }
74
+ exports.createTestProjectDirWithFixtures = createTestProjectDirWithFixtures;
75
+ function getCorePackageRootPath(filename) {
76
+ var testProjectDirPath = getTestProjectDirPath(filename);
77
+ if (!(0, fs_1.existsSync)(testProjectDirPath)) {
78
+ throw new Error("Test project dir \"".concat(testProjectDirPath, "\" does not exist"));
79
+ }
80
+ return (0, path_1.join)(testProjectDirPath, "node_modules/@ts-dev-tools/core");
81
+ }
82
+ exports.getCorePackageRootPath = getCorePackageRootPath;
83
+ function restorePackageJson(filename) {
84
+ var testProjectDirPath = getTestProjectDirPath(filename);
85
+ if (!(0, fs_1.existsSync)(testProjectDirPath)) {
86
+ throw new Error("Test project dir \"".concat(testProjectDirPath, "\" does not exist"));
87
+ }
88
+ (0, fs_1.copyFileSync)(defaultPackageJsonPath, (0, path_1.join)(testProjectDirPath, "package.json"));
89
+ }
90
+ exports.restorePackageJson = restorePackageJson;
91
+ function removeTestProjectDir(filename) {
92
+ var testProjectDirPath = getTestProjectDirPath(filename);
93
+ if (!(0, fs_1.existsSync)(testProjectDirPath)) {
94
+ throw new Error("Test project dir \"".concat(testProjectDirPath, "\" does not exist"));
95
+ }
96
+ (0, file_system_1.deleteFolderRecursive)(testProjectDirPath);
97
+ }
98
+ exports.removeTestProjectDir = removeTestProjectDir;
99
+ var createTestMonorepoProjectDir = function (projectDir, createProject) { return __awaiter(void 0, void 0, void 0, function () {
100
+ var packageDir;
101
+ return __generator(this, function (_a) {
102
+ switch (_a.label) {
103
+ case 0: return [4 /*yield*/, (0, cli_1.safeExec)(projectDir, "yarn init --yes")];
104
+ case 1:
105
+ _a.sent();
106
+ return [4 /*yield*/, (0, cli_1.safeExec)(projectDir, "yarn add -W --dev typescript")];
107
+ case 2:
108
+ _a.sent();
109
+ return [4 /*yield*/, (0, cli_1.safeExec)(projectDir, "yarn tsc --init")];
110
+ case 3:
111
+ _a.sent();
112
+ PackageJson_1.PackageJson.fromDirPath(projectDir).merge({
113
+ private: true,
114
+ workspaces: ["packages/*"],
115
+ });
116
+ packageDir = (0, path_1.join)(projectDir, "packages/test-package");
117
+ (0, fs_1.mkdirSync)(packageDir, { recursive: true });
118
+ return [4 /*yield*/, createProject(packageDir)];
119
+ case 4:
120
+ _a.sent();
121
+ return [4 /*yield*/, (0, cli_1.safeExec)(projectDir, "yarn install")];
122
+ case 5:
123
+ _a.sent();
124
+ return [2 /*return*/];
125
+ }
126
+ });
127
+ }); };
128
+ exports.createTestMonorepoProjectDir = createTestMonorepoProjectDir;
129
+ /**
130
+ * Create a full file structure for testing ts-dev-tools packages installation
131
+ * @param projectDir path where to prepare packages
132
+ * @returns packages directory path
133
+ */
134
+ var createTestPackagesDir = function (projectDir) { return __awaiter(void 0, void 0, void 0, function () {
135
+ var originalPackagesPath, projectDirPackages, projectDirPackagesFiles, _i, projectDirPackagesFiles_1, projectDirPackagesFile, packagePath, packageJson, content, _a, _b, packageName;
136
+ return __generator(this, function (_c) {
137
+ switch (_c.label) {
138
+ case 0:
139
+ originalPackagesPath = (0, path_1.resolve)(__dirname, "../../..");
140
+ projectDirPackages = (0, path_1.join)(projectDir, "tmp-packages");
141
+ (0, fs_1.mkdirSync)(projectDirPackages);
142
+ return [4 /*yield*/, (0, cli_1.safeExec)(projectDir, "cp -R ".concat(originalPackagesPath, " ").concat(projectDirPackages, "/"))];
143
+ case 1:
144
+ _c.sent();
145
+ projectDirPackages = (0, path_1.resolve)(projectDirPackages, "packages");
146
+ projectDirPackagesFiles = (0, fs_1.readdirSync)(projectDirPackages);
147
+ for (_i = 0, projectDirPackagesFiles_1 = projectDirPackagesFiles; _i < projectDirPackagesFiles_1.length; _i++) {
148
+ projectDirPackagesFile = projectDirPackagesFiles_1[_i];
149
+ packagePath = (0, path_1.resolve)(projectDirPackages, projectDirPackagesFile);
150
+ if (!(0, fs_1.lstatSync)(packagePath).isDirectory()) {
151
+ continue;
152
+ }
153
+ packageJson = PackageJson_1.PackageJson.fromDirPath(packagePath);
154
+ content = packageJson.getContent();
155
+ if (content.dependencies) {
156
+ for (_a = 0, _b = Object.keys(content.dependencies); _a < _b.length; _a++) {
157
+ packageName = _b[_a];
158
+ if (PluginService_1.PluginService.packageNameIsPlugin(packageName)) {
159
+ content.dependencies[packageName] = "file:../".concat(PluginService_1.PluginService.getPluginShortname(packageName));
160
+ }
161
+ }
162
+ packageJson.setContent(content);
163
+ }
164
+ }
165
+ return [2 /*return*/, projectDirPackages];
166
+ }
167
+ });
168
+ }); };
169
+ exports.createTestPackagesDir = createTestPackagesDir;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ts-dev-tools/core",
3
- "version": "1.5.18",
3
+ "version": "1.5.21",
4
4
  "description": "TS dev tools Core",
5
5
  "keywords": [
6
6
  "linter",
@@ -31,7 +31,10 @@
31
31
  "start": "yarn link && tsc -w",
32
32
  "stop": "yarn unlink",
33
33
  "build": "rimraf dist && tsc",
34
- "test": "jest",
34
+ "jest": "jest --detectOpenHandles --forceExit",
35
+ "test": "yarn jest --maxWorkers=50%",
36
+ "test:unit": "yarn test --testPathPattern \".+spec\\.ts\"",
37
+ "test:e2e": "yarn test --testPathPattern \".+spec\\.e2e\\.ts\"",
35
38
  "test:coverage": "yarn test --coverage",
36
39
  "lint": "eslint \"src/**/*.{ts,tsx}\"",
37
40
  "prepublishOnly": "pinst --disable",
@@ -41,26 +44,26 @@
41
44
  "url": "https://github.com/escemi-tech/ts-dev-tools/issues"
42
45
  },
43
46
  "dependencies": {
44
- "@commitlint/cli": "^16.2.1",
47
+ "@commitlint/cli": "^16.2.3",
45
48
  "@commitlint/config-conventional": "^16.2.1",
46
49
  "@types/jest": "^27.4.1",
47
- "@types/node": "^17.0.21",
48
- "@typescript-eslint/eslint-plugin": "^5.12.1",
49
- "@typescript-eslint/parser": "^5.12.1",
50
- "eslint": "^8.9.0",
51
- "eslint-config-prettier": "^8.4.0",
50
+ "@types/node": "^17.0.23",
51
+ "@typescript-eslint/eslint-plugin": "^5.16.0",
52
+ "@typescript-eslint/parser": "^5.16.0",
53
+ "eslint": "^8.11.0",
54
+ "eslint-config-prettier": "^8.5.0",
52
55
  "eslint-plugin-import": "^2.25.4",
53
- "eslint-plugin-jest": "^26.1.1",
56
+ "eslint-plugin-jest": "^26.1.3",
54
57
  "eslint-plugin-node": "^11.1.0",
55
58
  "eslint-plugin-promise": "^6.0.0",
56
59
  "import-sort-style-module": "^6.0.0",
57
60
  "jest": "^27.5.1",
58
- "lint-staged": "^12.3.4",
59
- "prettier": "^2.5.1",
61
+ "lint-staged": "^12.3.7",
62
+ "prettier": "^2.6.0",
60
63
  "prettier-plugin-import-sort": "^0.0.7",
61
64
  "pretty-quick": "^3.1.3",
62
- "ts-jest": "^27.1.3",
63
- "typescript": "^4.5.5"
65
+ "ts-jest": "^27.1.4",
66
+ "typescript": "^4.6.3"
64
67
  },
65
68
  "devDependencies": {
66
69
  "pinst": "^3.0.0"
@@ -103,8 +106,8 @@
103
106
  "testEnvironment": "node",
104
107
  "testMatch": [
105
108
  "**/__tests__/**/*.[jt]s?(x)",
106
- "**/?(*.)+(spec|test).+(ts|tsx|js)"
109
+ "**/?(*.)+(spec|test)?(.*).+(ts|tsx|js)"
107
110
  ]
108
111
  },
109
- "gitHead": "54594cc56e268a52de1e3d44c0d60de1121983cf"
112
+ "gitHead": "b398e12ccaccd633044ff83d04d87f9a851490e8"
110
113
  }
@@ -1,5 +0,0 @@
1
- export declare const testProjectDir: string;
2
- export declare function createTestProjectDir(filename: string): string;
3
- export declare function getTsDevToolsRootPath(filename: string): string;
4
- export declare function restorePackageJson(filename: string): void;
5
- export declare function removeTestProjectDir(filename: string): void;
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeTestProjectDir = exports.restorePackageJson = exports.getTsDevToolsRootPath = exports.createTestProjectDir = exports.testProjectDir = void 0;
4
- var fs_1 = require("fs");
5
- var os_1 = require("os");
6
- var path_1 = require("path");
7
- exports.testProjectDir = (0, path_1.resolve)("__tests__/test-project");
8
- var getTestProjectDirPath = function (filename) {
9
- return (0, path_1.join)((0, os_1.tmpdir)(), (0, path_1.basename)(filename).split(".")[0]);
10
- };
11
- var defaultPackageJsonPath = (0, path_1.join)(exports.testProjectDir, "package.json");
12
- function createTestProjectDir(filename) {
13
- var testProjectDirPath = getTestProjectDirPath(filename);
14
- if ((0, fs_1.existsSync)(testProjectDirPath)) {
15
- deleteFolderRecursive(testProjectDirPath);
16
- }
17
- (0, fs_1.mkdirSync)(testProjectDirPath);
18
- (0, fs_1.mkdirSync)((0, path_1.join)(testProjectDirPath, ".git/hooks"), { recursive: true });
19
- // Fake node_modules
20
- var tsDevToolsRootPath = getTsDevToolsRootPath(filename);
21
- (0, fs_1.mkdirSync)(tsDevToolsRootPath, { recursive: true });
22
- (0, fs_1.copyFileSync)((0, path_1.resolve)(__dirname, "../../package.json"), (0, path_1.join)(tsDevToolsRootPath, "package.json"));
23
- // Fake migrations
24
- var tsDevToolsDistPath = (0, path_1.join)(tsDevToolsRootPath, "dist");
25
- (0, fs_1.symlinkSync)((0, path_1.resolve)(__dirname, ".."), tsDevToolsDistPath);
26
- restorePackageJson(filename);
27
- return testProjectDirPath;
28
- }
29
- exports.createTestProjectDir = createTestProjectDir;
30
- function getTsDevToolsRootPath(filename) {
31
- var testProjectDirPath = getTestProjectDirPath(filename);
32
- if (!(0, fs_1.existsSync)(testProjectDirPath)) {
33
- throw new Error("Test project dir \"".concat(testProjectDirPath, "\" does not exist"));
34
- }
35
- return (0, path_1.join)(testProjectDirPath, "node_modules/@ts-dev-tools/core");
36
- }
37
- exports.getTsDevToolsRootPath = getTsDevToolsRootPath;
38
- function restorePackageJson(filename) {
39
- var testProjectDirPath = getTestProjectDirPath(filename);
40
- if (!(0, fs_1.existsSync)(testProjectDirPath)) {
41
- throw new Error("Test project dir \"".concat(testProjectDirPath, "\" does not exist"));
42
- }
43
- (0, fs_1.copyFileSync)(defaultPackageJsonPath, (0, path_1.join)(testProjectDirPath, "package.json"));
44
- }
45
- exports.restorePackageJson = restorePackageJson;
46
- function removeTestProjectDir(filename) {
47
- var testProjectDirPath = getTestProjectDirPath(filename);
48
- if (!(0, fs_1.existsSync)(testProjectDirPath)) {
49
- throw new Error("Test project dir \"".concat(testProjectDirPath, "\" does not exist"));
50
- }
51
- deleteFolderRecursive(testProjectDirPath);
52
- }
53
- exports.removeTestProjectDir = removeTestProjectDir;
54
- function deleteFolderRecursive(path) {
55
- if ((0, fs_1.existsSync)(path)) {
56
- (0, fs_1.readdirSync)(path).forEach(function (file) {
57
- var curPath = (0, path_1.join)(path, file);
58
- if ((0, fs_1.lstatSync)(curPath).isDirectory()) {
59
- // recurse
60
- deleteFolderRecursive(curPath);
61
- }
62
- else {
63
- // delete file
64
- (0, fs_1.unlinkSync)(curPath);
65
- }
66
- });
67
- (0, fs_1.rmdirSync)(path);
68
- }
69
- }