@proteinjs/reflection-build 2.0.2 → 2.0.3

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 (72) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.json +5 -5
  3. package/test/examples/source-repository/a/node_modules/.package-lock.json +13 -13
  4. package/test/examples/source-repository/a/node_modules/@proteinjs/util/CHANGELOG.md +8 -0
  5. package/test/examples/source-repository/a/node_modules/@proteinjs/util/LICENSE +21 -0
  6. package/test/examples/source-repository/a/node_modules/@proteinjs/util/package.json +3 -2
  7. package/test/examples/source-repository/a/node_modules/@proteinjs/util/tsconfig.json +1 -0
  8. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/CHANGELOG.md +63 -0
  9. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/LICENSE +21 -0
  10. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/index.d.ts +1 -0
  11. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/index.js +1 -0
  12. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/index.js.map +1 -1
  13. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/ArgsMap.js +7 -4
  14. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/ArgsMap.js.map +1 -1
  15. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.js +16 -12
  16. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/Fs.js.map +1 -1
  17. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/PackageUtil.d.ts +59 -13
  18. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/PackageUtil.js +119 -80
  19. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/PackageUtil.js.map +1 -1
  20. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/WorkspaceDeclaration.d.ts +91 -0
  21. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/WorkspaceDeclaration.js +608 -0
  22. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/WorkspaceDeclaration.js.map +1 -0
  23. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/dist/src/promisifiedFs.d.ts +0 -1
  24. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/index.ts +1 -0
  25. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/package.json +4 -3
  26. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/ArgsMap.ts +7 -4
  27. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/Fs.ts +12 -9
  28. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/PackageUtil.ts +92 -38
  29. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/src/WorkspaceDeclaration.ts +340 -0
  30. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/test/ArgsMap.test.ts +35 -0
  31. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/test/Fs.getFilePathsMatchingGlob.test.ts +70 -0
  32. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/test/PackageUtil.getLocalPackageMap.test.ts +107 -0
  33. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/test/PackageUtil.pathKeyedIdentity.test.ts +169 -0
  34. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/test/WorkspaceDeclaration.test.ts +174 -0
  35. package/test/examples/source-repository/a/node_modules/@proteinjs/util-node/tsconfig.json +1 -0
  36. package/test/examples/source-repository/a/package-lock.json +16 -16
  37. package/test/examples/source-repository/a/package.json +3 -3
  38. package/test/examples/source-repository/b/node_modules/.package-lock.json +10 -10
  39. package/test/examples/source-repository/b/node_modules/@proteinjs/util/CHANGELOG.md +8 -0
  40. package/test/examples/source-repository/b/node_modules/@proteinjs/util/LICENSE +21 -0
  41. package/test/examples/source-repository/b/node_modules/@proteinjs/util/package.json +3 -2
  42. package/test/examples/source-repository/b/node_modules/@proteinjs/util/tsconfig.json +1 -0
  43. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/CHANGELOG.md +63 -0
  44. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/LICENSE +21 -0
  45. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/index.d.ts +1 -0
  46. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/index.js +1 -0
  47. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/index.js.map +1 -1
  48. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/ArgsMap.js +7 -4
  49. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/ArgsMap.js.map +1 -1
  50. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.js +16 -12
  51. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/Fs.js.map +1 -1
  52. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/PackageUtil.d.ts +59 -13
  53. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/PackageUtil.js +119 -80
  54. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/PackageUtil.js.map +1 -1
  55. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/WorkspaceDeclaration.d.ts +91 -0
  56. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/WorkspaceDeclaration.js +608 -0
  57. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/WorkspaceDeclaration.js.map +1 -0
  58. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/dist/src/promisifiedFs.d.ts +0 -1
  59. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/index.ts +1 -0
  60. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/package.json +4 -3
  61. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/ArgsMap.ts +7 -4
  62. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/Fs.ts +12 -9
  63. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/PackageUtil.ts +92 -38
  64. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/src/WorkspaceDeclaration.ts +340 -0
  65. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/test/ArgsMap.test.ts +35 -0
  66. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/test/Fs.getFilePathsMatchingGlob.test.ts +70 -0
  67. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/test/PackageUtil.getLocalPackageMap.test.ts +107 -0
  68. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/test/PackageUtil.pathKeyedIdentity.test.ts +169 -0
  69. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/test/WorkspaceDeclaration.test.ts +174 -0
  70. package/test/examples/source-repository/b/node_modules/@proteinjs/util-node/tsconfig.json +1 -0
  71. package/test/examples/source-repository/b/package-lock.json +13 -13
  72. package/test/examples/source-repository/b/package.json +3 -3
@@ -0,0 +1,608 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ var desc = Object.getOwnPropertyDescriptor(m, k);
31
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
+ desc = { enumerable: true, get: function() { return m[k]; } };
33
+ }
34
+ Object.defineProperty(o, k2, desc);
35
+ }) : (function(o, m, k, k2) {
36
+ if (k2 === undefined) k2 = k;
37
+ o[k2] = m[k];
38
+ }));
39
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
40
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
41
+ }) : function(o, v) {
42
+ o["default"] = v;
43
+ });
44
+ var __importStar = (this && this.__importStar) || function (mod) {
45
+ if (mod && mod.__esModule) return mod;
46
+ var result = {};
47
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
48
+ __setModuleDefault(result, mod);
49
+ return result;
50
+ };
51
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
52
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
53
+ return new (P || (P = Promise))(function (resolve, reject) {
54
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
55
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
56
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
57
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
58
+ });
59
+ };
60
+ var __generator = (this && this.__generator) || function (thisArg, body) {
61
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
62
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
63
+ function verb(n) { return function (v) { return step([n, v]); }; }
64
+ function step(op) {
65
+ if (f) throw new TypeError("Generator is already executing.");
66
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
67
+ 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;
68
+ if (y = 0, t) op = [op[0] & 2, t.value];
69
+ switch (op[0]) {
70
+ case 0: case 1: t = op; break;
71
+ case 4: _.label++; return { value: op[1], done: false };
72
+ case 5: _.label++; y = op[1]; op = [0]; continue;
73
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
74
+ default:
75
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
76
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
77
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
78
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
79
+ if (t[2]) _.ops.pop();
80
+ _.trys.pop(); continue;
81
+ }
82
+ op = body.call(thisArg, _);
83
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
84
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
85
+ }
86
+ };
87
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
88
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
89
+ if (ar || !(i in from)) {
90
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
91
+ ar[i] = from[i];
92
+ }
93
+ }
94
+ return to.concat(ar || Array.prototype.slice.call(from));
95
+ };
96
+ Object.defineProperty(exports, "__esModule", { value: true });
97
+ exports.WorkspaceDeclaration = exports.WorkspaceDeclarationError = void 0;
98
+ var path = __importStar(require("path"));
99
+ var fs = __importStar(require("fs/promises"));
100
+ /** A declared-workspace rule was broken. The message names every path involved. */
101
+ var WorkspaceDeclarationError = /** @class */ (function (_super) {
102
+ __extends(WorkspaceDeclarationError, _super);
103
+ function WorkspaceDeclarationError(message) {
104
+ var _this = _super.call(this, message) || this;
105
+ _this.name = 'WorkspaceDeclarationError';
106
+ Object.setPrototypeOf(_this, WorkspaceDeclarationError.prototype); // ES5 target: keep instanceof true across the Error subclass
107
+ return _this;
108
+ }
109
+ return WorkspaceDeclarationError;
110
+ }(Error));
111
+ exports.WorkspaceDeclarationError = WorkspaceDeclarationError;
112
+ /**
113
+ * The ONE owner of workspace membership: which package.json files belong to the workspace rooted
114
+ * at a directory.
115
+ *
116
+ * Membership is DECLARED, never crawled. A directory holding a `lerna.json` (its `packages`
117
+ * globs; lerna's own default `packages/*` when the field is absent) or a root `package.json`
118
+ * carrying `workspacePackages` (extra roots the workspace tooling builds alongside lerna's
119
+ * members — e.g. an app's `ops/*` tools that lerna must not version) is a workspace ROOT. Its
120
+ * members are exactly what it declares, and it OWNS its subtree: nothing undeclared beneath it is
121
+ * a member, however the tree is walked from above. A member that is itself a root expands through
122
+ * its own declaration (the metarepo's nested lerna roots).
123
+ *
124
+ * Why: the previous crawl (every package.json under the root, keyed by name, last path wins)
125
+ * let a CI fixture tree whose package.json files reused the app's own package names shadow the
126
+ * real packages — build-workspace built "1 package in workspace" and the release image shipped
127
+ * with no server dist (n3xah/app Deploy to Test run 33747781291, 2026-09-03). A declaration
128
+ * cannot be shadowed by a file nobody declared.
129
+ *
130
+ * A tree with no declaration at its root (the n3xa metarepo root) still crawls — bounded exactly
131
+ * as before: never into hidden directories, `node_modules`, `dist`, or through symlinks — and
132
+ * hands every declared root it meets to that root's declaration.
133
+ *
134
+ * Hard errors, each naming its paths: a declared literal path with no package.json; two leaf
135
+ * packages sharing a name (dependencies resolve to members BY NAME). Containers — a package.json
136
+ * with members beneath it; every root in the metarepo is named `root` — are identified by path
137
+ * and exempt from the name rule.
138
+ *
139
+ * npm's own `workspaces` field is deliberately NOT read: it changes how `npm i` installs at the
140
+ * root, which is a different install model from the per-package installs this tooling performs.
141
+ */
142
+ var WorkspaceDeclaration = /** @class */ (function () {
143
+ function WorkspaceDeclaration() {
144
+ }
145
+ /** Every member package.json of the workspace rooted at `rootDir`, sorted by path. */
146
+ WorkspaceDeclaration.discover = function (rootDir) {
147
+ return __awaiter(this, void 0, void 0, function () {
148
+ var found, root, declaration, discovered;
149
+ return __generator(this, function (_a) {
150
+ switch (_a.label) {
151
+ case 0:
152
+ found = new Map();
153
+ root = path.resolve(rootDir);
154
+ return [4 /*yield*/, WorkspaceDeclaration.read(root)];
155
+ case 1:
156
+ declaration = _a.sent();
157
+ if (!declaration) return [3 /*break*/, 3];
158
+ return [4 /*yield*/, WorkspaceDeclaration.discoverDeclared(declaration, found)];
159
+ case 2:
160
+ _a.sent();
161
+ return [3 /*break*/, 5];
162
+ case 3: return [4 /*yield*/, WorkspaceDeclaration.crawl(root, found)];
163
+ case 4:
164
+ _a.sent();
165
+ _a.label = 5;
166
+ case 5:
167
+ discovered = Array.from(found.values()).sort(function (a, b) {
168
+ return a.filePath < b.filePath ? -1 : a.filePath > b.filePath ? 1 : 0;
169
+ });
170
+ WorkspaceDeclaration.assertNoLeafNameCollisions(discovered);
171
+ return [2 /*return*/, discovered];
172
+ }
173
+ });
174
+ });
175
+ };
176
+ /** The declaration at `dir` when `dir` is a workspace root; undefined otherwise. */
177
+ WorkspaceDeclaration.read = function (dir) {
178
+ return __awaiter(this, void 0, void 0, function () {
179
+ var patterns, lernaPath, lernaJson, declared, _i, declared_1, pattern, packageJsonPath, packageJson, extra, _a, extra_1, pattern;
180
+ return __generator(this, function (_b) {
181
+ switch (_b.label) {
182
+ case 0:
183
+ patterns = [];
184
+ lernaPath = path.join(dir, 'lerna.json');
185
+ return [4 /*yield*/, WorkspaceDeclaration.readJsonIfExists(lernaPath)];
186
+ case 1:
187
+ lernaJson = _b.sent();
188
+ if (lernaJson) {
189
+ declared = Array.isArray(lernaJson.packages)
190
+ ? lernaJson.packages
191
+ : WorkspaceDeclaration.lernaDefaultPackages;
192
+ for (_i = 0, declared_1 = declared; _i < declared_1.length; _i++) {
193
+ pattern = declared_1[_i];
194
+ patterns.push({ pattern: WorkspaceDeclaration.assertPattern(pattern, lernaPath), source: lernaPath });
195
+ }
196
+ }
197
+ packageJsonPath = path.join(dir, 'package.json');
198
+ return [4 /*yield*/, WorkspaceDeclaration.readJsonIfExists(packageJsonPath)];
199
+ case 2:
200
+ packageJson = _b.sent();
201
+ extra = packageJson === null || packageJson === void 0 ? void 0 : packageJson[WorkspaceDeclaration.EXTRA_PACKAGES_FIELD];
202
+ if (extra !== undefined) {
203
+ if (!Array.isArray(extra)) {
204
+ throw new WorkspaceDeclarationError("".concat(packageJsonPath, ": \"").concat(WorkspaceDeclaration.EXTRA_PACKAGES_FIELD, "\" must be an array of package globs"));
205
+ }
206
+ for (_a = 0, extra_1 = extra; _a < extra_1.length; _a++) {
207
+ pattern = extra_1[_a];
208
+ patterns.push({
209
+ pattern: WorkspaceDeclaration.assertPattern(pattern, packageJsonPath),
210
+ source: packageJsonPath,
211
+ });
212
+ }
213
+ }
214
+ return [2 /*return*/, patterns.length > 0 ? { rootDir: dir, patterns: patterns } : undefined];
215
+ }
216
+ });
217
+ });
218
+ };
219
+ /** A declared root: its own package.json (the container), then exactly its declared members. */
220
+ WorkspaceDeclaration.discoverDeclared = function (declaration, found) {
221
+ return __awaiter(this, void 0, void 0, function () {
222
+ var own, _i, _a, _b, pattern, source, _c, _d, memberDir, nested;
223
+ return __generator(this, function (_e) {
224
+ switch (_e.label) {
225
+ case 0:
226
+ own = path.join(declaration.rootDir, 'package.json');
227
+ return [4 /*yield*/, WorkspaceDeclaration.exists(own)];
228
+ case 1:
229
+ if (!_e.sent()) return [3 /*break*/, 3];
230
+ return [4 /*yield*/, WorkspaceDeclaration.add(found, own, 'declared', declaration.patterns[0].source)];
231
+ case 2:
232
+ _e.sent();
233
+ _e.label = 3;
234
+ case 3:
235
+ _i = 0, _a = declaration.patterns;
236
+ _e.label = 4;
237
+ case 4:
238
+ if (!(_i < _a.length)) return [3 /*break*/, 13];
239
+ _b = _a[_i], pattern = _b.pattern, source = _b.source;
240
+ _c = 0;
241
+ return [4 /*yield*/, WorkspaceDeclaration.expand(declaration.rootDir, pattern, source)];
242
+ case 5:
243
+ _d = _e.sent();
244
+ _e.label = 6;
245
+ case 6:
246
+ if (!(_c < _d.length)) return [3 /*break*/, 12];
247
+ memberDir = _d[_c];
248
+ return [4 /*yield*/, WorkspaceDeclaration.read(memberDir)];
249
+ case 7:
250
+ nested = _e.sent();
251
+ if (!nested) return [3 /*break*/, 9];
252
+ return [4 /*yield*/, WorkspaceDeclaration.discoverDeclared(nested, found)];
253
+ case 8:
254
+ _e.sent(); // a nested root owns its subtree
255
+ return [3 /*break*/, 11];
256
+ case 9: return [4 /*yield*/, WorkspaceDeclaration.add(found, path.join(memberDir, 'package.json'), 'declared', source)];
257
+ case 10:
258
+ _e.sent();
259
+ _e.label = 11;
260
+ case 11:
261
+ _c++;
262
+ return [3 /*break*/, 6];
263
+ case 12:
264
+ _i++;
265
+ return [3 /*break*/, 4];
266
+ case 13: return [2 /*return*/];
267
+ }
268
+ });
269
+ });
270
+ };
271
+ /**
272
+ * The bounded walk of an UNDECLARED tree (the metarepo root): every package.json it meets is a
273
+ * member, and every declared root it meets is handed to that root's declaration instead of
274
+ * being walked. Never enters hidden directories, node_modules, or dist; never follows symlinks
275
+ * (`withFileTypes` reports a symlink as neither directory nor file).
276
+ */
277
+ WorkspaceDeclaration.crawl = function (rootDir, found) {
278
+ return __awaiter(this, void 0, void 0, function () {
279
+ var pending, currentDir, _i, _a, dirent, entryPath, declaration;
280
+ return __generator(this, function (_b) {
281
+ switch (_b.label) {
282
+ case 0:
283
+ pending = [rootDir];
284
+ _b.label = 1;
285
+ case 1:
286
+ if (!(pending.length > 0)) return [3 /*break*/, 12];
287
+ currentDir = pending.pop();
288
+ _i = 0;
289
+ return [4 /*yield*/, fs.readdir(currentDir, { withFileTypes: true })];
290
+ case 2:
291
+ _a = _b.sent();
292
+ _b.label = 3;
293
+ case 3:
294
+ if (!(_i < _a.length)) return [3 /*break*/, 11];
295
+ dirent = _a[_i];
296
+ entryPath = path.join(currentDir, dirent.name);
297
+ if (!dirent.isDirectory()) return [3 /*break*/, 8];
298
+ if (WorkspaceDeclaration.isPrunedDirName(dirent.name)) {
299
+ return [3 /*break*/, 10];
300
+ }
301
+ return [4 /*yield*/, WorkspaceDeclaration.read(entryPath)];
302
+ case 4:
303
+ declaration = _b.sent();
304
+ if (!declaration) return [3 /*break*/, 6];
305
+ return [4 /*yield*/, WorkspaceDeclaration.discoverDeclared(declaration, found)];
306
+ case 5:
307
+ _b.sent();
308
+ return [3 /*break*/, 7];
309
+ case 6:
310
+ pending.push(entryPath);
311
+ _b.label = 7;
312
+ case 7: return [3 /*break*/, 10];
313
+ case 8:
314
+ if (!(dirent.isFile() && dirent.name === 'package.json')) return [3 /*break*/, 10];
315
+ return [4 /*yield*/, WorkspaceDeclaration.add(found, entryPath, 'crawled')];
316
+ case 9:
317
+ _b.sent();
318
+ _b.label = 10;
319
+ case 10:
320
+ _i++;
321
+ return [3 /*break*/, 3];
322
+ case 11: return [3 /*break*/, 1];
323
+ case 12: return [2 /*return*/];
324
+ }
325
+ });
326
+ });
327
+ };
328
+ /**
329
+ * The directories a declared pattern names under `rootDir`, lerna's semantics: a literal path
330
+ * MUST hold a package.json (hard error otherwise — a declared package that does not exist is
331
+ * a broken declaration, never a silent skip); a glob (`*` within a segment, `**` for any depth)
332
+ * matches directories that hold one, walking with the same prune rules as the crawl. A declared
333
+ * root met inside a glob's walk is matched as a whole and not walked past — it owns its subtree.
334
+ */
335
+ WorkspaceDeclaration.expand = function (rootDir, pattern, source) {
336
+ return __awaiter(this, void 0, void 0, function () {
337
+ var segments, dir, matches;
338
+ return __generator(this, function (_a) {
339
+ switch (_a.label) {
340
+ case 0:
341
+ segments = pattern.split('/').filter(function (segment) { return segment.length > 0 && segment !== '.'; });
342
+ if (!!segments.some(function (segment) { return segment.includes('*'); })) return [3 /*break*/, 2];
343
+ dir = path.join.apply(path, __spreadArray([rootDir], segments, false));
344
+ return [4 /*yield*/, WorkspaceDeclaration.exists(path.join(dir, 'package.json'))];
345
+ case 1:
346
+ if (!(_a.sent())) {
347
+ throw new WorkspaceDeclarationError("".concat(source, " declares \"").concat(pattern, "\" but ").concat(path.join(dir, 'package.json'), " does not exist \u2014 a declared package must exist (fix the declaration or restore the package)"));
348
+ }
349
+ return [2 /*return*/, [dir]];
350
+ case 2:
351
+ matches = new Set();
352
+ return [4 /*yield*/, WorkspaceDeclaration.matchSegments(rootDir, segments, 0, matches)];
353
+ case 3:
354
+ _a.sent();
355
+ return [2 /*return*/, Array.from(matches).sort()];
356
+ }
357
+ });
358
+ });
359
+ };
360
+ WorkspaceDeclaration.matchSegments = function (dir, segments, index, matches) {
361
+ return __awaiter(this, void 0, void 0, function () {
362
+ var segment, remaining, _i, _a, child, children, _b, _c, children_1, child, _d;
363
+ return __generator(this, function (_e) {
364
+ switch (_e.label) {
365
+ case 0:
366
+ if (!(index === segments.length)) return [3 /*break*/, 2];
367
+ return [4 /*yield*/, WorkspaceDeclaration.exists(path.join(dir, 'package.json'))];
368
+ case 1:
369
+ if (_e.sent()) {
370
+ matches.add(dir);
371
+ }
372
+ return [2 /*return*/];
373
+ case 2:
374
+ segment = segments[index];
375
+ remaining = segments.length - index - 1;
376
+ if (!(segment === '**')) return [3 /*break*/, 10];
377
+ return [4 /*yield*/, WorkspaceDeclaration.matchSegments(dir, segments, index + 1, matches)];
378
+ case 3:
379
+ _e.sent(); // zero directories
380
+ _i = 0;
381
+ return [4 /*yield*/, WorkspaceDeclaration.childDirs(dir)];
382
+ case 4:
383
+ _a = _e.sent();
384
+ _e.label = 5;
385
+ case 5:
386
+ if (!(_i < _a.length)) return [3 /*break*/, 9];
387
+ child = _a[_i];
388
+ return [4 /*yield*/, WorkspaceDeclaration.read(child)];
389
+ case 6:
390
+ if (_e.sent()) {
391
+ matches.add(child); // a nested root owns its subtree — matched whole, never walked past
392
+ return [3 /*break*/, 8];
393
+ }
394
+ return [4 /*yield*/, WorkspaceDeclaration.matchSegments(child, segments, index, matches)];
395
+ case 7:
396
+ _e.sent(); // one more directory under **
397
+ _e.label = 8;
398
+ case 8:
399
+ _i++;
400
+ return [3 /*break*/, 5];
401
+ case 9: return [2 /*return*/];
402
+ case 10:
403
+ if (!segment.includes('*')) return [3 /*break*/, 12];
404
+ return [4 /*yield*/, WorkspaceDeclaration.childDirs(dir)];
405
+ case 11:
406
+ _b = (_e.sent()).filter(function (child) {
407
+ return WorkspaceDeclaration.segmentMatcher(segment).test(path.basename(child));
408
+ });
409
+ return [3 /*break*/, 14];
410
+ case 12: return [4 /*yield*/, WorkspaceDeclaration.isRealDir(path.join(dir, segment))];
411
+ case 13:
412
+ _b = (_e.sent())
413
+ ? [path.join(dir, segment)]
414
+ : [];
415
+ _e.label = 14;
416
+ case 14:
417
+ children = _b;
418
+ _c = 0, children_1 = children;
419
+ _e.label = 15;
420
+ case 15:
421
+ if (!(_c < children_1.length)) return [3 /*break*/, 20];
422
+ child = children_1[_c];
423
+ _d = remaining > 0;
424
+ if (!_d) return [3 /*break*/, 17];
425
+ return [4 /*yield*/, WorkspaceDeclaration.read(child)];
426
+ case 16:
427
+ _d = (_e.sent());
428
+ _e.label = 17;
429
+ case 17:
430
+ if (_d) {
431
+ matches.add(child);
432
+ return [3 /*break*/, 19];
433
+ }
434
+ return [4 /*yield*/, WorkspaceDeclaration.matchSegments(child, segments, index + 1, matches)];
435
+ case 18:
436
+ _e.sent();
437
+ _e.label = 19;
438
+ case 19:
439
+ _c++;
440
+ return [3 /*break*/, 15];
441
+ case 20: return [2 /*return*/];
442
+ }
443
+ });
444
+ });
445
+ };
446
+ /** Leaf packages resolve by name; two leaves with one name is a broken workspace, not a tie to break. */
447
+ WorkspaceDeclaration.assertNoLeafNameCollisions = function (discovered) {
448
+ var _a, _b;
449
+ var dirs = discovered.map(function (entry) { return path.dirname(entry.filePath); });
450
+ var isContainer = function (entry) {
451
+ var prefix = path.dirname(entry.filePath) + path.sep;
452
+ return dirs.some(function (dir) { return dir.startsWith(prefix); });
453
+ };
454
+ var byName = new Map();
455
+ for (var _i = 0, discovered_1 = discovered; _i < discovered_1.length; _i++) {
456
+ var entry = discovered_1[_i];
457
+ var name_1 = (_a = entry.packageJson) === null || _a === void 0 ? void 0 : _a.name;
458
+ if (typeof name_1 !== 'string' || name_1.length === 0) {
459
+ continue;
460
+ }
461
+ byName.set(name_1, ((_b = byName.get(name_1)) !== null && _b !== void 0 ? _b : []).concat(entry));
462
+ }
463
+ var collisions = [];
464
+ for (var _c = 0, _d = Array.from(byName.entries()); _c < _d.length; _c++) {
465
+ var _e = _d[_c], name_2 = _e[0], entries = _e[1];
466
+ var leaves = entries.filter(function (entry) { return !isContainer(entry); });
467
+ if (leaves.length < 2) {
468
+ continue;
469
+ }
470
+ collisions.push("\"".concat(name_2, "\" is claimed by\n") +
471
+ leaves
472
+ .map(function (entry) {
473
+ return " - ".concat(entry.filePath, " (").concat(entry.origin === 'declared' ? "declared by ".concat(entry.declaredBy) : 'crawled — no declaration names it', ")");
474
+ })
475
+ .join('\n'));
476
+ }
477
+ if (collisions.length > 0) {
478
+ throw new WorkspaceDeclarationError("Workspace package name collision \u2014 dependencies resolve to workspace members BY NAME, so two packages cannot share one:\n".concat(collisions.join('\n'), "\nRename the impostor (fixtures carry fixture names) or move it outside the workspace."));
479
+ }
480
+ };
481
+ WorkspaceDeclaration.add = function (found, filePath, origin, declaredBy) {
482
+ return __awaiter(this, void 0, void 0, function () {
483
+ var packageJson, _a, _b;
484
+ return __generator(this, function (_c) {
485
+ switch (_c.label) {
486
+ case 0:
487
+ if (found.has(filePath)) {
488
+ return [2 /*return*/];
489
+ }
490
+ _b = (_a = JSON).parse;
491
+ return [4 /*yield*/, fs.readFile(filePath, 'utf8')];
492
+ case 1:
493
+ packageJson = _b.apply(_a, [_c.sent()]);
494
+ found.set(filePath, __assign({ filePath: filePath, packageJson: packageJson, origin: origin }, (declaredBy ? { declaredBy: declaredBy } : {})));
495
+ return [2 /*return*/];
496
+ }
497
+ });
498
+ });
499
+ };
500
+ WorkspaceDeclaration.assertPattern = function (pattern, source) {
501
+ if (typeof pattern !== 'string' || pattern.trim().length === 0) {
502
+ throw new WorkspaceDeclarationError("".concat(source, ": package patterns must be non-empty strings, got ").concat(JSON.stringify(pattern)));
503
+ }
504
+ if (path.isAbsolute(pattern) || pattern.split('/').includes('..')) {
505
+ throw new WorkspaceDeclarationError("".concat(source, ": package pattern \"").concat(pattern, "\" must be relative to the root and stay inside it"));
506
+ }
507
+ return pattern;
508
+ };
509
+ WorkspaceDeclaration.segmentMatcher = function (segment) {
510
+ var escaped = segment.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^/]*');
511
+ return new RegExp("^".concat(escaped, "$"));
512
+ };
513
+ WorkspaceDeclaration.isPrunedDirName = function (name) {
514
+ return name.startsWith('.') || WorkspaceDeclaration.prunedDirNames.has(name);
515
+ };
516
+ /** Real (non-symlink, non-pruned) child directories of `dir`. */
517
+ WorkspaceDeclaration.childDirs = function (dir) {
518
+ return __awaiter(this, void 0, void 0, function () {
519
+ var dirents, _a;
520
+ return __generator(this, function (_b) {
521
+ switch (_b.label) {
522
+ case 0:
523
+ _b.trys.push([0, 2, , 3]);
524
+ return [4 /*yield*/, fs.readdir(dir, { withFileTypes: true })];
525
+ case 1:
526
+ dirents = _b.sent();
527
+ return [3 /*break*/, 3];
528
+ case 2:
529
+ _a = _b.sent();
530
+ return [2 /*return*/, []];
531
+ case 3: return [2 /*return*/, dirents
532
+ .filter(function (dirent) { return dirent.isDirectory() && !WorkspaceDeclaration.isPrunedDirName(dirent.name); })
533
+ .map(function (dirent) { return path.join(dir, dirent.name); })
534
+ .sort()];
535
+ }
536
+ });
537
+ });
538
+ };
539
+ WorkspaceDeclaration.isRealDir = function (p) {
540
+ return __awaiter(this, void 0, void 0, function () {
541
+ var _a;
542
+ return __generator(this, function (_b) {
543
+ switch (_b.label) {
544
+ case 0:
545
+ _b.trys.push([0, 2, , 3]);
546
+ return [4 /*yield*/, fs.lstat(p)];
547
+ case 1: return [2 /*return*/, (_b.sent()).isDirectory()];
548
+ case 2:
549
+ _a = _b.sent();
550
+ return [2 /*return*/, false];
551
+ case 3: return [2 /*return*/];
552
+ }
553
+ });
554
+ });
555
+ };
556
+ WorkspaceDeclaration.exists = function (p) {
557
+ return __awaiter(this, void 0, void 0, function () {
558
+ var _a;
559
+ return __generator(this, function (_b) {
560
+ switch (_b.label) {
561
+ case 0:
562
+ _b.trys.push([0, 2, , 3]);
563
+ return [4 /*yield*/, fs.access(p)];
564
+ case 1:
565
+ _b.sent();
566
+ return [2 /*return*/, true];
567
+ case 2:
568
+ _a = _b.sent();
569
+ return [2 /*return*/, false];
570
+ case 3: return [2 /*return*/];
571
+ }
572
+ });
573
+ });
574
+ };
575
+ WorkspaceDeclaration.readJsonIfExists = function (p) {
576
+ return __awaiter(this, void 0, void 0, function () {
577
+ var text, _a;
578
+ return __generator(this, function (_b) {
579
+ switch (_b.label) {
580
+ case 0:
581
+ _b.trys.push([0, 2, , 3]);
582
+ return [4 /*yield*/, fs.readFile(p, 'utf8')];
583
+ case 1:
584
+ text = _b.sent();
585
+ return [3 /*break*/, 3];
586
+ case 2:
587
+ _a = _b.sent();
588
+ return [2 /*return*/, undefined];
589
+ case 3:
590
+ try {
591
+ return [2 /*return*/, JSON.parse(text)];
592
+ }
593
+ catch (error) {
594
+ throw new WorkspaceDeclarationError("".concat(p, " is not valid JSON: ").concat(error instanceof Error ? error.message : String(error)));
595
+ }
596
+ return [2 /*return*/];
597
+ }
598
+ });
599
+ });
600
+ };
601
+ /** Root package.json field naming extra member globs beside lerna's `packages`. */
602
+ WorkspaceDeclaration.EXTRA_PACKAGES_FIELD = 'workspacePackages';
603
+ WorkspaceDeclaration.lernaDefaultPackages = ['packages/*'];
604
+ WorkspaceDeclaration.prunedDirNames = new Set(['node_modules', 'dist']);
605
+ return WorkspaceDeclaration;
606
+ }());
607
+ exports.WorkspaceDeclaration = WorkspaceDeclaration;
608
+ //# sourceMappingURL=WorkspaceDeclaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceDeclaration.js","sourceRoot":"","sources":["../../src/WorkspaceDeclaration.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA6B;AAC7B,8CAAkC;AAElC,mFAAmF;AACnF;IAA+C,6CAAK;IAClD,mCAAY,OAAe;QAA3B,YACE,kBAAM,OAAO,CAAC,SAGf;QAFC,KAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,6DAA6D;;IACjI,CAAC;IACH,gCAAC;AAAD,CAAC,AAND,CAA+C,KAAK,GAMnD;AANY,8DAAyB;AAwBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH;IAAA;IAyRA,CAAC;IAnRC,sFAAsF;IACzE,6BAAQ,GAArB,UAAsB,OAAe;;;;;;wBAC7B,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;wBAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBACf,qBAAM,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;wBAAnD,WAAW,GAAG,SAAqC;6BACrD,WAAW,EAAX,wBAAW;wBACb,qBAAM,oBAAoB,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAA;;wBAA/D,SAA+D,CAAC;;4BAEhE,qBAAM,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAA;;wBAA7C,SAA6C,CAAC;;;wBAE1C,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;4BACtD,OAAA,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAA9D,CAA8D,CAC/D,CAAC;wBACF,oBAAoB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;wBAC5D,sBAAO,UAAU,EAAC;;;;KACnB;IAED,oFAAoF;IACvE,yBAAI,GAAjB,UAAkB,GAAW;;;;;;wBACrB,QAAQ,GAA4B,EAAE,CAAC;wBACvC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;wBAC7B,qBAAM,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAA;;wBAAlE,SAAS,GAAG,SAAsD;wBACxE,IAAI,SAAS,EAAE;4BACP,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;gCAChD,CAAC,CAAC,SAAS,CAAC,QAAQ;gCACpB,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC;4BAC9C,WAA8B,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ,EAAE;gCAArB,OAAO;gCAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;6BACvG;yBACF;wBACK,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;wBACnC,qBAAM,oBAAoB,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAA;;wBAA1E,WAAW,GAAG,SAA4D;wBAC1E,KAAK,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;wBACvE,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gCACzB,MAAM,IAAI,yBAAyB,CACjC,UAAG,eAAe,iBAAM,oBAAoB,CAAC,oBAAoB,yCAAqC,CACvG,CAAC;6BACH;4BACD,WAA2B,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;gCAAlB,OAAO;gCAChB,QAAQ,CAAC,IAAI,CAAC;oCACZ,OAAO,EAAE,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC;oCACrE,MAAM,EAAE,eAAe;iCACxB,CAAC,CAAC;6BACJ;yBACF;wBACD,sBAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC,CAAC,SAAS,EAAC;;;;KACrE;IAED,gGAAgG;IAC3E,qCAAgB,GAArC,UAAsC,WAAwB,EAAE,KAAqC;;;;;;wBAC7F,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;wBACvD,qBAAM,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAA;;6BAAtC,SAAsC,EAAtC,wBAAsC;wBACxC,qBAAM,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAA;;wBAAtF,SAAsF,CAAC;;;8BAEnC,EAApB,KAAA,WAAW,CAAC,QAAQ;;;6BAApB,CAAA,cAAoB,CAAA;wBAA3C,WAAmB,EAAjB,OAAO,aAAA,EAAE,MAAM,YAAA;8BACqE;wBAAvE,qBAAM,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAA;;wBAAvE,KAAA,SAAuE;;;6BAAvE,CAAA,cAAuE,CAAA;wBAApF,SAAS;wBACH,qBAAM,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAA;;wBAAnD,MAAM,GAAG,SAA0C;6BACrD,MAAM,EAAN,wBAAM;wBACR,qBAAM,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAA;;wBAA1D,SAA0D,CAAC,CAAC,iCAAiC;;4BAE7F,qBAAM,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAA;;wBAA/F,SAA+F,CAAC;;;wBAL5E,IAAuE,CAAA;;;wBAD/D,IAAoB,CAAA;;;;;;KAUvD;IAED;;;;;OAKG;IACkB,0BAAK,GAA1B,UAA2B,OAAe,EAAE,KAAqC;;;;;;wBACzE,OAAO,GAAa,CAAC,OAAO,CAAC,CAAC;;;6BAC7B,CAAA,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;wBACjB,UAAU,GAAG,OAAO,CAAC,GAAG,EAAG,CAAC;8BACwC;wBAArD,qBAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAA;;wBAArD,KAAA,SAAqD;;;6BAArD,CAAA,cAAqD,CAAA;wBAA/D,MAAM;wBACT,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;6BACjD,MAAM,CAAC,WAAW,EAAE,EAApB,wBAAoB;wBACtB,IAAI,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;4BACrD,yBAAS;yBACV;wBACmB,qBAAM,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAA;;wBAAxD,WAAW,GAAG,SAA0C;6BAC1D,WAAW,EAAX,wBAAW;wBACb,qBAAM,oBAAoB,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAA;;wBAA/D,SAA+D,CAAC;;;wBAEhE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;;;6BAEjB,CAAA,MAAM,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAA,EAAjD,yBAAiD;wBAC1D,qBAAM,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAA;;wBAA3D,SAA2D,CAAC;;;wBAb3C,IAAqD,CAAA;;;;;;;KAiB7E;IAED;;;;;;OAMG;IACkB,2BAAM,GAA3B,UAA4B,OAAe,EAAE,OAAe,EAAE,MAAc;;;;;;wBACpE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAC,OAAO,IAAK,OAAA,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG,EAArC,CAAqC,CAAC,CAAC;6BAC3F,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,OAAO,IAAK,OAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAArB,CAAqB,CAAC,EAAlD,wBAAkD;wBAC9C,GAAG,GAAG,IAAI,CAAC,IAAI,OAAT,IAAI,iBAAM,OAAO,GAAK,QAAQ,SAAC,CAAC;wBACtC,qBAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAA;;wBAAvE,IAAI,CAAC,CAAC,SAAiE,CAAC,EAAE;4BACxE,MAAM,IAAI,yBAAyB,CACjC,UAAG,MAAM,yBAAc,OAAO,oBAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,sGAA8F,CACpK,CAAC;yBACH;wBACD,sBAAO,CAAC,GAAG,CAAC,EAAC;;wBAET,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;wBAClC,qBAAM,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAA;;wBAAvE,SAAuE,CAAC;wBACxE,sBAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAC;;;;KACnC;IAEoB,kCAAa,GAAlC,UAAmC,GAAW,EAAE,QAAkB,EAAE,KAAa,EAAE,OAAoB;;;;;;6BACjG,CAAA,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAA,EAAzB,wBAAyB;wBACvB,qBAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAA;;wBAArE,IAAI,SAAiE,EAAE;4BACrE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;yBAClB;wBACD,sBAAO;;wBAEH,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC1B,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;6BAC1C,CAAA,OAAO,KAAK,IAAI,CAAA,EAAhB,yBAAgB;wBAClB,qBAAM,oBAAoB,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,EAAA;;wBAA3E,SAA2E,CAAC,CAAC,mBAAmB;8BACnC;wBAAzC,qBAAM,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAA;;wBAAzC,KAAA,SAAyC;;;6BAAzC,CAAA,cAAyC,CAAA;wBAAlD,KAAK;wBACV,qBAAM,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAA;;wBAA1C,IAAI,SAAsC,EAAE;4BAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,oEAAoE;4BACxF,wBAAS;yBACV;wBACD,qBAAM,oBAAoB,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EAAA;;wBAAzE,SAAyE,CAAC,CAAC,8BAA8B;;;wBALvF,IAAyC,CAAA;;4BAO7D,sBAAO;;6BAEQ,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAArB,yBAAqB;wBACjC,qBAAM,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAA;;wBAA1C,KAAA,CAAC,SAAyC,CAAC,CAAC,MAAM,CAAC,UAAC,KAAK;4BACvD,OAAA,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAAvE,CAAuE,CACxE,CAAA;;6BACA,qBAAM,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAAA;;wBAA9D,KAAA,CAAC,SAA6D,CAAC;4BAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;4BAC3B,CAAC,CAAC,EAAE,CAAA;;;wBANF,QAAQ,KAMN;8BACoB,EAAR,qBAAQ;;;6BAAR,CAAA,sBAAQ,CAAA;wBAAjB,KAAK;wBACV,KAAA,SAAS,GAAG,CAAC,CAAA;iCAAb,yBAAa;wBAAK,qBAAM,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAA;;wBAAvC,KAAA,CAAC,SAAsC,CAAC,CAAA;;;wBAA7D,QAA+D;4BAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACnB,yBAAS;yBACV;wBACD,qBAAM,oBAAoB,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,EAAA;;wBAA7E,SAA6E,CAAC;;;wBAL5D,IAAQ,CAAA;;;;;;KAO7B;IAED,yGAAyG;IAC1F,+CAA0B,GAAzC,UAA0C,UAA+B;;QACvE,IAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAA5B,CAA4B,CAAC,CAAC;QACrE,IAAM,WAAW,GAAG,UAAC,KAAwB;YAC3C,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YACvD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAtB,CAAsB,CAAC,CAAC;QACpD,CAAC,CAAC;QACF,IAAM,MAAM,GAAG,IAAI,GAAG,EAA+B,CAAC;QACtD,KAAoB,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU,EAAE;YAA3B,IAAM,KAAK,mBAAA;YACd,IAAM,MAAI,GAAG,MAAA,KAAK,CAAC,WAAW,0CAAE,IAAI,CAAC;YACrC,IAAI,OAAO,MAAI,KAAK,QAAQ,IAAI,MAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjD,SAAS;aACV;YACD,MAAM,CAAC,GAAG,CAAC,MAAI,EAAE,CAAC,MAAA,MAAM,CAAC,GAAG,CAAC,MAAI,CAAC,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC1D;QACD,IAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAA8B,UAA4B,EAA5B,KAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAA5B,cAA4B,EAA5B,IAA4B,EAAE;YAAjD,IAAA,WAAe,EAAd,MAAI,QAAA,EAAE,OAAO,QAAA;YACvB,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,WAAW,CAAC,KAAK,CAAC,EAAnB,CAAmB,CAAC,CAAC;YAC9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,SAAS;aACV;YACD,UAAU,CAAC,IAAI,CACb,YAAI,MAAI,uBAAmB;gBACzB,MAAM;qBACH,GAAG,CACF,UAAC,KAAK;oBACJ,OAAA,cAAO,KAAK,CAAC,QAAQ,eAAK,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,sBAAe,KAAK,CAAC,UAAU,CAAE,CAAC,CAAC,CAAC,mCAAmC,MAAG;gBAAlI,CAAkI,CACrI;qBACA,IAAI,CAAC,IAAI,CAAC,CAChB,CAAC;SACH;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,yBAAyB,CACjC,wIAA4H,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2FAAwF,CAC1O,CAAC;SACH;IACH,CAAC;IAEoB,wBAAG,GAAxB,UACE,KAAqC,EACrC,QAAgB,EAChB,MAAmC,EACnC,UAAmB;;;;;;wBAEnB,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;4BACvB,sBAAO;yBACR;wBACmB,KAAA,CAAA,KAAA,IAAI,CAAA,CAAC,KAAK,CAAA;wBAAC,qBAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAA;;wBAA5D,WAAW,GAAG,cAAW,SAAmC,EAAC;wBACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,aAAI,QAAQ,UAAA,EAAE,WAAW,aAAA,EAAE,MAAM,QAAA,IAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC;;;;;KAC/F;IAEc,kCAAa,GAA5B,UAA6B,OAAgB,EAAE,MAAc;QAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9D,MAAM,IAAI,yBAAyB,CACjC,UAAG,MAAM,+DAAqD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAE,CACxF,CAAC;SACH;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACjE,MAAM,IAAI,yBAAyB,CACjC,UAAG,MAAM,iCAAsB,OAAO,uDAAmD,CAC1F,CAAC;SACH;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEc,mCAAc,GAA7B,UAA8B,OAAe;QAC3C,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtF,OAAO,IAAI,MAAM,CAAC,WAAI,OAAO,MAAG,CAAC,CAAC;IACpC,CAAC;IAEc,oCAAe,GAA9B,UAA+B,IAAY;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,iEAAiE;IAC5C,8BAAS,GAA9B,UAA+B,GAAW;;;;;;;wBAG5B,qBAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAA;;wBAAxD,OAAO,GAAG,SAA8C,CAAC;;;;wBAEzD,sBAAO,EAAE,EAAC;4BAEZ,sBAAO,OAAO;6BACX,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAA1E,CAA0E,CAAC;6BAC9F,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAA3B,CAA2B,CAAC;6BAC5C,IAAI,EAAE,EAAC;;;;KACX;IAEoB,8BAAS,GAA9B,UAA+B,CAAS;;;;;;;wBAE5B,qBAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;4BAAzB,sBAAO,CAAC,SAAiB,CAAC,CAAC,WAAW,EAAE,EAAC;;;wBAEzC,sBAAO,KAAK,EAAC;;;;;KAEhB;IAEoB,2BAAM,GAA3B,UAA4B,CAAS;;;;;;;wBAEjC,qBAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAA;;wBAAlB,SAAkB,CAAC;wBACnB,sBAAO,IAAI,EAAC;;;wBAEZ,sBAAO,KAAK,EAAC;;;;;KAEhB;IAEoB,qCAAgB,GAArC,UAAsC,CAAS;;;;;;;wBAGpC,qBAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAA;;wBAAnC,IAAI,GAAG,SAA4B,CAAC;;;;wBAEpC,sBAAO,SAAS,EAAC;;wBAEnB,IAAI;4BACF,sBAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;yBACzB;wBAAC,OAAO,KAAK,EAAE;4BACd,MAAM,IAAI,yBAAyB,CACjC,UAAG,CAAC,iCAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,CACpF,CAAC;yBACH;;;;;KACF;IAvRD,mFAAmF;IACnE,yCAAoB,GAAG,mBAAmB,CAAC;IACnC,yCAAoB,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,mCAAc,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAqR7E,2BAAC;CAAA,AAzRD,IAyRC;AAzRY,oDAAoB"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import * as fsNative from 'fs';
3
2
  export declare const promisifiedFs: {
4
3
  exists: typeof fsNative.exists.__promisify__;
@@ -6,3 +6,4 @@ export * from './src/PackageUtil';
6
6
  export * from './src/GitUtil';
7
7
  export * from './src/ArgsMap';
8
8
  export * from './src/LogColorWrapper';
9
+ export * from './src/WorkspaceDeclaration';