@proteinjs/reflection-build 1.4.12 → 2.0.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/CHANGELOG.md +45 -0
- package/dist/src/BuildContract.d.ts +69 -0
- package/dist/src/BuildContract.js +393 -0
- package/dist/src/BuildContract.js.map +1 -0
- package/dist/src/ReflectionDoctor.d.ts +95 -0
- package/dist/src/ReflectionDoctor.js +588 -0
- package/dist/src/ReflectionDoctor.js.map +1 -0
- package/dist/src/build.d.ts +5 -1
- package/dist/src/build.js +13 -77
- package/dist/src/build.js.map +1 -1
- package/dist/src/codegen/writeGeneratedIndex.d.ts +25 -0
- package/dist/src/codegen/writeGeneratedIndex.js +89 -13
- package/dist/src/codegen/writeGeneratedIndex.js.map +1 -1
- package/dist/src/parser/createGraphBuilder.js +30 -5
- package/dist/src/parser/createGraphBuilder.js.map +1 -1
- package/dist/src/runBuild.js +12 -2
- package/dist/src/runBuild.js.map +1 -1
- package/dist/src/runDoctor.d.ts +2 -0
- package/dist/src/runDoctor.js +83 -0
- package/dist/src/runDoctor.js.map +1 -0
- package/dist/test/DependencySourceGraphGate.test.d.ts +1 -0
- package/dist/test/DependencySourceGraphGate.test.js +78 -0
- package/dist/test/DependencySourceGraphGate.test.js.map +1 -0
- package/dist/test/GraphEmitRelativePaths.test.d.ts +1 -0
- package/dist/test/GraphEmitRelativePaths.test.js +162 -0
- package/dist/test/GraphEmitRelativePaths.test.js.map +1 -0
- package/dist/test/ReflectionDoctor.test.d.ts +1 -0
- package/dist/test/ReflectionDoctor.test.js +316 -0
- package/dist/test/ReflectionDoctor.test.js.map +1 -0
- package/dist/test/TestSubpathContract.test.d.ts +1 -0
- package/dist/test/TestSubpathContract.test.js +260 -0
- package/dist/test/TestSubpathContract.test.js.map +1 -0
- package/dist/test/ValidateDontMutate.test.d.ts +1 -0
- package/dist/test/ValidateDontMutate.test.js +238 -0
- package/dist/test/ValidateDontMutate.test.js.map +1 -0
- package/dist/test/examples/source-repository/a/generated/index.d.ts +0 -8
- package/dist/test/examples/source-repository/a/generated/index.js +1 -9
- package/dist/test/examples/source-repository/a/generated/index.js.map +1 -1
- package/dist/test/examples/source-repository/b/generated/index.d.ts +0 -8
- package/dist/test/examples/source-repository/b/generated/index.js +1 -9
- package/dist/test/examples/source-repository/b/generated/index.js.map +1 -1
- package/package.json +5 -4
- package/src/BuildContract.ts +384 -0
- package/src/ReflectionDoctor.ts +589 -0
- package/src/build.ts +19 -56
- package/src/codegen/writeGeneratedIndex.ts +80 -9
- package/src/parser/createGraphBuilder.ts +9 -4
- package/src/runBuild.ts +7 -1
- package/src/runDoctor.ts +34 -0
- package/test/DependencySourceGraphGate.test.ts +61 -0
- package/test/GraphEmitRelativePaths.test.ts +95 -0
- package/test/ReflectionDoctor.test.ts +193 -0
- package/test/TestSubpathContract.test.ts +148 -0
- package/test/ValidateDontMutate.test.ts +126 -0
- package/test/examples/source-repository/a/dist/BuildContract.d.ts +69 -0
- package/test/examples/source-repository/a/dist/BuildContract.js +393 -0
- package/test/examples/source-repository/a/dist/BuildContract.js.map +1 -0
- package/test/examples/source-repository/a/dist/build.d.ts +5 -1
- package/test/examples/source-repository/a/dist/build.js +13 -77
- package/test/examples/source-repository/a/dist/build.js.map +1 -1
- package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.d.ts +25 -0
- package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.js +89 -13
- package/test/examples/source-repository/a/dist/codegen/writeGeneratedIndex.js.map +1 -1
- package/test/examples/source-repository/a/dist/generated/index.d.ts +0 -8
- package/test/examples/source-repository/a/dist/generated/index.js +1 -9
- package/test/examples/source-repository/a/dist/generated/index.js.map +1 -1
- package/test/examples/source-repository/a/dist/parser/createGraphBuilder.js +30 -5
- package/test/examples/source-repository/a/dist/parser/createGraphBuilder.js.map +1 -1
- package/test/examples/source-repository/a/dist/runBuild.js +12 -2
- package/test/examples/source-repository/a/dist/runBuild.js.map +1 -1
- package/test/examples/source-repository/a/generated/index.ts +1 -9
- package/test/examples/source-repository/b/dist/BuildContract.d.ts +69 -0
- package/test/examples/source-repository/b/dist/BuildContract.js +393 -0
- package/test/examples/source-repository/b/dist/BuildContract.js.map +1 -0
- package/test/examples/source-repository/b/dist/build.d.ts +5 -1
- package/test/examples/source-repository/b/dist/build.js +13 -77
- package/test/examples/source-repository/b/dist/build.js.map +1 -1
- package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.d.ts +25 -0
- package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.js +89 -13
- package/test/examples/source-repository/b/dist/codegen/writeGeneratedIndex.js.map +1 -1
- package/test/examples/source-repository/b/dist/generated/index.d.ts +0 -8
- package/test/examples/source-repository/b/dist/generated/index.js +1 -9
- package/test/examples/source-repository/b/dist/generated/index.js.map +1 -1
- package/test/examples/source-repository/b/dist/parser/createGraphBuilder.js +30 -5
- package/test/examples/source-repository/b/dist/parser/createGraphBuilder.js.map +1 -1
- package/test/examples/source-repository/b/dist/runBuild.js +12 -2
- package/test/examples/source-repository/b/dist/runBuild.js.map +1 -1
- package/test/examples/source-repository/b/generated/index.ts +1 -10
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
"use strict";
|
|
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]; } };
|
|
7
|
+
}
|
|
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;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
+
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;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.ReflectionDoctor = void 0;
|
|
66
|
+
var fs = __importStar(require("fs"));
|
|
67
|
+
var path = __importStar(require("path"));
|
|
68
|
+
var globby_1 = __importDefault(require("globby"));
|
|
69
|
+
var typescript_parser_1 = require("../modules/typescript-parser");
|
|
70
|
+
var writeGeneratedIndex_1 = require("./codegen/writeGeneratedIndex");
|
|
71
|
+
var LOADABLE_QUALIFIED_NAME = '@proteinjs/reflection/Loadable';
|
|
72
|
+
var SOURCE_REPOSITORY_FILTER_QUALIFIED_NAME = '@proteinjs/reflection/SourceRepositoryFilter';
|
|
73
|
+
/**
|
|
74
|
+
* reflection-doctor (task #104 §3.1): purely analytical diagnostics for a reflection-built
|
|
75
|
+
* package, run from the package dir. Executes NO dependency code — its own graph and every
|
|
76
|
+
* dependency graph are harvested statically from `dist/generated/index.js` artifacts (the
|
|
77
|
+
* same upward node_modules walk the build's import gate uses, transitively, mirroring what
|
|
78
|
+
* the runtime would merge).
|
|
79
|
+
*
|
|
80
|
+
* - `diagnose()` prints the registered inventory (deps with graphs / without / skip-listed),
|
|
81
|
+
* this package's node+edge+sourceLink counts, emitted-vs-source drift (stale dist), and
|
|
82
|
+
* ORPHANS: nodes the build kept because a parent is foreign, whose parent's package
|
|
83
|
+
* resolves to no loadable graph — the undeclared-dep / typo footgun that the runtime
|
|
84
|
+
* silently prunes today.
|
|
85
|
+
* - `explain(name)` prints the parent-edge resolution trace for one declaration — how (or
|
|
86
|
+
* why not) it becomes Loadable — naming the broken hop and its cause.
|
|
87
|
+
*/
|
|
88
|
+
var ReflectionDoctor = /** @class */ (function () {
|
|
89
|
+
function ReflectionDoctor(packageDir, options) {
|
|
90
|
+
if (options === void 0) { options = {}; }
|
|
91
|
+
this.packageDir = packageDir;
|
|
92
|
+
this.skipList = options.skipList || [];
|
|
93
|
+
}
|
|
94
|
+
ReflectionDoctor.prototype.diagnose = function () {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
96
|
+
var packageJson, universe, own, dependencies, drift, orphans, sourceLinkCount, healthy, report;
|
|
97
|
+
return __generator(this, function (_a) {
|
|
98
|
+
switch (_a.label) {
|
|
99
|
+
case 0:
|
|
100
|
+
packageJson = this.readPackageJson(this.packageDir);
|
|
101
|
+
universe = this.harvestUniverse(packageJson);
|
|
102
|
+
own = universe.graphs[packageJson.name];
|
|
103
|
+
dependencies = this.dependencyInventory(packageJson);
|
|
104
|
+
return [4 /*yield*/, this.computeDrift(packageJson, own.graph)];
|
|
105
|
+
case 1:
|
|
106
|
+
drift = _a.sent();
|
|
107
|
+
orphans = this.findOrphans(packageJson, universe);
|
|
108
|
+
sourceLinkCount = this.parseSourceLinkKeys(fs.readFileSync(own.artifactPath, 'utf-8')).length;
|
|
109
|
+
healthy = orphans.length === 0 && drift.missingFromDist.length === 0 && drift.onlyInDist.length === 0;
|
|
110
|
+
report = {
|
|
111
|
+
text: '',
|
|
112
|
+
healthy: healthy,
|
|
113
|
+
dependencies: dependencies,
|
|
114
|
+
nodeCount: own.graph.nodes.length,
|
|
115
|
+
edgeCount: own.graph.edges.length,
|
|
116
|
+
sourceLinkCount: sourceLinkCount,
|
|
117
|
+
drift: drift,
|
|
118
|
+
orphans: orphans,
|
|
119
|
+
};
|
|
120
|
+
report.text = this.formatReport(packageJson.name, own.artifactPath, report);
|
|
121
|
+
return [2 /*return*/, report];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
ReflectionDoctor.prototype.explain = function (nameOrQualifiedName) {
|
|
127
|
+
var _a;
|
|
128
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
129
|
+
var packageJson, universe, qualifiedName, node, lines, kind, filePath, outcome, verdict, linkWarning;
|
|
130
|
+
return __generator(this, function (_b) {
|
|
131
|
+
switch (_b.label) {
|
|
132
|
+
case 0:
|
|
133
|
+
packageJson = this.readPackageJson(this.packageDir);
|
|
134
|
+
universe = this.harvestUniverse(packageJson);
|
|
135
|
+
qualifiedName = this.resolveTarget(nameOrQualifiedName, packageJson.name, universe);
|
|
136
|
+
if (!!qualifiedName) return [3 /*break*/, 2];
|
|
137
|
+
return [4 /*yield*/, this.explainNotFound(nameOrQualifiedName, packageJson)];
|
|
138
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
139
|
+
case 2:
|
|
140
|
+
node = this.findValuedNode(qualifiedName, universe);
|
|
141
|
+
lines = [];
|
|
142
|
+
kind = this.describeKind(node === null || node === void 0 ? void 0 : node.value);
|
|
143
|
+
filePath = ((_a = node === null || node === void 0 ? void 0 : node.value) === null || _a === void 0 ? void 0 : _a.filePath) ? ", ".concat(node.value.filePath) : '';
|
|
144
|
+
lines.push("".concat(qualifiedName, " (").concat(kind).concat(filePath, ")"));
|
|
145
|
+
outcome = this.trace(qualifiedName, universe, lines, '', {});
|
|
146
|
+
if (outcome.loadableVia) {
|
|
147
|
+
verdict = "VERDICT: Loadable \u2014 returned by objects('".concat(outcome.loadableVia, "')");
|
|
148
|
+
linkWarning = this.checkSourceLink(qualifiedName, node, packageJson.name, universe);
|
|
149
|
+
if (linkWarning) {
|
|
150
|
+
verdict += "\n".concat(linkWarning);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (outcome.brokenHop) {
|
|
154
|
+
verdict = "VERDICT: NOT Loadable \u2014 broken hop: ".concat(outcome.brokenHop);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
verdict =
|
|
158
|
+
"VERDICT: NOT Loadable \u2014 no parent chain reaches ".concat(LOADABLE_QUALIFIED_NAME, ". ") +
|
|
159
|
+
"Every parent resolved; this type simply is not Loadable (the runtime prunes it, by design).";
|
|
160
|
+
}
|
|
161
|
+
lines.push(verdict);
|
|
162
|
+
return [2 /*return*/, { text: lines.join('\n'), verdict: verdict }];
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Recursive parent-edge trace. Returns the first Loadable-reaching direct parent (for the
|
|
169
|
+
* objects() verdict) and the first broken hop encountered, if any.
|
|
170
|
+
*/
|
|
171
|
+
ReflectionDoctor.prototype.trace = function (qualifiedName, universe, lines, indent, visited, depth) {
|
|
172
|
+
var _a;
|
|
173
|
+
if (depth === void 0) { depth = 0; }
|
|
174
|
+
if (visited[qualifiedName]) {
|
|
175
|
+
return {};
|
|
176
|
+
}
|
|
177
|
+
visited[qualifiedName] = true;
|
|
178
|
+
var owningPackage = universe.valued[qualifiedName];
|
|
179
|
+
var graph = (_a = universe.graphs[owningPackage]) === null || _a === void 0 ? void 0 : _a.graph;
|
|
180
|
+
if (!graph) {
|
|
181
|
+
return {};
|
|
182
|
+
}
|
|
183
|
+
var outEdges = graph.edges.filter(function (edge) { return edge.v === qualifiedName; });
|
|
184
|
+
var loadableVia;
|
|
185
|
+
var brokenHop;
|
|
186
|
+
for (var _i = 0, outEdges_1 = outEdges; _i < outEdges_1.length; _i++) {
|
|
187
|
+
var edge = outEdges_1[_i];
|
|
188
|
+
var relationship = edge.value || 'extends';
|
|
189
|
+
var parent_1 = edge.w;
|
|
190
|
+
if (parent_1 === LOADABLE_QUALIFIED_NAME || parent_1 === SOURCE_REPOSITORY_FILTER_QUALIFIED_NAME) {
|
|
191
|
+
lines.push("".concat(indent, "\u2514\u2500 ").concat(relationship, " ").concat(parent_1, " [OK]"));
|
|
192
|
+
loadableVia = loadableVia || (depth === 0 ? parent_1 : qualifiedName);
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
var parentPackage = parent_1.substring(0, parent_1.lastIndexOf('/'));
|
|
196
|
+
if (universe.valued[parent_1]) {
|
|
197
|
+
lines.push("".concat(indent, "\u2514\u2500 ").concat(relationship, " ").concat(parent_1, " [edge OK]"));
|
|
198
|
+
if (parentPackage !== owningPackage) {
|
|
199
|
+
var artifactPath = universe.graphs[parentPackage].artifactPath;
|
|
200
|
+
lines.push("".concat(indent, " \u2514\u2500 graph ").concat(parentPackage, ": LOADED (").concat(path.relative(this.packageDir, artifactPath), ")"));
|
|
201
|
+
}
|
|
202
|
+
var parentOutcome = this.trace(parent_1, universe, lines, "".concat(indent, " "), visited, depth + 1);
|
|
203
|
+
if (parentOutcome.loadableVia) {
|
|
204
|
+
loadableVia = loadableVia || (depth === 0 ? parent_1 : qualifiedName);
|
|
205
|
+
}
|
|
206
|
+
brokenHop = brokenHop || parentOutcome.brokenHop;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
// Unresolved parent — name the broken hop.
|
|
210
|
+
var cause = this.classifyUnresolvedParent(parent_1, parentPackage, owningPackage, universe);
|
|
211
|
+
lines.push("".concat(indent, "\u2514\u2500 ").concat(relationship, " ").concat(parent_1, " [BROKEN]"));
|
|
212
|
+
lines.push("".concat(indent, " \u2514\u2500 ").concat(cause.detail));
|
|
213
|
+
brokenHop = brokenHop || "".concat(parent_1, " \u2014 ").concat(cause.summary);
|
|
214
|
+
}
|
|
215
|
+
return { loadableVia: loadableVia, brokenHop: brokenHop };
|
|
216
|
+
};
|
|
217
|
+
ReflectionDoctor.prototype.classifyUnresolvedParent = function (parent, parentPackage, owningPackage, universe) {
|
|
218
|
+
if (!this.isResolvableQualifiedName(parent)) {
|
|
219
|
+
var summary = 'inline type expression captured as a parent — never graph-resolvable (hierarchy edges to inline types carry no package); harmless unless this was meant to be a named type';
|
|
220
|
+
return { summary: summary, detail: summary };
|
|
221
|
+
}
|
|
222
|
+
if (!parentPackage) {
|
|
223
|
+
var summary = 'global-scope parent (no package) — not resolvable in any graph';
|
|
224
|
+
return { summary: summary, detail: summary };
|
|
225
|
+
}
|
|
226
|
+
if (universe.graphs[parentPackage]) {
|
|
227
|
+
var summary = "".concat(parentPackage, "'s graph is loaded but does not declare it \u2014 not Loadable there ") +
|
|
228
|
+
"(pruned at its build), not exported, or ".concat(parentPackage, "'s dist is stale; rebuild ").concat(parentPackage);
|
|
229
|
+
return { summary: summary, detail: "graph ".concat(parentPackage, ": LOADED, declaration not found \u2014 ").concat(summary) };
|
|
230
|
+
}
|
|
231
|
+
var cause = this.classifyPackage(parentPackage, this.readPackageJson(this.packageDir));
|
|
232
|
+
return { summary: cause, detail: "graph ".concat(parentPackage, ": NOT LOADED \u2014 ").concat(cause) };
|
|
233
|
+
};
|
|
234
|
+
/** Why a package contributes no graph, from the consuming package's point of view. */
|
|
235
|
+
ReflectionDoctor.prototype.classifyPackage = function (packageName, packageJson) {
|
|
236
|
+
if (this.skipList.includes(packageName)) {
|
|
237
|
+
return "skip-listed via SKIP_REFLECTION_LOAD";
|
|
238
|
+
}
|
|
239
|
+
var declared = !!(packageJson.dependencies && packageJson.dependencies[packageName]);
|
|
240
|
+
if (!declared) {
|
|
241
|
+
return "".concat(packageName, " is not a declared dependency of ").concat(packageJson.name, " \u2014 undeclared dep or typo (an undeclared workspace package resolves to a stale registry copy at install time)");
|
|
242
|
+
}
|
|
243
|
+
var dependencyDir = (0, writeGeneratedIndex_1.findDependencyDir)(this.packageDir, packageName);
|
|
244
|
+
if (!dependencyDir) {
|
|
245
|
+
return "".concat(packageName, " is declared but not installed");
|
|
246
|
+
}
|
|
247
|
+
return "".concat(packageName, " is installed but not reflection-built (no dist/generated/index.js)");
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* Orphans: nodes this package's build kept (foreign parent ⇒ benefit of the doubt), whose
|
|
251
|
+
* parent's package contributes NO graph at runtime — the runtime will silently prune them.
|
|
252
|
+
* Parents living in loaded graphs that simply aren't Loadable are not orphans (that pruning
|
|
253
|
+
* is by design); `explain` covers those.
|
|
254
|
+
*/
|
|
255
|
+
ReflectionDoctor.prototype.findOrphans = function (packageJson, universe) {
|
|
256
|
+
var own = universe.graphs[packageJson.name].graph;
|
|
257
|
+
var orphans = [];
|
|
258
|
+
for (var _i = 0, _a = own.edges; _i < _a.length; _i++) {
|
|
259
|
+
var edge = _a[_i];
|
|
260
|
+
var child = edge.v;
|
|
261
|
+
var parent_2 = edge.w;
|
|
262
|
+
if (!universe.valued[child] || universe.valued[child] !== packageJson.name) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
if (universe.valued[parent_2]) {
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
if (parent_2 === LOADABLE_QUALIFIED_NAME || parent_2 === SOURCE_REPOSITORY_FILTER_QUALIFIED_NAME) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
if (!this.isResolvableQualifiedName(parent_2)) {
|
|
272
|
+
// Inline type expression captured as a parent name (e.g. a union literal with a doc
|
|
273
|
+
// comment). Never graph-resolvable by design — not an orphan signal.
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
var parentPackage = parent_2.substring(0, parent_2.lastIndexOf('/'));
|
|
277
|
+
if (!parentPackage || parentPackage === packageJson.name || universe.graphs[parentPackage]) {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
orphans.push({
|
|
281
|
+
qualifiedName: child,
|
|
282
|
+
unresolvedParent: parent_2,
|
|
283
|
+
cause: this.classifyPackage(parentPackage, packageJson),
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return orphans;
|
|
287
|
+
};
|
|
288
|
+
/** Emitted-vs-source drift: rebuild-needed detection for the prod graph. */
|
|
289
|
+
ReflectionDoctor.prototype.computeDrift = function (packageJson, emittedGraph) {
|
|
290
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
291
|
+
var freshGraph, freshValued, _i, _a, nodeName, emittedValued, _b, _c, node;
|
|
292
|
+
return __generator(this, function (_d) {
|
|
293
|
+
switch (_d.label) {
|
|
294
|
+
case 0: return [4 /*yield*/, (0, writeGeneratedIndex_1.createEmittedSourceGraph)(this.packageDir, ['src'])];
|
|
295
|
+
case 1:
|
|
296
|
+
freshGraph = _d.sent();
|
|
297
|
+
freshValued = {};
|
|
298
|
+
for (_i = 0, _a = freshGraph.nodes(); _i < _a.length; _i++) {
|
|
299
|
+
nodeName = _a[_i];
|
|
300
|
+
if (freshGraph.node(nodeName)) {
|
|
301
|
+
freshValued[nodeName] = true;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
emittedValued = {};
|
|
305
|
+
for (_b = 0, _c = emittedGraph.nodes; _b < _c.length; _b++) {
|
|
306
|
+
node = _c[_b];
|
|
307
|
+
if (node.value) {
|
|
308
|
+
emittedValued[node.v] = true;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return [2 /*return*/, {
|
|
312
|
+
missingFromDist: Object.keys(freshValued).filter(function (qualifiedName) { return !emittedValued[qualifiedName]; }),
|
|
313
|
+
onlyInDist: Object.keys(emittedValued).filter(function (qualifiedName) { return !freshValued[qualifiedName]; }),
|
|
314
|
+
}];
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* Statically harvest this package's graph and, transitively, every reflection-built
|
|
321
|
+
* dependency's graph — the same set the runtime merges.
|
|
322
|
+
*/
|
|
323
|
+
ReflectionDoctor.prototype.harvestUniverse = function (packageJson) {
|
|
324
|
+
var _a;
|
|
325
|
+
var _this = this;
|
|
326
|
+
var universe = { graphs: {}, valued: {} };
|
|
327
|
+
var ownArtifactPath = path.join(this.packageDir, 'dist', 'generated', 'index.js');
|
|
328
|
+
if (!fs.existsSync(ownArtifactPath)) {
|
|
329
|
+
throw new Error("reflection-doctor: no reflection artifact at ".concat(path.relative(process.cwd(), ownArtifactPath) || '.', " \u2014 ") +
|
|
330
|
+
"run the package build (reflection-build && tsc) first.");
|
|
331
|
+
}
|
|
332
|
+
this.addToUniverse(universe, packageJson.name, ownArtifactPath);
|
|
333
|
+
var pending = this.dependencyNames(packageJson).map(function (packageName) { return ({ fromDir: _this.packageDir, packageName: packageName }); });
|
|
334
|
+
var seen = (_a = {}, _a[packageJson.name] = true, _a);
|
|
335
|
+
while (pending.length > 0) {
|
|
336
|
+
var _b = pending.shift(), fromDir = _b.fromDir, packageName = _b.packageName;
|
|
337
|
+
if (seen[packageName] || this.skipList.includes(packageName)) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
seen[packageName] = true;
|
|
341
|
+
var artifactPath = (0, writeGeneratedIndex_1.findDependencySourceGraph)(fromDir, packageName);
|
|
342
|
+
if (!artifactPath) {
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
this.addToUniverse(universe, packageName, artifactPath);
|
|
346
|
+
var dependencyDir = path.dirname(path.dirname(path.dirname(artifactPath)));
|
|
347
|
+
var dependencyPackageJson = this.readPackageJson(dependencyDir);
|
|
348
|
+
for (var _i = 0, _c = this.dependencyNames(dependencyPackageJson); _i < _c.length; _i++) {
|
|
349
|
+
var transitive = _c[_i];
|
|
350
|
+
pending.push({ fromDir: dependencyDir, packageName: transitive });
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return universe;
|
|
354
|
+
};
|
|
355
|
+
ReflectionDoctor.prototype.addToUniverse = function (universe, packageName, artifactPath) {
|
|
356
|
+
var graph = this.parseArtifactGraph(artifactPath);
|
|
357
|
+
universe.graphs[packageName] = { graph: graph, artifactPath: artifactPath };
|
|
358
|
+
for (var _i = 0, _a = graph.nodes; _i < _a.length; _i++) {
|
|
359
|
+
var node = _a[_i];
|
|
360
|
+
if (node.value && !universe.valued[node.v]) {
|
|
361
|
+
universe.valued[node.v] = packageName;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
/** Extract the serialized graph from a generated index without executing it. */
|
|
366
|
+
ReflectionDoctor.prototype.parseArtifactGraph = function (artifactPath) {
|
|
367
|
+
var artifact = fs.readFileSync(artifactPath, 'utf-8');
|
|
368
|
+
var literalMatch = artifact.match(/sourceGraph = ("(?:[^"\\]|\\.)*");/);
|
|
369
|
+
if (!literalMatch) {
|
|
370
|
+
throw new Error("reflection-doctor: ".concat(artifactPath, " does not contain a serialized sourceGraph"));
|
|
371
|
+
}
|
|
372
|
+
// Same read the runtime performs: the JSON string literal, unescaped once, then parsed.
|
|
373
|
+
return JSON.parse(JSON.parse(literalMatch[1]).replace(/\\'/g, "'"));
|
|
374
|
+
};
|
|
375
|
+
ReflectionDoctor.prototype.parseSourceLinkKeys = function (artifact) {
|
|
376
|
+
var blockMatch = artifact.match(/sourceLinks = \{([\s\S]*?)\};/);
|
|
377
|
+
if (!blockMatch) {
|
|
378
|
+
return [];
|
|
379
|
+
}
|
|
380
|
+
var keys = [];
|
|
381
|
+
var keyPattern = /'([^']+)':/g;
|
|
382
|
+
var match;
|
|
383
|
+
while ((match = keyPattern.exec(blockMatch[1])) !== null) {
|
|
384
|
+
keys.push(match[1]);
|
|
385
|
+
}
|
|
386
|
+
return keys;
|
|
387
|
+
};
|
|
388
|
+
ReflectionDoctor.prototype.dependencyInventory = function (packageJson) {
|
|
389
|
+
var loaded = [];
|
|
390
|
+
var withoutGraph = [];
|
|
391
|
+
var skipped = [];
|
|
392
|
+
for (var _i = 0, _a = this.dependencyNames(packageJson); _i < _a.length; _i++) {
|
|
393
|
+
var packageName = _a[_i];
|
|
394
|
+
if (this.skipList.includes(packageName)) {
|
|
395
|
+
skipped.push(packageName);
|
|
396
|
+
}
|
|
397
|
+
else if ((0, writeGeneratedIndex_1.findDependencySourceGraph)(this.packageDir, packageName)) {
|
|
398
|
+
loaded.push(packageName);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
withoutGraph.push(packageName);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return { loaded: loaded, withoutGraph: withoutGraph, skipped: skipped };
|
|
405
|
+
};
|
|
406
|
+
ReflectionDoctor.prototype.resolveTarget = function (nameOrQualifiedName, ownPackageName, universe) {
|
|
407
|
+
if (universe.valued[nameOrQualifiedName]) {
|
|
408
|
+
return nameOrQualifiedName;
|
|
409
|
+
}
|
|
410
|
+
// Bare name: prefer this package's declaration, then any package's.
|
|
411
|
+
var ownMatch = "".concat(ownPackageName, "/").concat(nameOrQualifiedName);
|
|
412
|
+
if (universe.valued[ownMatch]) {
|
|
413
|
+
return ownMatch;
|
|
414
|
+
}
|
|
415
|
+
var suffix = "/".concat(nameOrQualifiedName);
|
|
416
|
+
return Object.keys(universe.valued).find(function (qualifiedName) { return qualifiedName.endsWith(suffix); });
|
|
417
|
+
};
|
|
418
|
+
/** The declaration is in no harvested graph — diagnose why from this package's sources. */
|
|
419
|
+
ReflectionDoctor.prototype.explainNotFound = function (nameOrQualifiedName, packageJson) {
|
|
420
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
421
|
+
var name, freshGraph, freshMatch, verdict_1, declaration, verdict_2, verdict;
|
|
422
|
+
return __generator(this, function (_a) {
|
|
423
|
+
switch (_a.label) {
|
|
424
|
+
case 0:
|
|
425
|
+
name = nameOrQualifiedName.includes('/')
|
|
426
|
+
? nameOrQualifiedName.substring(nameOrQualifiedName.lastIndexOf('/') + 1)
|
|
427
|
+
: nameOrQualifiedName;
|
|
428
|
+
return [4 /*yield*/, (0, writeGeneratedIndex_1.createEmittedSourceGraph)(this.packageDir, ['src'])];
|
|
429
|
+
case 1:
|
|
430
|
+
freshGraph = _a.sent();
|
|
431
|
+
freshMatch = freshGraph
|
|
432
|
+
.nodes()
|
|
433
|
+
.find(function (qualifiedName) { return freshGraph.node(qualifiedName) && qualifiedName.endsWith("/".concat(name)); });
|
|
434
|
+
if (freshMatch) {
|
|
435
|
+
verdict_1 = "VERDICT: NOT in the built artifact \u2014 ".concat(freshMatch, " is in current sources but not in ") +
|
|
436
|
+
"dist/generated (stale dist); rebuild this package (reflection-build && tsc).";
|
|
437
|
+
return [2 /*return*/, { text: verdict_1, verdict: verdict_1 }];
|
|
438
|
+
}
|
|
439
|
+
return [4 /*yield*/, this.findDeclarationInSources(name)];
|
|
440
|
+
case 2:
|
|
441
|
+
declaration = _a.sent();
|
|
442
|
+
if (declaration && !declaration.isExported) {
|
|
443
|
+
verdict_2 = "VERDICT: NOT in the graph \u2014 ".concat(name, " is declared in ").concat(declaration.filePath, " but not exported; ") +
|
|
444
|
+
"the parser only registers exported declarations. Export it to make it graph-visible.";
|
|
445
|
+
return [2 /*return*/, { text: verdict_2, verdict: verdict_2 }];
|
|
446
|
+
}
|
|
447
|
+
verdict = "VERDICT: NOT FOUND \u2014 no declaration named '".concat(name, "' in ").concat(packageJson.name, "'s scanned sources (src) ") +
|
|
448
|
+
"or any loaded dependency graph. Check the spelling, or whether it lives outside the scanned source roots.";
|
|
449
|
+
return [2 /*return*/, { text: verdict, verdict: verdict }];
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
});
|
|
453
|
+
};
|
|
454
|
+
/** Raw parser pass over src — sees non-exported declarations the graph never contains. */
|
|
455
|
+
ReflectionDoctor.prototype.findDeclarationInSources = function (name) {
|
|
456
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
457
|
+
var patterns, sourceFilePaths, parser, _i, sourceFilePaths_1, sourceFilePath, parsedFile, _a, _b, declaration;
|
|
458
|
+
return __generator(this, function (_c) {
|
|
459
|
+
switch (_c.label) {
|
|
460
|
+
case 0:
|
|
461
|
+
patterns = [
|
|
462
|
+
path.join(this.packageDir, 'src', '**/*.ts'),
|
|
463
|
+
path.join(this.packageDir, 'src', '**/*.tsx'),
|
|
464
|
+
'!**/node_modules/**',
|
|
465
|
+
'!**/generated/**',
|
|
466
|
+
];
|
|
467
|
+
return [4 /*yield*/, (0, globby_1.default)(patterns)];
|
|
468
|
+
case 1:
|
|
469
|
+
sourceFilePaths = _c.sent();
|
|
470
|
+
parser = new typescript_parser_1.TypescriptParser();
|
|
471
|
+
_i = 0, sourceFilePaths_1 = sourceFilePaths;
|
|
472
|
+
_c.label = 2;
|
|
473
|
+
case 2:
|
|
474
|
+
if (!(_i < sourceFilePaths_1.length)) return [3 /*break*/, 5];
|
|
475
|
+
sourceFilePath = sourceFilePaths_1[_i];
|
|
476
|
+
return [4 /*yield*/, parser.parseFile(sourceFilePath, path.dirname(sourceFilePath))];
|
|
477
|
+
case 3:
|
|
478
|
+
parsedFile = _c.sent();
|
|
479
|
+
for (_a = 0, _b = parsedFile.declarations; _a < _b.length; _a++) {
|
|
480
|
+
declaration = _b[_a];
|
|
481
|
+
if (declaration.name === name) {
|
|
482
|
+
return [2 /*return*/, {
|
|
483
|
+
filePath: path.relative(this.packageDir, sourceFilePath),
|
|
484
|
+
isExported: !!declaration.isExported,
|
|
485
|
+
}];
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
_c.label = 4;
|
|
489
|
+
case 4:
|
|
490
|
+
_i++;
|
|
491
|
+
return [3 /*break*/, 2];
|
|
492
|
+
case 5: return [2 /*return*/, undefined];
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
});
|
|
496
|
+
};
|
|
497
|
+
ReflectionDoctor.prototype.checkSourceLink = function (qualifiedName, node, ownPackageName, universe) {
|
|
498
|
+
var _a, _b;
|
|
499
|
+
// Only concrete classes/variables of the examined package are instantiated via links.
|
|
500
|
+
if (universe.valued[qualifiedName] !== ownPackageName) {
|
|
501
|
+
return undefined;
|
|
502
|
+
}
|
|
503
|
+
var sourceType = (_a = node === null || node === void 0 ? void 0 : node.value) === null || _a === void 0 ? void 0 : _a.sourceType;
|
|
504
|
+
var isClass = sourceType === 2;
|
|
505
|
+
var isVariable = sourceType === 0;
|
|
506
|
+
if (!isClass && !isVariable) {
|
|
507
|
+
return undefined;
|
|
508
|
+
}
|
|
509
|
+
if (isClass && ((_b = node === null || node === void 0 ? void 0 : node.value) === null || _b === void 0 ? void 0 : _b.isAbstract)) {
|
|
510
|
+
return undefined;
|
|
511
|
+
}
|
|
512
|
+
var artifact = fs.readFileSync(universe.graphs[ownPackageName].artifactPath, 'utf-8');
|
|
513
|
+
if (this.parseSourceLinkKeys(artifact).includes(qualifiedName)) {
|
|
514
|
+
return undefined;
|
|
515
|
+
}
|
|
516
|
+
return ("WARNING: Loadable but has no sourceLink in the artifact \u2014 objects() cannot instantiate it. " +
|
|
517
|
+
"The dist/generated artifact is stale; rebuild this package.");
|
|
518
|
+
};
|
|
519
|
+
ReflectionDoctor.prototype.findValuedNode = function (qualifiedName, universe) {
|
|
520
|
+
var owningPackage = universe.valued[qualifiedName];
|
|
521
|
+
if (!owningPackage) {
|
|
522
|
+
return undefined;
|
|
523
|
+
}
|
|
524
|
+
return universe.graphs[owningPackage].graph.nodes.find(function (node) { return node.v === qualifiedName; });
|
|
525
|
+
};
|
|
526
|
+
ReflectionDoctor.prototype.describeKind = function (value) {
|
|
527
|
+
var kinds = ['variable', 'type alias', 'class', 'interface'];
|
|
528
|
+
return (typeof (value === null || value === void 0 ? void 0 : value.sourceType) === 'number' && kinds[value.sourceType]) || 'declaration';
|
|
529
|
+
};
|
|
530
|
+
ReflectionDoctor.prototype.formatReport = function (packageName, artifactPath, report) {
|
|
531
|
+
var lines = [];
|
|
532
|
+
lines.push("reflection-doctor: ".concat(packageName));
|
|
533
|
+
lines.push('');
|
|
534
|
+
lines.push("Dependency graphs:");
|
|
535
|
+
lines.push(" loaded (".concat(report.dependencies.loaded.length, "): ").concat(report.dependencies.loaded.join(', ') || '—'));
|
|
536
|
+
lines.push(" no graph (".concat(report.dependencies.withoutGraph.length, "): ").concat(report.dependencies.withoutGraph.join(', ') || '—', " [not reflection-built \u2014 normal for non-reflection deps]"));
|
|
537
|
+
if (report.dependencies.skipped.length > 0) {
|
|
538
|
+
lines.push(" skip-listed (".concat(report.dependencies.skipped.length, "): ").concat(report.dependencies.skipped.join(', '), " [SKIP_REFLECTION_LOAD]"));
|
|
539
|
+
}
|
|
540
|
+
lines.push('');
|
|
541
|
+
lines.push("This package's graph: ".concat(path.relative(this.packageDir, artifactPath), " \u2014 ") +
|
|
542
|
+
"".concat(report.nodeCount, " nodes, ").concat(report.edgeCount, " edges, ").concat(report.sourceLinkCount, " source links"));
|
|
543
|
+
if (report.drift.missingFromDist.length === 0 && report.drift.onlyInDist.length === 0) {
|
|
544
|
+
lines.push("Drift vs sources: in sync");
|
|
545
|
+
}
|
|
546
|
+
else {
|
|
547
|
+
lines.push("Drift vs sources: STALE dist/generated \u2014 rebuild this package (reflection-build && tsc)");
|
|
548
|
+
for (var _i = 0, _a = report.drift.missingFromDist; _i < _a.length; _i++) {
|
|
549
|
+
var qualifiedName = _a[_i];
|
|
550
|
+
lines.push(" in sources, not in artifact: ".concat(qualifiedName));
|
|
551
|
+
}
|
|
552
|
+
for (var _b = 0, _c = report.drift.onlyInDist; _b < _c.length; _b++) {
|
|
553
|
+
var qualifiedName = _c[_b];
|
|
554
|
+
lines.push(" in artifact, not in sources: ".concat(qualifiedName));
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
lines.push('');
|
|
558
|
+
if (report.orphans.length === 0) {
|
|
559
|
+
lines.push("Orphans: none \u2014 every foreign parent resolves in a loaded graph");
|
|
560
|
+
}
|
|
561
|
+
else {
|
|
562
|
+
lines.push("Orphans (kept at build, silently pruned at runtime \u2014 parent resolves in NO loaded graph):");
|
|
563
|
+
for (var _d = 0, _e = report.orphans; _d < _e.length; _d++) {
|
|
564
|
+
var orphan = _e[_d];
|
|
565
|
+
lines.push(" ".concat(orphan.qualifiedName, " -> ").concat(orphan.unresolvedParent));
|
|
566
|
+
lines.push(" ".concat(orphan.cause));
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
return lines.join('\n');
|
|
570
|
+
};
|
|
571
|
+
/** True for shapes a qualified name can take; inline type expressions (unions, literals, comments) fail this. */
|
|
572
|
+
ReflectionDoctor.prototype.isResolvableQualifiedName = function (qualifiedName) {
|
|
573
|
+
return !/[\s{}|()<>&'"]/.test(qualifiedName);
|
|
574
|
+
};
|
|
575
|
+
ReflectionDoctor.prototype.dependencyNames = function (packageJson) {
|
|
576
|
+
return Object.keys(packageJson.dependencies || {});
|
|
577
|
+
};
|
|
578
|
+
ReflectionDoctor.prototype.readPackageJson = function (dir) {
|
|
579
|
+
var packageJsonPath = path.join(dir, 'package.json');
|
|
580
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
581
|
+
throw new Error("Unable to find package.json in dir: ".concat(dir));
|
|
582
|
+
}
|
|
583
|
+
return JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
584
|
+
};
|
|
585
|
+
return ReflectionDoctor;
|
|
586
|
+
}());
|
|
587
|
+
exports.ReflectionDoctor = ReflectionDoctor;
|
|
588
|
+
//# sourceMappingURL=ReflectionDoctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReflectionDoctor.js","sourceRoot":"","sources":["../../src/ReflectionDoctor.ts"],"names":[],"mappings":"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"}
|
package/dist/src/build.d.ts
CHANGED
|
@@ -1 +1,5 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface BuildOptions {
|
|
2
|
+
/** Write conflicting package config to the contract instead of failing (reflection-build --fix) */
|
|
3
|
+
fix?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function build(options?: BuildOptions): Promise<void>;
|