@decohere/flux 0.0.1-dev.8 → 0.0.1-dev.80
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/commonjs/src/deferred-script-runner.js +58 -0
- package/commonjs/src/flux.command.js +29 -0
- package/commonjs/src/flux.module.js +38 -0
- package/commonjs/src/hot-reload-server.js +293 -160
- package/commonjs/src/index.js +33 -32
- package/commonjs/src/rewrite-serve-specifier.js +46 -0
- package/commonjs/src/run.action.js +71 -0
- package/commonjs/src/run.command.js +67 -0
- package/commonjs/src/serve.action.js +94 -10
- package/commonjs/src/serve.command.js +36 -4
- package/commonjs/src/slice-serve.js +132 -0
- package/commonjs/src/source-module-loader.js +216 -0
- package/es6/src/deferred-script-runner.js +48 -0
- package/es6/src/flux.command.js +19 -0
- package/es6/src/flux.module.js +28 -0
- package/es6/src/hot-reload-server.js +280 -117
- package/es6/src/index.js +6 -7
- package/es6/src/rewrite-serve-specifier.js +40 -0
- package/es6/src/run.action.js +58 -0
- package/es6/src/run.command.js +57 -0
- package/es6/src/serve.action.js +92 -10
- package/es6/src/serve.command.js +37 -5
- package/es6/src/slice-serve.js +107 -0
- package/es6/src/source-module-loader.js +160 -0
- package/package.json +8 -12
- package/types/src/deferred-script-runner.d.ts +18 -0
- package/types/src/{ember.command.d.ts → flux.command.d.ts} +1 -1
- package/types/src/flux.module.d.ts +16 -0
- package/types/src/hot-reload-server.d.ts +62 -22
- package/types/src/index.d.ts +8 -8
- package/types/src/rewrite-serve-specifier.d.ts +13 -0
- package/types/src/run.action.d.ts +17 -0
- package/types/src/run.command.d.ts +11 -0
- package/types/src/serve.action.d.ts +17 -2
- package/types/src/serve.command.d.ts +7 -2
- package/types/src/slice-serve.d.ts +52 -0
- package/types/src/source-module-loader.d.ts +49 -0
- package/commonjs/src/ember.command.js +0 -27
- package/commonjs/src/ember.module.js +0 -37
- package/commonjs/src/hot-module-hooks.js +0 -47
- package/commonjs/src/serve.js +0 -36
- package/commonjs/src/workspace-serve.action.js +0 -59
- package/es6/src/ember.command.js +0 -17
- package/es6/src/ember.module.js +0 -19
- package/es6/src/hot-module-hooks.js +0 -26
- package/es6/src/serve.js +0 -32
- package/es6/src/workspace-serve.action.js +0 -45
- package/types/src/ember.module.d.ts +0 -22
- package/types/src/hot-module-hooks.d.ts +0 -5
- package/types/src/serve.d.ts +0 -1
- package/types/src/workspace-serve.action.d.ts +0 -11
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory-slice helpers for `flux serve <dir>…` — classify Mesh packages as
|
|
3
|
+
* Flux apps, Nixpacks-style script deferrals, or libraries to skip.
|
|
4
|
+
*/ "use strict";
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
function _export(target, all) {
|
|
9
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
_export(exports, {
|
|
15
|
+
get DEFER_SCRIPT_CANDIDATES () {
|
|
16
|
+
return DEFER_SCRIPT_CANDIDATES;
|
|
17
|
+
},
|
|
18
|
+
get classifySliceProject () {
|
|
19
|
+
return classifySliceProject;
|
|
20
|
+
},
|
|
21
|
+
get classifySliceProjects () {
|
|
22
|
+
return classifySliceProjects;
|
|
23
|
+
},
|
|
24
|
+
get isFluxAppMain () {
|
|
25
|
+
return isFluxAppMain;
|
|
26
|
+
},
|
|
27
|
+
get isFluxOwnedScript () {
|
|
28
|
+
return isFluxOwnedScript;
|
|
29
|
+
},
|
|
30
|
+
get isUnderSlice () {
|
|
31
|
+
return isUnderSlice;
|
|
32
|
+
},
|
|
33
|
+
get normalizeSlicePrefix () {
|
|
34
|
+
return normalizeSlicePrefix;
|
|
35
|
+
},
|
|
36
|
+
get projectsInSlice () {
|
|
37
|
+
return projectsInSlice;
|
|
38
|
+
},
|
|
39
|
+
get projectsInSlices () {
|
|
40
|
+
return projectsInSlices;
|
|
41
|
+
},
|
|
42
|
+
get resolveDeferScript () {
|
|
43
|
+
return resolveDeferScript;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
const DEFER_SCRIPT_CANDIDATES = [
|
|
47
|
+
"dev",
|
|
48
|
+
"serve"
|
|
49
|
+
];
|
|
50
|
+
function normalizeSlicePrefix(slice) {
|
|
51
|
+
const trimmed = slice.replaceAll("\\", "/").replace(/\/+$/, "");
|
|
52
|
+
if (trimmed === "" || trimmed === ".") {
|
|
53
|
+
throw new Error("Slice directory must be a non-empty path");
|
|
54
|
+
}
|
|
55
|
+
if (trimmed === "projects" || trimmed.startsWith("projects/")) {
|
|
56
|
+
return trimmed;
|
|
57
|
+
}
|
|
58
|
+
return `projects/${trimmed}`;
|
|
59
|
+
}
|
|
60
|
+
function isUnderSlice(projectDirectory, slicePrefix) {
|
|
61
|
+
const dir = projectDirectory.replaceAll("\\", "/").replace(/\/+$/, "");
|
|
62
|
+
const prefix = slicePrefix.replaceAll("\\", "/").replace(/\/+$/, "");
|
|
63
|
+
if (dir === prefix || dir.startsWith(`${prefix}/`)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
// Flat monorepo packages: projects/<module>.<role>
|
|
67
|
+
return dir.startsWith(`${prefix}.`);
|
|
68
|
+
}
|
|
69
|
+
function projectsInSlice(projects, slice) {
|
|
70
|
+
const prefix = normalizeSlicePrefix(slice);
|
|
71
|
+
return projects.filter((p)=>isUnderSlice(p.projectDirectory, prefix));
|
|
72
|
+
}
|
|
73
|
+
function projectsInSlices(projects, slices) {
|
|
74
|
+
const byName = new Map();
|
|
75
|
+
for (const slice of slices){
|
|
76
|
+
for (const project of projectsInSlice(projects, slice)){
|
|
77
|
+
byName.set(project.name, project);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return [
|
|
81
|
+
...byName.values()
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
function isFluxOwnedScript(script) {
|
|
85
|
+
return /\bflux\b/i.test(script);
|
|
86
|
+
}
|
|
87
|
+
function resolveDeferScript(scripts) {
|
|
88
|
+
for (const name of DEFER_SCRIPT_CANDIDATES){
|
|
89
|
+
const body = scripts[name];
|
|
90
|
+
if (body != null && body !== "" && !isFluxOwnedScript(body)) {
|
|
91
|
+
return name;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
function isFluxAppMain(main) {
|
|
97
|
+
const normalized = main.replaceAll("\\", "/");
|
|
98
|
+
return /(^|\/)main\.tsx?$/.test(normalized);
|
|
99
|
+
}
|
|
100
|
+
function classifySliceProject(project) {
|
|
101
|
+
if (resolveDeferScript(project.scripts) != null) {
|
|
102
|
+
return "defer";
|
|
103
|
+
}
|
|
104
|
+
if (isFluxAppMain(project.main)) {
|
|
105
|
+
return "flux";
|
|
106
|
+
}
|
|
107
|
+
return "skip";
|
|
108
|
+
}
|
|
109
|
+
function classifySliceProjects(projects, slices) {
|
|
110
|
+
const tokens = typeof slices === "string" ? [
|
|
111
|
+
slices
|
|
112
|
+
] : [
|
|
113
|
+
...slices
|
|
114
|
+
];
|
|
115
|
+
const inSlice = projectsInSlices(projects, tokens);
|
|
116
|
+
const flux = [];
|
|
117
|
+
const defer = [];
|
|
118
|
+
const skip = [];
|
|
119
|
+
for (const project of inSlice){
|
|
120
|
+
const kind = classifySliceProject(project);
|
|
121
|
+
if (kind === "flux") flux.push(project);
|
|
122
|
+
else if (kind === "defer") defer.push(project);
|
|
123
|
+
else skip.push(project);
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
flux,
|
|
127
|
+
defer,
|
|
128
|
+
skip
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NsaWNlLXNlcnZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGlyZWN0b3J5LXNsaWNlIGhlbHBlcnMgZm9yIGBmbHV4IHNlcnZlIDxkaXI+4oCmYCDigJQgY2xhc3NpZnkgTWVzaCBwYWNrYWdlcyBhc1xuICogRmx1eCBhcHBzLCBOaXhwYWNrcy1zdHlsZSBzY3JpcHQgZGVmZXJyYWxzLCBvciBsaWJyYXJpZXMgdG8gc2tpcC5cbiAqL1xuXG5leHBvcnQgdHlwZSBTbGljZVByb2plY3RWaWV3ID0ge1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBSZWxhdGl2ZSBwcm9qZWN0IGRpciBmcm9tIHdvcmtzcGFjZSByb290IChlLmcuIGBwcm9qZWN0cy9mdW5kaW5nL2FwaWApLiAqL1xuXHRyZWFkb25seSBwcm9qZWN0RGlyZWN0b3J5OiBzdHJpbmc7XG5cdHJlYWRvbmx5IG1haW46IHN0cmluZztcblx0cmVhZG9ubHkgc2NyaXB0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn07XG5cbmV4cG9ydCB0eXBlIFNsaWNlS2luZCA9IFwiZmx1eFwiIHwgXCJkZWZlclwiIHwgXCJza2lwXCI7XG5cbmV4cG9ydCB0eXBlIENsYXNzaWZpZWRTbGljZSA9IHtcblx0cmVhZG9ubHkgZmx1eDogU2xpY2VQcm9qZWN0Vmlld1tdO1xuXHRyZWFkb25seSBkZWZlcjogU2xpY2VQcm9qZWN0Vmlld1tdO1xuXHRyZWFkb25seSBza2lwOiBTbGljZVByb2plY3RWaWV3W107XG59O1xuXG4vKiogUHJlZmVycmVkIHBhY2thZ2Ugc2NyaXB0cyBmb3IgZm9yZWlnbiB0b29sY2hhaW5zIChOaXhwYWNrcy1zdHlsZSkuICovXG5leHBvcnQgY29uc3QgREVGRVJfU0NSSVBUX0NBTkRJREFURVMgPSBbXCJkZXZcIiwgXCJzZXJ2ZVwiXSBhcyBjb25zdDtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBDTEkgc2xpY2UgdG9rZW4gdG8gYSBgcHJvamVjdHMv4oCmYCBwcmVmaXggd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoLlxuICogYGZ1bmRpbmdgIGFuZCBgcHJvamVjdHMvZnVuZGluZ2AgYm90aCBiZWNvbWUgYHByb2plY3RzL2Z1bmRpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpY2VQcmVmaXgoc2xpY2U6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHRyaW1tZWQgPSBzbGljZS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcblx0aWYgKHRyaW1tZWQgPT09IFwiXCIgfHwgdHJpbW1lZCA9PT0gXCIuXCIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJTbGljZSBkaXJlY3RvcnkgbXVzdCBiZSBhIG5vbi1lbXB0eSBwYXRoXCIpO1xuXHR9XG5cdGlmICh0cmltbWVkID09PSBcInByb2plY3RzXCIgfHwgdHJpbW1lZC5zdGFydHNXaXRoKFwicHJvamVjdHMvXCIpKSB7XG5cdFx0cmV0dXJuIHRyaW1tZWQ7XG5cdH1cblx0cmV0dXJuIGBwcm9qZWN0cy8ke3RyaW1tZWR9YDtcbn1cblxuLyoqXG4gKiBUcnVlIHdoZW4gYHByb2plY3REaXJlY3RvcnlgIGJlbG9uZ3MgdG8gdGhlIHNsaWNlIHRva2VuLlxuICpcbiAqIE1hdGNoZXM6XG4gKiAtIG5lc3RlZDogYHByb2plY3RzL2Z1bmRpbmdgLCBgcHJvamVjdHMvZnVuZGluZy9hcGlgXG4gKiAtIGZsYXQgZG90dGVkIHBhY2thZ2UgZGlyczogYHByb2plY3RzL2Z1bmRpbmcud2ViYCBmb3IgdG9rZW4gYGZ1bmRpbmdgXG4gKlxuICogRG9lcyBub3QgbWF0Y2ggc2libGluZ3MgdGhhdCBvbmx5IHNoYXJlIGEgc3RyaW5nIHByZWZpeCAoYGZ1bmRpbmdgIHZzIGBmdW5kaW5nLWZlZS5hcGlgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZXJTbGljZShwcm9qZWN0RGlyZWN0b3J5OiBzdHJpbmcsIHNsaWNlUHJlZml4OiBzdHJpbmcpOiBib29sZWFuIHtcblx0Y29uc3QgZGlyID0gcHJvamVjdERpcmVjdG9yeS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcblx0Y29uc3QgcHJlZml4ID0gc2xpY2VQcmVmaXgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG5cdGlmIChkaXIgPT09IHByZWZpeCB8fCBkaXIuc3RhcnRzV2l0aChgJHtwcmVmaXh9L2ApKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0Ly8gRmxhdCBtb25vcmVwbyBwYWNrYWdlczogcHJvamVjdHMvPG1vZHVsZT4uPHJvbGU+XG5cdHJldHVybiBkaXIuc3RhcnRzV2l0aChgJHtwcmVmaXh9LmApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdHNJblNsaWNlKFxuXHRwcm9qZWN0czogcmVhZG9ubHkgU2xpY2VQcm9qZWN0Vmlld1tdLFxuXHRzbGljZTogc3RyaW5nLFxuKTogU2xpY2VQcm9qZWN0Vmlld1tdIHtcblx0Y29uc3QgcHJlZml4ID0gbm9ybWFsaXplU2xpY2VQcmVmaXgoc2xpY2UpO1xuXHRyZXR1cm4gcHJvamVjdHMuZmlsdGVyKChwKSA9PiBpc1VuZGVyU2xpY2UocC5wcm9qZWN0RGlyZWN0b3J5LCBwcmVmaXgpKTtcbn1cblxuLyoqIFVuaW9uIG9mIHBhY2thZ2VzIHVuZGVyIGFueSBvZiB0aGUgc2xpY2UgdG9rZW5zIChkZWR1cGVkIGJ5IHBhY2thZ2UgbmFtZSkuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdHNJblNsaWNlcyhcblx0cHJvamVjdHM6IHJlYWRvbmx5IFNsaWNlUHJvamVjdFZpZXdbXSxcblx0c2xpY2VzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFNsaWNlUHJvamVjdFZpZXdbXSB7XG5cdGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBTbGljZVByb2plY3RWaWV3PigpO1xuXHRmb3IgKGNvbnN0IHNsaWNlIG9mIHNsaWNlcykge1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0c0luU2xpY2UocHJvamVjdHMsIHNsaWNlKSkge1xuXHRcdFx0YnlOYW1lLnNldChwcm9qZWN0Lm5hbWUsIHByb2plY3QpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gWy4uLmJ5TmFtZS52YWx1ZXMoKV07XG59XG5cbi8qKiBTY3JpcHQgaW52b2tlcyBGbHV4IChpbi1wcm9jZXNzIHNlcnZlIHN0YXlzIG9uIEZsdXgsIG5vdCBkZWZlcnJlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGbHV4T3duZWRTY3JpcHQoc2NyaXB0OiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIC9cXGJmbHV4XFxiL2kudGVzdChzY3JpcHQpO1xufVxuXG4vKipcbiAqIEZpcnN0IE5peHBhY2tzLXN0eWxlIHNlcnZlIHNjcmlwdCB0aGF0IGlzIG5vdCBGbHV4LW93bmVkLlxuICogUHJlZmVycyBgZGV2YCwgdGhlbiBgc2VydmVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlZmVyU2NyaXB0KHNjcmlwdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRmb3IgKGNvbnN0IG5hbWUgb2YgREVGRVJfU0NSSVBUX0NBTkRJREFURVMpIHtcblx0XHRjb25zdCBib2R5ID0gc2NyaXB0c1tuYW1lXTtcblx0XHRpZiAoYm9keSAhPSBudWxsICYmIGJvZHkgIT09IFwiXCIgJiYgIWlzRmx1eE93bmVkU2NyaXB0KGJvZHkpKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIENvbnZlbnRpb246IEZsdXggTm9kZSBhcHBzIHVzZSBgbWFpbmAgZW5kaW5nIGluIGBtYWluLnRzYCAvIGBtYWluLnRzeGAuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGbHV4QXBwTWFpbihtYWluOiBzdHJpbmcpOiBib29sZWFuIHtcblx0Y29uc3Qgbm9ybWFsaXplZCA9IG1haW4ucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuXHRyZXR1cm4gLyhefFxcLyltYWluXFwudHN4PyQvLnRlc3Qobm9ybWFsaXplZCk7XG59XG5cbi8qKlxuICogQ2xhc3NpZnkgb25lIHBhY2thZ2UuIEZvcmVpZ24gc2VydmUgc2NyaXB0cyB3aW4gb3ZlciBgbWFpbi50c2AgKFZpdGUgYXBwc1xuICogb2Z0ZW4gaGF2ZSBhIG1haW4gZW50cnkgYnV0IG11c3Qgbm90IGJlIEhNUi1ib290ZWQgYnkgRmx1eCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeVNsaWNlUHJvamVjdChwcm9qZWN0OiBTbGljZVByb2plY3RWaWV3KTogU2xpY2VLaW5kIHtcblx0aWYgKHJlc29sdmVEZWZlclNjcmlwdChwcm9qZWN0LnNjcmlwdHMpICE9IG51bGwpIHtcblx0XHRyZXR1cm4gXCJkZWZlclwiO1xuXHR9XG5cdGlmIChpc0ZsdXhBcHBNYWluKHByb2plY3QubWFpbikpIHtcblx0XHRyZXR1cm4gXCJmbHV4XCI7XG5cdH1cblx0cmV0dXJuIFwic2tpcFwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlTbGljZVByb2plY3RzKFxuXHRwcm9qZWN0czogcmVhZG9ubHkgU2xpY2VQcm9qZWN0Vmlld1tdLFxuXHRzbGljZXM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogQ2xhc3NpZmllZFNsaWNlIHtcblx0Y29uc3QgdG9rZW5zID0gdHlwZW9mIHNsaWNlcyA9PT0gXCJzdHJpbmdcIiA/IFtzbGljZXNdIDogWy4uLnNsaWNlc107XG5cdGNvbnN0IGluU2xpY2UgPSBwcm9qZWN0c0luU2xpY2VzKHByb2plY3RzLCB0b2tlbnMpO1xuXHRjb25zdCBmbHV4OiBTbGljZVByb2plY3RWaWV3W10gPSBbXTtcblx0Y29uc3QgZGVmZXI6IFNsaWNlUHJvamVjdFZpZXdbXSA9IFtdO1xuXHRjb25zdCBza2lwOiBTbGljZVByb2plY3RWaWV3W10gPSBbXTtcblx0Zm9yIChjb25zdCBwcm9qZWN0IG9mIGluU2xpY2UpIHtcblx0XHRjb25zdCBraW5kID0gY2xhc3NpZnlTbGljZVByb2plY3QocHJvamVjdCk7XG5cdFx0aWYgKGtpbmQgPT09IFwiZmx1eFwiKSBmbHV4LnB1c2gocHJvamVjdCk7XG5cdFx0ZWxzZSBpZiAoa2luZCA9PT0gXCJkZWZlclwiKSBkZWZlci5wdXNoKHByb2plY3QpO1xuXHRcdGVsc2Ugc2tpcC5wdXNoKHByb2plY3QpO1xuXHR9XG5cdHJldHVybiB7IGZsdXgsIGRlZmVyLCBza2lwIH07XG59XG4iXSwibmFtZXMiOlsiREVGRVJfU0NSSVBUX0NBTkRJREFURVMiLCJjbGFzc2lmeVNsaWNlUHJvamVjdCIsImNsYXNzaWZ5U2xpY2VQcm9qZWN0cyIsImlzRmx1eEFwcE1haW4iLCJpc0ZsdXhPd25lZFNjcmlwdCIsImlzVW5kZXJTbGljZSIsIm5vcm1hbGl6ZVNsaWNlUHJlZml4IiwicHJvamVjdHNJblNsaWNlIiwicHJvamVjdHNJblNsaWNlcyIsInJlc29sdmVEZWZlclNjcmlwdCIsInNsaWNlIiwidHJpbW1lZCIsInJlcGxhY2VBbGwiLCJyZXBsYWNlIiwiRXJyb3IiLCJzdGFydHNXaXRoIiwicHJvamVjdERpcmVjdG9yeSIsInNsaWNlUHJlZml4IiwiZGlyIiwicHJlZml4IiwicHJvamVjdHMiLCJmaWx0ZXIiLCJwIiwic2xpY2VzIiwiYnlOYW1lIiwiTWFwIiwicHJvamVjdCIsInNldCIsIm5hbWUiLCJ2YWx1ZXMiLCJzY3JpcHQiLCJ0ZXN0Iiwic2NyaXB0cyIsImJvZHkiLCJ1bmRlZmluZWQiLCJtYWluIiwibm9ybWFsaXplZCIsInRva2VucyIsImluU2xpY2UiLCJmbHV4IiwiZGVmZXIiLCJza2lwIiwia2luZCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7Ozs7Ozs7Ozs7UUFtQllBO2VBQUFBOztRQXVGR0M7ZUFBQUE7O1FBVUFD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
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "SourceModuleLoader", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return SourceModuleLoader;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodemodule = require("node:module");
|
|
12
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
13
|
+
const _decorators = require("@decohere/crucible/decorators");
|
|
14
|
+
const _forge = require("@decohere/forge");
|
|
15
|
+
const _mesh = require("@decohere/mesh");
|
|
16
|
+
const _io = require("@decohere/nexus/io");
|
|
17
|
+
const _scribe = require("@decohere/scribe");
|
|
18
|
+
const _rewriteservespecifier = require("./rewrite-serve-specifier.js");
|
|
19
|
+
function _interop_require_default(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
25
|
+
if (typeof WeakMap !== "function") return null;
|
|
26
|
+
var cacheBabelInterop = new WeakMap();
|
|
27
|
+
var cacheNodeInterop = new WeakMap();
|
|
28
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
29
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
30
|
+
})(nodeInterop);
|
|
31
|
+
}
|
|
32
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
33
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
34
|
+
return obj;
|
|
35
|
+
}
|
|
36
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
37
|
+
return {
|
|
38
|
+
default: obj
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
42
|
+
if (cache && cache.has(obj)) {
|
|
43
|
+
return cache.get(obj);
|
|
44
|
+
}
|
|
45
|
+
var newObj = {
|
|
46
|
+
__proto__: null
|
|
47
|
+
};
|
|
48
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
49
|
+
for(var key in obj){
|
|
50
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
51
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
52
|
+
if (desc && (desc.get || desc.set)) {
|
|
53
|
+
Object.defineProperty(newObj, key, desc);
|
|
54
|
+
} else {
|
|
55
|
+
newObj[key] = obj[key];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
newObj.default = obj;
|
|
60
|
+
if (cache) {
|
|
61
|
+
cache.set(obj, newObj);
|
|
62
|
+
}
|
|
63
|
+
return newObj;
|
|
64
|
+
}
|
|
65
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
66
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
67
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
68
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
69
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
70
|
+
}
|
|
71
|
+
class SourceModuleLoader {
|
|
72
|
+
logger = _scribe.scribe.logger(SourceModuleLoader.name);
|
|
73
|
+
transpiler = new _forge.SwcTranspiler();
|
|
74
|
+
disposed = false;
|
|
75
|
+
hooksRegistered = false;
|
|
76
|
+
workspace;
|
|
77
|
+
buildConfig = "debug";
|
|
78
|
+
fileInfoMap = new Map();
|
|
79
|
+
transpileCache = new Map();
|
|
80
|
+
aliasPaths = {};
|
|
81
|
+
aliasBaseUrl = _nodepath.default.resolve(".");
|
|
82
|
+
versionFileUrl = (fileUrl)=>fileUrl;
|
|
83
|
+
onResolved;
|
|
84
|
+
getWorkspace() {
|
|
85
|
+
return this.workspace;
|
|
86
|
+
}
|
|
87
|
+
getBuildConfig() {
|
|
88
|
+
return this.buildConfig;
|
|
89
|
+
}
|
|
90
|
+
hasSourceFile(absolutePath) {
|
|
91
|
+
return this.fileInfoMap.has(absolutePath);
|
|
92
|
+
}
|
|
93
|
+
sourceFilePaths() {
|
|
94
|
+
return this.fileInfoMap.keys();
|
|
95
|
+
}
|
|
96
|
+
setSourceFile(absolutePath, project) {
|
|
97
|
+
this.fileInfoMap.set(absolutePath, {
|
|
98
|
+
project
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
async configure(options) {
|
|
102
|
+
this.disposed = false;
|
|
103
|
+
this.transpileCache.clear();
|
|
104
|
+
this.buildConfig = options.buildConfig;
|
|
105
|
+
this.workspace = options.workspace ?? await _mesh.WorkspaceFactory.create({
|
|
106
|
+
..._forge.WorkspaceDefaults,
|
|
107
|
+
rootDir: process.cwd()
|
|
108
|
+
});
|
|
109
|
+
this.versionFileUrl = options.versionFileUrl ?? ((fileUrl)=>fileUrl);
|
|
110
|
+
this.onResolved = options.onResolved;
|
|
111
|
+
this.fileInfoMap = await this.buildFileInfoMap(this.buildConfig);
|
|
112
|
+
const aliases = this.workspace.getPackageAliases(this.buildConfig);
|
|
113
|
+
this.aliasBaseUrl = aliases.baseUrl;
|
|
114
|
+
this.aliasPaths = aliases.paths;
|
|
115
|
+
}
|
|
116
|
+
registerHooks() {
|
|
117
|
+
if (this.hooksRegistered) return;
|
|
118
|
+
this.hooksRegistered = true;
|
|
119
|
+
(0, _nodemodule.registerHooks)({
|
|
120
|
+
resolve: (specifier, context, next)=>{
|
|
121
|
+
if (this.disposed) return next(specifier, context);
|
|
122
|
+
const parentUrl = context.parentURL ?? "";
|
|
123
|
+
const rewritten = (0, _rewriteservespecifier.rewriteServeSpecifier)({
|
|
124
|
+
specifier,
|
|
125
|
+
parentUrl,
|
|
126
|
+
isWatchedTs: (filePath)=>this.fileInfoMap.has(filePath),
|
|
127
|
+
resolveBare: (bare)=>_mesh.packageAliases.resolvePath(bare, this.aliasPaths, this.aliasBaseUrl),
|
|
128
|
+
versionFileUrl: this.versionFileUrl
|
|
129
|
+
}) ?? specifier;
|
|
130
|
+
const result = next(rewritten, context);
|
|
131
|
+
this.onResolved?.(result, parentUrl);
|
|
132
|
+
return result;
|
|
133
|
+
},
|
|
134
|
+
load: (url, context, next)=>{
|
|
135
|
+
if (this.disposed) return next(url, context);
|
|
136
|
+
const result = this.loadTs(url);
|
|
137
|
+
if (result != null) {
|
|
138
|
+
return {
|
|
139
|
+
format: "module",
|
|
140
|
+
source: result.source,
|
|
141
|
+
shortCircuit: true
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return next(url, context);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async importEntry(absolutePath) {
|
|
149
|
+
const url = this.versionFileUrl(_io.io.pathToFileUrl(_nodepath.default.resolve(absolutePath)));
|
|
150
|
+
return Promise.resolve(url).then((p)=>/*#__PURE__*/ _interop_require_wildcard(require(p)));
|
|
151
|
+
}
|
|
152
|
+
invalidateTranspile(...absolutePaths) {
|
|
153
|
+
for (const fullPath of absolutePaths){
|
|
154
|
+
this.transpileCache.delete(fullPath);
|
|
155
|
+
this.transpiler.invalidateContentCache(new _io.FileEx({
|
|
156
|
+
fullPath
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
dispose() {
|
|
161
|
+
this.disposed = true;
|
|
162
|
+
this.transpileCache.clear();
|
|
163
|
+
this.fileInfoMap.clear();
|
|
164
|
+
this.workspace?.[Symbol.dispose]();
|
|
165
|
+
this.workspace = undefined;
|
|
166
|
+
}
|
|
167
|
+
async buildFileInfoMap(buildConfig) {
|
|
168
|
+
const projects = this.workspace?.getProjects(buildConfig) ?? [];
|
|
169
|
+
const entries = await Promise.all(projects.map(async (project)=>{
|
|
170
|
+
const files = await project.getAllFiles();
|
|
171
|
+
return files.map((file)=>[
|
|
172
|
+
file.fullPath,
|
|
173
|
+
{
|
|
174
|
+
project
|
|
175
|
+
}
|
|
176
|
+
]);
|
|
177
|
+
}));
|
|
178
|
+
return new Map(entries.flat());
|
|
179
|
+
}
|
|
180
|
+
loadTs(url) {
|
|
181
|
+
if (!url.startsWith("file:")) return null;
|
|
182
|
+
const cleanPath = new URL(url).pathname;
|
|
183
|
+
const fileInfo = this.fileInfoMap.get(cleanPath);
|
|
184
|
+
if (fileInfo == null) return null;
|
|
185
|
+
const cached = this.transpileCache.get(cleanPath);
|
|
186
|
+
if (cached != null) return {
|
|
187
|
+
source: cached
|
|
188
|
+
};
|
|
189
|
+
const { project } = fileInfo;
|
|
190
|
+
const tsConfig = project.getTsConfigSync();
|
|
191
|
+
const userConfig = project.getSwcConfigSync();
|
|
192
|
+
const file = new _io.FileEx({
|
|
193
|
+
fullPath: cleanPath
|
|
194
|
+
});
|
|
195
|
+
const response = this.transpiler.transformFileSync(file, _forge.BuildTargets.es6, {
|
|
196
|
+
tsConfig,
|
|
197
|
+
aliasPaths: true,
|
|
198
|
+
userConfig,
|
|
199
|
+
workspace: this.workspace,
|
|
200
|
+
projects: this.workspace?.getProjects(this.buildConfig)
|
|
201
|
+
});
|
|
202
|
+
if (response.outcome !== "success") {
|
|
203
|
+
this.logger.error(`Failed to transpile ${cleanPath}`, response);
|
|
204
|
+
throw new Error(`Failed to transpile ${cleanPath}`);
|
|
205
|
+
}
|
|
206
|
+
this.transpileCache.set(cleanPath, response.code);
|
|
207
|
+
return {
|
|
208
|
+
source: response.code
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
SourceModuleLoader = _ts_decorate([
|
|
213
|
+
(0, _decorators.injectable)()
|
|
214
|
+
], SourceModuleLoader);
|
|
215
|
+
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NvdXJjZS1tb2R1bGUtbG9hZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcblx0TG9hZEZuT3V0cHV0LFxuXHRMb2FkSG9va0NvbnRleHQsXG5cdFJlc29sdmVGbk91dHB1dCxcblx0UmVzb2x2ZUhvb2tDb250ZXh0LFxufSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHJlZ2lzdGVySG9va3MgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tIFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IEJ1aWxkVGFyZ2V0cywgU3djVHJhbnNwaWxlciwgV29ya3NwYWNlRGVmYXVsdHMgfSBmcm9tIFwiQGRlY29oZXJlL2ZvcmdlXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QsIFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgcGFja2FnZUFsaWFzZXMsIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IEZpbGVFeCwgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciwgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IHJld3JpdGVTZXJ2ZVNwZWNpZmllciB9IGZyb20gXCIuL3Jld3JpdGUtc2VydmUtc3BlY2lmaWVyLmpzXCI7XG5cbnR5cGUgRmlsZUluZm8gPSB7IHByb2plY3Q6IFByb2plY3QgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VNb2R1bGVMb2FkZXJPcHRpb25zIHtcblx0LyoqIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbmFtZS4gKi9cblx0YnVpbGRDb25maWc6IHN0cmluZztcblx0LyoqXG5cdCAqIFByZS1idWlsdCBXb3Jrc3BhY2UgaW5zdGFuY2UgdG8gdXNlIGluc3RlYWQgb2YgcnVubmluZyBXb3Jrc3BhY2VGYWN0b3J5LlxuXHQgKiBVc2VmdWwgaW4gdGVzdHMgdG8gYnlwYXNzIGZpbGVzeXN0ZW0tYmFzZWQgd29ya3NwYWNlIGRpc2NvdmVyeS5cblx0ICovXG5cdHdvcmtzcGFjZT86IFdvcmtzcGFjZTtcblx0LyoqXG5cdCAqIE1hcCBhIHdhdGNoZWQgYC50c2AgZmlsZSBVUkwgZm9yIEVTTSByZXNvbHV0aW9uLlxuXHQgKiBIb3QgcmVsb2FkIHBhc3NlcyBhIGA/dmVyc2lvbj1gIGJ1c3Q7IG9uZS1zaG90IHJ1biB1c2VzIGlkZW50aXR5LlxuXHQgKi9cblx0dmVyc2lvbkZpbGVVcmw/OiAoZmlsZVVybDogc3RyaW5nKSA9PiBzdHJpbmc7XG5cdC8qKiBPcHRpb25hbCBwb3N0LXJlc29sdmUgaG9vayAoZS5nLiBkZXBlbmRlbmN5IHRyYWNraW5nIGZvciBITVIpLiAqL1xuXHRvblJlc29sdmVkPzogKHJlc3VsdDogUmVzb2x2ZUZuT3V0cHV0LCBwYXJlbnRVcmw6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgTm9kZSBFU00gcmVzb2x2ZS9sb2FkIGhvb2tzIGFuZCBTV0MtdHJhbnNwaWxlcyB3b3Jrc3BhY2UgYC50c2BcbiAqIG9uIHRoZSBmbHkuIE5vIGZpbGUgd2F0Y2hpbmcgYW5kIG5vIGVudHJ5IHJlYm9vdCDigJQgdGhhdCBiZWxvbmdzIHRvXG4gKiB7QGxpbmsgSG90UmVsb2FkU2VydmVyfS5cbiAqL1xuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNvdXJjZU1vZHVsZUxvYWRlciB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIgPSBzY3JpYmUubG9nZ2VyKFNvdXJjZU1vZHVsZUxvYWRlci5uYW1lKTtcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc3BpbGVyID0gbmV3IFN3Y1RyYW5zcGlsZXIoKTtcblx0cHJpdmF0ZSBkaXNwb3NlZCA9IGZhbHNlO1xuXHRwcml2YXRlIGhvb2tzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXHRwcml2YXRlIHdvcmtzcGFjZT86IFdvcmtzcGFjZTtcblx0cHJpdmF0ZSBidWlsZENvbmZpZyA9IFwiZGVidWdcIjtcblx0cHJpdmF0ZSBmaWxlSW5mb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBGaWxlSW5mbz4oKTtcblx0cHJpdmF0ZSB0cmFuc3BpbGVDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cdHByaXZhdGUgYWxpYXNQYXRoczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cdHByaXZhdGUgYWxpYXNCYXNlVXJsID0gcGF0aC5yZXNvbHZlKFwiLlwiKTtcblx0cHJpdmF0ZSB2ZXJzaW9uRmlsZVVybDogKGZpbGVVcmw6IHN0cmluZykgPT4gc3RyaW5nID0gKGZpbGVVcmwpID0+IGZpbGVVcmw7XG5cdHByaXZhdGUgb25SZXNvbHZlZD86IChyZXN1bHQ6IFJlc29sdmVGbk91dHB1dCwgcGFyZW50VXJsOiBzdHJpbmcpID0+IHZvaWQ7XG5cblx0cHVibGljIGdldFdvcmtzcGFjZSgpOiBXb3Jrc3BhY2UgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLndvcmtzcGFjZTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCdWlsZENvbmZpZygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmJ1aWxkQ29uZmlnO1xuXHR9XG5cblx0cHVibGljIGhhc1NvdXJjZUZpbGUoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5maWxlSW5mb01hcC5oYXMoYWJzb2x1dGVQYXRoKTtcblx0fVxuXG5cdHB1YmxpYyBzb3VyY2VGaWxlUGF0aHMoKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5maWxlSW5mb01hcC5rZXlzKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0U291cmNlRmlsZShhYnNvbHV0ZVBhdGg6IHN0cmluZywgcHJvamVjdDogUHJvamVjdCk6IHZvaWQge1xuXHRcdHRoaXMuZmlsZUluZm9NYXAuc2V0KGFic29sdXRlUGF0aCwgeyBwcm9qZWN0IH0pO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGNvbmZpZ3VyZShvcHRpb25zOiBTb3VyY2VNb2R1bGVMb2FkZXJPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5kaXNwb3NlZCA9IGZhbHNlO1xuXHRcdHRoaXMudHJhbnNwaWxlQ2FjaGUuY2xlYXIoKTtcblx0XHR0aGlzLmJ1aWxkQ29uZmlnID0gb3B0aW9ucy5idWlsZENvbmZpZztcblx0XHR0aGlzLndvcmtzcGFjZSA9XG5cdFx0XHRvcHRpb25zLndvcmtzcGFjZSA/P1xuXHRcdFx0KGF3YWl0IFdvcmtzcGFjZUZhY3RvcnkuY3JlYXRlKHsgLi4uV29ya3NwYWNlRGVmYXVsdHMsIHJvb3REaXI6IHByb2Nlc3MuY3dkKCkgfSkpO1xuXHRcdHRoaXMudmVyc2lvbkZpbGVVcmwgPSBvcHRpb25zLnZlcnNpb25GaWxlVXJsID8/ICgoZmlsZVVybCkgPT4gZmlsZVVybCk7XG5cdFx0dGhpcy5vblJlc29sdmVkID0gb3B0aW9ucy5vblJlc29sdmVkO1xuXHRcdHRoaXMuZmlsZUluZm9NYXAgPSBhd2FpdCB0aGlzLmJ1aWxkRmlsZUluZm9NYXAodGhpcy5idWlsZENvbmZpZyk7XG5cdFx0Y29uc3QgYWxpYXNlcyA9IHRoaXMud29ya3NwYWNlLmdldFBhY2thZ2VBbGlhc2VzKHRoaXMuYnVpbGRDb25maWcpO1xuXHRcdHRoaXMuYWxpYXNCYXNlVXJsID0gYWxpYXNlcy5iYXNlVXJsO1xuXHRcdHRoaXMuYWxpYXNQYXRocyA9IGFsaWFzZXMucGF0aHM7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJIb29rcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5ob29rc1JlZ2lzdGVyZWQpIHJldHVybjtcblx0XHR0aGlzLmhvb2tzUmVnaXN0ZXJlZCA9IHRydWU7XG5cdFx0cmVnaXN0ZXJIb29rcyh7XG5cdFx0XHRyZXNvbHZlOiAoXG5cdFx0XHRcdHNwZWNpZmllcjogc3RyaW5nLFxuXHRcdFx0XHRjb250ZXh0OiBSZXNvbHZlSG9va0NvbnRleHQsXG5cdFx0XHRcdG5leHQ6IChzcGVjaWZpZXI6IHN0cmluZywgY29udGV4dD86IFBhcnRpYWw8UmVzb2x2ZUhvb2tDb250ZXh0PikgPT4gUmVzb2x2ZUZuT3V0cHV0LFxuXHRcdFx0KSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm4gbmV4dChzcGVjaWZpZXIsIGNvbnRleHQpO1xuXHRcdFx0XHRjb25zdCBwYXJlbnRVcmwgPSBjb250ZXh0LnBhcmVudFVSTCA/PyBcIlwiO1xuXHRcdFx0XHRjb25zdCByZXdyaXR0ZW4gPVxuXHRcdFx0XHRcdHJld3JpdGVTZXJ2ZVNwZWNpZmllcih7XG5cdFx0XHRcdFx0XHRzcGVjaWZpZXIsXG5cdFx0XHRcdFx0XHRwYXJlbnRVcmwsXG5cdFx0XHRcdFx0XHRpc1dhdGNoZWRUczogKGZpbGVQYXRoKSA9PiB0aGlzLmZpbGVJbmZvTWFwLmhhcyhmaWxlUGF0aCksXG5cdFx0XHRcdFx0XHRyZXNvbHZlQmFyZTogKGJhcmUpID0+XG5cdFx0XHRcdFx0XHRcdHBhY2thZ2VBbGlhc2VzLnJlc29sdmVQYXRoKGJhcmUsIHRoaXMuYWxpYXNQYXRocywgdGhpcy5hbGlhc0Jhc2VVcmwpLFxuXHRcdFx0XHRcdFx0dmVyc2lvbkZpbGVVcmw6IHRoaXMudmVyc2lvbkZpbGVVcmwsXG5cdFx0XHRcdFx0fSkgPz8gc3BlY2lmaWVyO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBuZXh0KHJld3JpdHRlbiwgY29udGV4dCkgYXMgUmVzb2x2ZUZuT3V0cHV0O1xuXHRcdFx0XHR0aGlzLm9uUmVzb2x2ZWQ/LihyZXN1bHQsIHBhcmVudFVybCk7XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9LFxuXHRcdFx0bG9hZDogKFxuXHRcdFx0XHR1cmw6IHN0cmluZyxcblx0XHRcdFx0Y29udGV4dDogTG9hZEhvb2tDb250ZXh0LFxuXHRcdFx0XHRuZXh0OiAodXJsOiBzdHJpbmcsIGNvbnRleHQ/OiBQYXJ0aWFsPExvYWRIb29rQ29udGV4dD4pID0+IExvYWRGbk91dHB1dCxcblx0XHRcdCk6IExvYWRGbk91dHB1dCA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm4gbmV4dCh1cmwsIGNvbnRleHQpO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmxvYWRUcyh1cmwpO1xuXHRcdFx0XHRpZiAocmVzdWx0ICE9IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4geyBmb3JtYXQ6IFwibW9kdWxlXCIsIHNvdXJjZTogcmVzdWx0LnNvdXJjZSwgc2hvcnRDaXJjdWl0OiB0cnVlIH07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG5leHQodXJsLCBjb250ZXh0KTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgaW1wb3J0RW50cnkoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRjb25zdCB1cmwgPSB0aGlzLnZlcnNpb25GaWxlVXJsKGlvLnBhdGhUb0ZpbGVVcmwocGF0aC5yZXNvbHZlKGFic29sdXRlUGF0aCkpKTtcblx0XHRyZXR1cm4gaW1wb3J0KHVybCk7XG5cdH1cblxuXHRwdWJsaWMgaW52YWxpZGF0ZVRyYW5zcGlsZSguLi5hYnNvbHV0ZVBhdGhzOiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgZnVsbFBhdGggb2YgYWJzb2x1dGVQYXRocykge1xuXHRcdFx0dGhpcy50cmFuc3BpbGVDYWNoZS5kZWxldGUoZnVsbFBhdGgpO1xuXHRcdFx0dGhpcy50cmFuc3BpbGVyLmludmFsaWRhdGVDb250ZW50Q2FjaGUobmV3IEZpbGVFeCh7IGZ1bGxQYXRoIH0pKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLmRpc3Bvc2VkID0gdHJ1ZTtcblx0XHR0aGlzLnRyYW5zcGlsZUNhY2hlLmNsZWFyKCk7XG5cdFx0dGhpcy5maWxlSW5mb01hcC5jbGVhcigpO1xuXHRcdHRoaXMud29ya3NwYWNlPy5bU3ltYm9sLmRpc3Bvc2VdKCk7XG5cdFx0dGhpcy53b3Jrc3BhY2UgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGJ1aWxkRmlsZUluZm9NYXAoYnVpbGRDb25maWc6IHN0cmluZyk6IFByb21pc2U8TWFwPHN0cmluZywgRmlsZUluZm8+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSB0aGlzLndvcmtzcGFjZT8uZ2V0UHJvamVjdHMoYnVpbGRDb25maWcpID8/IFtdO1xuXHRcdGNvbnN0IGVudHJpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4ge1xuXHRcdFx0XHRjb25zdCBmaWxlcyA9IGF3YWl0IHByb2plY3QuZ2V0QWxsRmlsZXMoKTtcblx0XHRcdFx0cmV0dXJuIGZpbGVzLm1hcCgoZmlsZSk6IFtzdHJpbmcsIEZpbGVJbmZvXSA9PiBbZmlsZS5mdWxsUGF0aCwgeyBwcm9qZWN0IH1dKTtcblx0XHRcdH0pLFxuXHRcdCk7XG5cdFx0cmV0dXJuIG5ldyBNYXAoZW50cmllcy5mbGF0KCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBsb2FkVHModXJsOiBzdHJpbmcpOiB7IHNvdXJjZTogc3RyaW5nIH0gfCBudWxsIHtcblx0XHRpZiAoIXVybC5zdGFydHNXaXRoKFwiZmlsZTpcIikpIHJldHVybiBudWxsO1xuXG5cdFx0Y29uc3QgY2xlYW5QYXRoID0gbmV3IFVSTCh1cmwpLnBhdGhuYW1lO1xuXHRcdGNvbnN0IGZpbGVJbmZvID0gdGhpcy5maWxlSW5mb01hcC5nZXQoY2xlYW5QYXRoKTtcblx0XHRpZiAoZmlsZUluZm8gPT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cblx0XHRjb25zdCBjYWNoZWQgPSB0aGlzLnRyYW5zcGlsZUNhY2hlLmdldChjbGVhblBhdGgpO1xuXHRcdGlmIChjYWNoZWQgIT0gbnVsbCkgcmV0dXJuIHsgc291cmNlOiBjYWNoZWQgfTtcblxuXHRcdGNvbnN0IHsgcHJvamVjdCB9ID0gZmlsZUluZm87XG5cdFx0Y29uc3QgdHNDb25maWcgPSBwcm9qZWN0LmdldFRzQ29uZmlnU3luYygpO1xuXHRcdGNvbnN0IHVzZXJDb25maWcgPSBwcm9qZWN0LmdldFN3Y0NvbmZpZ1N5bmMoKTtcblxuXHRcdGNvbnN0IGZpbGUgPSBuZXcgRmlsZUV4KHsgZnVsbFBhdGg6IGNsZWFuUGF0aCB9KTtcblx0XHRjb25zdCByZXNwb25zZSA9IHRoaXMudHJhbnNwaWxlci50cmFuc2Zvcm1GaWxlU3luYyhmaWxlLCBCdWlsZFRhcmdldHMuZXM2LCB7XG5cdFx0XHR0c0NvbmZpZyxcblx0XHRcdGFsaWFzUGF0aHM6IHRydWUsXG5cdFx0XHR1c2VyQ29uZmlnLFxuXHRcdFx0d29ya3NwYWNlOiB0aGlzLndvcmtzcGFjZSxcblx0XHRcdHByb2plY3RzOiB0aGlzLndvcmtzcGFjZT8uZ2V0UHJvamVjdHModGhpcy5idWlsZENvbmZpZyksXG5cdFx0fSk7XG5cblx0XHRpZiAocmVzcG9uc2Uub3V0Y29tZSAhPT0gXCJzdWNjZXNzXCIpIHtcblx0XHRcdHRoaXMubG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gdHJhbnNwaWxlICR7Y2xlYW5QYXRofWAsIHJlc3BvbnNlKTtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHRyYW5zcGlsZSAke2NsZWFuUGF0aH1gKTtcblx0XHR9XG5cblx0XHR0aGlzLnRyYW5zcGlsZUNhY2hlLnNldChjbGVhblBhdGgsIHJlc3BvbnNlLmNvZGUpO1xuXHRcdHJldHVybiB7IHNvdXJjZTogcmVzcG9uc2UuY29kZSB9O1xuXHR9XG59XG4iXSwibmFtZXMiOlsiU291cmNlTW9kdWxlTG9hZGVyIiwibG9nZ2VyIiwic2NyaWJlIiwibmFtZSIsInRyYW5zcGlsZXIiLCJTd2NUcmFuc3BpbGVyIiwiZGlzcG9zZWQiLCJob29rc1JlZ2lzdGVyZWQiLCJ3b3Jrc3BhY2UiLCJidWlsZENvbmZpZyIsImZpbGVJbmZvTWFwIiwiTWFwIiwidHJhbnNwaWxlQ2FjaGUiLCJhbGlhc1BhdGhzIiwiYWxpYXNCYXNlVXJsIiwicGF0aCIsInJlc29sdmUiLCJ2ZXJzaW9uRmlsZVVybCIsImZpbGVVcmwiLCJvblJlc29sdmVkIiwiZ2V0V29ya3NwYWNlIiwiZ2V0QnVpbGRDb25maWciLCJoYXNTb3VyY2VGaWxlIiwiYWJzb2x1dGVQYXRoIiwiaGFzIiwic291cmNlRmlsZVBhdGhzIiwia2V5cyIsInNldFNvdXJjZUZpbGUiLCJwcm9qZWN0Iiwic2V0IiwiY29uZmlndXJlIiwib3B0aW9ucyIsImNsZWFyIiwiV29ya3NwYWNlRmFjdG9yeSIsImNyZWF0ZSIsIldvcmtzcGFjZURlZmF1bHRzIiwicm9vdERpciIsInByb2Nlc3MiLCJjd2QiLCJidWlsZEZpbGVJbmZvTWFwIiwiYWxpYXNlcyIsImdldFBhY2thZ2VBbGlhc2VzIiwiYmFzZVVybCIsInBhdGhzIiwicmVnaXN0ZXJIb29rcyIsInNwZWNpZmllciIsImNvbnRleHQiLCJuZXh0IiwicGFyZW50VXJsIiwicGFyZW50VVJMIiwicmV3cml0dGVuIiwicmV3cml0ZVNlcnZlU3BlY2lmaWVyIiwiaXNXYXRjaGVkVHMiLCJmaWxlUGF0aCIsInJlc29sdmVCYXJlIiwiYmFyZSIsInBhY2thZ2VBbGlhc2VzIiwicmVzb2x2ZVBhdGgiLCJyZXN1bHQiLCJsb2FkIiwidXJsIiwibG9hZFRzIiwiZm9ybWF0Iiwic291cmNlIiwic2hvcnRDaXJjdWl0IiwiaW1wb3J0RW50cnkiLCJpbyIsInBhdGhUb0ZpbGVVcmwiLCJpbnZhbGlkYXRlVHJhbnNwaWxlIiwiYWJzb2x1dGVQYXRocyIsImZ1bGxQYXRoIiwiZGVsZXRlIiwiaW52YWxpZGF0ZUNvbnRlbnRDYWNoZSIsIkZpbGVFeCIsImRpc3Bvc2UiLCJTeW1ib2wiLCJ1bmRlZmluZWQiLCJwcm9qZWN0cyIsImdldFByb2plY3RzIiwiZW50cmllcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJmaWxlcyIsImdldEFsbEZpbGVzIiwiZmlsZSIsImZsYXQiLCJzdGFydHNXaXRoIiwiY2xlYW5QYXRoIiwiVVJMIiwicGF0aG5hbWUiLCJmaWxlSW5mbyIsImdldCIsImNhY2hlZCIsInRzQ29uZmlnIiwiZ2V0VHNDb25maWdTeW5jIiwidXNlckNvbmZpZyIsImdldFN3Y0NvbmZpZ1N5bmMiLCJyZXNwb25zZSIsInRyYW5zZm9ybUZpbGVTeW5jIiwiQnVpbGRUYXJnZXRzIiwiZXM2Iiwib3V0Y29tZSIsImVycm9yIiwiRXJyb3IiLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7OytCQXlDYUE7OztlQUFBQTs7OzRCQW5DaUI7aUVBQ2I7NEJBQ1U7dUJBQ29DO3NCQUVkO29CQUN0Qjt3QkFDUzt1Q0FDRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQi9CLE1BQU1BO0lBQ0tDLFNBQWlCQyxjQUFNLENBQUNELE1BQU0sQ0FBQ0QsbUJBQW1CRyxJQUFJLEVBQUU7SUFDeERDLGFBQWEsSUFBSUMsb0JBQWEsR0FBRztJQUMxQ0MsV0FBVyxNQUFNO0lBQ2pCQyxrQkFBa0IsTUFBTTtJQUN4QkMsVUFBc0I7SUFDdEJDLGNBQWMsUUFBUTtJQUN0QkMsY0FBYyxJQUFJQyxNQUF3QjtJQUMxQ0MsaUJBQWlCLElBQUlELE1BQXNCO0lBQzNDRSxhQUF1QyxDQUFDLEVBQUU7SUFDMUNDLGVBQWVDLGlCQUFJLENBQUNDLE9BQU8sQ0FBQyxLQUFLO0lBQ2pDQyxpQkFBOEMsQ0FBQ0MsVUFBWUEsUUFBUTtJQUNuRUMsV0FBa0U7SUFFbkVDLGVBQXNDO1FBQzVDLE9BQU8sSUFBSSxDQUFDWixTQUFTO0lBQ3RCO0lBRU9hLGlCQUF5QjtRQUMvQixPQUFPLElBQUksQ0FBQ1osV0FBVztJQUN4QjtJQUVPYSxjQUFjQyxZQUFvQixFQUFXO1FBQ25ELE9BQU8sSUFBSSxDQUFDYixXQUFXLENBQUNj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
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
7
|
+
import { spawn } from "node:child_process";
|
|
8
|
+
import { injectable } from "@decohere/crucible/decorators";
|
|
9
|
+
import { detectPackageManager, packageManagerFromString } from "@decohere/nexus/interop";
|
|
10
|
+
import { scribe } from "@decohere/scribe";
|
|
11
|
+
export class DeferredScriptRunner {
|
|
12
|
+
logger = scribe.logger(DeferredScriptRunner.name);
|
|
13
|
+
children = [];
|
|
14
|
+
start(options) {
|
|
15
|
+
const pm = detectPackageManager(options.workspaceRoot) ?? packageManagerFromString("pnpm");
|
|
16
|
+
this.logger.info(`deferred ${options.label} — running ${pm.name} run ${options.script} in ${options.cwd}`);
|
|
17
|
+
const child = spawn(pm.name, [
|
|
18
|
+
"run",
|
|
19
|
+
options.script
|
|
20
|
+
], {
|
|
21
|
+
cwd: options.cwd,
|
|
22
|
+
stdio: "inherit",
|
|
23
|
+
env: process.env,
|
|
24
|
+
shell: false
|
|
25
|
+
});
|
|
26
|
+
child.on("exit", (code, signal)=>{
|
|
27
|
+
if (signal) return;
|
|
28
|
+
if (code != null && code !== 0) {
|
|
29
|
+
this.logger.warn(`deferred ${options.label} exited with ${code}`);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
this.children.push(child);
|
|
33
|
+
return child;
|
|
34
|
+
}
|
|
35
|
+
async [Symbol.asyncDispose]() {
|
|
36
|
+
for (const child of this.children){
|
|
37
|
+
if (!child.killed) {
|
|
38
|
+
child.kill("SIGTERM");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
this.children.length = 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
DeferredScriptRunner = _ts_decorate([
|
|
45
|
+
injectable()
|
|
46
|
+
], DeferredScriptRunner);
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2RlZmVycmVkLXNjcmlwdC1ydW5uZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDaGlsZFByb2Nlc3MsIHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHBhY2thZ2VNYW5hZ2VyRnJvbVN0cmluZyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5cbmV4cG9ydCB0eXBlIERlZmVycmVkU2NyaXB0U3RhcnQgPSB7XG5cdHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuXHRyZWFkb25seSBzY3JpcHQ6IHN0cmluZztcblx0LyoqIFdvcmtzcGFjZSByb290IHVzZWQgdG8gZGV0ZWN0IHBucG0vbnBtL3lhcm4uICovXG5cdHJlYWRvbmx5IHdvcmtzcGFjZVJvb3Q6IHN0cmluZztcbn07XG5cbi8qKlxuICogTml4cGFja3Mtc3R5bGUgY2hpbGQgcHJvY2Vzc2VzIGZvciBmb3JlaWduIHBhY2thZ2VzIGluIGEgZmx1eCBzZXJ2ZSBzbGljZS5cbiAqIEtpbGxlZCB3aGVuIHRoZSBGbHV4IGNvbnRhaW5lciBkaXNwb3NlcyAoU0lHSU5UIOKGkiBSb290TW9kdWxlIHRlYXJkb3duKS5cbiAqL1xuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmVycmVkU2NyaXB0UnVubmVyIGltcGxlbWVudHMgQXN5bmNEaXNwb3NhYmxlIHtcblx0cHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlciA9IHNjcmliZS5sb2dnZXIoRGVmZXJyZWRTY3JpcHRSdW5uZXIubmFtZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW46IENoaWxkUHJvY2Vzc1tdID0gW107XG5cblx0cHVibGljIHN0YXJ0KG9wdGlvbnM6IERlZmVycmVkU2NyaXB0U3RhcnQpOiBDaGlsZFByb2Nlc3Mge1xuXHRcdGNvbnN0IHBtID0gZGV0ZWN0UGFja2FnZU1hbmFnZXIob3B0aW9ucy53b3Jrc3BhY2VSb290KSA/PyBwYWNrYWdlTWFuYWdlckZyb21TdHJpbmcoXCJwbnBtXCIpO1xuXHRcdHRoaXMubG9nZ2VyLmluZm8oXG5cdFx0XHRgZGVmZXJyZWQgJHtvcHRpb25zLmxhYmVsfSDigJQgcnVubmluZyAke3BtLm5hbWV9IHJ1biAke29wdGlvbnMuc2NyaXB0fSBpbiAke29wdGlvbnMuY3dkfWAsXG5cdFx0KTtcblx0XHRjb25zdCBjaGlsZCA9IHNwYXduKHBtLm5hbWUsIFtcInJ1blwiLCBvcHRpb25zLnNjcmlwdF0sIHtcblx0XHRcdGN3ZDogb3B0aW9ucy5jd2QsXG5cdFx0XHRzdGRpbzogXCJpbmhlcml0XCIsXG5cdFx0XHRlbnY6IHByb2Nlc3MuZW52LFxuXHRcdFx0c2hlbGw6IGZhbHNlLFxuXHRcdH0pO1xuXHRcdGNoaWxkLm9uKFwiZXhpdFwiLCAoY29kZSwgc2lnbmFsKSA9PiB7XG5cdFx0XHRpZiAoc2lnbmFsKSByZXR1cm47XG5cdFx0XHRpZiAoY29kZSAhPSBudWxsICYmIGNvZGUgIT09IDApIHtcblx0XHRcdFx0dGhpcy5sb2dnZXIud2FybihgZGVmZXJyZWQgJHtvcHRpb25zLmxhYmVsfSBleGl0ZWQgd2l0aCAke2NvZGV9YCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcblx0XHRyZXR1cm4gY2hpbGQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuXHRcdFx0aWYgKCFjaGlsZC5raWxsZWQpIHtcblx0XHRcdFx0Y2hpbGQua2lsbChcIlNJR1RFUk1cIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuY2hpbGRyZW4ubGVuZ3RoID0gMDtcblx0fVxufVxuIl0sIm5hbWVzIjpbInNwYXduIiwiaW5qZWN0YWJsZSIsImRldGVjdFBhY2thZ2VNYW5hZ2VyIiwicGFja2FnZU1hbmFnZXJGcm9tU3RyaW5nIiwic2NyaWJlIiwiRGVmZXJyZWRTY3JpcHRSdW5uZXIiLCJsb2dnZXIiLCJuYW1lIiwiY2hpbGRyZW4iLCJzdGFydCIsIm9wdGlvbnMiLCJwbSIsIndvcmtzcGFjZVJvb3QiLCJpbmZvIiwibGFiZWwiLCJzY3JpcHQiLCJjd2QiLCJjaGlsZCIsInN0ZGlvIiwiZW52IiwicHJvY2VzcyIsInNoZWxsIiwib24iLCJjb2RlIiwic2lnbmFsIiwid2FybiIsInB1c2giLCJTeW1ib2wiLCJhc3luY0Rpc3Bvc2UiLCJraWxsZWQiLCJraWxsIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUE0QkEsS0FBSyxRQUFRLHFCQUFxQjtBQUM5RCxTQUFTQyxVQUFVLFFBQVEsZ0NBQWdDO0FBQzNELFNBQVNDLG9CQUFvQixFQUFFQyx3QkFBd0IsUUFBUSwwQkFBMEI7QUFDekYsU0FBc0JDLE1BQU0sUUFBUSxtQkFBbUI7QUFldkQsT0FBTyxNQUFNQztJQUNLQyxTQUFpQkYsT0FBT0UsTUFBTSxDQUFDRCxxQkFBcUJFLElBQUksRUFBRTtJQUMxREMsV0FBMkIsRUFBRSxDQUFDO0lBRXhDQyxNQUFNQyxPQUE0QixFQUFnQjtRQUN4RCxNQUFNQyxLQUFLVCxxQkFBcUJRLFFBQVFFLGFBQWEsS0FBS1QseUJBQXlCO1FBQ25GLElBQUksQ0FBQ0csTUFBTSxDQUFDTyxJQUFJLENBQ2YsQ0FBQyxTQUFTLEVBQUVILFFBQVFJLEtBQUssQ0FBQyxXQUFXLEVBQUVILEdBQUdKLElBQUksQ0FBQyxLQUFLLEVBQUVHLFFBQVFLLE1BQU0sQ0FBQyxJQUFJLEVBQUVMLFFBQVFNLEdBQUcsRUFBRTtRQUV6RixNQUFNQyxRQUFRakIsTUFBTVcsR0FBR0osSUFBSSxFQUFFO1lBQUM7WUFBT0csUUFBUUssTUFBTTtTQUFDLEVBQUU7WUFDckRDLEtBQUtOLFFBQVFNLEdBQUc7WUFDaEJFLE9BQU87WUFDUEMsS0FBS0MsUUFBUUQsR0FBRztZQUNoQkUsT0FBTztRQUNSO1FBQ0FKLE1BQU1LLEVBQUUsQ0FBQyxRQUFRLENBQUNDLE1BQU1DO1lBQ3ZCLElBQUlBLFFBQVE7WUFDWixJQUFJRCxRQUFRLFFBQVFBLFNBQVMsR0FBRztnQkFDL0IsSUFBSSxDQUFDakIsTUFBTSxDQUFDbUIsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFZixRQUFRSSxLQUFLLENBQUMsYUFBYSxFQUFFUyxNQUFNO1lBQ2pFO1FBQ0Q7UUFDQSxJQUFJLENBQUNmLFFBQVEsQ0FBQ2tCLElBQUksQ0FBQ1Q7UUFDbkIsT0FBT0E7SUFDUjtJQUVBLE1BQWEsQ0FBQ1UsT0FBT0MsWUFBWSxDQUFDLEdBQUc7UUFDcEMsS0FBSyxNQUFNWCxTQUFTLElBQUksQ0FBQ1QsUUFBUSxDQUFFO1lBQ2xDLElBQUksQ0FBQ1MsTUFBTVksTUFBTSxFQUFFO2dCQUNsQlosTUFBTWEsSUFBSSxDQUFDO1lBQ1o7UUFDRDtRQUNBLElBQUksQ0FBQ3RCLFFBQVEsQ0FBQ3VCLE1BQU0sR0FBRztJQUN4QjtBQUNEIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
+
import { RunCommand } from "./run.command.js";
|
|
3
|
+
import { ServeCommand } from "./serve.command.js";
|
|
4
|
+
export class FluxCommand extends DecohereCommand {
|
|
5
|
+
constructor(commands, handler){
|
|
6
|
+
super(FluxCommand);
|
|
7
|
+
this.exitOverride();
|
|
8
|
+
this.registerSubcommand({
|
|
9
|
+
serve: ServeCommand,
|
|
10
|
+
run: RunCommand,
|
|
11
|
+
...commands
|
|
12
|
+
}, handler);
|
|
13
|
+
}
|
|
14
|
+
run(_actions, _options) {
|
|
15
|
+
return this.help();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXguY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHtcblx0dHlwZSBDb21tYW5kSGFuZGxlcixcblx0dHlwZSBDb21tYW5kUmVzcG9uc2UsXG5cdHR5cGUgQ29tbWFuZFR5cGUsXG5cdERlY29oZXJlQ29tbWFuZCxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFJ1bkNvbW1hbmQgfSBmcm9tIFwiLi9ydW4uY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgU2VydmVDb21tYW5kIH0gZnJvbSBcIi4vc2VydmUuY29tbWFuZC5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eENvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoY29tbWFuZHM6IFJlY29yZDxzdHJpbmcsIENvbW1hbmRUeXBlPiwgaGFuZGxlcjogQ29tbWFuZEhhbmRsZXIpIHtcblx0XHRzdXBlcihGbHV4Q29tbWFuZCk7XG5cdFx0dGhpcy5leGl0T3ZlcnJpZGUoKTtcblx0XHR0aGlzLnJlZ2lzdGVyU3ViY29tbWFuZCh7IHNlcnZlOiBTZXJ2ZUNvbW1hbmQsIHJ1bjogUnVuQ29tbWFuZCwgLi4uY29tbWFuZHMgfSwgaGFuZGxlcik7XG5cdH1cblxuXHRwdWJsaWMgcnVuKF9hY3Rpb25zOiBBY3Rpb25zLCBfb3B0aW9uczogbmV2ZXIpOiBQcm9taXNlPENvbW1hbmRSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLmhlbHAoKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRlY29oZXJlQ29tbWFuZCIsIlJ1bkNvbW1hbmQiLCJTZXJ2ZUNvbW1hbmQiLCJGbHV4Q29tbWFuZCIsImNvbW1hbmRzIiwiaGFuZGxlciIsImV4aXRPdmVycmlkZSIsInJlZ2lzdGVyU3ViY29tbWFuZCIsInNlcnZlIiwicnVuIiwiX2FjdGlvbnMiLCJfb3B0aW9ucyIsImhlbHAiXSwibWFwcGluZ3MiOiJBQUNBLFNBSUNBLGVBQWUsUUFDVCxzQkFBc0I7QUFDN0IsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxTQUFTQyxZQUFZLFFBQVEscUJBQXFCO0FBRWxELE9BQU8sTUFBTUMsb0JBQW9CSDtJQUNoQyxZQUFtQkksUUFBcUMsRUFBRUMsT0FBdUIsQ0FBRTtRQUNsRixLQUFLLENBQUNGO1FBQ04sSUFBSSxDQUFDRyxZQUFZO1FBQ2pCLElBQUksQ0FBQ0Msa0JBQWtCLENBQUM7WUFBRUMsT0FBT047WUFBY08sS0FBS1I7WUFBWSxHQUFHRyxRQUFRO1FBQUMsR0FBR0M7SUFDaEY7SUFFT0ksSUFBSUMsUUFBaUIsRUFBRUMsUUFBZSxFQUE0QjtRQUN4RSxPQUFPLElBQUksQ0FBQ0MsSUFBSTtJQUNqQjtBQUNEIn0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { WorkspaceFactory } from "@decohere/mesh";
|
|
2
|
+
import { ModuleManifest } from "@decohere/nexus/cli";
|
|
3
|
+
import { DeferredScriptRunner } from "./deferred-script-runner.js";
|
|
4
|
+
import { FluxCommand } from "./flux.command.js";
|
|
5
|
+
import { HotReloadServer } from "./hot-reload-server.js";
|
|
6
|
+
import { RunAction } from "./run.action.js";
|
|
7
|
+
import { ServeAction } from "./serve.action.js";
|
|
8
|
+
import { SourceModuleLoader } from "./source-module-loader.js";
|
|
9
|
+
export class FluxModule extends ModuleManifest {
|
|
10
|
+
id = "flux";
|
|
11
|
+
command = FluxCommand;
|
|
12
|
+
actions = {
|
|
13
|
+
serve: ServeAction,
|
|
14
|
+
run: RunAction
|
|
15
|
+
};
|
|
16
|
+
registerServices(builder) {
|
|
17
|
+
builder.registerSingleton(SourceModuleLoader);
|
|
18
|
+
builder.registerSingleton(HotReloadServer);
|
|
19
|
+
builder.registerSingleton(DeferredScriptRunner);
|
|
20
|
+
}
|
|
21
|
+
createWorkspace(options) {
|
|
22
|
+
return WorkspaceFactory.create({
|
|
23
|
+
configFile: options.configFile
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXgubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0IHsgRGVmZXJyZWRTY3JpcHRSdW5uZXIgfSBmcm9tIFwiLi9kZWZlcnJlZC1zY3JpcHQtcnVubmVyLmpzXCI7XG5pbXBvcnQgeyBGbHV4Q29tbWFuZCB9IGZyb20gXCIuL2ZsdXguY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgSG90UmVsb2FkU2VydmVyIH0gZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmltcG9ydCB7IFJ1bkFjdGlvbiB9IGZyb20gXCIuL3J1bi5hY3Rpb24uanNcIjtcbmltcG9ydCB7IFNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBTb3VyY2VNb2R1bGVMb2FkZXIgfSBmcm9tIFwiLi9zb3VyY2UtbW9kdWxlLWxvYWRlci5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eE1vZHVsZSBleHRlbmRzIE1vZHVsZU1hbmlmZXN0IHtcblx0cHVibGljIHJlYWRvbmx5IGlkID0gXCJmbHV4XCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gRmx1eENvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdHNlcnZlOiBTZXJ2ZUFjdGlvbixcblx0XHRydW46IFJ1bkFjdGlvbixcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihTb3VyY2VNb2R1bGVMb2FkZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oSG90UmVsb2FkU2VydmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKERlZmVycmVkU2NyaXB0UnVubmVyKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRyZXR1cm4gV29ya3NwYWNlRmFjdG9yeS5jcmVhdGUoeyBjb25maWdGaWxlOiBvcHRpb25zLmNvbmZpZ0ZpbGUgfSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXb3Jrc3BhY2VGYWN0b3J5IiwiTW9kdWxlTWFuaWZlc3QiLCJEZWZlcnJlZFNjcmlwdFJ1bm5lciIsIkZsdXhDb21tYW5kIiwiSG90UmVsb2FkU2VydmVyIiwiUnVuQWN0aW9uIiwiU2VydmVBY3Rpb24iLCJTb3VyY2VNb2R1bGVMb2FkZXIiLCJGbHV4TW9kdWxlIiwiaWQiLCJjb21tYW5kIiwiYWN0aW9ucyIsInNlcnZlIiwicnVuIiwicmVnaXN0ZXJTZXJ2aWNlcyIsImJ1aWxkZXIiLCJyZWdpc3RlclNpbmdsZXRvbiIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjcmVhdGUiLCJjb25maWdGaWxlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSxpQkFBaUI7QUFFbEQsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUVyRCxTQUFTQyxvQkFBb0IsUUFBUSw4QkFBOEI7QUFDbkUsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUNoRCxTQUFTQyxlQUFlLFFBQVEseUJBQXlCO0FBQ3pELFNBQVNDLFNBQVMsUUFBUSxrQkFBa0I7QUFDNUMsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUNoRCxTQUFTQyxrQkFBa0IsUUFBUSw0QkFBNEI7QUFFL0QsT0FBTyxNQUFNQyxtQkFBbUJQO0lBQ2ZRLEtBQUssT0FBTztJQUNaQyxVQUFVUCxZQUFZO0lBQ3RCUSxVQUFVO1FBQ3pCQyxPQUFPTjtRQUNQTyxLQUFLUjtJQUNOLEVBQUU7SUFFS1MsaUJBQWlCQyxPQUF5QixFQUFFO1FBQ2xEQSxRQUFRQyxpQkFBaUIsQ0FBQ1Q7UUFDMUJRLFFBQVFDLGlCQUFpQixDQUFDWjtRQUMxQlcsUUFBUUMsaUJBQWlCLENBQUNkO0lBQzNCO0lBRWdCZSxnQkFBZ0JDLE9BQWdDLEVBQUU7UUFDakUsT0FBT2xCLGlCQUFpQm1CLE1BQU0sQ0FBQztZQUFFQyxZQUFZRixRQUFRRSxVQUFVO1FBQUM7SUFDakU7QUFDRCJ9
|