@ricsam/r5d-worker 0.0.74 → 0.0.76
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/README.md +6 -4
- package/dist/cjs/main.cjs +1031 -976
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/project-workspace-state.cjs +777 -0
- package/dist/cjs/project-worktrees.cjs +559 -0
- package/dist/cjs/working-tree-mirror.cjs +225 -0
- package/dist/cjs/workspace-git-sync.cjs +565 -0
- package/dist/cjs/workspace-incident-state.cjs +2 -38
- package/dist/mjs/main.mjs +1048 -987
- package/dist/mjs/package.json +1 -1
- package/dist/mjs/project-workspace-state.mjs +745 -0
- package/dist/mjs/project-worktrees.mjs +513 -0
- package/dist/mjs/working-tree-mirror.mjs +190 -0
- package/dist/mjs/workspace-git-sync.mjs +524 -0
- package/dist/mjs/workspace-incident-state.mjs +1 -35
- package/dist/types/main.d.ts +35 -55
- package/dist/types/project-workspace-state.d.ts +144 -0
- package/dist/types/project-worktrees.d.ts +112 -0
- package/dist/types/working-tree-mirror.d.ts +24 -0
- package/dist/types/workspace-git-sync.d.ts +97 -0
- package/dist/types/workspace-incident-state.d.ts +0 -17
- package/dist/types/workspace-mutation-gate.d.ts +3 -3
- package/package.json +1 -1
- package/dist/cjs/workspace-convergence.cjs +0 -280
- package/dist/cjs/workspace-manifest-admission.cjs +0 -60
- package/dist/cjs/workspace-sync.cjs +0 -2469
- package/dist/mjs/workspace-convergence.mjs +0 -236
- package/dist/mjs/workspace-manifest-admission.mjs +0 -26
- package/dist/mjs/workspace-sync.mjs +0 -2417
- package/dist/types/workspace-convergence.d.ts +0 -93
- package/dist/types/workspace-manifest-admission.d.ts +0 -22
- package/dist/types/workspace-sync.d.ts +0 -167
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var workspace_convergence_exports = {};
|
|
30
|
-
__export(workspace_convergence_exports, {
|
|
31
|
-
ExplicitWorkspacePublicationQueue: () => ExplicitWorkspacePublicationQueue,
|
|
32
|
-
WORKSPACE_IDLE_SAFETY_SCAN_MS: () => WORKSPACE_IDLE_SAFETY_SCAN_MS,
|
|
33
|
-
WORKSPACE_PUBLICATION_QUIET_MS: () => WORKSPACE_PUBLICATION_QUIET_MS,
|
|
34
|
-
WorkspaceConvergenceState: () => WorkspaceConvergenceState,
|
|
35
|
-
WorkspaceManifestRevisionFence: () => WorkspaceManifestRevisionFence,
|
|
36
|
-
processWorkspaceConvergenceState: () => processWorkspaceConvergenceState,
|
|
37
|
-
readWorkspaceConvergenceState: () => readWorkspaceConvergenceState,
|
|
38
|
-
waitForWorkspacePublicationOnShutdown: () => waitForWorkspacePublicationOnShutdown,
|
|
39
|
-
workspaceBootstrapEstablishesVisibleBaseline: () => workspaceBootstrapEstablishesVisibleBaseline,
|
|
40
|
-
workspacePublicationIncidentAction: () => workspacePublicationIncidentAction,
|
|
41
|
-
workspacePublicationTelemetry: () => workspacePublicationTelemetry
|
|
42
|
-
});
|
|
43
|
-
module.exports = __toCommonJS(workspace_convergence_exports);
|
|
44
|
-
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
45
|
-
var import_node_path = __toESM(require("node:path"), 1);
|
|
46
|
-
const WORKSPACE_PUBLICATION_QUIET_MS = 5e3;
|
|
47
|
-
const WORKSPACE_IDLE_SAFETY_SCAN_MS = 6e4;
|
|
48
|
-
const WORKSPACE_MANIFEST_REVISION_PATTERN = /^[0-9a-f]{64}$/;
|
|
49
|
-
class WorkspaceManifestRevisionFence {
|
|
50
|
-
sequence = 0;
|
|
51
|
-
requestedRevision = null;
|
|
52
|
-
completedRevision = null;
|
|
53
|
-
begin(revision) {
|
|
54
|
-
if (!WORKSPACE_MANIFEST_REVISION_PATTERN.test(revision)) {
|
|
55
|
-
throw new Error("Workspace manifest revision must be a lowercase SHA-256 hash");
|
|
56
|
-
}
|
|
57
|
-
this.sequence += 1;
|
|
58
|
-
this.requestedRevision = revision;
|
|
59
|
-
this.completedRevision = null;
|
|
60
|
-
return { sequence: this.sequence, revision };
|
|
61
|
-
}
|
|
62
|
-
isCurrent(token) {
|
|
63
|
-
return token.sequence === this.sequence && token.revision === this.requestedRevision;
|
|
64
|
-
}
|
|
65
|
-
complete(token) {
|
|
66
|
-
if (!this.isCurrent(token)) return false;
|
|
67
|
-
this.completedRevision = token.revision;
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
readyRevision() {
|
|
71
|
-
return this.completedRevision === this.requestedRevision ? this.completedRevision : null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
function workspacePublicationTelemetry(input) {
|
|
75
|
-
return {
|
|
76
|
-
totalMs: Math.max(0, input.finishedAt - input.requestedAt),
|
|
77
|
-
queueMs: Math.max(0, input.prepareStartedAt - input.requestedAt),
|
|
78
|
-
prepareMs: Math.max(0, input.synchronizeStartedAt - input.prepareStartedAt),
|
|
79
|
-
synchronizeMs: Math.max(0, input.finishedAt - input.synchronizeStartedAt)
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
function workspacePublicationIncidentAction(requestId) {
|
|
83
|
-
return requestId ? "request_terminal_authority" : "defer_automatic";
|
|
84
|
-
}
|
|
85
|
-
class ExplicitWorkspacePublicationQueue {
|
|
86
|
-
scheduled;
|
|
87
|
-
queued = [];
|
|
88
|
-
schedule(publication, pendingRequestId) {
|
|
89
|
-
if (pendingRequestId === publication.requestId || this.scheduled?.requestId === publication.requestId || this.queued.some((queued) => queued.requestId === publication.requestId)) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
if (pendingRequestId || this.scheduled) {
|
|
93
|
-
this.queued.push(publication);
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
this.scheduled = publication;
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
hasScheduled() {
|
|
100
|
-
return this.scheduled !== void 0;
|
|
101
|
-
}
|
|
102
|
-
consumeScheduled(requestId) {
|
|
103
|
-
if (this.scheduled?.requestId === requestId) this.scheduled = void 0;
|
|
104
|
-
}
|
|
105
|
-
enqueue(publication, pendingRequestId) {
|
|
106
|
-
if (pendingRequestId === publication.requestId || this.scheduled?.requestId === publication.requestId || this.queued.some((queued) => queued.requestId === publication.requestId)) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
this.queued.push(publication);
|
|
110
|
-
}
|
|
111
|
-
next() {
|
|
112
|
-
return this.queued.shift();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
const EMPTY_STATE = {
|
|
116
|
-
localHead: null,
|
|
117
|
-
visibleBaselineHead: null,
|
|
118
|
-
desiredCanonicalHead: null,
|
|
119
|
-
dirtyGeneration: 0,
|
|
120
|
-
publishedGeneration: 0
|
|
121
|
-
};
|
|
122
|
-
function validHead(value) {
|
|
123
|
-
return value === null || typeof value === "string" && /^[0-9a-f]{40,64}$/.test(value);
|
|
124
|
-
}
|
|
125
|
-
function validGeneration(value) {
|
|
126
|
-
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
127
|
-
}
|
|
128
|
-
function readWorkspaceConvergenceState(statePath) {
|
|
129
|
-
try {
|
|
130
|
-
const parsed = JSON.parse(import_node_fs.default.readFileSync(statePath, "utf8"));
|
|
131
|
-
if (!validHead(parsed.localHead) || !(parsed.visibleBaselineHead === void 0 || validHead(parsed.visibleBaselineHead)) || !validHead(parsed.desiredCanonicalHead) || !validGeneration(parsed.dirtyGeneration) || !validGeneration(parsed.publishedGeneration) || parsed.publishedGeneration > parsed.dirtyGeneration) {
|
|
132
|
-
return { ...EMPTY_STATE };
|
|
133
|
-
}
|
|
134
|
-
return {
|
|
135
|
-
localHead: parsed.localHead,
|
|
136
|
-
visibleBaselineHead: parsed.visibleBaselineHead === void 0 ? parsed.localHead : parsed.visibleBaselineHead,
|
|
137
|
-
desiredCanonicalHead: parsed.desiredCanonicalHead,
|
|
138
|
-
dirtyGeneration: parsed.dirtyGeneration,
|
|
139
|
-
publishedGeneration: parsed.publishedGeneration
|
|
140
|
-
};
|
|
141
|
-
} catch {
|
|
142
|
-
return { ...EMPTY_STATE };
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
class WorkspaceConvergenceState {
|
|
146
|
-
constructor(statePath) {
|
|
147
|
-
this.statePath = statePath;
|
|
148
|
-
this.state = readWorkspaceConvergenceState(statePath);
|
|
149
|
-
this.publicationState = this.state.dirtyGeneration > this.state.publishedGeneration ? "scheduled" : "idle";
|
|
150
|
-
}
|
|
151
|
-
statePath;
|
|
152
|
-
state;
|
|
153
|
-
publicationState;
|
|
154
|
-
snapshot() {
|
|
155
|
-
return {
|
|
156
|
-
localHead: this.state.localHead,
|
|
157
|
-
desiredCanonicalHead: this.state.desiredCanonicalHead,
|
|
158
|
-
dirtyGeneration: this.state.dirtyGeneration,
|
|
159
|
-
publishedGeneration: this.state.publishedGeneration,
|
|
160
|
-
publicationState: this.publicationState
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
visibleBaselineHead() {
|
|
164
|
-
return this.state.visibleBaselineHead;
|
|
165
|
-
}
|
|
166
|
-
setLocalHead(localHead) {
|
|
167
|
-
if (!validHead(localHead)) throw new Error("Invalid local workspace head");
|
|
168
|
-
this.state.localHead = localHead;
|
|
169
|
-
this.state.visibleBaselineHead = localHead;
|
|
170
|
-
this.persist();
|
|
171
|
-
}
|
|
172
|
-
setVisibleBaselineHead(visibleBaselineHead) {
|
|
173
|
-
if (!validHead(visibleBaselineHead)) throw new Error("Invalid visible workspace baseline head");
|
|
174
|
-
this.state.visibleBaselineHead = visibleBaselineHead;
|
|
175
|
-
this.persist();
|
|
176
|
-
}
|
|
177
|
-
observeCanonicalHead(canonicalHead) {
|
|
178
|
-
if (!validHead(canonicalHead)) throw new Error("Invalid canonical workspace head");
|
|
179
|
-
if (this.state.desiredCanonicalHead === canonicalHead) return false;
|
|
180
|
-
this.state.desiredCanonicalHead = canonicalHead;
|
|
181
|
-
this.persist();
|
|
182
|
-
return true;
|
|
183
|
-
}
|
|
184
|
-
markDirty() {
|
|
185
|
-
this.state.dirtyGeneration += 1;
|
|
186
|
-
if (this.publicationState === "idle") this.publicationState = "scheduled";
|
|
187
|
-
this.persist();
|
|
188
|
-
return this.state.dirtyGeneration;
|
|
189
|
-
}
|
|
190
|
-
schedule() {
|
|
191
|
-
if (this.publicationState === "idle") this.publicationState = "scheduled";
|
|
192
|
-
}
|
|
193
|
-
beginPreparing() {
|
|
194
|
-
if (this.publicationState === "preparing" || this.publicationState === "submitting") {
|
|
195
|
-
throw new Error("A workspace publication is already in flight");
|
|
196
|
-
}
|
|
197
|
-
this.publicationState = "preparing";
|
|
198
|
-
}
|
|
199
|
-
beginSubmitting() {
|
|
200
|
-
if (this.publicationState !== "preparing") throw new Error("Workspace publication authority was not prepared");
|
|
201
|
-
this.publicationState = "submitting";
|
|
202
|
-
}
|
|
203
|
-
defer() {
|
|
204
|
-
this.publicationState = "scheduled";
|
|
205
|
-
}
|
|
206
|
-
block() {
|
|
207
|
-
this.publicationState = "blocked";
|
|
208
|
-
}
|
|
209
|
-
releaseBlock() {
|
|
210
|
-
this.publicationState = this.state.dirtyGeneration > this.state.publishedGeneration ? "scheduled" : "idle";
|
|
211
|
-
}
|
|
212
|
-
observeIncidentState(blocked) {
|
|
213
|
-
if (this.publicationState === "preparing" || this.publicationState === "submitting") return;
|
|
214
|
-
if (blocked) this.block();
|
|
215
|
-
else this.releaseBlock();
|
|
216
|
-
}
|
|
217
|
-
resetTransientPublicationState() {
|
|
218
|
-
this.publicationState = this.state.dirtyGeneration > this.state.publishedGeneration ? "scheduled" : "idle";
|
|
219
|
-
}
|
|
220
|
-
complete(input) {
|
|
221
|
-
if (!validGeneration(input.generation) || input.generation > this.state.dirtyGeneration) {
|
|
222
|
-
throw new Error("Invalid completed workspace generation");
|
|
223
|
-
}
|
|
224
|
-
if (!validHead(input.canonicalHead)) throw new Error("Invalid completed canonical workspace head");
|
|
225
|
-
if (input.published) {
|
|
226
|
-
this.state.publishedGeneration = Math.max(this.state.publishedGeneration, input.generation);
|
|
227
|
-
this.state.localHead = input.canonicalHead;
|
|
228
|
-
this.state.visibleBaselineHead = input.canonicalHead;
|
|
229
|
-
this.state.desiredCanonicalHead = input.canonicalHead;
|
|
230
|
-
}
|
|
231
|
-
this.publicationState = this.state.dirtyGeneration > this.state.publishedGeneration ? "scheduled" : "idle";
|
|
232
|
-
this.persist();
|
|
233
|
-
}
|
|
234
|
-
persist() {
|
|
235
|
-
import_node_fs.default.mkdirSync(import_node_path.default.dirname(this.statePath), { recursive: true });
|
|
236
|
-
const temporaryPath = `${this.statePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
237
|
-
import_node_fs.default.writeFileSync(temporaryPath, `${JSON.stringify(this.state)}
|
|
238
|
-
`, { mode: 384 });
|
|
239
|
-
import_node_fs.default.renameSync(temporaryPath, this.statePath);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
const PROCESS_WORKSPACE_CONVERGENCE_STATES = /* @__PURE__ */ new Map();
|
|
243
|
-
function processWorkspaceConvergenceState(statePath) {
|
|
244
|
-
const key = import_node_path.default.resolve(statePath);
|
|
245
|
-
const existing = PROCESS_WORKSPACE_CONVERGENCE_STATES.get(key);
|
|
246
|
-
if (existing) return existing;
|
|
247
|
-
const created = new WorkspaceConvergenceState(key);
|
|
248
|
-
PROCESS_WORKSPACE_CONVERGENCE_STATES.set(key, created);
|
|
249
|
-
return created;
|
|
250
|
-
}
|
|
251
|
-
function workspaceBootstrapEstablishesVisibleBaseline(input) {
|
|
252
|
-
if (input.hydrated) return true;
|
|
253
|
-
return input.firstBootstrap && !input.incidentActive && input.currentLocalHead === null && input.currentVisibleBaselineHead === null;
|
|
254
|
-
}
|
|
255
|
-
async function waitForWorkspacePublicationOnShutdown(input) {
|
|
256
|
-
input.forcePublication();
|
|
257
|
-
const deadline = Date.now() + (input.timeoutMs ?? 1e4);
|
|
258
|
-
const pollMs = input.pollMs ?? 50;
|
|
259
|
-
while (Date.now() < deadline) {
|
|
260
|
-
const snapshot = input.snapshot();
|
|
261
|
-
if (snapshot.publicationState === "blocked") return "blocked";
|
|
262
|
-
if (snapshot.publicationState === "idle" && snapshot.publishedGeneration >= snapshot.dirtyGeneration) return "settled";
|
|
263
|
-
await new Promise((resolve) => setTimeout(resolve, pollMs));
|
|
264
|
-
}
|
|
265
|
-
return "timed_out";
|
|
266
|
-
}
|
|
267
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
268
|
-
0 && (module.exports = {
|
|
269
|
-
ExplicitWorkspacePublicationQueue,
|
|
270
|
-
WORKSPACE_IDLE_SAFETY_SCAN_MS,
|
|
271
|
-
WORKSPACE_PUBLICATION_QUIET_MS,
|
|
272
|
-
WorkspaceConvergenceState,
|
|
273
|
-
WorkspaceManifestRevisionFence,
|
|
274
|
-
processWorkspaceConvergenceState,
|
|
275
|
-
readWorkspaceConvergenceState,
|
|
276
|
-
waitForWorkspacePublicationOnShutdown,
|
|
277
|
-
workspaceBootstrapEstablishesVisibleBaseline,
|
|
278
|
-
workspacePublicationIncidentAction,
|
|
279
|
-
workspacePublicationTelemetry
|
|
280
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var workspace_manifest_admission_exports = {};
|
|
30
|
-
__export(workspace_manifest_admission_exports, {
|
|
31
|
-
inspectWorkspaceManifestFilesystem: () => inspectWorkspaceManifestFilesystem
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(workspace_manifest_admission_exports);
|
|
34
|
-
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
35
|
-
var import_node_path = __toESM(require("node:path"), 1);
|
|
36
|
-
var import_managed_paths = require("./managed-paths.cjs");
|
|
37
|
-
function hasNormalGitDirectory(checkoutPath) {
|
|
38
|
-
const gitPath = import_node_path.default.join(checkoutPath, ".git");
|
|
39
|
-
return import_node_fs.default.existsSync(gitPath) && import_node_fs.default.statSync(gitPath).isDirectory();
|
|
40
|
-
}
|
|
41
|
-
function inspectWorkspaceManifestFilesystem(input) {
|
|
42
|
-
const firstBootstrap = !hasNormalGitDirectory(input.workspaceShadowRoot);
|
|
43
|
-
const missingCheckouts = [];
|
|
44
|
-
for (const project of input.projects) {
|
|
45
|
-
const projectRoot = (0, import_managed_paths.managedProjectRoot)(input.projectsRoot, project.checkoutPathSegments);
|
|
46
|
-
for (const branchName of project.branches) {
|
|
47
|
-
if (!hasNormalGitDirectory(import_node_path.default.join(projectRoot, branchName))) {
|
|
48
|
-
missingCheckouts.push({ projectId: project.projectId, branchName });
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
firstBootstrap,
|
|
54
|
-
missingCheckouts
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
58
|
-
0 && (module.exports = {
|
|
59
|
-
inspectWorkspaceManifestFilesystem
|
|
60
|
-
});
|