@decohere/flux 0.0.1-dev.9 → 0.0.1-dev.90
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 +3 -1
- package/commonjs/src/flux.js +58 -0
- package/commonjs/src/flux.module.js +6 -2
- package/commonjs/src/hot-reload-server.js +268 -194
- package/commonjs/src/index.js +35 -1
- package/commonjs/src/rewrite-serve-specifier.js +46 -0
- package/commonjs/src/run.action.js +49 -0
- package/commonjs/src/run.command.js +67 -0
- package/commonjs/src/serve.action.js +77 -4
- package/commonjs/src/serve.command.js +32 -2
- 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 +3 -1
- package/es6/src/flux.js +43 -0
- package/es6/src/flux.module.js +6 -2
- package/es6/src/hot-reload-server.js +249 -151
- package/es6/src/index.js +6 -2
- package/es6/src/rewrite-serve-specifier.js +40 -0
- package/es6/src/run.action.js +40 -0
- package/es6/src/run.command.js +57 -0
- package/es6/src/serve.action.js +73 -4
- package/es6/src/serve.command.js +32 -2
- package/es6/src/slice-serve.js +107 -0
- package/es6/src/source-module-loader.js +160 -0
- package/package.json +7 -6
- package/types/src/deferred-script-runner.d.ts +18 -0
- package/types/src/flux.d.ts +43 -0
- package/types/src/flux.module.d.ts +2 -0
- package/types/src/hot-reload-server.d.ts +45 -22
- package/types/src/index.d.ts +8 -1
- package/types/src/rewrite-serve-specifier.d.ts +13 -0
- package/types/src/run.action.d.ts +15 -0
- package/types/src/run.command.d.ts +11 -0
- package/types/src/serve.action.d.ts +11 -1
- package/types/src/serve.command.d.ts +5 -0
- package/types/src/slice-serve.d.ts +52 -0
- package/types/src/source-module-loader.d.ts +49 -0
package/commonjs/src/index.js
CHANGED
|
@@ -9,14 +9,48 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
+
get DEFAULT_REBOOT_DEBOUNCE_MS () {
|
|
13
|
+
return _hotreloadserver.DEFAULT_REBOOT_DEBOUNCE_MS;
|
|
14
|
+
},
|
|
15
|
+
get DeferredScriptRunner () {
|
|
16
|
+
return _deferredscriptrunner.DeferredScriptRunner;
|
|
17
|
+
},
|
|
12
18
|
get FluxModule () {
|
|
13
19
|
return _fluxmodule.FluxModule;
|
|
14
20
|
},
|
|
15
21
|
get HotReloadServer () {
|
|
16
22
|
return _hotreloadserver.HotReloadServer;
|
|
23
|
+
},
|
|
24
|
+
get SourceModuleLoader () {
|
|
25
|
+
return _sourcemoduleloader.SourceModuleLoader;
|
|
26
|
+
},
|
|
27
|
+
get classifySliceProject () {
|
|
28
|
+
return _sliceserve.classifySliceProject;
|
|
29
|
+
},
|
|
30
|
+
get classifySliceProjects () {
|
|
31
|
+
return _sliceserve.classifySliceProjects;
|
|
32
|
+
},
|
|
33
|
+
get flux () {
|
|
34
|
+
return _flux.flux;
|
|
35
|
+
},
|
|
36
|
+
get normalizeSlicePrefix () {
|
|
37
|
+
return _sliceserve.normalizeSlicePrefix;
|
|
38
|
+
},
|
|
39
|
+
get projectsInSlice () {
|
|
40
|
+
return _sliceserve.projectsInSlice;
|
|
41
|
+
},
|
|
42
|
+
get projectsInSlices () {
|
|
43
|
+
return _sliceserve.projectsInSlices;
|
|
44
|
+
},
|
|
45
|
+
get resolveDeferScript () {
|
|
46
|
+
return _sliceserve.resolveDeferScript;
|
|
17
47
|
}
|
|
18
48
|
});
|
|
49
|
+
const _deferredscriptrunner = require("./deferred-script-runner.js");
|
|
50
|
+
const _flux = require("./flux.js");
|
|
19
51
|
const _fluxmodule = require("./flux.module.js");
|
|
20
52
|
const _hotreloadserver = require("./hot-reload-server.js");
|
|
53
|
+
const _sliceserve = require("./slice-serve.js");
|
|
54
|
+
const _sourcemoduleloader = require("./source-module-loader.js");
|
|
21
55
|
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERlZmVycmVkU2NyaXB0UnVubmVyIH0gZnJvbSBcIi4vZGVmZXJyZWQtc2NyaXB0LXJ1bm5lci5qc1wiO1xuZXhwb3J0IHR5cGUgeyBGbHV4UnVuT3B0aW9ucywgRmx1eFNlcnZlT3B0aW9ucyB9IGZyb20gXCIuL2ZsdXguanNcIjtcbmV4cG9ydCB7IGZsdXggfSBmcm9tIFwiLi9mbHV4LmpzXCI7XG5leHBvcnQgeyBGbHV4TW9kdWxlIH0gZnJvbSBcIi4vZmx1eC5tb2R1bGUuanNcIjtcbmV4cG9ydCB0eXBlIHsgSG90UmVsb2FkU2VydmVyT3B0aW9ucyB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5leHBvcnQgeyBERUZBVUxUX1JFQk9PVF9ERUJPVU5DRV9NUywgSG90UmVsb2FkU2VydmVyIH0gZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmV4cG9ydCB0eXBlIHsgUnVuT3B0aW9ucyB9IGZyb20gXCIuL3J1bi5hY3Rpb24uanNcIjtcbmV4cG9ydCB0eXBlIHsgU2VydmVPcHRpb25zIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5leHBvcnQge1xuXHR0eXBlIENsYXNzaWZpZWRTbGljZSxcblx0Y2xhc3NpZnlTbGljZVByb2plY3QsXG5cdGNsYXNzaWZ5U2xpY2VQcm9qZWN0cyxcblx0bm9ybWFsaXplU2xpY2VQcmVmaXgsXG5cdHByb2plY3RzSW5TbGljZSxcblx0cHJvamVjdHNJblNsaWNlcyxcblx0cmVzb2x2ZURlZmVyU2NyaXB0LFxuXHR0eXBlIFNsaWNlS2luZCxcblx0dHlwZSBTbGljZVByb2plY3RWaWV3LFxufSBmcm9tIFwiLi9zbGljZS1zZXJ2ZS5qc1wiO1xuZXhwb3J0IHR5cGUgeyBTb3VyY2VNb2R1bGVMb2FkZXJPcHRpb25zIH0gZnJvbSBcIi4vc291cmNlLW1vZHVsZS1sb2FkZXIuanNcIjtcbmV4cG9ydCB7IFNvdXJjZU1vZHVsZUxvYWRlciB9IGZyb20gXCIuL3NvdXJjZS1tb2R1bGUtbG9hZGVyLmpzXCI7XG4iXSwibmFtZXMiOlsiREVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMiLCJEZWZlcnJlZFNjcmlwdFJ1bm5lciIsIkZsdXhNb2R1bGUiLCJIb3RSZWxvYWRTZXJ2ZXIiLCJTb3VyY2VNb2R1bGVMb2FkZXIiLCJjbGFzc2lmeVNsaWNlUHJvamVjdCIsImNsYXNzaWZ5U2xpY2VQcm9qZWN0cyIsImZsdXgiLCJub3JtYWxpemVTbGljZVByZWZpeCIsInByb2plY3RzSW5TbGljZSIsInByb2plY3RzSW5TbGljZXMiLCJyZXNvbHZlRGVmZXJTY3JpcHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBS1NBO2VBQUFBLDJDQUEwQjs7UUFMMUJDO2VBQUFBLDBDQUFvQjs7UUFHcEJDO2VBQUFBLHNCQUFVOztRQUVrQkM7ZUFBQUEsZ0NBQWU7O1FBZTNDQztlQUFBQSxzQ0FBa0I7O1FBVjFCQztlQUFBQSxnQ0FBb0I7O1FBQ3BCQztlQUFBQSxpQ0FBcUI7O1FBVGJDO2VBQUFBLFVBQUk7O1FBVVpDO2VBQUFBLGdDQUFvQjs7UUFDcEJDO2VBQUFBLDJCQUFlOztRQUNmQztlQUFBQSw0QkFBZ0I7O1FBQ2hCQztlQUFBQSw4QkFBa0I7OztzQ0Fma0I7c0JBRWhCOzRCQUNNO2lDQUVpQzs0QkFhckQ7b0NBRTRCIn0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "rewriteServeSpecifier", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return rewriteServeSpecifier;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodeurl = require("node:url");
|
|
12
|
+
const _mesh = require("@decohere/mesh");
|
|
13
|
+
function rewriteServeSpecifier(options) {
|
|
14
|
+
const { specifier, parentUrl, isWatchedTs, resolveBare, versionFileUrl } = options;
|
|
15
|
+
const relativeTs = resolveRelativeWatchedTs(specifier, parentUrl, isWatchedTs);
|
|
16
|
+
if (relativeTs != null) {
|
|
17
|
+
return versionFileUrl((0, _nodeurl.pathToFileURL)(relativeTs).toString());
|
|
18
|
+
}
|
|
19
|
+
const bareTarget = resolveBare(specifier);
|
|
20
|
+
if (bareTarget != null && isWatchedTs(bareTarget)) {
|
|
21
|
+
return versionFileUrl((0, _nodeurl.pathToFileURL)(bareTarget).toString());
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
function resolveRelativeWatchedTs(specifier, parentUrl, isWatchedTs) {
|
|
26
|
+
if (_mesh.packageAliases.isBareSpecifier(specifier)) return null;
|
|
27
|
+
if (!(specifier.startsWith(".") || specifier.startsWith("/"))) return null;
|
|
28
|
+
const parentClean = parentUrl.split("?")[0];
|
|
29
|
+
if (parentClean == null || parentClean === "") return null;
|
|
30
|
+
let resolved;
|
|
31
|
+
try {
|
|
32
|
+
resolved = new URL(specifier, parentClean);
|
|
33
|
+
} catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
if (resolved.protocol !== "file:") return null;
|
|
37
|
+
let filePath = (0, _nodeurl.fileURLToPath)(resolved);
|
|
38
|
+
if (filePath.endsWith(".js")) {
|
|
39
|
+
filePath = `${filePath.slice(0, -3)}.ts`;
|
|
40
|
+
} else if (!filePath.endsWith(".ts")) {
|
|
41
|
+
filePath = `${filePath}.ts`;
|
|
42
|
+
}
|
|
43
|
+
return isWatchedTs(filePath) ? filePath : null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3Jld3JpdGUtc2VydmUtc3BlY2lmaWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVVUkxUb1BhdGgsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcbmltcG9ydCB7IHBhY2thZ2VBbGlhc2VzIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5cbmV4cG9ydCB0eXBlIFJld3JpdGVTZXJ2ZVNwZWNpZmllck9wdGlvbnMgPSB7XG5cdHNwZWNpZmllcjogc3RyaW5nO1xuXHRwYXJlbnRVcmw6IHN0cmluZztcblx0aXNXYXRjaGVkVHM6IChhYnNvbHV0ZVBhdGg6IHN0cmluZykgPT4gYm9vbGVhbjtcblx0cmVzb2x2ZUJhcmU6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcblx0dmVyc2lvbkZpbGVVcmw6IChmaWxlVXJsOiBzdHJpbmcpID0+IHN0cmluZztcbn07XG5cbi8qKlxuICogTWFwIGEgcmVzb2x2ZS1ob29rIHNwZWNpZmllciB0byBhIHZlcnNpb25lZCB3YXRjaGVkIGAudHNgIGZpbGUgVVJMLlxuICogQ292ZXJzIHJlbGF0aXZlIGAuanNgIC8gYC50c2AgLyBleHRlbnNpb25sZXNzIGltcG9ydHMgYW5kIGJhcmUgd29ya3NwYWNlXG4gKiBwYWNrYWdlIG5hbWVzIChkeW5hbWljIGBpbXBvcnQoKWAgbmV2ZXIgZ29lcyB0aHJvdWdoIFNXQyBwYXRoIHJld3JpdGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV3cml0ZVNlcnZlU3BlY2lmaWVyKG9wdGlvbnM6IFJld3JpdGVTZXJ2ZVNwZWNpZmllck9wdGlvbnMpOiBzdHJpbmcgfCBudWxsIHtcblx0Y29uc3QgeyBzcGVjaWZpZXIsIHBhcmVudFVybCwgaXNXYXRjaGVkVHMsIHJlc29sdmVCYXJlLCB2ZXJzaW9uRmlsZVVybCB9ID0gb3B0aW9ucztcblxuXHRjb25zdCByZWxhdGl2ZVRzID0gcmVzb2x2ZVJlbGF0aXZlV2F0Y2hlZFRzKHNwZWNpZmllciwgcGFyZW50VXJsLCBpc1dhdGNoZWRUcyk7XG5cdGlmIChyZWxhdGl2ZVRzICE9IG51bGwpIHtcblx0XHRyZXR1cm4gdmVyc2lvbkZpbGVVcmwocGF0aFRvRmlsZVVSTChyZWxhdGl2ZVRzKS50b1N0cmluZygpKTtcblx0fVxuXG5cdGNvbnN0IGJhcmVUYXJnZXQgPSByZXNvbHZlQmFyZShzcGVjaWZpZXIpO1xuXHRpZiAoYmFyZVRhcmdldCAhPSBudWxsICYmIGlzV2F0Y2hlZFRzKGJhcmVUYXJnZXQpKSB7XG5cdFx0cmV0dXJuIHZlcnNpb25GaWxlVXJsKHBhdGhUb0ZpbGVVUkwoYmFyZVRhcmdldCkudG9TdHJpbmcoKSk7XG5cdH1cblxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlbGF0aXZlV2F0Y2hlZFRzKFxuXHRzcGVjaWZpZXI6IHN0cmluZyxcblx0cGFyZW50VXJsOiBzdHJpbmcsXG5cdGlzV2F0Y2hlZFRzOiAoYWJzb2x1dGVQYXRoOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pOiBzdHJpbmcgfCBudWxsIHtcblx0aWYgKHBhY2thZ2VBbGlhc2VzLmlzQmFyZVNwZWNpZmllcihzcGVjaWZpZXIpKSByZXR1cm4gbnVsbDtcblx0aWYgKCEoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IHNwZWNpZmllci5zdGFydHNXaXRoKFwiL1wiKSkpIHJldHVybiBudWxsO1xuXG5cdGNvbnN0IHBhcmVudENsZWFuID0gcGFyZW50VXJsLnNwbGl0KFwiP1wiKVswXTtcblx0aWYgKHBhcmVudENsZWFuID09IG51bGwgfHwgcGFyZW50Q2xlYW4gPT09IFwiXCIpIHJldHVybiBudWxsO1xuXG5cdGxldCByZXNvbHZlZDogVVJMO1xuXHR0cnkge1xuXHRcdHJlc29sdmVkID0gbmV3IFVSTChzcGVjaWZpZXIsIHBhcmVudENsZWFuKTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0aWYgKHJlc29sdmVkLnByb3RvY29sICE9PSBcImZpbGU6XCIpIHJldHVybiBudWxsO1xuXG5cdGxldCBmaWxlUGF0aCA9IGZpbGVVUkxUb1BhdGgocmVzb2x2ZWQpO1xuXHRpZiAoZmlsZVBhdGguZW5kc1dpdGgoXCIuanNcIikpIHtcblx0XHRmaWxlUGF0aCA9IGAke2ZpbGVQYXRoLnNsaWNlKDAsIC0zKX0udHNgO1xuXHR9IGVsc2UgaWYgKCFmaWxlUGF0aC5lbmRzV2l0aChcIi50c1wiKSkge1xuXHRcdGZpbGVQYXRoID0gYCR7ZmlsZVBhdGh9LnRzYDtcblx0fVxuXG5cdHJldHVybiBpc1dhdGNoZWRUcyhmaWxlUGF0aCkgPyBmaWxlUGF0aCA6IG51bGw7XG59XG4iXSwibmFtZXMiOlsicmV3cml0ZVNlcnZlU3BlY2lmaWVyIiwib3B0aW9ucyIsInNwZWNpZmllciIsInBhcmVudFVybCIsImlzV2F0Y2hlZFRzIiwicmVzb2x2ZUJhcmUiLCJ2ZXJzaW9uRmlsZVVybCIsInJlbGF0aXZlVHMiLCJyZXNvbHZlUmVsYXRpdmVXYXRjaGVkVHMiLCJwYXRoVG9GaWxlVVJMIiwidG9TdHJpbmciLCJiYXJlVGFyZ2V0IiwicGFja2FnZUFsaWFzZXMiLCJpc0JhcmVTcGVjaWZpZXIiLCJzdGFydHNXaXRoIiwicGFyZW50Q2xlYW4iLCJzcGxpdCIsInJlc29sdmVkIiwiVVJMIiwicHJvdG9jb2wiLCJmaWxlUGF0aCIsImZpbGVVUkxUb1BhdGgiLCJlbmRzV2l0aCIsInNsaWNlIl0sIm1hcHBpbmdzIjoiOzs7OytCQWdCZ0JBOzs7ZUFBQUE7Ozt5QkFoQjZCO3NCQUNkO0FBZXhCLFNBQVNBLHNCQUFzQkMsT0FBcUM7SUFDMUUsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLGNBQWMsRUFBRSxHQUFHTDtJQUUzRSxNQUFNTSxhQUFhQyx5QkFBeUJOLFdBQVdDLFdBQVdDO0lBQ2xFLElBQUlHLGNBQWMsTUFBTTtRQUN2QixPQUFPRCxlQUFlRyxJQUFBQSxzQkFBYSxFQUFDRixZQUFZRyxRQUFRO0lBQ3pEO0lBRUEsTUFBTUMsYUFBYU4sWUFBWUg7SUFDL0IsSUFBSVMsY0FBYyxRQUFRUCxZQUFZTyxhQUFhO1FBQ2xELE9BQU9MLGVBQWVHLElBQUFBLHNCQUFhLEVBQUNFLFlBQVlELFFBQVE7SUFDekQ7SUFFQSxPQUFPO0FBQ1I7QUFFQSxTQUFTRix5QkFDUk4sU0FBaUIsRUFDakJDLFNBQWlCLEVBQ2pCQyxXQUE4QztJQUU5QyxJQUFJUSxvQkFBYyxDQUFDQyxlQUFlLENBQUNYLFlBQVksT0FBTztJQUN0RCxJQUFJLENBQUVBLENBQUFBLFVBQVVZLFVBQVUsQ0FBQyxRQUFRWixVQUFVWSxVQUFVLENBQUMsSUFBRyxHQUFJLE9BQU87SUFFdEUsTUFBTUMsY0FBY1osVUFBVWEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQzNDLElBQUlELGVBQWUsUUFBUUEsZ0JBQWdCLElBQUksT0FBTztJQUV0RCxJQUFJRTtJQUNKLElBQUk7UUFDSEEsV0FBVyxJQUFJQyxJQUFJaEIsV0FBV2E7SUFDL0IsRUFBRSxPQUFNO1FBQ1AsT0FBTztJQUNSO0lBQ0EsSUFBSUUsU0FBU0UsUUFBUSxLQUFLLFNBQVMsT0FBTztJQUUxQyxJQUFJQyxXQUFXQyxJQUFBQSxzQkFBYSxFQUFDSjtJQUM3QixJQUFJRyxTQUFTRSxRQUFRLENBQUMsUUFBUTtRQUM3QkYsV0FBVyxHQUFHQSxTQUFTRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3pDLE9BQU8sSUFBSSxDQUFDSCxTQUFTRSxRQUFRLENBQUMsUUFBUTtRQUNyQ0YsV0FBVyxHQUFHQSxTQUFTLEdBQUcsQ0FBQztJQUM1QjtJQUVBLE9BQU9oQixZQUFZZ0IsWUFBWUEsV0FBVztBQUMzQyJ9
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "RunAction", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return RunAction;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _decorators = require("@decohere/crucible/decorators");
|
|
12
|
+
const _mesh = require("@decohere/mesh");
|
|
13
|
+
const _cli = require("@decohere/nexus/cli");
|
|
14
|
+
const _scribe = require("@decohere/scribe");
|
|
15
|
+
const _flux = require("./flux.js");
|
|
16
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
17
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
18
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
19
|
+
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;
|
|
20
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
21
|
+
}
|
|
22
|
+
function _ts_metadata(k, v) {
|
|
23
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
24
|
+
}
|
|
25
|
+
class RunAction {
|
|
26
|
+
workspace;
|
|
27
|
+
logger = _scribe.scribe.logger(RunAction.name);
|
|
28
|
+
constructor(workspace){
|
|
29
|
+
this.workspace = workspace;
|
|
30
|
+
}
|
|
31
|
+
async run(options) {
|
|
32
|
+
this.logger.trace(`Running ${options.entry}`);
|
|
33
|
+
await _flux.flux.run(options.entry, {
|
|
34
|
+
configuration: options.configuration,
|
|
35
|
+
args: options.args,
|
|
36
|
+
workspace: this.workspace
|
|
37
|
+
});
|
|
38
|
+
return _cli.ActionResponse.Success(RunAction.name);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
RunAction = _ts_decorate([
|
|
42
|
+
(0, _decorators.injectable)(),
|
|
43
|
+
_ts_metadata("design:type", Function),
|
|
44
|
+
_ts_metadata("design:paramtypes", [
|
|
45
|
+
typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
|
|
46
|
+
])
|
|
47
|
+
], RunAction);
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3J1bi5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbiwgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBmbHV4IH0gZnJvbSBcIi4vZmx1eC5qc1wiO1xuXG5leHBvcnQgdHlwZSBSdW5PcHRpb25zID0ge1xuXHQvKiogQWJzb2x1dGUgb3IgY3dkLXJlbGF0aXZlIHBhdGggdG8gYSBgLnRzYCBlbnRyeSBmaWxlLiAqL1xuXHRlbnRyeTogc3RyaW5nO1xuXHRjb25maWd1cmF0aW9uOiBzdHJpbmc7XG5cdC8qKiBBcmd1bWVudHMgZm9yd2FyZGVkIHRvIHRoZSBlbnRyeSAoYmluLXN0eWxlIGBwcm9jZXNzLmFyZ3Yuc2xpY2UoMilgKS4gKi9cblx0YXJncz86IHN0cmluZ1tdO1xufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bkFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxSdW5PcHRpb25zPiB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIgPSBzY3JpYmUubG9nZ2VyKFJ1bkFjdGlvbi5uYW1lKTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSkge31cblxuXHRwdWJsaWMgYXN5bmMgcnVuKG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0dGhpcy5sb2dnZXIudHJhY2UoYFJ1bm5pbmcgJHtvcHRpb25zLmVudHJ5fWApO1xuXHRcdGF3YWl0IGZsdXgucnVuKG9wdGlvbnMuZW50cnksIHtcblx0XHRcdGNvbmZpZ3VyYXRpb246IG9wdGlvbnMuY29uZmlndXJhdGlvbixcblx0XHRcdGFyZ3M6IG9wdGlvbnMuYXJncyxcblx0XHRcdHdvcmtzcGFjZTogdGhpcy53b3Jrc3BhY2UsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoUnVuQWN0aW9uLm5hbWUpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiUnVuQWN0aW9uIiwibG9nZ2VyIiwic2NyaWJlIiwibmFtZSIsIndvcmtzcGFjZSIsInJ1biIsIm9wdGlvbnMiLCJ0cmFjZSIsImVudHJ5IiwiZmx1eCIsImNvbmZpZ3VyYXRpb24iLCJhcmdzIiwiQWN0aW9uUmVzcG9uc2UiLCJTdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7OytCQWdCYUE7OztlQUFBQTs7OzRCQWhCYztzQkFFRDtxQkFDa0I7d0JBQ1I7c0JBQ2Y7Ozs7Ozs7Ozs7QUFXZCxNQUFNQTs7SUFDS0MsU0FBaUJDLGNBQU0sQ0FBQ0QsTUFBTSxDQUFDRCxVQUFVRyxJQUFJLEVBQUU7SUFFaEUsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRTNELE1BQWFDLElBQUlDLE9BQW1CLEVBQTJCO1FBQzlELElBQUksQ0FBQ0wsTUFBTSxDQUFDTSxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUVELFFBQVFFLEtBQUssRUFBRTtRQUM1QyxNQUFNQyxVQUFJLENBQUNKLEdBQUcsQ0FBQ0MsUUFBUUUsS0FBSyxFQUFFO1lBQzdCRSxlQUFlSixRQUFRSSxhQUFhO1lBQ3BDQyxNQUFNTCxRQUFRSyxJQUFJO1lBQ2xCUCxXQUFXLElBQUksQ0FBQ0EsU0FBUztRQUMxQjtRQUNBLE9BQU9RLG1CQUFjLENBQUNDLE9BQU8sQ0FBQ2IsVUFBVUcsSUFBSTtJQUM3QztBQUNEIn0=
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "RunCommand", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return RunCommand;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _cli = require("@decohere/nexus/cli");
|
|
12
|
+
const _runaction = require("./run.action.js");
|
|
13
|
+
class RunCommand extends _cli.DecohereCommand {
|
|
14
|
+
get actions() {
|
|
15
|
+
return [
|
|
16
|
+
_runaction.RunAction
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
constructor(name){
|
|
20
|
+
super(name);
|
|
21
|
+
this.description("Compile and run a TypeScript entry on the fly (no watch / HMR)");
|
|
22
|
+
this.argument("<entry>", "Path to the TypeScript entry file");
|
|
23
|
+
this.argument("[args...]", "Arguments forwarded to the entry after rewriting argv");
|
|
24
|
+
this.addOption(new _cli.ConfigurationOption("debug"));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Commander passes positionals before options when `<entry> [args...]` is declared.
|
|
28
|
+
* The CLI host ModuleFactory expects `(opts, cmd)` — normalize and stash entry/args on opts.
|
|
29
|
+
*/ action(fn) {
|
|
30
|
+
return super.action((...args)=>{
|
|
31
|
+
const cmd = args.at(-1);
|
|
32
|
+
const opts = args.at(-2);
|
|
33
|
+
const { entry, entryArgs } = normalizeRunPositionals(args.slice(0, -2));
|
|
34
|
+
cmd.setOptionValue("entry", entry);
|
|
35
|
+
cmd.setOptionValue("args", entryArgs);
|
|
36
|
+
return fn(opts, cmd);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Commander yields `[entry, args[]]` or sometimes a flat list depending on arity. */ function normalizeRunPositionals(positionals) {
|
|
41
|
+
if (positionals.length === 0) {
|
|
42
|
+
return {
|
|
43
|
+
entry: "",
|
|
44
|
+
entryArgs: []
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const first = positionals[0];
|
|
48
|
+
if (typeof first !== "string" || first === "") {
|
|
49
|
+
return {
|
|
50
|
+
entry: "",
|
|
51
|
+
entryArgs: []
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const second = positionals[1];
|
|
55
|
+
if (Array.isArray(second)) {
|
|
56
|
+
return {
|
|
57
|
+
entry: first,
|
|
58
|
+
entryArgs: second.filter((s)=>typeof s === "string")
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
entry: first,
|
|
63
|
+
entryArgs: positionals.slice(1).filter((s)=>typeof s === "string" && s !== "")
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3J1bi5jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyYXRpb25PcHRpb24sIERlY29oZXJlQ29tbWFuZCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvblZhbHVlcyB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IFJ1bkFjdGlvbiB9IGZyb20gXCIuL3J1bi5hY3Rpb24uanNcIjtcblxuZXhwb3J0IGNsYXNzIFJ1bkNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGlvbnMoKSB7XG5cdFx0cmV0dXJuIFtSdW5BY3Rpb25dO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJDb21waWxlIGFuZCBydW4gYSBUeXBlU2NyaXB0IGVudHJ5IG9uIHRoZSBmbHkgKG5vIHdhdGNoIC8gSE1SKVwiKTtcblx0XHR0aGlzLmFyZ3VtZW50KFwiPGVudHJ5PlwiLCBcIlBhdGggdG8gdGhlIFR5cGVTY3JpcHQgZW50cnkgZmlsZVwiKTtcblx0XHR0aGlzLmFyZ3VtZW50KFwiW2FyZ3MuLi5dXCIsIFwiQXJndW1lbnRzIGZvcndhcmRlZCB0byB0aGUgZW50cnkgYWZ0ZXIgcmV3cml0aW5nIGFyZ3ZcIik7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IENvbmZpZ3VyYXRpb25PcHRpb24oXCJkZWJ1Z1wiKSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29tbWFuZGVyIHBhc3NlcyBwb3NpdGlvbmFscyBiZWZvcmUgb3B0aW9ucyB3aGVuIGA8ZW50cnk+IFthcmdzLi4uXWAgaXMgZGVjbGFyZWQuXG5cdCAqIFRoZSBDTEkgaG9zdCBNb2R1bGVGYWN0b3J5IGV4cGVjdHMgYChvcHRzLCBjbWQpYCDigJQgbm9ybWFsaXplIGFuZCBzdGFzaCBlbnRyeS9hcmdzIG9uIG9wdHMuXG5cdCAqL1xuXHRwdWJsaWMgb3ZlcnJpZGUgYWN0aW9uKGZuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KTogdGhpcyB7XG5cdFx0cmV0dXJuIHN1cGVyLmFjdGlvbigoLi4uYXJnczogYW55W10pID0+IHtcblx0XHRcdGNvbnN0IGNtZCA9IGFyZ3MuYXQoLTEpIGFzIERlY29oZXJlQ29tbWFuZDtcblx0XHRcdGNvbnN0IG9wdHMgPSBhcmdzLmF0KC0yKSBhcyBPcHRpb25WYWx1ZXM7XG5cdFx0XHRjb25zdCB7IGVudHJ5LCBlbnRyeUFyZ3MgfSA9IG5vcm1hbGl6ZVJ1blBvc2l0aW9uYWxzKGFyZ3Muc2xpY2UoMCwgLTIpKTtcblx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcImVudHJ5XCIsIGVudHJ5KTtcblx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcImFyZ3NcIiwgZW50cnlBcmdzKTtcblx0XHRcdHJldHVybiBmbihvcHRzLCBjbWQpO1xuXHRcdH0pO1xuXHR9XG59XG5cbi8qKiBDb21tYW5kZXIgeWllbGRzIGBbZW50cnksIGFyZ3NbXV1gIG9yIHNvbWV0aW1lcyBhIGZsYXQgbGlzdCBkZXBlbmRpbmcgb24gYXJpdHkuICovXG5mdW5jdGlvbiBub3JtYWxpemVSdW5Qb3NpdGlvbmFscyhwb3NpdGlvbmFsczogdW5rbm93bltdKToge1xuXHRlbnRyeTogc3RyaW5nO1xuXHRlbnRyeUFyZ3M6IHN0cmluZ1tdO1xufSB7XG5cdGlmIChwb3NpdGlvbmFscy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4geyBlbnRyeTogXCJcIiwgZW50cnlBcmdzOiBbXSB9O1xuXHR9XG5cblx0Y29uc3QgZmlyc3QgPSBwb3NpdGlvbmFsc1swXTtcblx0aWYgKHR5cGVvZiBmaXJzdCAhPT0gXCJzdHJpbmdcIiB8fCBmaXJzdCA9PT0gXCJcIikge1xuXHRcdHJldHVybiB7IGVudHJ5OiBcIlwiLCBlbnRyeUFyZ3M6IFtdIH07XG5cdH1cblxuXHRjb25zdCBzZWNvbmQgPSBwb3NpdGlvbmFsc1sxXTtcblx0aWYgKEFycmF5LmlzQXJyYXkoc2Vjb25kKSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRlbnRyeTogZmlyc3QsXG5cdFx0XHRlbnRyeUFyZ3M6IHNlY29uZC5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiksXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0ZW50cnk6IGZpcnN0LFxuXHRcdGVudHJ5QXJnczogcG9zaXRpb25hbHNcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmIHMgIT09IFwiXCIpLFxuXHR9O1xufVxuIl0sIm5hbWVzIjpbIlJ1bkNvbW1hbmQiLCJEZWNvaGVyZUNvbW1hbmQiLCJhY3Rpb25zIiwiUnVuQWN0aW9uIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiYXJndW1lbnQiLCJhZGRPcHRpb24iLCJDb25maWd1cmF0aW9uT3B0aW9uIiwiYWN0aW9uIiwiZm4iLCJhcmdzIiwiY21kIiwiYXQiLCJvcHRzIiwiZW50cnkiLCJlbnRyeUFyZ3MiLCJub3JtYWxpemVSdW5Qb3NpdGlvbmFscyIsInNsaWNlIiwic2V0T3B0aW9uVmFsdWUiLCJwb3NpdGlvbmFscyIsImxlbmd0aCIsImZpcnN0Iiwic2Vjb25kIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwicyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFJYUE7OztlQUFBQTs7O3FCQUp3QzsyQkFFM0I7QUFFbkIsTUFBTUEsbUJBQW1CQyxvQkFBZTtJQUM5QyxJQUFvQkMsVUFBVTtRQUM3QixPQUFPO1lBQUNDLG9CQUFTO1NBQUM7SUFDbkI7SUFFQSxZQUFtQkMsSUFBWSxDQUFFO1FBQ2hDLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNDLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNDLFFBQVEsQ0FBQyxXQUFXO1FBQ3pCLElBQUksQ0FBQ0EsUUFBUSxDQUFDLGFBQWE7UUFDM0IsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSUMsd0JBQW1CLENBQUM7SUFDeEM7SUFFQTs7O0VBR0MsR0FDRCxBQUFnQkMsT0FBT0MsRUFBNEMsRUFBUTtRQUMxRSxPQUFPLEtBQUssQ0FBQ0QsT0FBTyxDQUFDLEdBQUdFO1lBQ3ZCLE1BQU1DLE1BQU1ELEtBQUtFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JCLE1BQU1DLE9BQU9ILEtBQUtFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sRUFBRUUsS0FBSyxFQUFFQyxTQUFTLEVBQUUsR0FBR0Msd0JBQXdCTixLQUFLTyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ3BFTixJQUFJTyxjQUFjLENBQUMsU0FBU0o7WUFDNUJILElBQUlPLGNBQWMsQ0FBQyxRQUFRSDtZQUMzQixPQUFPTixHQUFHSSxNQUFNRjtRQUNqQjtJQUNEO0FBQ0Q7QUFFQSxvRkFBb0YsR0FDcEYsU0FBU0ssd0JBQXdCRyxXQUFzQjtJQUl0RCxJQUFJQSxZQUFZQyxNQUFNLEtBQUssR0FBRztRQUM3QixPQUFPO1lBQUVOLE9BQU87WUFBSUMsV0FBVyxFQUFFO1FBQUM7SUFDbkM7SUFFQSxNQUFNTSxRQUFRRixXQUFXLENBQUMsRUFBRTtJQUM1QixJQUFJLE9BQU9FLFVBQVUsWUFBWUEsVUFBVSxJQUFJO1FBQzlDLE9BQU87WUFBRVAsT0FBTztZQUFJQyxXQUFXLEVBQUU7UUFBQztJQUNuQztJQUVBLE1BQU1PLFNBQVNILFdBQVcsQ0FBQyxFQUFFO0lBQzdCLElBQUlJLE1BQU1DLE9BQU8sQ0FBQ0YsU0FBUztRQUMxQixPQUFPO1lBQ05SLE9BQU9PO1lBQ1BOLFdBQVdPLE9BQU9HLE1BQU0sQ0FBQyxDQUFDQyxJQUFtQixPQUFPQSxNQUFNO1FBQzNEO0lBQ0Q7SUFFQSxPQUFPO1FBQ05aLE9BQU9PO1FBQ1BOLFdBQVdJLFlBQ1RGLEtBQUssQ0FBQyxHQUNOUSxNQUFNLENBQUMsQ0FBQ0MsSUFBbUIsT0FBT0EsTUFBTSxZQUFZQSxNQUFNO0lBQzdEO0FBQ0QifQ==
|
|
@@ -8,10 +8,19 @@ Object.defineProperty(exports, "ServeAction", {
|
|
|
8
8
|
return ServeAction;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
11
12
|
const _decorators = require("@decohere/crucible/decorators");
|
|
12
13
|
const _mesh = require("@decohere/mesh");
|
|
13
14
|
const _cli = require("@decohere/nexus/cli");
|
|
15
|
+
const _scribe = require("@decohere/scribe");
|
|
16
|
+
const _deferredscriptrunner = require("./deferred-script-runner.js");
|
|
14
17
|
const _hotreloadserver = require("./hot-reload-server.js");
|
|
18
|
+
const _sliceserve = require("./slice-serve.js");
|
|
19
|
+
function _interop_require_default(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
15
24
|
function _ts_decorate(decorators, target, key, desc) {
|
|
16
25
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
17
26
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -24,26 +33,90 @@ function _ts_metadata(k, v) {
|
|
|
24
33
|
class ServeAction {
|
|
25
34
|
server;
|
|
26
35
|
workspace;
|
|
27
|
-
|
|
36
|
+
deferredScripts;
|
|
37
|
+
logger = _scribe.scribe.logger(ServeAction.name);
|
|
38
|
+
constructor(server, workspace, deferredScripts){
|
|
28
39
|
this.server = server;
|
|
29
40
|
this.workspace = workspace;
|
|
41
|
+
this.deferredScripts = deferredScripts;
|
|
30
42
|
}
|
|
31
43
|
async run(options) {
|
|
44
|
+
const slices = (options.slices ?? []).filter((s)=>s !== "");
|
|
45
|
+
if (slices.length > 0 && options.project != null) {
|
|
46
|
+
throw new Error("Use either directory slices or --project, not both");
|
|
47
|
+
}
|
|
48
|
+
if (slices.length > 0) {
|
|
49
|
+
return this.runSlices(options, slices);
|
|
50
|
+
}
|
|
32
51
|
await this.server.start({
|
|
33
52
|
workspace: this.workspace,
|
|
34
53
|
buildConfig: options.configuration,
|
|
35
|
-
project: options.project
|
|
54
|
+
project: options.project,
|
|
55
|
+
rebootDebounceMs: options.rebootDebounceMs
|
|
36
56
|
});
|
|
37
57
|
return _cli.ActionResponse.Blocking(ServeAction.name);
|
|
38
58
|
}
|
|
59
|
+
async runSlices(options, slices) {
|
|
60
|
+
const views = await this.toSliceViews(options.configuration);
|
|
61
|
+
const classified = (0, _sliceserve.classifySliceProjects)(views, slices);
|
|
62
|
+
const label = slices.join(" ");
|
|
63
|
+
for (const skipped of classified.skip){
|
|
64
|
+
this.logger.info(`skipped ${skipped.projectDirectory} — library (no Flux entry / scripts)`);
|
|
65
|
+
}
|
|
66
|
+
if (classified.flux.length === 0 && classified.defer.length === 0) {
|
|
67
|
+
throw new Error(`No runnable projects in slice(s) "${label}" (need Flux main.ts apps and/or package scripts.dev/serve)`);
|
|
68
|
+
}
|
|
69
|
+
const workspaceRoot = _nodepath.default.resolve(this.workspace.rootDir ?? process.cwd());
|
|
70
|
+
for (const deferred of classified.defer){
|
|
71
|
+
const script = (0, _sliceserve.resolveDeferScript)(deferred.scripts);
|
|
72
|
+
if (script == null) continue;
|
|
73
|
+
const project = this.findProject(options.configuration, deferred.name);
|
|
74
|
+
this.deferredScripts.start({
|
|
75
|
+
label: deferred.projectDirectory,
|
|
76
|
+
cwd: project.projectRoot,
|
|
77
|
+
script,
|
|
78
|
+
workspaceRoot
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (classified.flux.length > 0) {
|
|
82
|
+
await this.server.start({
|
|
83
|
+
workspace: this.workspace,
|
|
84
|
+
buildConfig: options.configuration,
|
|
85
|
+
projects: classified.flux.map((p)=>p.name),
|
|
86
|
+
rebootDebounceMs: options.rebootDebounceMs
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return _cli.ActionResponse.Blocking(ServeAction.name);
|
|
90
|
+
}
|
|
91
|
+
async toSliceViews(configuration) {
|
|
92
|
+
const projects = this.workspace.getProjects(configuration);
|
|
93
|
+
return Promise.all(projects.map((project)=>this.toSliceView(project)));
|
|
94
|
+
}
|
|
95
|
+
async toSliceView(project) {
|
|
96
|
+
const pkg = await project.getPackageJson();
|
|
97
|
+
return {
|
|
98
|
+
name: project.name,
|
|
99
|
+
projectDirectory: project.projectDirectory.replaceAll("\\", "/"),
|
|
100
|
+
main: pkg.main ?? "src/index.ts",
|
|
101
|
+
scripts: pkg.scripts ?? {}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
findProject(configuration, name) {
|
|
105
|
+
const found = this.workspace.getProjects(configuration).find((p)=>p.name === name);
|
|
106
|
+
if (found == null) {
|
|
107
|
+
throw new Error(`Project "${name}" not found in workspace`);
|
|
108
|
+
}
|
|
109
|
+
return found;
|
|
110
|
+
}
|
|
39
111
|
}
|
|
40
112
|
ServeAction = _ts_decorate([
|
|
41
113
|
(0, _decorators.injectable)(),
|
|
42
114
|
_ts_metadata("design:type", Function),
|
|
43
115
|
_ts_metadata("design:paramtypes", [
|
|
44
116
|
typeof _hotreloadserver.HotReloadServer === "undefined" ? Object : _hotreloadserver.HotReloadServer,
|
|
45
|
-
typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
|
|
117
|
+
typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace,
|
|
118
|
+
typeof _deferredscriptrunner.DeferredScriptRunner === "undefined" ? Object : _deferredscriptrunner.DeferredScriptRunner
|
|
46
119
|
])
|
|
47
120
|
], ServeAction);
|
|
48
121
|
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IHR5cGUgQWN0aW9uLCBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBIb3RSZWxvYWRTZXJ2ZXIgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBTZXJ2ZU9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0cHJvamVjdD86IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxTZXJ2ZU9wdGlvbnM+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgc2VydmVyOiBIb3RSZWxvYWRTZXJ2ZXIsXG5cdFx0cHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSxcblx0KSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogU2VydmVPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZT4ge1xuXHRcdGF3YWl0IHRoaXMuc2VydmVyLnN0YXJ0KHtcblx0XHRcdHdvcmtzcGFjZTogdGhpcy53b3Jrc3BhY2UsXG5cdFx0XHRidWlsZENvbmZpZzogb3B0aW9ucy5jb25maWd1cmF0aW9uLFxuXHRcdFx0cHJvamVjdDogb3B0aW9ucy5wcm9qZWN0LFxuXHRcdH0pO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5CbG9ja2luZyhTZXJ2ZUFjdGlvbi5uYW1lKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlNlcnZlQWN0aW9uIiwic2VydmVyIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsInN0YXJ0IiwiYnVpbGRDb25maWciLCJjb25maWd1cmF0aW9uIiwicHJvamVjdCIsIkFjdGlvblJlc3BvbnNlIiwiQmxvY2tpbmciLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7OytCQWFhQTs7O2VBQUFBOzs7NEJBYmM7c0JBRUQ7cUJBQ2tCO2lDQUVaOzs7Ozs7Ozs7O0FBUXpCLE1BQU1BOzs7SUFDWixZQUNDLEFBQWlCQyxNQUF1QixFQUN4QyxBQUFpQkMsU0FBb0IsQ0FDcEM7YUFGZ0JELFNBQUFBO2FBQ0FDLFlBQUFBO0lBQ2Y7SUFFSCxNQUFhQyxJQUFJQyxPQUFxQixFQUEyQjtRQUNoRSxNQUFNLElBQUksQ0FBQ0gsTUFBTSxDQUFDSSxLQUFLLENBQUM7WUFDdkJILFdBQVcsSUFBSSxDQUFDQSxTQUFTO1lBQ3pCSSxhQUFhRixRQUFRRyxhQUFhO1lBQ2xDQyxTQUFTSixRQUFRSSxPQUFPO1FBQ3pCO1FBQ0EsT0FBT0MsbUJBQWMsQ0FBQ0MsUUFBUSxDQUFDVixZQUFZVyxJQUFJO0lBQ2hEO0FBQ0QifQ==
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyB0eXBlIFByb2plY3QsIFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgdHlwZSBBY3Rpb24sIEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IHR5cGUgTG9nZ2VyLCBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgRGVmZXJyZWRTY3JpcHRSdW5uZXIgfSBmcm9tIFwiLi9kZWZlcnJlZC1zY3JpcHQtcnVubmVyLmpzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBIb3RSZWxvYWRTZXJ2ZXIgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuaW1wb3J0IHtcblx0Y2xhc3NpZnlTbGljZVByb2plY3RzLFxuXHRyZXNvbHZlRGVmZXJTY3JpcHQsXG5cdHR5cGUgU2xpY2VQcm9qZWN0Vmlldyxcbn0gZnJvbSBcIi4vc2xpY2Utc2VydmUuanNcIjtcblxuZXhwb3J0IHR5cGUgU2VydmVPcHRpb25zID0ge1xuXHRjb25maWd1cmF0aW9uOiBzdHJpbmc7XG5cdHByb2plY3Q/OiBzdHJpbmc7XG5cdC8qKiBPbmUgb3IgbW9yZSBtb2R1bGUgZGlyZWN0b3J5IHRva2VucyAoYGZ1bmRpbmdgLCBgc2hlbGxgLCBgcHJvamVjdHMvZnVuZGluZ2ApLiAqL1xuXHRzbGljZXM/OiBzdHJpbmdbXTtcblx0cmVib290RGVib3VuY2VNcz86IG51bWJlcjtcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxTZXJ2ZU9wdGlvbnM+IHtcblx0cHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlciA9IHNjcmliZS5sb2dnZXIoU2VydmVBY3Rpb24ubmFtZSk7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgc2VydmVyOiBIb3RSZWxvYWRTZXJ2ZXIsXG5cdFx0cHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSxcblx0XHRwcml2YXRlIHJlYWRvbmx5IGRlZmVycmVkU2NyaXB0czogRGVmZXJyZWRTY3JpcHRSdW5uZXIsXG5cdCkge31cblxuXHRwdWJsaWMgYXN5bmMgcnVuKG9wdGlvbnM6IFNlcnZlT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRjb25zdCBzbGljZXMgPSAob3B0aW9ucy5zbGljZXMgPz8gW10pLmZpbHRlcigocykgPT4gcyAhPT0gXCJcIik7XG5cdFx0aWYgKHNsaWNlcy5sZW5ndGggPiAwICYmIG9wdGlvbnMucHJvamVjdCAhPSBudWxsKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVc2UgZWl0aGVyIGRpcmVjdG9yeSBzbGljZXMgb3IgLS1wcm9qZWN0LCBub3QgYm90aFwiKTtcblx0XHR9XG5cblx0XHRpZiAoc2xpY2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiB0aGlzLnJ1blNsaWNlcyhvcHRpb25zLCBzbGljZXMpO1xuXHRcdH1cblxuXHRcdGF3YWl0IHRoaXMuc2VydmVyLnN0YXJ0KHtcblx0XHRcdHdvcmtzcGFjZTogdGhpcy53b3Jrc3BhY2UsXG5cdFx0XHRidWlsZENvbmZpZzogb3B0aW9ucy5jb25maWd1cmF0aW9uLFxuXHRcdFx0cHJvamVjdDogb3B0aW9ucy5wcm9qZWN0LFxuXHRcdFx0cmVib290RGVib3VuY2VNczogb3B0aW9ucy5yZWJvb3REZWJvdW5jZU1zLFxuXHRcdH0pO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5CbG9ja2luZyhTZXJ2ZUFjdGlvbi5uYW1lKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgcnVuU2xpY2VzKG9wdGlvbnM6IFNlcnZlT3B0aW9ucywgc2xpY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRjb25zdCB2aWV3cyA9IGF3YWl0IHRoaXMudG9TbGljZVZpZXdzKG9wdGlvbnMuY29uZmlndXJhdGlvbik7XG5cdFx0Y29uc3QgY2xhc3NpZmllZCA9IGNsYXNzaWZ5U2xpY2VQcm9qZWN0cyh2aWV3cywgc2xpY2VzKTtcblx0XHRjb25zdCBsYWJlbCA9IHNsaWNlcy5qb2luKFwiIFwiKTtcblxuXHRcdGZvciAoY29uc3Qgc2tpcHBlZCBvZiBjbGFzc2lmaWVkLnNraXApIHtcblx0XHRcdHRoaXMubG9nZ2VyLmluZm8oXG5cdFx0XHRcdGBza2lwcGVkICR7c2tpcHBlZC5wcm9qZWN0RGlyZWN0b3J5fSDigJQgbGlicmFyeSAobm8gRmx1eCBlbnRyeSAvIHNjcmlwdHMpYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKGNsYXNzaWZpZWQuZmx1eC5sZW5ndGggPT09IDAgJiYgY2xhc3NpZmllZC5kZWZlci5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YE5vIHJ1bm5hYmxlIHByb2plY3RzIGluIHNsaWNlKHMpIFwiJHtsYWJlbH1cIiAobmVlZCBGbHV4IG1haW4udHMgYXBwcyBhbmQvb3IgcGFja2FnZSBzY3JpcHRzLmRldi9zZXJ2ZSlgLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VSb290ID0gcGF0aC5yZXNvbHZlKHRoaXMud29ya3NwYWNlLnJvb3REaXIgPz8gcHJvY2Vzcy5jd2QoKSk7XG5cblx0XHRmb3IgKGNvbnN0IGRlZmVycmVkIG9mIGNsYXNzaWZpZWQuZGVmZXIpIHtcblx0XHRcdGNvbnN0IHNjcmlwdCA9IHJlc29sdmVEZWZlclNjcmlwdChkZWZlcnJlZC5zY3JpcHRzKTtcblx0XHRcdGlmIChzY3JpcHQgPT0gbnVsbCkgY29udGludWU7XG5cdFx0XHRjb25zdCBwcm9qZWN0ID0gdGhpcy5maW5kUHJvamVjdChvcHRpb25zLmNvbmZpZ3VyYXRpb24sIGRlZmVycmVkLm5hbWUpO1xuXHRcdFx0dGhpcy5kZWZlcnJlZFNjcmlwdHMuc3RhcnQoe1xuXHRcdFx0XHRsYWJlbDogZGVmZXJyZWQucHJvamVjdERpcmVjdG9yeSxcblx0XHRcdFx0Y3dkOiBwcm9qZWN0LnByb2plY3RSb290LFxuXHRcdFx0XHRzY3JpcHQsXG5cdFx0XHRcdHdvcmtzcGFjZVJvb3QsXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoY2xhc3NpZmllZC5mbHV4Lmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuc2VydmVyLnN0YXJ0KHtcblx0XHRcdFx0d29ya3NwYWNlOiB0aGlzLndvcmtzcGFjZSxcblx0XHRcdFx0YnVpbGRDb25maWc6IG9wdGlvbnMuY29uZmlndXJhdGlvbixcblx0XHRcdFx0cHJvamVjdHM6IGNsYXNzaWZpZWQuZmx1eC5tYXAoKHApID0+IHAubmFtZSksXG5cdFx0XHRcdHJlYm9vdERlYm91bmNlTXM6IG9wdGlvbnMucmVib290RGVib3VuY2VNcyxcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5CbG9ja2luZyhTZXJ2ZUFjdGlvbi5uYW1lKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgdG9TbGljZVZpZXdzKGNvbmZpZ3VyYXRpb246IHN0cmluZyk6IFByb21pc2U8U2xpY2VQcm9qZWN0Vmlld1tdPiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSB0aGlzLndvcmtzcGFjZS5nZXRQcm9qZWN0cyhjb25maWd1cmF0aW9uKTtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwocHJvamVjdHMubWFwKChwcm9qZWN0KSA9PiB0aGlzLnRvU2xpY2VWaWV3KHByb2plY3QpKSk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIHRvU2xpY2VWaWV3KHByb2plY3Q6IFByb2plY3QpOiBQcm9taXNlPFNsaWNlUHJvamVjdFZpZXc+IHtcblx0XHRjb25zdCBwa2cgPSBhd2FpdCBwcm9qZWN0LmdldFBhY2thZ2VKc29uKCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdHByb2plY3REaXJlY3Rvcnk6IHByb2plY3QucHJvamVjdERpcmVjdG9yeS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIiksXG5cdFx0XHRtYWluOiBwa2cubWFpbiA/PyBcInNyYy9pbmRleC50c1wiLFxuXHRcdFx0c2NyaXB0czogcGtnLnNjcmlwdHMgPz8ge30sXG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgZmluZFByb2plY3QoY29uZmlndXJhdGlvbjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9qZWN0IHtcblx0XHRjb25zdCBmb3VuZCA9IHRoaXMud29ya3NwYWNlLmdldFByb2plY3RzKGNvbmZpZ3VyYXRpb24pLmZpbmQoKHApID0+IHAubmFtZSA9PT0gbmFtZSk7XG5cdFx0aWYgKGZvdW5kID09IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBcIiR7bmFtZX1cIiBub3QgZm91bmQgaW4gd29ya3NwYWNlYCk7XG5cdFx0fVxuXHRcdHJldHVybiBmb3VuZDtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlNlcnZlQWN0aW9uIiwibG9nZ2VyIiwic2NyaWJlIiwibmFtZSIsInNlcnZlciIsIndvcmtzcGFjZSIsImRlZmVycmVkU2NyaXB0cyIsInJ1biIsIm9wdGlvbnMiLCJzbGljZXMiLCJmaWx0ZXIiLCJzIiwibGVuZ3RoIiwicHJvamVjdCIsIkVycm9yIiwicnVuU2xpY2VzIiwic3RhcnQiLCJidWlsZENvbmZpZyIsImNvbmZpZ3VyYXRpb24iLCJyZWJvb3REZWJvdW5jZU1zIiwiQWN0aW9uUmVzcG9uc2UiLCJCbG9ja2luZyIsInZpZXdzIiwidG9TbGljZVZpZXdzIiwiY2xhc3NpZmllZCIsImNsYXNzaWZ5U2xpY2VQcm9qZWN0cyIsImxhYmVsIiwiam9pbiIsInNraXBwZWQiLCJza2lwIiwiaW5mbyIsInByb2plY3REaXJlY3RvcnkiLCJmbHV4IiwiZGVmZXIiLCJ3b3Jrc3BhY2VSb290IiwicGF0aCIsInJlc29sdmUiLCJyb290RGlyIiwicHJvY2VzcyIsImN3ZCIsImRlZmVycmVkIiwic2NyaXB0IiwicmVzb2x2ZURlZmVyU2NyaXB0Iiwic2NyaXB0cyIsImZpbmRQcm9qZWN0IiwicHJvamVjdFJvb3QiLCJwcm9qZWN0cyIsIm1hcCIsInAiLCJnZXRQcm9qZWN0cyIsIlByb21pc2UiLCJhbGwiLCJ0b1NsaWNlVmlldyIsInBrZyIsImdldFBhY2thZ2VKc29uIiwicmVwbGFjZUFsbCIsIm1haW4iLCJmb3VuZCIsImZpbmQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBeUJhQTs7O2VBQUFBOzs7aUVBekJJOzRCQUNVO3NCQUVhO3FCQUNJO3dCQUNSO3NDQUVDO2lDQUVMOzRCQUt6Qjs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsTUFBTUE7Ozs7SUFDS0MsU0FBaUJDLGNBQU0sQ0FBQ0QsTUFBTSxDQUFDRCxZQUFZRyxJQUFJLEVBQUU7SUFFbEUsWUFDQyxBQUFpQkMsTUFBdUIsRUFDeEMsQUFBaUJDLFNBQW9CLEVBQ3JDLEFBQWlCQyxlQUFxQyxDQUNyRDthQUhnQkYsU0FBQUE7YUFDQUMsWUFBQUE7YUFDQUMsa0JBQUFBO0lBQ2Y7SUFFSCxNQUFhQyxJQUFJQyxPQUFxQixFQUEyQjtRQUNoRSxNQUFNQyxTQUFTLEFBQUNELENBQUFBLFFBQVFDLE1BQU0sSUFBSSxFQUFFLEFBQUQsRUFBR0MsTUFBTSxDQUFDLENBQUNDLElBQU1BLE1BQU07UUFDMUQsSUFBSUYsT0FBT0csTUFBTSxHQUFHLEtBQUtKLFFBQVFLLE9BQU8sSUFBSSxNQUFNO1lBQ2pELE1BQU0sSUFBSUMsTUFBTTtRQUNqQjtRQUVBLElBQUlMLE9BQU9HLE1BQU0sR0FBRyxHQUFHO1lBQ3RCLE9BQU8sSUFBSSxDQUFDRyxTQUFTLENBQUNQLFNBQVNDO1FBQ2hDO1FBRUEsTUFBTSxJQUFJLENBQUNMLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDO1lBQ3ZCWCxXQUFXLElBQUksQ0FBQ0EsU0FBUztZQUN6QlksYUFBYVQsUUFBUVUsYUFBYTtZQUNsQ0wsU0FBU0wsUUFBUUssT0FBTztZQUN4Qk0sa0JBQWtCWCxRQUFRVyxnQkFBZ0I7UUFDM0M7UUFDQSxPQUFPQyxtQkFBYyxDQUFDQyxRQUFRLENBQUNyQixZQUFZRyxJQUFJO0lBQ2hEO0lBRUEsTUFBY1ksVUFBVVAsT0FBcUIsRUFBRUMsTUFBZ0IsRUFBMkI7UUFDekYsTUFBTWEsUUFBUSxNQUFNLElBQUksQ0FBQ0MsWUFBWSxDQUFDZixRQUFRVSxhQUFhO1FBQzNELE1BQU1NLGFBQWFDLElBQUFBLGlDQUFxQixFQUFDSCxPQUFPYjtRQUNoRCxNQUFNaUIsUUFBUWpCLE9BQU9rQixJQUFJLENBQUM7UUFFMUIsS0FBSyxNQUFNQyxXQUFXSixXQUFXSyxJQUFJLENBQUU7WUFDdEMsSUFBSSxDQUFDNUIsTUFBTSxDQUFDNkIsSUFBSSxDQUNmLENBQUMsUUFBUSxFQUFFRixRQUFRRyxnQkFBZ0IsQ0FBQyxvQ0FBb0MsQ0FBQztRQUUzRTtRQUVBLElBQUlQLFdBQVdRLElBQUksQ0FBQ3BCLE1BQU0sS0FBSyxLQUFLWSxXQUFXUyxLQUFLLENBQUNyQixNQUFNLEtBQUssR0FBRztZQUNsRSxNQUFNLElBQUlFLE1BQ1QsQ0FBQyxrQ0FBa0MsRUFBRVksTUFBTSwyREFBMkQsQ0FBQztRQUV6RztRQUVBLE1BQU1RLGdCQUFnQkMsaUJBQUksQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQy9CLFNBQVMsQ0FBQ2dDLE9BQU8sSUFBSUMsUUFBUUMsR0FBRztRQUV4RSxLQUFLLE1BQU1DLFlBQVloQixXQUFXUyxLQUFLLENBQUU7WUFDeEMsTUFBTVEsU0FBU0MsSUFBQUEsOEJBQWtCLEVBQUNGLFNBQVNHLE9BQU87WUFDbEQsSUFBSUYsVUFBVSxNQUFNO1lBQ3BCLE1BQU01QixVQUFVLElBQUksQ0FBQytCLFdBQVcsQ0FBQ3BDLFFBQVFVLGFBQWEsRUFBRXNCLFNBQVNyQyxJQUFJO1lBQ3JFLElBQUksQ0FBQ0csZUFBZSxDQUFDVSxLQUFLLENBQUM7Z0JBQzFCVSxPQUFPYyxTQUFTVCxnQkFBZ0I7Z0JBQ2hDUSxLQUFLMUIsUUFBUWdDLFdBQVc7Z0JBQ3hCSjtnQkFDQVA7WUFDRDtRQUNEO1FBRUEsSUFBSVYsV0FBV1EsSUFBSSxDQUFDcEIsTUFBTSxHQUFHLEdBQUc7WUFDL0IsTUFBTSxJQUFJLENBQUNSLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDO2dCQUN2QlgsV0FBVyxJQUFJLENBQUNBLFNBQVM7Z0JBQ3pCWSxhQUFhVCxRQUFRVSxhQUFhO2dCQUNsQzRCLFVBQVV0QixXQUFXUSxJQUFJLENBQUNlLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQSxFQUFFN0MsSUFBSTtnQkFDM0NnQixrQkFBa0JYLFFBQVFXLGdCQUFnQjtZQUMzQztRQUNEO1FBRUEsT0FBT0MsbUJBQWMsQ0FBQ0MsUUFBUSxDQUFDckIsWUFBWUcsSUFBSTtJQUNoRDtJQUVBLE1BQWNvQixhQUFhTCxhQUFxQixFQUErQjtRQUM5RSxNQUFNNEIsV0FBVyxJQUFJLENBQUN6QyxTQUFTLENBQUM0QyxXQUFXLENBQUMvQjtRQUM1QyxPQUFPZ0MsUUFBUUMsR0FBRyxDQUFDTCxTQUFTQyxHQUFHLENBQUMsQ0FBQ2xDLFVBQVksSUFBSSxDQUFDdUMsV0FBVyxDQUFDdkM7SUFDL0Q7SUFFQSxNQUFjdUMsWUFBWXZDLE9BQWdCLEVBQTZCO1FBQ3RFLE1BQU13QyxNQUFNLE1BQU14QyxRQUFReUMsY0FBYztRQUN4QyxPQUFPO1lBQ05uRCxNQUFNVSxRQUFRVixJQUFJO1lBQ2xCNEIsa0JBQWtCbEIsUUFBUWtCLGdCQUFnQixDQUFDd0IsVUFBVSxDQUFDLE1BQU07WUFDNURDLE1BQU1ILElBQUlHLElBQUksSUFBSTtZQUNsQmIsU0FBU1UsSUFBSVYsT0FBTyxJQUFJLENBQUM7UUFDMUI7SUFDRDtJQUVRQyxZQUFZMUIsYUFBcUIsRUFBRWYsSUFBWSxFQUFXO1FBQ2pFLE1BQU1zRCxRQUFRLElBQUksQ0FBQ3BELFNBQVMsQ0FBQzRDLFdBQVcsQ0FBQy9CLGVBQWV3QyxJQUFJLENBQUMsQ0FBQ1YsSUFBTUEsRUFBRTdDLElBQUksS0FBS0E7UUFDL0UsSUFBSXNELFNBQVMsTUFBTTtZQUNsQixNQUFNLElBQUkzQyxNQUFNLENBQUMsU0FBUyxFQUFFWCxLQUFLLHdCQUF3QixDQUFDO1FBQzNEO1FBQ0EsT0FBT3NEO0lBQ1I7QUFDRCJ9
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "ServeCommand", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _cli = require("@decohere/nexus/cli");
|
|
12
|
+
const _hotreloadserver = require("./hot-reload-server.js");
|
|
12
13
|
const _serveaction = require("./serve.action.js");
|
|
13
14
|
class ServeCommand extends _cli.DecohereCommand {
|
|
14
15
|
get actions() {
|
|
@@ -18,10 +19,39 @@ class ServeCommand extends _cli.DecohereCommand {
|
|
|
18
19
|
}
|
|
19
20
|
constructor(name){
|
|
20
21
|
super(name);
|
|
21
|
-
this.description("Serve a project in
|
|
22
|
+
this.description("Serve a project or directory slices (Flux apps in-process; foreign packages via package scripts)");
|
|
23
|
+
this.argument("[slices...]", "Module directories to serve (e.g. funding shell secmaster, or projects/funding)");
|
|
22
24
|
this.addOption(new _cli.ConfigurationOption("debug"));
|
|
23
25
|
this.addOption(new _cli.ProjectOption());
|
|
26
|
+
this.option("--reboot-debounce-ms <ms>", "Quiet window in milliseconds after the last affecting save before a reboot", (value)=>(0, _hotreloadserver.resolveRebootDebounceMs)(Number(value)), _hotreloadserver.DEFAULT_REBOOT_DEBOUNCE_MS);
|
|
24
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Commander passes positional args before options when `[slices...]` is declared.
|
|
30
|
+
* The CLI host ModuleFactory expects `(opts, cmd)` — normalize here.
|
|
31
|
+
*/ action(fn) {
|
|
32
|
+
return super.action((...args)=>{
|
|
33
|
+
const cmd = args.at(-1);
|
|
34
|
+
const first = args[0];
|
|
35
|
+
const hasPositionalSlices = Array.isArray(first) || typeof first === "string" || first === undefined;
|
|
36
|
+
const opts = hasPositionalSlices ? args[1] : args[0];
|
|
37
|
+
const slices = normalizePositionalSlices(first);
|
|
38
|
+
if (slices.length > 0) {
|
|
39
|
+
cmd.setOptionValue("slices", slices);
|
|
40
|
+
}
|
|
41
|
+
return fn(opts, cmd);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function normalizePositionalSlices(first) {
|
|
46
|
+
if (Array.isArray(first)) {
|
|
47
|
+
return first.filter((s)=>typeof s === "string" && s !== "");
|
|
48
|
+
}
|
|
49
|
+
if (typeof first === "string" && first !== "") {
|
|
50
|
+
return [
|
|
51
|
+
first
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
return [];
|
|
25
55
|
}
|
|
26
56
|
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kLCBQcm9qZWN0T3B0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB0eXBlIHsgT3B0aW9uVmFsdWVzIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgREVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMsIHJlc29sdmVSZWJvb3REZWJvdW5jZU1zIH0gZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmltcG9ydCB7IFNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBTZXJ2ZUNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGlvbnMoKSB7XG5cdFx0cmV0dXJuIFtTZXJ2ZUFjdGlvbl07XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcblx0XHRcdFwiU2VydmUgYSBwcm9qZWN0IG9yIGRpcmVjdG9yeSBzbGljZXMgKEZsdXggYXBwcyBpbi1wcm9jZXNzOyBmb3JlaWduIHBhY2thZ2VzIHZpYSBwYWNrYWdlIHNjcmlwdHMpXCIsXG5cdFx0KTtcblx0XHR0aGlzLmFyZ3VtZW50KFxuXHRcdFx0XCJbc2xpY2VzLi4uXVwiLFxuXHRcdFx0XCJNb2R1bGUgZGlyZWN0b3JpZXMgdG8gc2VydmUgKGUuZy4gZnVuZGluZyBzaGVsbCBzZWNtYXN0ZXIsIG9yIHByb2plY3RzL2Z1bmRpbmcpXCIsXG5cdFx0KTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlndXJhdGlvbk9wdGlvbihcImRlYnVnXCIpKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgUHJvamVjdE9wdGlvbigpKTtcblx0XHR0aGlzLm9wdGlvbihcblx0XHRcdFwiLS1yZWJvb3QtZGVib3VuY2UtbXMgPG1zPlwiLFxuXHRcdFx0XCJRdWlldCB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGFmdGVyIHRoZSBsYXN0IGFmZmVjdGluZyBzYXZlIGJlZm9yZSBhIHJlYm9vdFwiLFxuXHRcdFx0KHZhbHVlOiBzdHJpbmcpID0+IHJlc29sdmVSZWJvb3REZWJvdW5jZU1zKE51bWJlcih2YWx1ZSkpLFxuXHRcdFx0REVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMsXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21tYW5kZXIgcGFzc2VzIHBvc2l0aW9uYWwgYXJncyBiZWZvcmUgb3B0aW9ucyB3aGVuIGBbc2xpY2VzLi4uXWAgaXMgZGVjbGFyZWQuXG5cdCAqIFRoZSBDTEkgaG9zdCBNb2R1bGVGYWN0b3J5IGV4cGVjdHMgYChvcHRzLCBjbWQpYCDigJQgbm9ybWFsaXplIGhlcmUuXG5cdCAqL1xuXHRwdWJsaWMgb3ZlcnJpZGUgYWN0aW9uKGZuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KTogdGhpcyB7XG5cdFx0cmV0dXJuIHN1cGVyLmFjdGlvbigoLi4uYXJnczogYW55W10pID0+IHtcblx0XHRcdGNvbnN0IGNtZCA9IGFyZ3MuYXQoLTEpIGFzIERlY29oZXJlQ29tbWFuZDtcblx0XHRcdGNvbnN0IGZpcnN0ID0gYXJnc1swXTtcblx0XHRcdGNvbnN0IGhhc1Bvc2l0aW9uYWxTbGljZXMgPVxuXHRcdFx0XHRBcnJheS5pc0FycmF5KGZpcnN0KSB8fCB0eXBlb2YgZmlyc3QgPT09IFwic3RyaW5nXCIgfHwgZmlyc3QgPT09IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IG9wdHMgPSBoYXNQb3NpdGlvbmFsU2xpY2VzID8gKGFyZ3NbMV0gYXMgT3B0aW9uVmFsdWVzKSA6IChhcmdzWzBdIGFzIE9wdGlvblZhbHVlcyk7XG5cblx0XHRcdGNvbnN0IHNsaWNlcyA9IG5vcm1hbGl6ZVBvc2l0aW9uYWxTbGljZXMoZmlyc3QpO1xuXHRcdFx0aWYgKHNsaWNlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcInNsaWNlc1wiLCBzbGljZXMpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZuKG9wdHMsIGNtZCk7XG5cdFx0fSk7XG5cdH1cbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBvc2l0aW9uYWxTbGljZXMoZmlyc3Q6IHVua25vd24pOiBzdHJpbmdbXSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGZpcnN0KSkge1xuXHRcdHJldHVybiBmaXJzdC5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiAmJiBzICE9PSBcIlwiKTtcblx0fVxuXHRpZiAodHlwZW9mIGZpcnN0ID09PSBcInN0cmluZ1wiICYmIGZpcnN0ICE9PSBcIlwiKSB7XG5cdFx0cmV0dXJuIFtmaXJzdF07XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuIl0sIm5hbWVzIjpbIlNlcnZlQ29tbWFuZCIsIkRlY29oZXJlQ29tbWFuZCIsImFjdGlvbnMiLCJTZXJ2ZUFjdGlvbiIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50IiwiYWRkT3B0aW9uIiwiQ29uZmlndXJhdGlvbk9wdGlvbiIsIlByb2plY3RPcHRpb24iLCJvcHRpb24iLCJ2YWx1ZSIsInJlc29sdmVSZWJvb3REZWJvdW5jZU1zIiwiTnVtYmVyIiwiREVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMiLCJhY3Rpb24iLCJmbiIsImFyZ3MiLCJjbWQiLCJhdCIsImZpcnN0IiwiaGFzUG9zaXRpb25hbFNsaWNlcyIsIkFycmF5IiwiaXNBcnJheSIsInVuZGVmaW5lZCIsIm9wdHMiLCJzbGljZXMiLCJub3JtYWxpemVQb3NpdGlvbmFsU2xpY2VzIiwibGVuZ3RoIiwic2V0T3B0aW9uVmFsdWUiLCJmaWx0ZXIiLCJzIl0sIm1hcHBpbmdzIjoiOzs7OytCQUthQTs7O2VBQUFBOzs7cUJBTHVEO2lDQUVBOzZCQUN4QztBQUVyQixNQUFNQSxxQkFBcUJDLG9CQUFlO0lBQ2hELElBQW9CQyxVQUFVO1FBQzdCLE9BQU87WUFBQ0Msd0JBQVc7U0FBQztJQUNyQjtJQUVBLFlBQW1CQyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUNmO1FBRUQsSUFBSSxDQUFDQyxRQUFRLENBQ1osZUFDQTtRQUVELElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlDLHdCQUFtQixDQUFDO1FBQ3ZDLElBQUksQ0FBQ0QsU0FBUyxDQUFDLElBQUlFLGtCQUFhO1FBQ2hDLElBQUksQ0FBQ0MsTUFBTSxDQUNWLDZCQUNBLDhFQUNBLENBQUNDLFFBQWtCQyxJQUFBQSx3Q0FBdUIsRUFBQ0MsT0FBT0YsU0FDbERHLDJDQUEwQjtJQUU1QjtJQUVBOzs7RUFHQyxHQUNELEFBQWdCQyxPQUFPQyxFQUE0QyxFQUFRO1FBQzFFLE9BQU8sS0FBSyxDQUFDRCxPQUFPLENBQUMsR0FBR0U7WUFDdkIsTUFBTUMsTUFBTUQsS0FBS0UsRUFBRSxDQUFDLENBQUM7WUFDckIsTUFBTUMsUUFBUUgsSUFBSSxDQUFDLEVBQUU7WUFDckIsTUFBTUksc0JBQ0xDLE1BQU1DLE9BQU8sQ0FBQ0gsVUFBVSxPQUFPQSxVQUFVLFlBQVlBLFVBQVVJO1lBQ2hFLE1BQU1DLE9BQU9KLHNCQUF1QkosSUFBSSxDQUFDLEVBQUUsR0FBcUJBLElBQUksQ0FBQyxFQUFFO1lBRXZFLE1BQU1TLFNBQVNDLDBCQUEwQlA7WUFDekMsSUFBSU0sT0FBT0UsTUFBTSxHQUFHLEdBQUc7Z0JBQ3RCVixJQUFJVyxjQUFjLENBQUMsVUFBVUg7WUFDOUI7WUFDQSxPQUFPVixHQUFHUyxNQUFNUDtRQUNqQjtJQUNEO0FBQ0Q7QUFDQSxTQUFTUywwQkFBMEJQLEtBQWM7SUFDaEQsSUFBSUUsTUFBTUMsT0FBTyxDQUFDSCxRQUFRO1FBQ3pCLE9BQU9BLE1BQU1VLE1BQU0sQ0FBQyxDQUFDQyxJQUFtQixPQUFPQSxNQUFNLFlBQVlBLE1BQU07SUFDeEU7SUFDQSxJQUFJLE9BQU9YLFVBQVUsWUFBWUEsVUFBVSxJQUFJO1FBQzlDLE9BQU87WUFBQ0E7U0FBTTtJQUNmO0lBQ0EsT0FBTyxFQUFFO0FBQ1YifQ==
|
|
@@ -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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
|