typesync 0.12.1 → 0.13.0
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/lib/cli-util.d.ts +1 -1
- package/lib/cli-util.js +26 -75
- package/lib/cli-util.js.map +1 -1
- package/lib/cli.js +81 -153
- package/lib/cli.js.map +1 -1
- package/lib/config-service.d.ts +10 -1
- package/lib/config-service.js +37 -73
- package/lib/config-service.js.map +1 -1
- package/lib/fs-utils.d.ts +1 -0
- package/lib/fs-utils.js +28 -0
- package/lib/fs-utils.js.map +1 -0
- package/lib/globber.d.ts +4 -4
- package/lib/globber.js +8 -8
- package/lib/globber.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/package-json-file-service.d.ts +14 -1
- package/lib/package-json-file-service.js +15 -117
- package/lib/package-json-file-service.js.map +1 -1
- package/lib/package-source.d.ts +21 -1
- package/lib/package-source.js +31 -77
- package/lib/package-source.js.map +1 -1
- package/lib/type-syncer.d.ts +7 -3
- package/lib/type-syncer.js +132 -187
- package/lib/type-syncer.js.map +1 -1
- package/lib/types.d.ts +7 -70
- package/lib/types.js.map +1 -1
- package/lib/util.d.ts +4 -16
- package/lib/util.js +42 -173
- package/lib/util.js.map +1 -1
- package/lib/versioning.d.ts +8 -2
- package/lib/versioning.js +6 -7
- package/lib/versioning.js.map +1 -1
- package/lib/workspace-resolver.d.ts +78 -0
- package/lib/workspace-resolver.js +38 -0
- package/lib/workspace-resolver.js.map +1 -0
- package/package.json +19 -16
package/lib/cli-util.d.ts
CHANGED
package/lib/cli-util.js
CHANGED
|
@@ -1,112 +1,64 @@
|
|
|
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;
|
|
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 (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
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
4
|
};
|
|
41
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.
|
|
43
|
-
|
|
44
|
-
|
|
6
|
+
exports.log = log;
|
|
7
|
+
exports.success = success;
|
|
8
|
+
exports.error = error;
|
|
9
|
+
exports.spinWhile = spinWhile;
|
|
10
|
+
exports.parseArguments = parseArguments;
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const ora_1 = __importDefault(require("ora"));
|
|
45
13
|
/**
|
|
46
14
|
* Like regular console.log, but better.
|
|
47
15
|
* @param message
|
|
48
16
|
*/
|
|
49
17
|
function log(message) {
|
|
50
|
-
console.log(
|
|
18
|
+
console.log(`${chalk_1.default.white('»')} ${chalk_1.default.gray(message)}`);
|
|
51
19
|
}
|
|
52
|
-
exports.log = log;
|
|
53
20
|
/**
|
|
54
21
|
* Makes success feel even sweeter.
|
|
55
22
|
* @param text
|
|
56
23
|
*/
|
|
57
24
|
function success(text) {
|
|
58
|
-
console.log(
|
|
25
|
+
console.log(`${chalk_1.default.green('✔')} ${chalk_1.default.white(text)}`);
|
|
59
26
|
}
|
|
60
|
-
exports.success = success;
|
|
61
27
|
/**
|
|
62
28
|
* Logs an error all pretty.
|
|
63
29
|
* @param err
|
|
64
30
|
*/
|
|
65
31
|
function error(err) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
console.log(
|
|
32
|
+
const msg = err instanceof Error ? err.message : err;
|
|
33
|
+
const stack = err instanceof Error ? `\nStack:\n${err.stack}` : '';
|
|
34
|
+
console.log(`${chalk_1.default.red('✖')} ${chalk_1.default.bgRed(chalk_1.default.white(msg))}${stack}`);
|
|
69
35
|
}
|
|
70
|
-
exports.error = error;
|
|
71
36
|
/**
|
|
72
37
|
* Spins while doing work. Stops when done.
|
|
73
38
|
* @param text
|
|
74
39
|
* @param fn
|
|
75
40
|
*/
|
|
76
|
-
function spinWhile(text, fn) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
case 1:
|
|
85
|
-
_a.trys.push([1, , 3, 4]);
|
|
86
|
-
return [4 /*yield*/, fn()];
|
|
87
|
-
case 2: return [2 /*return*/, _a.sent()];
|
|
88
|
-
case 3:
|
|
89
|
-
spinner.stop();
|
|
90
|
-
return [7 /*endfinally*/];
|
|
91
|
-
case 4: return [2 /*return*/];
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
});
|
|
41
|
+
async function spinWhile(text, fn) {
|
|
42
|
+
const spinner = (0, ora_1.default)(' ' + chalk_1.default.gray(text)).start();
|
|
43
|
+
try {
|
|
44
|
+
return await fn();
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
spinner.stop();
|
|
48
|
+
}
|
|
95
49
|
}
|
|
96
|
-
exports.spinWhile = spinWhile;
|
|
97
50
|
/**
|
|
98
51
|
* Super simple argument parser.
|
|
99
52
|
* @param argv
|
|
100
53
|
*/
|
|
101
54
|
function parseArguments(argv) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
for (
|
|
105
|
-
var arg = argv_1[_i];
|
|
55
|
+
const flags = {};
|
|
56
|
+
const args = [];
|
|
57
|
+
for (const arg of argv) {
|
|
106
58
|
if (arg.startsWith('--')) {
|
|
107
59
|
if (arg.includes('=')) {
|
|
108
|
-
|
|
109
|
-
|
|
60
|
+
const idx = arg.indexOf('=');
|
|
61
|
+
const afterEq = arg.substring(idx + 1);
|
|
110
62
|
flags[arg.substring(2, idx)] = afterEq;
|
|
111
63
|
}
|
|
112
64
|
else {
|
|
@@ -117,7 +69,6 @@ function parseArguments(argv) {
|
|
|
117
69
|
args.push(arg);
|
|
118
70
|
}
|
|
119
71
|
}
|
|
120
|
-
return { flags
|
|
72
|
+
return { flags, args };
|
|
121
73
|
}
|
|
122
|
-
exports.parseArguments = parseArguments;
|
|
123
74
|
//# sourceMappingURL=cli-util.js.map
|
package/lib/cli-util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../src/cli-util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../src/cli-util.ts"],"names":[],"mappings":";;;;;AAQA,kBAEC;AAMD,0BAEC;AAMD,sBAIC;AAOD,8BAOC;AAMD,wCAiBC;AAjED,kDAAyB;AACzB,8CAAqB;AAGrB;;;GAGG;AACH,SAAgB,GAAG,CAAC,OAAe;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,GAAmB;IACvC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IACpD,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAA;AAC5E,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,SAAS,CAAI,IAAY,EAAE,EAAoB;IACnE,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,GAAG,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IACnD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAA;IACnB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAmB;IAChD,MAAM,KAAK,GAA2B,EAAE,CAAA;IACxC,MAAM,IAAI,GAAkB,EAAE,CAAA;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBACtC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;YACxC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YAChC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
|
package/lib/cli.js
CHANGED
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
-
return cooked;
|
|
5
|
-
};
|
|
6
|
-
var __assign = (this && this.__assign) || function () {
|
|
7
|
-
__assign = Object.assign || function(t) {
|
|
8
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
-
s = arguments[i];
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
-
t[p] = s[p];
|
|
12
|
-
}
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
15
|
-
return __assign.apply(this, arguments);
|
|
16
|
-
};
|
|
17
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
3
|
if (k2 === undefined) k2 = k;
|
|
19
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -37,145 +22,81 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
37
22
|
__setModuleDefault(result, mod);
|
|
38
23
|
return result;
|
|
39
24
|
};
|
|
40
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
41
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
42
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
43
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
44
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
45
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
46
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
50
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
51
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
52
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
53
|
-
function step(op) {
|
|
54
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
55
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
56
|
-
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;
|
|
57
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
58
|
-
switch (op[0]) {
|
|
59
|
-
case 0: case 1: t = op; break;
|
|
60
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
61
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
62
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
63
|
-
default:
|
|
64
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
65
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
66
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
67
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
68
|
-
if (t[2]) _.ops.pop();
|
|
69
|
-
_.trys.pop(); continue;
|
|
70
|
-
}
|
|
71
|
-
op = body.call(thisArg, _);
|
|
72
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
73
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
77
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
78
|
-
if (ar || !(i in from)) {
|
|
79
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
80
|
-
ar[i] = from[i];
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
84
|
-
};
|
|
85
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
86
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
87
27
|
};
|
|
88
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
89
|
-
exports.startCli =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
29
|
+
exports.startCli = startCli;
|
|
30
|
+
const path = __importStar(require("node:path"));
|
|
31
|
+
const awilix_1 = require("awilix");
|
|
32
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
33
|
+
const C = __importStar(require("./cli-util"));
|
|
34
|
+
const config_service_1 = require("./config-service");
|
|
35
|
+
const globber_1 = require("./globber");
|
|
36
|
+
const package_json_file_service_1 = require("./package-json-file-service");
|
|
37
|
+
const package_source_1 = require("./package-source");
|
|
38
|
+
const type_syncer_1 = require("./type-syncer");
|
|
39
|
+
const workspace_resolver_1 = require("./workspace-resolver");
|
|
40
|
+
const fsUtils = __importStar(require("./fs-utils"));
|
|
99
41
|
/**
|
|
100
42
|
* Starts the TypeSync CLI.
|
|
101
43
|
*/
|
|
102
|
-
function startCli() {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
configService: (0, awilix_1.asFunction)(config_service_1.createConfigService).singleton(),
|
|
115
|
-
globber: (0, awilix_1.asFunction)(globber_1.createGlobber).singleton(),
|
|
116
|
-
typeSyncer: (0, awilix_1.asFunction)(type_syncer_1.createTypeSyncer),
|
|
117
|
-
});
|
|
118
|
-
return [4 /*yield*/, run(container.resolve('typeSyncer'))];
|
|
119
|
-
case 1:
|
|
120
|
-
_a.sent();
|
|
121
|
-
return [3 /*break*/, 3];
|
|
122
|
-
case 2:
|
|
123
|
-
err_1 = _a.sent();
|
|
124
|
-
C.error(err_1);
|
|
125
|
-
process.exitCode = 1;
|
|
126
|
-
return [3 /*break*/, 3];
|
|
127
|
-
case 3: return [2 /*return*/];
|
|
128
|
-
}
|
|
44
|
+
async function startCli() {
|
|
45
|
+
try {
|
|
46
|
+
// Awilix is a dependency injection container.
|
|
47
|
+
const container = (0, awilix_1.createContainer)({
|
|
48
|
+
injectionMode: awilix_1.InjectionMode.CLASSIC,
|
|
49
|
+
}).register({
|
|
50
|
+
packageJSONService: (0, awilix_1.asFunction)(package_json_file_service_1.createPackageJSONFileService).singleton(),
|
|
51
|
+
workspaceResolverService: (0, awilix_1.asFunction)(() => (0, workspace_resolver_1.createWorkspaceResolverService)(fsUtils)).singleton(),
|
|
52
|
+
packageSource: (0, awilix_1.asFunction)(package_source_1.createPackageSource).singleton(),
|
|
53
|
+
configService: (0, awilix_1.asFunction)(config_service_1.createConfigService).singleton(),
|
|
54
|
+
globber: (0, awilix_1.asFunction)(globber_1.createGlobber).singleton(),
|
|
55
|
+
typeSyncer: (0, awilix_1.asFunction)(type_syncer_1.createTypeSyncer),
|
|
129
56
|
});
|
|
130
|
-
|
|
57
|
+
await run(container.resolve('typeSyncer'));
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
C.error(err);
|
|
61
|
+
process.exitCode = 1;
|
|
62
|
+
}
|
|
131
63
|
}
|
|
132
|
-
exports.startCli = startCli;
|
|
133
64
|
/**
|
|
134
65
|
* Actual CLI runner. Uses the `syncer` instance to sync.
|
|
135
66
|
* @param syncer
|
|
136
67
|
*/
|
|
137
|
-
function run(syncer) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return [2 /*return*/];
|
|
170
|
-
}
|
|
171
|
-
C.success(totals.newTypings === 0
|
|
172
|
-
? "No new typings to add, looks like you're all synced up!"
|
|
173
|
-
: flags.dry
|
|
174
|
-
? (0, chalk_1.default)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["", " new typings can be added.\n\n", "\n\n\u2728 Run {green typesync} again without the {gray --dry} flag to update your {gray package.json}."], ["", " new typings can be added.\\n\\n", "\\n\\n\u2728 Run {green typesync} again without the {gray --dry} flag to update your {gray package.json}."])), totals.newTypings.toString(), syncedFilesOutput) : (0, chalk_1.default)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["", " new typings added.\n\n", "\n\n\u2728 Go ahead and run {green npm install} or {green yarn} to install the packages that were added."], ["", " new typings added.\\n\\n", "\\n\\n\u2728 Go ahead and run {green npm install} or {green yarn} to install the packages that were added."])), totals.newTypings.toString(), syncedFilesOutput));
|
|
175
|
-
return [2 /*return*/];
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
});
|
|
68
|
+
async function run(syncer) {
|
|
69
|
+
const { args, flags } = C.parseArguments(process.argv.slice(2));
|
|
70
|
+
const [filePath = 'package.json'] = args;
|
|
71
|
+
if (flags.help) {
|
|
72
|
+
printHelp();
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
C.log((0, chalk_1.default) `TypeSync v{white ${require('../package.json').version}}`);
|
|
76
|
+
if (flags.dry) {
|
|
77
|
+
C.log('—— DRY RUN — will not modify file ——');
|
|
78
|
+
}
|
|
79
|
+
const result = await C.spinWhile(`Syncing type definitions in ${chalk_1.default.cyan(filePath)}...`, () => syncer.sync(filePath, flags));
|
|
80
|
+
const syncedFilesOutput = result.syncedFiles
|
|
81
|
+
.map(renderSyncedFile)
|
|
82
|
+
.join('\n\n');
|
|
83
|
+
const totals = result.syncedFiles
|
|
84
|
+
.map((f) => ({
|
|
85
|
+
newTypings: f.newTypings.length,
|
|
86
|
+
}))
|
|
87
|
+
.reduce((accum, next) => ({
|
|
88
|
+
newTypings: accum.newTypings + next.newTypings,
|
|
89
|
+
}), { newTypings: 0 });
|
|
90
|
+
if (flags.dry === 'fail' && totals.newTypings > 0) {
|
|
91
|
+
C.error('Typings changed; check failed.');
|
|
92
|
+
process.exitCode = 1;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
C.success(totals.newTypings === 0
|
|
96
|
+
? `No new typings to add, looks like you're all synced up!`
|
|
97
|
+
: flags.dry
|
|
98
|
+
? (0, chalk_1.default) `${totals.newTypings.toString()} new typings can be added.\n\n${syncedFilesOutput}\n\n✨ Run {green typesync} again without the {gray --dry} flag to update your {gray package.json}.`
|
|
99
|
+
: (0, chalk_1.default) `${totals.newTypings.toString()} new typings added.\n\n${syncedFilesOutput}\n\n✨ Go ahead and run {green npm install}, {green yarn}, or {green pnpm i} to install the packages that were added.`);
|
|
179
100
|
}
|
|
180
101
|
/**
|
|
181
102
|
* Renders a type definition.
|
|
@@ -183,8 +104,8 @@ function run(syncer) {
|
|
|
183
104
|
* @param isLast
|
|
184
105
|
*/
|
|
185
106
|
function renderTypeDef(typeDef, isLast) {
|
|
186
|
-
|
|
187
|
-
return (0, chalk_1.default)
|
|
107
|
+
const treeNode = isLast ? '└─' : '├─';
|
|
108
|
+
return (0, chalk_1.default) `${treeNode} ${(0, chalk_1.default) `{green.bold +}`} {gray @types/}${(0, chalk_1.default) `{bold.blue ${typeDef.typingsName}}`}`;
|
|
188
109
|
}
|
|
189
110
|
/**
|
|
190
111
|
* Renders a synced file.
|
|
@@ -192,16 +113,17 @@ function renderTypeDef(typeDef, isLast) {
|
|
|
192
113
|
* @param file
|
|
193
114
|
*/
|
|
194
115
|
function renderSyncedFile(file) {
|
|
195
|
-
|
|
196
|
-
? (0, chalk_1.default)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
116
|
+
const badge = file.newTypings.length === 0
|
|
117
|
+
? (0, chalk_1.default) `{blue.bold (no new typings added)}`
|
|
118
|
+
: (0, chalk_1.default) `{green.bold (${file.newTypings.length.toString()} new typings added)}`;
|
|
119
|
+
const dirName = path.basename(path.dirname(path.resolve(file.filePath)));
|
|
120
|
+
const title = (0, chalk_1.default) `📦 ${file.package.name ?? dirName} {gray.italic — ${file.filePath}} ${badge}`;
|
|
121
|
+
const nl = '\n';
|
|
122
|
+
const combined = [...file.newTypings.map((t) => ({ ...t, action: 'add' }))];
|
|
123
|
+
const rendered = title +
|
|
202
124
|
nl +
|
|
203
125
|
combined
|
|
204
|
-
.map(
|
|
126
|
+
.map((t) => renderTypeDef(t, combined[combined.length - 1] === t))
|
|
205
127
|
.join(nl);
|
|
206
128
|
return rendered;
|
|
207
129
|
}
|
|
@@ -209,7 +131,13 @@ function renderSyncedFile(file) {
|
|
|
209
131
|
* Prints the help text.
|
|
210
132
|
*/
|
|
211
133
|
function printHelp() {
|
|
212
|
-
console.log((0, chalk_1.default)
|
|
134
|
+
console.log((0, chalk_1.default) `
|
|
135
|
+
{blue.bold typesync} - adds missing TypeScript definitions to package.json
|
|
136
|
+
|
|
137
|
+
Options
|
|
138
|
+
{magenta.bold --dry} dry run, won't save the package.json
|
|
139
|
+
{magenta.bold --ignoredeps=<deps|dev|peer|optional>} ignores dependencies in the specified sections (comma separate for multiple). Example: {magenta ignoredeps=dev,peer}
|
|
140
|
+
{magenta.bold --help} shows this help menu
|
|
141
|
+
`.trim());
|
|
213
142
|
}
|
|
214
|
-
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
|
|
215
143
|
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/lib/config-service.d.ts
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ICLIArguments, type ISyncOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Config Service.
|
|
4
|
+
*/
|
|
5
|
+
export interface IConfigService {
|
|
6
|
+
/**
|
|
7
|
+
* Get typesync config.
|
|
8
|
+
*/
|
|
9
|
+
readConfig(filePath: string, flags: ICLIArguments['flags']): Promise<ISyncOptions>;
|
|
10
|
+
}
|
|
2
11
|
export declare function createConfigService(): IConfigService;
|
package/lib/config-service.js
CHANGED
|
@@ -1,88 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
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;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
47
7
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
51
24
|
};
|
|
52
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.createConfigService =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
26
|
+
exports.createConfigService = createConfigService;
|
|
27
|
+
const path = __importStar(require("node:path"));
|
|
28
|
+
const cosmiconfig_1 = require("cosmiconfig");
|
|
29
|
+
const types_1 = require("./types");
|
|
30
|
+
const util_1 = require("./util");
|
|
31
|
+
const explorer = (0, cosmiconfig_1.cosmiconfig)('typesync');
|
|
59
32
|
function createConfigService() {
|
|
60
|
-
var _this = this;
|
|
61
33
|
return {
|
|
62
|
-
readConfig:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
case 1:
|
|
70
|
-
fileConfig = _a.sent();
|
|
71
|
-
cliConfig = readCliConfig(flags);
|
|
72
|
-
return [2 /*return*/, __assign(__assign({}, (0, util_1.shrinkObject)(fileConfig)), (0, util_1.shrinkObject)(cliConfig))];
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}); },
|
|
34
|
+
readConfig: async (filePath, flags) => {
|
|
35
|
+
const fileConfig = await explorer
|
|
36
|
+
.search(path.dirname(filePath))
|
|
37
|
+
.then(/* istanbul ignore next */ (result) => result?.config ?? {});
|
|
38
|
+
const cliConfig = readCliConfig(flags);
|
|
39
|
+
return { ...(0, util_1.shrinkObject)(fileConfig), ...(0, util_1.shrinkObject)(cliConfig) };
|
|
40
|
+
},
|
|
76
41
|
};
|
|
77
42
|
}
|
|
78
|
-
exports.createConfigService = createConfigService;
|
|
79
43
|
function readCliConfig(flags) {
|
|
80
|
-
|
|
81
|
-
|
|
44
|
+
const readValues = (key, validator) => {
|
|
45
|
+
const values = flags[key];
|
|
82
46
|
return typeof values === 'string'
|
|
83
47
|
? values
|
|
84
48
|
.split(',')
|
|
85
|
-
.filter(
|
|
49
|
+
.filter((value) => (validator ? validator(value) : true))
|
|
86
50
|
: undefined;
|
|
87
51
|
};
|
|
88
52
|
return {
|