@decohere/flux 0.0.1-dev.88 → 0.0.1-dev.9
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/flux.command.js +1 -3
- package/commonjs/src/flux.module.js +2 -6
- package/commonjs/src/hot-reload-server.js +194 -268
- package/commonjs/src/index.js +1 -35
- package/commonjs/src/serve.action.js +4 -77
- package/commonjs/src/serve.command.js +2 -32
- package/es6/src/flux.command.js +1 -3
- package/es6/src/flux.module.js +2 -6
- package/es6/src/hot-reload-server.js +151 -249
- package/es6/src/index.js +2 -6
- package/es6/src/serve.action.js +4 -73
- package/es6/src/serve.command.js +2 -32
- package/package.json +6 -7
- package/types/src/flux.module.d.ts +0 -2
- package/types/src/hot-reload-server.d.ts +22 -45
- package/types/src/index.d.ts +1 -8
- package/types/src/serve.action.d.ts +1 -11
- package/types/src/serve.command.d.ts +0 -5
- package/commonjs/src/deferred-script-runner.js +0 -58
- package/commonjs/src/flux.js +0 -58
- package/commonjs/src/rewrite-serve-specifier.js +0 -46
- package/commonjs/src/run.action.js +0 -49
- package/commonjs/src/run.command.js +0 -67
- package/commonjs/src/slice-serve.js +0 -132
- package/commonjs/src/source-module-loader.js +0 -216
- package/es6/src/deferred-script-runner.js +0 -48
- package/es6/src/flux.js +0 -43
- package/es6/src/rewrite-serve-specifier.js +0 -40
- package/es6/src/run.action.js +0 -40
- package/es6/src/run.command.js +0 -57
- package/es6/src/slice-serve.js +0 -107
- package/es6/src/source-module-loader.js +0 -160
- package/types/src/deferred-script-runner.d.ts +0 -18
- package/types/src/flux.d.ts +0 -43
- package/types/src/rewrite-serve-specifier.d.ts +0 -13
- package/types/src/run.action.d.ts +0 -15
- package/types/src/run.command.d.ts +0 -11
- package/types/src/slice-serve.d.ts +0 -52
- package/types/src/source-module-loader.d.ts +0 -49
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
2
|
-
import { packageAliases } from "@decohere/mesh";
|
|
3
|
-
/**
|
|
4
|
-
* Map a resolve-hook specifier to a versioned watched `.ts` file URL.
|
|
5
|
-
* Covers relative `.js` / `.ts` / extensionless imports and bare workspace
|
|
6
|
-
* package names (dynamic `import()` never goes through SWC path rewrite).
|
|
7
|
-
*/ export function rewriteServeSpecifier(options) {
|
|
8
|
-
const { specifier, parentUrl, isWatchedTs, resolveBare, versionFileUrl } = options;
|
|
9
|
-
const relativeTs = resolveRelativeWatchedTs(specifier, parentUrl, isWatchedTs);
|
|
10
|
-
if (relativeTs != null) {
|
|
11
|
-
return versionFileUrl(pathToFileURL(relativeTs).toString());
|
|
12
|
-
}
|
|
13
|
-
const bareTarget = resolveBare(specifier);
|
|
14
|
-
if (bareTarget != null && isWatchedTs(bareTarget)) {
|
|
15
|
-
return versionFileUrl(pathToFileURL(bareTarget).toString());
|
|
16
|
-
}
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
function resolveRelativeWatchedTs(specifier, parentUrl, isWatchedTs) {
|
|
20
|
-
if (packageAliases.isBareSpecifier(specifier)) return null;
|
|
21
|
-
if (!(specifier.startsWith(".") || specifier.startsWith("/"))) return null;
|
|
22
|
-
const parentClean = parentUrl.split("?")[0];
|
|
23
|
-
if (parentClean == null || parentClean === "") return null;
|
|
24
|
-
let resolved;
|
|
25
|
-
try {
|
|
26
|
-
resolved = new URL(specifier, parentClean);
|
|
27
|
-
} catch {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
if (resolved.protocol !== "file:") return null;
|
|
31
|
-
let filePath = fileURLToPath(resolved);
|
|
32
|
-
if (filePath.endsWith(".js")) {
|
|
33
|
-
filePath = `${filePath.slice(0, -3)}.ts`;
|
|
34
|
-
} else if (!filePath.endsWith(".ts")) {
|
|
35
|
-
filePath = `${filePath}.ts`;
|
|
36
|
-
}
|
|
37
|
-
return isWatchedTs(filePath) ? filePath : null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3Jld3JpdGUtc2VydmUtc3BlY2lmaWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbGVVUkxUb1BhdGgsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcbmltcG9ydCB7IHBhY2thZ2VBbGlhc2VzIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5cbmV4cG9ydCB0eXBlIFJld3JpdGVTZXJ2ZVNwZWNpZmllck9wdGlvbnMgPSB7XG5cdHNwZWNpZmllcjogc3RyaW5nO1xuXHRwYXJlbnRVcmw6IHN0cmluZztcblx0aXNXYXRjaGVkVHM6IChhYnNvbHV0ZVBhdGg6IHN0cmluZykgPT4gYm9vbGVhbjtcblx0cmVzb2x2ZUJhcmU6IChzcGVjaWZpZXI6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcblx0dmVyc2lvbkZpbGVVcmw6IChmaWxlVXJsOiBzdHJpbmcpID0+IHN0cmluZztcbn07XG5cbi8qKlxuICogTWFwIGEgcmVzb2x2ZS1ob29rIHNwZWNpZmllciB0byBhIHZlcnNpb25lZCB3YXRjaGVkIGAudHNgIGZpbGUgVVJMLlxuICogQ292ZXJzIHJlbGF0aXZlIGAuanNgIC8gYC50c2AgLyBleHRlbnNpb25sZXNzIGltcG9ydHMgYW5kIGJhcmUgd29ya3NwYWNlXG4gKiBwYWNrYWdlIG5hbWVzIChkeW5hbWljIGBpbXBvcnQoKWAgbmV2ZXIgZ29lcyB0aHJvdWdoIFNXQyBwYXRoIHJld3JpdGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV3cml0ZVNlcnZlU3BlY2lmaWVyKG9wdGlvbnM6IFJld3JpdGVTZXJ2ZVNwZWNpZmllck9wdGlvbnMpOiBzdHJpbmcgfCBudWxsIHtcblx0Y29uc3QgeyBzcGVjaWZpZXIsIHBhcmVudFVybCwgaXNXYXRjaGVkVHMsIHJlc29sdmVCYXJlLCB2ZXJzaW9uRmlsZVVybCB9ID0gb3B0aW9ucztcblxuXHRjb25zdCByZWxhdGl2ZVRzID0gcmVzb2x2ZVJlbGF0aXZlV2F0Y2hlZFRzKHNwZWNpZmllciwgcGFyZW50VXJsLCBpc1dhdGNoZWRUcyk7XG5cdGlmIChyZWxhdGl2ZVRzICE9IG51bGwpIHtcblx0XHRyZXR1cm4gdmVyc2lvbkZpbGVVcmwocGF0aFRvRmlsZVVSTChyZWxhdGl2ZVRzKS50b1N0cmluZygpKTtcblx0fVxuXG5cdGNvbnN0IGJhcmVUYXJnZXQgPSByZXNvbHZlQmFyZShzcGVjaWZpZXIpO1xuXHRpZiAoYmFyZVRhcmdldCAhPSBudWxsICYmIGlzV2F0Y2hlZFRzKGJhcmVUYXJnZXQpKSB7XG5cdFx0cmV0dXJuIHZlcnNpb25GaWxlVXJsKHBhdGhUb0ZpbGVVUkwoYmFyZVRhcmdldCkudG9TdHJpbmcoKSk7XG5cdH1cblxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlbGF0aXZlV2F0Y2hlZFRzKFxuXHRzcGVjaWZpZXI6IHN0cmluZyxcblx0cGFyZW50VXJsOiBzdHJpbmcsXG5cdGlzV2F0Y2hlZFRzOiAoYWJzb2x1dGVQYXRoOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pOiBzdHJpbmcgfCBudWxsIHtcblx0aWYgKHBhY2thZ2VBbGlhc2VzLmlzQmFyZVNwZWNpZmllcihzcGVjaWZpZXIpKSByZXR1cm4gbnVsbDtcblx0aWYgKCEoc3BlY2lmaWVyLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IHNwZWNpZmllci5zdGFydHNXaXRoKFwiL1wiKSkpIHJldHVybiBudWxsO1xuXG5cdGNvbnN0IHBhcmVudENsZWFuID0gcGFyZW50VXJsLnNwbGl0KFwiP1wiKVswXTtcblx0aWYgKHBhcmVudENsZWFuID09IG51bGwgfHwgcGFyZW50Q2xlYW4gPT09IFwiXCIpIHJldHVybiBudWxsO1xuXG5cdGxldCByZXNvbHZlZDogVVJMO1xuXHR0cnkge1xuXHRcdHJlc29sdmVkID0gbmV3IFVSTChzcGVjaWZpZXIsIHBhcmVudENsZWFuKTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0aWYgKHJlc29sdmVkLnByb3RvY29sICE9PSBcImZpbGU6XCIpIHJldHVybiBudWxsO1xuXG5cdGxldCBmaWxlUGF0aCA9IGZpbGVVUkxUb1BhdGgocmVzb2x2ZWQpO1xuXHRpZiAoZmlsZVBhdGguZW5kc1dpdGgoXCIuanNcIikpIHtcblx0XHRmaWxlUGF0aCA9IGAke2ZpbGVQYXRoLnNsaWNlKDAsIC0zKX0udHNgO1xuXHR9IGVsc2UgaWYgKCFmaWxlUGF0aC5lbmRzV2l0aChcIi50c1wiKSkge1xuXHRcdGZpbGVQYXRoID0gYCR7ZmlsZVBhdGh9LnRzYDtcblx0fVxuXG5cdHJldHVybiBpc1dhdGNoZWRUcyhmaWxlUGF0aCkgPyBmaWxlUGF0aCA6IG51bGw7XG59XG4iXSwibmFtZXMiOlsiZmlsZVVSTFRvUGF0aCIsInBhdGhUb0ZpbGVVUkwiLCJwYWNrYWdlQWxpYXNlcyIsInJld3JpdGVTZXJ2ZVNwZWNpZmllciIsIm9wdGlvbnMiLCJzcGVjaWZpZXIiLCJwYXJlbnRVcmwiLCJpc1dhdGNoZWRUcyIsInJlc29sdmVCYXJlIiwidmVyc2lvbkZpbGVVcmwiLCJyZWxhdGl2ZVRzIiwicmVzb2x2ZVJlbGF0aXZlV2F0Y2hlZFRzIiwidG9TdHJpbmciLCJiYXJlVGFyZ2V0IiwiaXNCYXJlU3BlY2lmaWVyIiwic3RhcnRzV2l0aCIsInBhcmVudENsZWFuIiwic3BsaXQiLCJyZXNvbHZlZCIsIlVSTCIsInByb3RvY29sIiwiZmlsZVBhdGgiLCJlbmRzV2l0aCIsInNsaWNlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLEVBQUVDLGFBQWEsUUFBUSxXQUFXO0FBQ3hELFNBQVNDLGNBQWMsUUFBUSxpQkFBaUI7QUFVaEQ7Ozs7Q0FJQyxHQUNELE9BQU8sU0FBU0Msc0JBQXNCQyxPQUFxQztJQUMxRSxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxFQUFFQyxXQUFXLEVBQUVDLFdBQVcsRUFBRUMsY0FBYyxFQUFFLEdBQUdMO0lBRTNFLE1BQU1NLGFBQWFDLHlCQUF5Qk4sV0FBV0MsV0FBV0M7SUFDbEUsSUFBSUcsY0FBYyxNQUFNO1FBQ3ZCLE9BQU9ELGVBQWVSLGNBQWNTLFlBQVlFLFFBQVE7SUFDekQ7SUFFQSxNQUFNQyxhQUFhTCxZQUFZSDtJQUMvQixJQUFJUSxjQUFjLFFBQVFOLFlBQVlNLGFBQWE7UUFDbEQsT0FBT0osZUFBZVIsY0FBY1ksWUFBWUQsUUFBUTtJQUN6RDtJQUVBLE9BQU87QUFDUjtBQUVBLFNBQVNELHlCQUNSTixTQUFpQixFQUNqQkMsU0FBaUIsRUFDakJDLFdBQThDO0lBRTlDLElBQUlMLGVBQWVZLGVBQWUsQ0FBQ1QsWUFBWSxPQUFPO0lBQ3RELElBQUksQ0FBRUEsQ0FBQUEsVUFBVVUsVUFBVSxDQUFDLFFBQVFWLFVBQVVVLFVBQVUsQ0FBQyxJQUFHLEdBQUksT0FBTztJQUV0RSxNQUFNQyxjQUFjVixVQUFVVyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDM0MsSUFBSUQsZUFBZSxRQUFRQSxnQkFBZ0IsSUFBSSxPQUFPO0lBRXRELElBQUlFO0lBQ0osSUFBSTtRQUNIQSxXQUFXLElBQUlDLElBQUlkLFdBQVdXO0lBQy9CLEVBQUUsT0FBTTtRQUNQLE9BQU87SUFDUjtJQUNBLElBQUlFLFNBQVNFLFFBQVEsS0FBSyxTQUFTLE9BQU87SUFFMUMsSUFBSUMsV0FBV3JCLGNBQWNrQjtJQUM3QixJQUFJRyxTQUFTQyxRQUFRLENBQUMsUUFBUTtRQUM3QkQsV0FBVyxHQUFHQSxTQUFTRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3pDLE9BQU8sSUFBSSxDQUFDRixTQUFTQyxRQUFRLENBQUMsUUFBUTtRQUNyQ0QsV0FBVyxHQUFHQSxTQUFTLEdBQUcsQ0FBQztJQUM1QjtJQUVBLE9BQU9kLFlBQVljLFlBQVlBLFdBQVc7QUFDM0MifQ==
|
package/es6/src/run.action.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
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
|
-
function _ts_metadata(k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
}
|
|
10
|
-
import { injectable } from "@decohere/crucible/decorators";
|
|
11
|
-
// biome-ignore lint/style/useImportType: <DI>
|
|
12
|
-
import { Workspace } from "@decohere/mesh";
|
|
13
|
-
import { ActionResponse } from "@decohere/nexus/cli";
|
|
14
|
-
import { scribe } from "@decohere/scribe";
|
|
15
|
-
import { flux } from "./flux.js";
|
|
16
|
-
export class RunAction {
|
|
17
|
-
workspace;
|
|
18
|
-
logger = scribe.logger(RunAction.name);
|
|
19
|
-
constructor(workspace){
|
|
20
|
-
this.workspace = workspace;
|
|
21
|
-
}
|
|
22
|
-
async run(options) {
|
|
23
|
-
this.logger.trace(`Running ${options.entry}`);
|
|
24
|
-
await flux.run(options.entry, {
|
|
25
|
-
configuration: options.configuration,
|
|
26
|
-
args: options.args,
|
|
27
|
-
workspace: this.workspace
|
|
28
|
-
});
|
|
29
|
-
return ActionResponse.Success(RunAction.name);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
RunAction = _ts_decorate([
|
|
33
|
-
injectable(),
|
|
34
|
-
_ts_metadata("design:type", Function),
|
|
35
|
-
_ts_metadata("design:paramtypes", [
|
|
36
|
-
typeof Workspace === "undefined" ? Object : Workspace
|
|
37
|
-
])
|
|
38
|
-
], RunAction);
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3J1bi5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbiwgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBmbHV4IH0gZnJvbSBcIi4vZmx1eC5qc1wiO1xuXG5leHBvcnQgdHlwZSBSdW5PcHRpb25zID0ge1xuXHQvKiogQWJzb2x1dGUgb3IgY3dkLXJlbGF0aXZlIHBhdGggdG8gYSBgLnRzYCBlbnRyeSBmaWxlLiAqL1xuXHRlbnRyeTogc3RyaW5nO1xuXHRjb25maWd1cmF0aW9uOiBzdHJpbmc7XG5cdC8qKiBBcmd1bWVudHMgZm9yd2FyZGVkIHRvIHRoZSBlbnRyeSAoYmluLXN0eWxlIGBwcm9jZXNzLmFyZ3Yuc2xpY2UoMilgKS4gKi9cblx0YXJncz86IHN0cmluZ1tdO1xufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bkFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxSdW5PcHRpb25zPiB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIgPSBzY3JpYmUubG9nZ2VyKFJ1bkFjdGlvbi5uYW1lKTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSkge31cblxuXHRwdWJsaWMgYXN5bmMgcnVuKG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0dGhpcy5sb2dnZXIudHJhY2UoYFJ1bm5pbmcgJHtvcHRpb25zLmVudHJ5fWApO1xuXHRcdGF3YWl0IGZsdXgucnVuKG9wdGlvbnMuZW50cnksIHtcblx0XHRcdGNvbmZpZ3VyYXRpb246IG9wdGlvbnMuY29uZmlndXJhdGlvbixcblx0XHRcdGFyZ3M6IG9wdGlvbnMuYXJncyxcblx0XHRcdHdvcmtzcGFjZTogdGhpcy53b3Jrc3BhY2UsXG5cdFx0fSk7XG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoUnVuQWN0aW9uLm5hbWUpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiaW5qZWN0YWJsZSIsIldvcmtzcGFjZSIsIkFjdGlvblJlc3BvbnNlIiwic2NyaWJlIiwiZmx1eCIsIlJ1bkFjdGlvbiIsImxvZ2dlciIsIm5hbWUiLCJ3b3Jrc3BhY2UiLCJydW4iLCJvcHRpb25zIiwidHJhY2UiLCJlbnRyeSIsImNvbmZpZ3VyYXRpb24iLCJhcmdzIiwiU3VjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsU0FBU0EsVUFBVSxRQUFRLGdDQUFnQztBQUMzRCw4Q0FBOEM7QUFDOUMsU0FBU0MsU0FBUyxRQUFRLGlCQUFpQjtBQUMzQyxTQUFzQkMsY0FBYyxRQUFRLHNCQUFzQjtBQUNsRSxTQUFzQkMsTUFBTSxRQUFRLG1CQUFtQjtBQUN2RCxTQUFTQyxJQUFJLFFBQVEsWUFBWTtBQVdqQyxPQUFPLE1BQU1DOztJQUNLQyxTQUFpQkgsT0FBT0csTUFBTSxDQUFDRCxVQUFVRSxJQUFJLEVBQUU7SUFFaEUsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRTNELE1BQWFDLElBQUlDLE9BQW1CLEVBQTJCO1FBQzlELElBQUksQ0FBQ0osTUFBTSxDQUFDSyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUVELFFBQVFFLEtBQUssRUFBRTtRQUM1QyxNQUFNUixLQUFLSyxHQUFHLENBQUNDLFFBQVFFLEtBQUssRUFBRTtZQUM3QkMsZUFBZUgsUUFBUUcsYUFBYTtZQUNwQ0MsTUFBTUosUUFBUUksSUFBSTtZQUNsQk4sV0FBVyxJQUFJLENBQUNBLFNBQVM7UUFDMUI7UUFDQSxPQUFPTixlQUFlYSxPQUFPLENBQUNWLFVBQVVFLElBQUk7SUFDN0M7QUFDRCJ9
|
package/es6/src/run.command.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { ConfigurationOption, DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
-
import { RunAction } from "./run.action.js";
|
|
3
|
-
export class RunCommand extends DecohereCommand {
|
|
4
|
-
get actions() {
|
|
5
|
-
return [
|
|
6
|
-
RunAction
|
|
7
|
-
];
|
|
8
|
-
}
|
|
9
|
-
constructor(name){
|
|
10
|
-
super(name);
|
|
11
|
-
this.description("Compile and run a TypeScript entry on the fly (no watch / HMR)");
|
|
12
|
-
this.argument("<entry>", "Path to the TypeScript entry file");
|
|
13
|
-
this.argument("[args...]", "Arguments forwarded to the entry after rewriting argv");
|
|
14
|
-
this.addOption(new ConfigurationOption("debug"));
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Commander passes positionals before options when `<entry> [args...]` is declared.
|
|
18
|
-
* The CLI host ModuleFactory expects `(opts, cmd)` — normalize and stash entry/args on opts.
|
|
19
|
-
*/ action(fn) {
|
|
20
|
-
return super.action((...args)=>{
|
|
21
|
-
const cmd = args.at(-1);
|
|
22
|
-
const opts = args.at(-2);
|
|
23
|
-
const { entry, entryArgs } = normalizeRunPositionals(args.slice(0, -2));
|
|
24
|
-
cmd.setOptionValue("entry", entry);
|
|
25
|
-
cmd.setOptionValue("args", entryArgs);
|
|
26
|
-
return fn(opts, cmd);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/** Commander yields `[entry, args[]]` or sometimes a flat list depending on arity. */ function normalizeRunPositionals(positionals) {
|
|
31
|
-
if (positionals.length === 0) {
|
|
32
|
-
return {
|
|
33
|
-
entry: "",
|
|
34
|
-
entryArgs: []
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
const first = positionals[0];
|
|
38
|
-
if (typeof first !== "string" || first === "") {
|
|
39
|
-
return {
|
|
40
|
-
entry: "",
|
|
41
|
-
entryArgs: []
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
const second = positionals[1];
|
|
45
|
-
if (Array.isArray(second)) {
|
|
46
|
-
return {
|
|
47
|
-
entry: first,
|
|
48
|
-
entryArgs: second.filter((s)=>typeof s === "string")
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
return {
|
|
52
|
-
entry: first,
|
|
53
|
-
entryArgs: positionals.slice(1).filter((s)=>typeof s === "string" && s !== "")
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3J1bi5jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyYXRpb25PcHRpb24sIERlY29oZXJlQ29tbWFuZCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvblZhbHVlcyB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IFJ1bkFjdGlvbiB9IGZyb20gXCIuL3J1bi5hY3Rpb24uanNcIjtcblxuZXhwb3J0IGNsYXNzIFJ1bkNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGlvbnMoKSB7XG5cdFx0cmV0dXJuIFtSdW5BY3Rpb25dO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJDb21waWxlIGFuZCBydW4gYSBUeXBlU2NyaXB0IGVudHJ5IG9uIHRoZSBmbHkgKG5vIHdhdGNoIC8gSE1SKVwiKTtcblx0XHR0aGlzLmFyZ3VtZW50KFwiPGVudHJ5PlwiLCBcIlBhdGggdG8gdGhlIFR5cGVTY3JpcHQgZW50cnkgZmlsZVwiKTtcblx0XHR0aGlzLmFyZ3VtZW50KFwiW2FyZ3MuLi5dXCIsIFwiQXJndW1lbnRzIGZvcndhcmRlZCB0byB0aGUgZW50cnkgYWZ0ZXIgcmV3cml0aW5nIGFyZ3ZcIik7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IENvbmZpZ3VyYXRpb25PcHRpb24oXCJkZWJ1Z1wiKSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29tbWFuZGVyIHBhc3NlcyBwb3NpdGlvbmFscyBiZWZvcmUgb3B0aW9ucyB3aGVuIGA8ZW50cnk+IFthcmdzLi4uXWAgaXMgZGVjbGFyZWQuXG5cdCAqIFRoZSBDTEkgaG9zdCBNb2R1bGVGYWN0b3J5IGV4cGVjdHMgYChvcHRzLCBjbWQpYCDigJQgbm9ybWFsaXplIGFuZCBzdGFzaCBlbnRyeS9hcmdzIG9uIG9wdHMuXG5cdCAqL1xuXHRwdWJsaWMgb3ZlcnJpZGUgYWN0aW9uKGZuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KTogdGhpcyB7XG5cdFx0cmV0dXJuIHN1cGVyLmFjdGlvbigoLi4uYXJnczogYW55W10pID0+IHtcblx0XHRcdGNvbnN0IGNtZCA9IGFyZ3MuYXQoLTEpIGFzIERlY29oZXJlQ29tbWFuZDtcblx0XHRcdGNvbnN0IG9wdHMgPSBhcmdzLmF0KC0yKSBhcyBPcHRpb25WYWx1ZXM7XG5cdFx0XHRjb25zdCB7IGVudHJ5LCBlbnRyeUFyZ3MgfSA9IG5vcm1hbGl6ZVJ1blBvc2l0aW9uYWxzKGFyZ3Muc2xpY2UoMCwgLTIpKTtcblx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcImVudHJ5XCIsIGVudHJ5KTtcblx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcImFyZ3NcIiwgZW50cnlBcmdzKTtcblx0XHRcdHJldHVybiBmbihvcHRzLCBjbWQpO1xuXHRcdH0pO1xuXHR9XG59XG5cbi8qKiBDb21tYW5kZXIgeWllbGRzIGBbZW50cnksIGFyZ3NbXV1gIG9yIHNvbWV0aW1lcyBhIGZsYXQgbGlzdCBkZXBlbmRpbmcgb24gYXJpdHkuICovXG5mdW5jdGlvbiBub3JtYWxpemVSdW5Qb3NpdGlvbmFscyhwb3NpdGlvbmFsczogdW5rbm93bltdKToge1xuXHRlbnRyeTogc3RyaW5nO1xuXHRlbnRyeUFyZ3M6IHN0cmluZ1tdO1xufSB7XG5cdGlmIChwb3NpdGlvbmFscy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4geyBlbnRyeTogXCJcIiwgZW50cnlBcmdzOiBbXSB9O1xuXHR9XG5cblx0Y29uc3QgZmlyc3QgPSBwb3NpdGlvbmFsc1swXTtcblx0aWYgKHR5cGVvZiBmaXJzdCAhPT0gXCJzdHJpbmdcIiB8fCBmaXJzdCA9PT0gXCJcIikge1xuXHRcdHJldHVybiB7IGVudHJ5OiBcIlwiLCBlbnRyeUFyZ3M6IFtdIH07XG5cdH1cblxuXHRjb25zdCBzZWNvbmQgPSBwb3NpdGlvbmFsc1sxXTtcblx0aWYgKEFycmF5LmlzQXJyYXkoc2Vjb25kKSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRlbnRyeTogZmlyc3QsXG5cdFx0XHRlbnRyeUFyZ3M6IHNlY29uZC5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiksXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0ZW50cnk6IGZpcnN0LFxuXHRcdGVudHJ5QXJnczogcG9zaXRpb25hbHNcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmIHMgIT09IFwiXCIpLFxuXHR9O1xufVxuIl0sIm5hbWVzIjpbIkNvbmZpZ3VyYXRpb25PcHRpb24iLCJEZWNvaGVyZUNvbW1hbmQiLCJSdW5BY3Rpb24iLCJSdW5Db21tYW5kIiwiYWN0aW9ucyIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50IiwiYWRkT3B0aW9uIiwiYWN0aW9uIiwiZm4iLCJhcmdzIiwiY21kIiwiYXQiLCJvcHRzIiwiZW50cnkiLCJlbnRyeUFyZ3MiLCJub3JtYWxpemVSdW5Qb3NpdGlvbmFscyIsInNsaWNlIiwic2V0T3B0aW9uVmFsdWUiLCJwb3NpdGlvbmFscyIsImxlbmd0aCIsImZpcnN0Iiwic2Vjb25kIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwicyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsbUJBQW1CLEVBQUVDLGVBQWUsUUFBUSxzQkFBc0I7QUFFM0UsU0FBU0MsU0FBUyxRQUFRLGtCQUFrQjtBQUU1QyxPQUFPLE1BQU1DLG1CQUFtQkY7SUFDL0IsSUFBb0JHLFVBQVU7UUFDN0IsT0FBTztZQUFDRjtTQUFVO0lBQ25CO0lBRUEsWUFBbUJHLElBQVksQ0FBRTtRQUNoQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDQyxRQUFRLENBQUMsV0FBVztRQUN6QixJQUFJLENBQUNBLFFBQVEsQ0FBQyxhQUFhO1FBQzNCLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlSLG9CQUFvQjtJQUN4QztJQUVBOzs7RUFHQyxHQUNELEFBQWdCUyxPQUFPQyxFQUE0QyxFQUFRO1FBQzFFLE9BQU8sS0FBSyxDQUFDRCxPQUFPLENBQUMsR0FBR0U7WUFDdkIsTUFBTUMsTUFBTUQsS0FBS0UsRUFBRSxDQUFDLENBQUM7WUFDckIsTUFBTUMsT0FBT0gsS0FBS0UsRUFBRSxDQUFDLENBQUM7WUFDdEIsTUFBTSxFQUFFRSxLQUFLLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyx3QkFBd0JOLEtBQUtPLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDcEVOLElBQUlPLGNBQWMsQ0FBQyxTQUFTSjtZQUM1QkgsSUFBSU8sY0FBYyxDQUFDLFFBQVFIO1lBQzNCLE9BQU9OLEdBQUdJLE1BQU1GO1FBQ2pCO0lBQ0Q7QUFDRDtBQUVBLG9GQUFvRixHQUNwRixTQUFTSyx3QkFBd0JHLFdBQXNCO0lBSXRELElBQUlBLFlBQVlDLE1BQU0sS0FBSyxHQUFHO1FBQzdCLE9BQU87WUFBRU4sT0FBTztZQUFJQyxXQUFXLEVBQUU7UUFBQztJQUNuQztJQUVBLE1BQU1NLFFBQVFGLFdBQVcsQ0FBQyxFQUFFO0lBQzVCLElBQUksT0FBT0UsVUFBVSxZQUFZQSxVQUFVLElBQUk7UUFDOUMsT0FBTztZQUFFUCxPQUFPO1lBQUlDLFdBQVcsRUFBRTtRQUFDO0lBQ25DO0lBRUEsTUFBTU8sU0FBU0gsV0FBVyxDQUFDLEVBQUU7SUFDN0IsSUFBSUksTUFBTUMsT0FBTyxDQUFDRixTQUFTO1FBQzFCLE9BQU87WUFDTlIsT0FBT087WUFDUE4sV0FBV08sT0FBT0csTUFBTSxDQUFDLENBQUNDLElBQW1CLE9BQU9BLE1BQU07UUFDM0Q7SUFDRDtJQUVBLE9BQU87UUFDTlosT0FBT087UUFDUE4sV0FBV0ksWUFDVEYsS0FBSyxDQUFDLEdBQ05RLE1BQU0sQ0FBQyxDQUFDQyxJQUFtQixPQUFPQSxNQUFNLFlBQVlBLE1BQU07SUFDN0Q7QUFDRCJ9
|
package/es6/src/slice-serve.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
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
|
-
*/ /** Preferred package scripts for foreign toolchains (Nixpacks-style). */ export const DEFER_SCRIPT_CANDIDATES = [
|
|
5
|
-
"dev",
|
|
6
|
-
"serve"
|
|
7
|
-
];
|
|
8
|
-
/**
|
|
9
|
-
* Normalize a CLI slice token to a `projects/…` prefix without a trailing slash.
|
|
10
|
-
* `funding` and `projects/funding` both become `projects/funding`.
|
|
11
|
-
*/ export function normalizeSlicePrefix(slice) {
|
|
12
|
-
const trimmed = slice.replaceAll("\\", "/").replace(/\/+$/, "");
|
|
13
|
-
if (trimmed === "" || trimmed === ".") {
|
|
14
|
-
throw new Error("Slice directory must be a non-empty path");
|
|
15
|
-
}
|
|
16
|
-
if (trimmed === "projects" || trimmed.startsWith("projects/")) {
|
|
17
|
-
return trimmed;
|
|
18
|
-
}
|
|
19
|
-
return `projects/${trimmed}`;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* True when `projectDirectory` belongs to the slice token.
|
|
23
|
-
*
|
|
24
|
-
* Matches:
|
|
25
|
-
* - nested: `projects/funding`, `projects/funding/api`
|
|
26
|
-
* - flat dotted package dirs: `projects/funding.web` for token `funding`
|
|
27
|
-
*
|
|
28
|
-
* Does not match siblings that only share a string prefix (`funding` vs `funding-fee.api`).
|
|
29
|
-
*/ export function isUnderSlice(projectDirectory, slicePrefix) {
|
|
30
|
-
const dir = projectDirectory.replaceAll("\\", "/").replace(/\/+$/, "");
|
|
31
|
-
const prefix = slicePrefix.replaceAll("\\", "/").replace(/\/+$/, "");
|
|
32
|
-
if (dir === prefix || dir.startsWith(`${prefix}/`)) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
// Flat monorepo packages: projects/<module>.<role>
|
|
36
|
-
return dir.startsWith(`${prefix}.`);
|
|
37
|
-
}
|
|
38
|
-
export function projectsInSlice(projects, slice) {
|
|
39
|
-
const prefix = normalizeSlicePrefix(slice);
|
|
40
|
-
return projects.filter((p)=>isUnderSlice(p.projectDirectory, prefix));
|
|
41
|
-
}
|
|
42
|
-
/** Union of packages under any of the slice tokens (deduped by package name). */ export function projectsInSlices(projects, slices) {
|
|
43
|
-
const byName = new Map();
|
|
44
|
-
for (const slice of slices){
|
|
45
|
-
for (const project of projectsInSlice(projects, slice)){
|
|
46
|
-
byName.set(project.name, project);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return [
|
|
50
|
-
...byName.values()
|
|
51
|
-
];
|
|
52
|
-
}
|
|
53
|
-
/** Script invokes Flux (in-process serve stays on Flux, not deferred). */ export function isFluxOwnedScript(script) {
|
|
54
|
-
return /\bflux\b/i.test(script);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* First Nixpacks-style serve script that is not Flux-owned.
|
|
58
|
-
* Prefers `dev`, then `serve`.
|
|
59
|
-
*/ export function resolveDeferScript(scripts) {
|
|
60
|
-
for (const name of DEFER_SCRIPT_CANDIDATES){
|
|
61
|
-
const body = scripts[name];
|
|
62
|
-
if (body != null && body !== "" && !isFluxOwnedScript(body)) {
|
|
63
|
-
return name;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return undefined;
|
|
67
|
-
}
|
|
68
|
-
/** Convention: Flux Node apps use `main` ending in `main.ts` / `main.tsx`. */ export function isFluxAppMain(main) {
|
|
69
|
-
const normalized = main.replaceAll("\\", "/");
|
|
70
|
-
return /(^|\/)main\.tsx?$/.test(normalized);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Classify one package. Foreign serve scripts win over `main.ts` (Vite apps
|
|
74
|
-
* often have a main entry but must not be HMR-booted by Flux).
|
|
75
|
-
*/ export function classifySliceProject(project) {
|
|
76
|
-
if (resolveDeferScript(project.scripts) != null) {
|
|
77
|
-
return "defer";
|
|
78
|
-
}
|
|
79
|
-
if (isFluxAppMain(project.main)) {
|
|
80
|
-
return "flux";
|
|
81
|
-
}
|
|
82
|
-
return "skip";
|
|
83
|
-
}
|
|
84
|
-
export function classifySliceProjects(projects, slices) {
|
|
85
|
-
const tokens = typeof slices === "string" ? [
|
|
86
|
-
slices
|
|
87
|
-
] : [
|
|
88
|
-
...slices
|
|
89
|
-
];
|
|
90
|
-
const inSlice = projectsInSlices(projects, tokens);
|
|
91
|
-
const flux = [];
|
|
92
|
-
const defer = [];
|
|
93
|
-
const skip = [];
|
|
94
|
-
for (const project of inSlice){
|
|
95
|
-
const kind = classifySliceProject(project);
|
|
96
|
-
if (kind === "flux") flux.push(project);
|
|
97
|
-
else if (kind === "defer") defer.push(project);
|
|
98
|
-
else skip.push(project);
|
|
99
|
-
}
|
|
100
|
-
return {
|
|
101
|
-
flux,
|
|
102
|
-
defer,
|
|
103
|
-
skip
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NsaWNlLXNlcnZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGlyZWN0b3J5LXNsaWNlIGhlbHBlcnMgZm9yIGBmbHV4IHNlcnZlIDxkaXI+4oCmYCDigJQgY2xhc3NpZnkgTWVzaCBwYWNrYWdlcyBhc1xuICogRmx1eCBhcHBzLCBOaXhwYWNrcy1zdHlsZSBzY3JpcHQgZGVmZXJyYWxzLCBvciBsaWJyYXJpZXMgdG8gc2tpcC5cbiAqL1xuXG5leHBvcnQgdHlwZSBTbGljZVByb2plY3RWaWV3ID0ge1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdC8qKiBSZWxhdGl2ZSBwcm9qZWN0IGRpciBmcm9tIHdvcmtzcGFjZSByb290IChlLmcuIGBwcm9qZWN0cy9mdW5kaW5nL2FwaWApLiAqL1xuXHRyZWFkb25seSBwcm9qZWN0RGlyZWN0b3J5OiBzdHJpbmc7XG5cdHJlYWRvbmx5IG1haW46IHN0cmluZztcblx0cmVhZG9ubHkgc2NyaXB0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn07XG5cbmV4cG9ydCB0eXBlIFNsaWNlS2luZCA9IFwiZmx1eFwiIHwgXCJkZWZlclwiIHwgXCJza2lwXCI7XG5cbmV4cG9ydCB0eXBlIENsYXNzaWZpZWRTbGljZSA9IHtcblx0cmVhZG9ubHkgZmx1eDogU2xpY2VQcm9qZWN0Vmlld1tdO1xuXHRyZWFkb25seSBkZWZlcjogU2xpY2VQcm9qZWN0Vmlld1tdO1xuXHRyZWFkb25seSBza2lwOiBTbGljZVByb2plY3RWaWV3W107XG59O1xuXG4vKiogUHJlZmVycmVkIHBhY2thZ2Ugc2NyaXB0cyBmb3IgZm9yZWlnbiB0b29sY2hhaW5zIChOaXhwYWNrcy1zdHlsZSkuICovXG5leHBvcnQgY29uc3QgREVGRVJfU0NSSVBUX0NBTkRJREFURVMgPSBbXCJkZXZcIiwgXCJzZXJ2ZVwiXSBhcyBjb25zdDtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBDTEkgc2xpY2UgdG9rZW4gdG8gYSBgcHJvamVjdHMv4oCmYCBwcmVmaXggd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoLlxuICogYGZ1bmRpbmdgIGFuZCBgcHJvamVjdHMvZnVuZGluZ2AgYm90aCBiZWNvbWUgYHByb2plY3RzL2Z1bmRpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpY2VQcmVmaXgoc2xpY2U6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHRyaW1tZWQgPSBzbGljZS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcblx0aWYgKHRyaW1tZWQgPT09IFwiXCIgfHwgdHJpbW1lZCA9PT0gXCIuXCIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJTbGljZSBkaXJlY3RvcnkgbXVzdCBiZSBhIG5vbi1lbXB0eSBwYXRoXCIpO1xuXHR9XG5cdGlmICh0cmltbWVkID09PSBcInByb2plY3RzXCIgfHwgdHJpbW1lZC5zdGFydHNXaXRoKFwicHJvamVjdHMvXCIpKSB7XG5cdFx0cmV0dXJuIHRyaW1tZWQ7XG5cdH1cblx0cmV0dXJuIGBwcm9qZWN0cy8ke3RyaW1tZWR9YDtcbn1cblxuLyoqXG4gKiBUcnVlIHdoZW4gYHByb2plY3REaXJlY3RvcnlgIGJlbG9uZ3MgdG8gdGhlIHNsaWNlIHRva2VuLlxuICpcbiAqIE1hdGNoZXM6XG4gKiAtIG5lc3RlZDogYHByb2plY3RzL2Z1bmRpbmdgLCBgcHJvamVjdHMvZnVuZGluZy9hcGlgXG4gKiAtIGZsYXQgZG90dGVkIHBhY2thZ2UgZGlyczogYHByb2plY3RzL2Z1bmRpbmcud2ViYCBmb3IgdG9rZW4gYGZ1bmRpbmdgXG4gKlxuICogRG9lcyBub3QgbWF0Y2ggc2libGluZ3MgdGhhdCBvbmx5IHNoYXJlIGEgc3RyaW5nIHByZWZpeCAoYGZ1bmRpbmdgIHZzIGBmdW5kaW5nLWZlZS5hcGlgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZXJTbGljZShwcm9qZWN0RGlyZWN0b3J5OiBzdHJpbmcsIHNsaWNlUHJlZml4OiBzdHJpbmcpOiBib29sZWFuIHtcblx0Y29uc3QgZGlyID0gcHJvamVjdERpcmVjdG9yeS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcblx0Y29uc3QgcHJlZml4ID0gc2xpY2VQcmVmaXgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG5cdGlmIChkaXIgPT09IHByZWZpeCB8fCBkaXIuc3RhcnRzV2l0aChgJHtwcmVmaXh9L2ApKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0Ly8gRmxhdCBtb25vcmVwbyBwYWNrYWdlczogcHJvamVjdHMvPG1vZHVsZT4uPHJvbGU+XG5cdHJldHVybiBkaXIuc3RhcnRzV2l0aChgJHtwcmVmaXh9LmApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdHNJblNsaWNlKFxuXHRwcm9qZWN0czogcmVhZG9ubHkgU2xpY2VQcm9qZWN0Vmlld1tdLFxuXHRzbGljZTogc3RyaW5nLFxuKTogU2xpY2VQcm9qZWN0Vmlld1tdIHtcblx0Y29uc3QgcHJlZml4ID0gbm9ybWFsaXplU2xpY2VQcmVmaXgoc2xpY2UpO1xuXHRyZXR1cm4gcHJvamVjdHMuZmlsdGVyKChwKSA9PiBpc1VuZGVyU2xpY2UocC5wcm9qZWN0RGlyZWN0b3J5LCBwcmVmaXgpKTtcbn1cblxuLyoqIFVuaW9uIG9mIHBhY2thZ2VzIHVuZGVyIGFueSBvZiB0aGUgc2xpY2UgdG9rZW5zIChkZWR1cGVkIGJ5IHBhY2thZ2UgbmFtZSkuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdHNJblNsaWNlcyhcblx0cHJvamVjdHM6IHJlYWRvbmx5IFNsaWNlUHJvamVjdFZpZXdbXSxcblx0c2xpY2VzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFNsaWNlUHJvamVjdFZpZXdbXSB7XG5cdGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBTbGljZVByb2plY3RWaWV3PigpO1xuXHRmb3IgKGNvbnN0IHNsaWNlIG9mIHNsaWNlcykge1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0c0luU2xpY2UocHJvamVjdHMsIHNsaWNlKSkge1xuXHRcdFx0YnlOYW1lLnNldChwcm9qZWN0Lm5hbWUsIHByb2plY3QpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gWy4uLmJ5TmFtZS52YWx1ZXMoKV07XG59XG5cbi8qKiBTY3JpcHQgaW52b2tlcyBGbHV4IChpbi1wcm9jZXNzIHNlcnZlIHN0YXlzIG9uIEZsdXgsIG5vdCBkZWZlcnJlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGbHV4T3duZWRTY3JpcHQoc2NyaXB0OiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIC9cXGJmbHV4XFxiL2kudGVzdChzY3JpcHQpO1xufVxuXG4vKipcbiAqIEZpcnN0IE5peHBhY2tzLXN0eWxlIHNlcnZlIHNjcmlwdCB0aGF0IGlzIG5vdCBGbHV4LW93bmVkLlxuICogUHJlZmVycyBgZGV2YCwgdGhlbiBgc2VydmVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlZmVyU2NyaXB0KHNjcmlwdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRmb3IgKGNvbnN0IG5hbWUgb2YgREVGRVJfU0NSSVBUX0NBTkRJREFURVMpIHtcblx0XHRjb25zdCBib2R5ID0gc2NyaXB0c1tuYW1lXTtcblx0XHRpZiAoYm9keSAhPSBudWxsICYmIGJvZHkgIT09IFwiXCIgJiYgIWlzRmx1eE93bmVkU2NyaXB0KGJvZHkpKSB7XG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIENvbnZlbnRpb246IEZsdXggTm9kZSBhcHBzIHVzZSBgbWFpbmAgZW5kaW5nIGluIGBtYWluLnRzYCAvIGBtYWluLnRzeGAuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGbHV4QXBwTWFpbihtYWluOiBzdHJpbmcpOiBib29sZWFuIHtcblx0Y29uc3Qgbm9ybWFsaXplZCA9IG1haW4ucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuXHRyZXR1cm4gLyhefFxcLyltYWluXFwudHN4PyQvLnRlc3Qobm9ybWFsaXplZCk7XG59XG5cbi8qKlxuICogQ2xhc3NpZnkgb25lIHBhY2thZ2UuIEZvcmVpZ24gc2VydmUgc2NyaXB0cyB3aW4gb3ZlciBgbWFpbi50c2AgKFZpdGUgYXBwc1xuICogb2Z0ZW4gaGF2ZSBhIG1haW4gZW50cnkgYnV0IG11c3Qgbm90IGJlIEhNUi1ib290ZWQgYnkgRmx1eCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeVNsaWNlUHJvamVjdChwcm9qZWN0OiBTbGljZVByb2plY3RWaWV3KTogU2xpY2VLaW5kIHtcblx0aWYgKHJlc29sdmVEZWZlclNjcmlwdChwcm9qZWN0LnNjcmlwdHMpICE9IG51bGwpIHtcblx0XHRyZXR1cm4gXCJkZWZlclwiO1xuXHR9XG5cdGlmIChpc0ZsdXhBcHBNYWluKHByb2plY3QubWFpbikpIHtcblx0XHRyZXR1cm4gXCJmbHV4XCI7XG5cdH1cblx0cmV0dXJuIFwic2tpcFwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlTbGljZVByb2plY3RzKFxuXHRwcm9qZWN0czogcmVhZG9ubHkgU2xpY2VQcm9qZWN0Vmlld1tdLFxuXHRzbGljZXM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogQ2xhc3NpZmllZFNsaWNlIHtcblx0Y29uc3QgdG9rZW5zID0gdHlwZW9mIHNsaWNlcyA9PT0gXCJzdHJpbmdcIiA/IFtzbGljZXNdIDogWy4uLnNsaWNlc107XG5cdGNvbnN0IGluU2xpY2UgPSBwcm9qZWN0c0luU2xpY2VzKHByb2plY3RzLCB0b2tlbnMpO1xuXHRjb25zdCBmbHV4OiBTbGljZVByb2plY3RWaWV3W10gPSBbXTtcblx0Y29uc3QgZGVmZXI6IFNsaWNlUHJvamVjdFZpZXdbXSA9IFtdO1xuXHRjb25zdCBza2lwOiBTbGljZVByb2plY3RWaWV3W10gPSBbXTtcblx0Zm9yIChjb25zdCBwcm9qZWN0IG9mIGluU2xpY2UpIHtcblx0XHRjb25zdCBraW5kID0gY2xhc3NpZnlTbGljZVByb2plY3QocHJvamVjdCk7XG5cdFx0aWYgKGtpbmQgPT09IFwiZmx1eFwiKSBmbHV4LnB1c2gocHJvamVjdCk7XG5cdFx0ZWxzZSBpZiAoa2luZCA9PT0gXCJkZWZlclwiKSBkZWZlci5wdXNoKHByb2plY3QpO1xuXHRcdGVsc2Ugc2tpcC5wdXNoKHByb2plY3QpO1xuXHR9XG5cdHJldHVybiB7IGZsdXgsIGRlZmVyLCBza2lwIH07XG59XG4iXSwibmFtZXMiOlsiREVGRVJfU0NSSVBUX0NBTkRJREFURVMiLCJub3JtYWxpemVTbGljZVByZWZpeCIsInNsaWNlIiwidHJpbW1lZCIsInJlcGxhY2VBbGwiLCJyZXBsYWNlIiwiRXJyb3IiLCJzdGFydHNXaXRoIiwiaXNVbmRlclNsaWNlIiwicHJvamVjdERpcmVjdG9yeSIsInNsaWNlUHJlZml4IiwiZGlyIiwicHJlZml4IiwicHJvamVjdHNJblNsaWNlIiwicHJvamVjdHMiLCJmaWx0ZXIiLCJwIiwicHJvamVjdHNJblNsaWNlcyIsInNsaWNlcyIsImJ5TmFtZSIsIk1hcCIsInByb2plY3QiLCJzZXQiLCJuYW1lIiwidmFsdWVzIiwiaXNGbHV4T3duZWRTY3JpcHQiLCJzY3JpcHQiLCJ0ZXN0IiwicmVzb2x2ZURlZmVyU2NyaXB0Iiwic2NyaXB0cyIsImJvZHkiLCJ1bmRlZmluZWQiLCJpc0ZsdXhBcHBNYWluIiwibWFpbiIsIm5vcm1hbGl6ZWQiLCJjbGFzc2lmeVNsaWNlUHJvamVjdCIsImNsYXNzaWZ5U2xpY2VQcm9qZWN0cyIsInRva2VucyIsImluU2xpY2UiLCJmbHV4IiwiZGVmZXIiLCJza2lwIiwia2luZCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQWtCRCx1RUFBdUUsR0FDdkUsT0FBTyxNQUFNQSwwQkFBMEI7SUFBQztJ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
|
|
@@ -1,160 +0,0 @@
|
|
|
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 { registerHooks } from "node:module";
|
|
8
|
-
import path from "node:path";
|
|
9
|
-
import { injectable } from "@decohere/crucible/decorators";
|
|
10
|
-
import { BuildTargets, SwcTranspiler, WorkspaceDefaults } from "@decohere/forge";
|
|
11
|
-
import { packageAliases, WorkspaceFactory } from "@decohere/mesh";
|
|
12
|
-
import { FileEx, io } from "@decohere/nexus/io";
|
|
13
|
-
import { scribe } from "@decohere/scribe";
|
|
14
|
-
import { rewriteServeSpecifier } from "./rewrite-serve-specifier.js";
|
|
15
|
-
export class SourceModuleLoader {
|
|
16
|
-
logger = scribe.logger(SourceModuleLoader.name);
|
|
17
|
-
transpiler = new SwcTranspiler();
|
|
18
|
-
disposed = false;
|
|
19
|
-
hooksRegistered = false;
|
|
20
|
-
workspace;
|
|
21
|
-
buildConfig = "debug";
|
|
22
|
-
fileInfoMap = new Map();
|
|
23
|
-
transpileCache = new Map();
|
|
24
|
-
aliasPaths = {};
|
|
25
|
-
aliasBaseUrl = path.resolve(".");
|
|
26
|
-
versionFileUrl = (fileUrl)=>fileUrl;
|
|
27
|
-
onResolved;
|
|
28
|
-
getWorkspace() {
|
|
29
|
-
return this.workspace;
|
|
30
|
-
}
|
|
31
|
-
getBuildConfig() {
|
|
32
|
-
return this.buildConfig;
|
|
33
|
-
}
|
|
34
|
-
hasSourceFile(absolutePath) {
|
|
35
|
-
return this.fileInfoMap.has(absolutePath);
|
|
36
|
-
}
|
|
37
|
-
sourceFilePaths() {
|
|
38
|
-
return this.fileInfoMap.keys();
|
|
39
|
-
}
|
|
40
|
-
setSourceFile(absolutePath, project) {
|
|
41
|
-
this.fileInfoMap.set(absolutePath, {
|
|
42
|
-
project
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
async configure(options) {
|
|
46
|
-
this.disposed = false;
|
|
47
|
-
this.transpileCache.clear();
|
|
48
|
-
this.buildConfig = options.buildConfig;
|
|
49
|
-
this.workspace = options.workspace ?? await WorkspaceFactory.create({
|
|
50
|
-
...WorkspaceDefaults,
|
|
51
|
-
rootDir: process.cwd()
|
|
52
|
-
});
|
|
53
|
-
this.versionFileUrl = options.versionFileUrl ?? ((fileUrl)=>fileUrl);
|
|
54
|
-
this.onResolved = options.onResolved;
|
|
55
|
-
this.fileInfoMap = await this.buildFileInfoMap(this.buildConfig);
|
|
56
|
-
const aliases = this.workspace.getPackageAliases(this.buildConfig);
|
|
57
|
-
this.aliasBaseUrl = aliases.baseUrl;
|
|
58
|
-
this.aliasPaths = aliases.paths;
|
|
59
|
-
}
|
|
60
|
-
registerHooks() {
|
|
61
|
-
if (this.hooksRegistered) return;
|
|
62
|
-
this.hooksRegistered = true;
|
|
63
|
-
registerHooks({
|
|
64
|
-
resolve: (specifier, context, next)=>{
|
|
65
|
-
if (this.disposed) return next(specifier, context);
|
|
66
|
-
const parentUrl = context.parentURL ?? "";
|
|
67
|
-
const rewritten = rewriteServeSpecifier({
|
|
68
|
-
specifier,
|
|
69
|
-
parentUrl,
|
|
70
|
-
isWatchedTs: (filePath)=>this.fileInfoMap.has(filePath),
|
|
71
|
-
resolveBare: (bare)=>packageAliases.resolvePath(bare, this.aliasPaths, this.aliasBaseUrl),
|
|
72
|
-
versionFileUrl: this.versionFileUrl
|
|
73
|
-
}) ?? specifier;
|
|
74
|
-
const result = next(rewritten, context);
|
|
75
|
-
this.onResolved?.(result, parentUrl);
|
|
76
|
-
return result;
|
|
77
|
-
},
|
|
78
|
-
load: (url, context, next)=>{
|
|
79
|
-
if (this.disposed) return next(url, context);
|
|
80
|
-
const result = this.loadTs(url);
|
|
81
|
-
if (result != null) {
|
|
82
|
-
return {
|
|
83
|
-
format: "module",
|
|
84
|
-
source: result.source,
|
|
85
|
-
shortCircuit: true
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
return next(url, context);
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
async importEntry(absolutePath) {
|
|
93
|
-
const url = this.versionFileUrl(io.pathToFileUrl(path.resolve(absolutePath)));
|
|
94
|
-
return import(url);
|
|
95
|
-
}
|
|
96
|
-
invalidateTranspile(...absolutePaths) {
|
|
97
|
-
for (const fullPath of absolutePaths){
|
|
98
|
-
this.transpileCache.delete(fullPath);
|
|
99
|
-
this.transpiler.invalidateContentCache(new FileEx({
|
|
100
|
-
fullPath
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
dispose() {
|
|
105
|
-
this.disposed = true;
|
|
106
|
-
this.transpileCache.clear();
|
|
107
|
-
this.fileInfoMap.clear();
|
|
108
|
-
this.workspace?.[Symbol.dispose]();
|
|
109
|
-
this.workspace = undefined;
|
|
110
|
-
}
|
|
111
|
-
async buildFileInfoMap(buildConfig) {
|
|
112
|
-
const projects = this.workspace?.getProjects(buildConfig) ?? [];
|
|
113
|
-
const entries = await Promise.all(projects.map(async (project)=>{
|
|
114
|
-
const files = await project.getAllFiles();
|
|
115
|
-
return files.map((file)=>[
|
|
116
|
-
file.fullPath,
|
|
117
|
-
{
|
|
118
|
-
project
|
|
119
|
-
}
|
|
120
|
-
]);
|
|
121
|
-
}));
|
|
122
|
-
return new Map(entries.flat());
|
|
123
|
-
}
|
|
124
|
-
loadTs(url) {
|
|
125
|
-
if (!url.startsWith("file:")) return null;
|
|
126
|
-
const cleanPath = new URL(url).pathname;
|
|
127
|
-
const fileInfo = this.fileInfoMap.get(cleanPath);
|
|
128
|
-
if (fileInfo == null) return null;
|
|
129
|
-
const cached = this.transpileCache.get(cleanPath);
|
|
130
|
-
if (cached != null) return {
|
|
131
|
-
source: cached
|
|
132
|
-
};
|
|
133
|
-
const { project } = fileInfo;
|
|
134
|
-
const tsConfig = project.getTsConfigSync();
|
|
135
|
-
const userConfig = project.getSwcConfigSync();
|
|
136
|
-
const file = new FileEx({
|
|
137
|
-
fullPath: cleanPath
|
|
138
|
-
});
|
|
139
|
-
const response = this.transpiler.transformFileSync(file, BuildTargets.es6, {
|
|
140
|
-
tsConfig,
|
|
141
|
-
aliasPaths: true,
|
|
142
|
-
userConfig,
|
|
143
|
-
workspace: this.workspace,
|
|
144
|
-
projects: this.workspace?.getProjects(this.buildConfig)
|
|
145
|
-
});
|
|
146
|
-
if (response.outcome !== "success") {
|
|
147
|
-
this.logger.error(`Failed to transpile ${cleanPath}`, response);
|
|
148
|
-
throw new Error(`Failed to transpile ${cleanPath}`);
|
|
149
|
-
}
|
|
150
|
-
this.transpileCache.set(cleanPath, response.code);
|
|
151
|
-
return {
|
|
152
|
-
source: response.code
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
SourceModuleLoader = _ts_decorate([
|
|
157
|
-
injectable()
|
|
158
|
-
], SourceModuleLoader);
|
|
159
|
-
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NvdXJjZS1tb2R1bGUtbG9hZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcblx0TG9hZEZuT3V0cHV0LFxuXHRMb2FkSG9va0NvbnRleHQsXG5cdFJlc29sdmVGbk91dHB1dCxcblx0UmVzb2x2ZUhvb2tDb250ZXh0LFxufSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHJlZ2lzdGVySG9va3MgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tIFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IEJ1aWxkVGFyZ2V0cywgU3djVHJhbnNwaWxlciwgV29ya3NwYWNlRGVmYXVsdHMgfSBmcm9tIFwiQGRlY29oZXJlL2ZvcmdlXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QsIFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgcGFja2FnZUFsaWFzZXMsIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IEZpbGVFeCwgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciwgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IHJld3JpdGVTZXJ2ZVNwZWNpZmllciB9IGZyb20gXCIuL3Jld3JpdGUtc2VydmUtc3BlY2lmaWVyLmpzXCI7XG5cbnR5cGUgRmlsZUluZm8gPSB7IHByb2plY3Q6IFByb2plY3QgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VNb2R1bGVMb2FkZXJPcHRpb25zIHtcblx0LyoqIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbmFtZS4gKi9cblx0YnVpbGRDb25maWc6IHN0cmluZztcblx0LyoqXG5cdCAqIFByZS1idWlsdCBXb3Jrc3BhY2UgaW5zdGFuY2UgdG8gdXNlIGluc3RlYWQgb2YgcnVubmluZyBXb3Jrc3BhY2VGYWN0b3J5LlxuXHQgKiBVc2VmdWwgaW4gdGVzdHMgdG8gYnlwYXNzIGZpbGVzeXN0ZW0tYmFzZWQgd29ya3NwYWNlIGRpc2NvdmVyeS5cblx0ICovXG5cdHdvcmtzcGFjZT86IFdvcmtzcGFjZTtcblx0LyoqXG5cdCAqIE1hcCBhIHdhdGNoZWQgYC50c2AgZmlsZSBVUkwgZm9yIEVTTSByZXNvbHV0aW9uLlxuXHQgKiBIb3QgcmVsb2FkIHBhc3NlcyBhIGA/dmVyc2lvbj1gIGJ1c3Q7IG9uZS1zaG90IHJ1biB1c2VzIGlkZW50aXR5LlxuXHQgKi9cblx0dmVyc2lvbkZpbGVVcmw/OiAoZmlsZVVybDogc3RyaW5nKSA9PiBzdHJpbmc7XG5cdC8qKiBPcHRpb25hbCBwb3N0LXJlc29sdmUgaG9vayAoZS5nLiBkZXBlbmRlbmN5IHRyYWNraW5nIGZvciBITVIpLiAqL1xuXHRvblJlc29sdmVkPzogKHJlc3VsdDogUmVzb2x2ZUZuT3V0cHV0LCBwYXJlbnRVcmw6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgTm9kZSBFU00gcmVzb2x2ZS9sb2FkIGhvb2tzIGFuZCBTV0MtdHJhbnNwaWxlcyB3b3Jrc3BhY2UgYC50c2BcbiAqIG9uIHRoZSBmbHkuIE5vIGZpbGUgd2F0Y2hpbmcgYW5kIG5vIGVudHJ5IHJlYm9vdCDigJQgdGhhdCBiZWxvbmdzIHRvXG4gKiB7QGxpbmsgSG90UmVsb2FkU2VydmVyfS5cbiAqL1xuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNvdXJjZU1vZHVsZUxvYWRlciB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIgPSBzY3JpYmUubG9nZ2VyKFNvdXJjZU1vZHVsZUxvYWRlci5uYW1lKTtcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc3BpbGVyID0gbmV3IFN3Y1RyYW5zcGlsZXIoKTtcblx0cHJpdmF0ZSBkaXNwb3NlZCA9IGZhbHNlO1xuXHRwcml2YXRlIGhvb2tzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXHRwcml2YXRlIHdvcmtzcGFjZT86IFdvcmtzcGFjZTtcblx0cHJpdmF0ZSBidWlsZENvbmZpZyA9IFwiZGVidWdcIjtcblx0cHJpdmF0ZSBmaWxlSW5mb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBGaWxlSW5mbz4oKTtcblx0cHJpdmF0ZSB0cmFuc3BpbGVDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cdHByaXZhdGUgYWxpYXNQYXRoczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cdHByaXZhdGUgYWxpYXNCYXNlVXJsID0gcGF0aC5yZXNvbHZlKFwiLlwiKTtcblx0cHJpdmF0ZSB2ZXJzaW9uRmlsZVVybDogKGZpbGVVcmw6IHN0cmluZykgPT4gc3RyaW5nID0gKGZpbGVVcmwpID0+IGZpbGVVcmw7XG5cdHByaXZhdGUgb25SZXNvbHZlZD86IChyZXN1bHQ6IFJlc29sdmVGbk91dHB1dCwgcGFyZW50VXJsOiBzdHJpbmcpID0+IHZvaWQ7XG5cblx0cHVibGljIGdldFdvcmtzcGFjZSgpOiBXb3Jrc3BhY2UgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLndvcmtzcGFjZTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCdWlsZENvbmZpZygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmJ1aWxkQ29uZmlnO1xuXHR9XG5cblx0cHVibGljIGhhc1NvdXJjZUZpbGUoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5maWxlSW5mb01hcC5oYXMoYWJzb2x1dGVQYXRoKTtcblx0fVxuXG5cdHB1YmxpYyBzb3VyY2VGaWxlUGF0aHMoKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5maWxlSW5mb01hcC5rZXlzKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0U291cmNlRmlsZShhYnNvbHV0ZVBhdGg6IHN0cmluZywgcHJvamVjdDogUHJvamVjdCk6IHZvaWQge1xuXHRcdHRoaXMuZmlsZUluZm9NYXAuc2V0KGFic29sdXRlUGF0aCwgeyBwcm9qZWN0IH0pO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGNvbmZpZ3VyZShvcHRpb25zOiBTb3VyY2VNb2R1bGVMb2FkZXJPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5kaXNwb3NlZCA9IGZhbHNlO1xuXHRcdHRoaXMudHJhbnNwaWxlQ2FjaGUuY2xlYXIoKTtcblx0XHR0aGlzLmJ1aWxkQ29uZmlnID0gb3B0aW9ucy5idWlsZENvbmZpZztcblx0XHR0aGlzLndvcmtzcGFjZSA9XG5cdFx0XHRvcHRpb25zLndvcmtzcGFjZSA/P1xuXHRcdFx0KGF3YWl0IFdvcmtzcGFjZUZhY3RvcnkuY3JlYXRlKHsgLi4uV29ya3NwYWNlRGVmYXVsdHMsIHJvb3REaXI6IHByb2Nlc3MuY3dkKCkgfSkpO1xuXHRcdHRoaXMudmVyc2lvbkZpbGVVcmwgPSBvcHRpb25zLnZlcnNpb25GaWxlVXJsID8/ICgoZmlsZVVybCkgPT4gZmlsZVVybCk7XG5cdFx0dGhpcy5vblJlc29sdmVkID0gb3B0aW9ucy5vblJlc29sdmVkO1xuXHRcdHRoaXMuZmlsZUluZm9NYXAgPSBhd2FpdCB0aGlzLmJ1aWxkRmlsZUluZm9NYXAodGhpcy5idWlsZENvbmZpZyk7XG5cdFx0Y29uc3QgYWxpYXNlcyA9IHRoaXMud29ya3NwYWNlLmdldFBhY2thZ2VBbGlhc2VzKHRoaXMuYnVpbGRDb25maWcpO1xuXHRcdHRoaXMuYWxpYXNCYXNlVXJsID0gYWxpYXNlcy5iYXNlVXJsO1xuXHRcdHRoaXMuYWxpYXNQYXRocyA9IGFsaWFzZXMucGF0aHM7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJIb29rcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5ob29rc1JlZ2lzdGVyZWQpIHJldHVybjtcblx0XHR0aGlzLmhvb2tzUmVnaXN0ZXJlZCA9IHRydWU7XG5cdFx0cmVnaXN0ZXJIb29rcyh7XG5cdFx0XHRyZXNvbHZlOiAoXG5cdFx0XHRcdHNwZWNpZmllcjogc3RyaW5nLFxuXHRcdFx0XHRjb250ZXh0OiBSZXNvbHZlSG9va0NvbnRleHQsXG5cdFx0XHRcdG5leHQ6IChzcGVjaWZpZXI6IHN0cmluZywgY29udGV4dD86IFBhcnRpYWw8UmVzb2x2ZUhvb2tDb250ZXh0PikgPT4gUmVzb2x2ZUZuT3V0cHV0LFxuXHRcdFx0KSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm4gbmV4dChzcGVjaWZpZXIsIGNvbnRleHQpO1xuXHRcdFx0XHRjb25zdCBwYXJlbnRVcmwgPSBjb250ZXh0LnBhcmVudFVSTCA/PyBcIlwiO1xuXHRcdFx0XHRjb25zdCByZXdyaXR0ZW4gPVxuXHRcdFx0XHRcdHJld3JpdGVTZXJ2ZVNwZWNpZmllcih7XG5cdFx0XHRcdFx0XHRzcGVjaWZpZXIsXG5cdFx0XHRcdFx0XHRwYXJlbnRVcmwsXG5cdFx0XHRcdFx0XHRpc1dhdGNoZWRUczogKGZpbGVQYXRoKSA9PiB0aGlzLmZpbGVJbmZvTWFwLmhhcyhmaWxlUGF0aCksXG5cdFx0XHRcdFx0XHRyZXNvbHZlQmFyZTogKGJhcmUpID0+XG5cdFx0XHRcdFx0XHRcdHBhY2thZ2VBbGlhc2VzLnJlc29sdmVQYXRoKGJhcmUsIHRoaXMuYWxpYXNQYXRocywgdGhpcy5hbGlhc0Jhc2VVcmwpLFxuXHRcdFx0XHRcdFx0dmVyc2lvbkZpbGVVcmw6IHRoaXMudmVyc2lvbkZpbGVVcmwsXG5cdFx0XHRcdFx0fSkgPz8gc3BlY2lmaWVyO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBuZXh0KHJld3JpdHRlbiwgY29udGV4dCkgYXMgUmVzb2x2ZUZuT3V0cHV0O1xuXHRcdFx0XHR0aGlzLm9uUmVzb2x2ZWQ/LihyZXN1bHQsIHBhcmVudFVybCk7XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9LFxuXHRcdFx0bG9hZDogKFxuXHRcdFx0XHR1cmw6IHN0cmluZyxcblx0XHRcdFx0Y29udGV4dDogTG9hZEhvb2tDb250ZXh0LFxuXHRcdFx0XHRuZXh0OiAodXJsOiBzdHJpbmcsIGNvbnRleHQ/OiBQYXJ0aWFsPExvYWRIb29rQ29udGV4dD4pID0+IExvYWRGbk91dHB1dCxcblx0XHRcdCk6IExvYWRGbk91dHB1dCA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm4gbmV4dCh1cmwsIGNvbnRleHQpO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmxvYWRUcyh1cmwpO1xuXHRcdFx0XHRpZiAocmVzdWx0ICE9IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4geyBmb3JtYXQ6IFwibW9kdWxlXCIsIHNvdXJjZTogcmVzdWx0LnNvdXJjZSwgc2hvcnRDaXJjdWl0OiB0cnVlIH07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG5leHQodXJsLCBjb250ZXh0KTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgaW1wb3J0RW50cnkoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRjb25zdCB1cmwgPSB0aGlzLnZlcnNpb25GaWxlVXJsKGlvLnBhdGhUb0ZpbGVVcmwocGF0aC5yZXNvbHZlKGFic29sdXRlUGF0aCkpKTtcblx0XHRyZXR1cm4gaW1wb3J0KHVybCk7XG5cdH1cblxuXHRwdWJsaWMgaW52YWxpZGF0ZVRyYW5zcGlsZSguLi5hYnNvbHV0ZVBhdGhzOiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgZnVsbFBhdGggb2YgYWJzb2x1dGVQYXRocykge1xuXHRcdFx0dGhpcy50cmFuc3BpbGVDYWNoZS5kZWxldGUoZnVsbFBhdGgpO1xuXHRcdFx0dGhpcy50cmFuc3BpbGVyLmludmFsaWRhdGVDb250ZW50Q2FjaGUobmV3IEZpbGVFeCh7IGZ1bGxQYXRoIH0pKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLmRpc3Bvc2VkID0gdHJ1ZTtcblx0XHR0aGlzLnRyYW5zcGlsZUNhY2hlLmNsZWFyKCk7XG5cdFx0dGhpcy5maWxlSW5mb01hcC5jbGVhcigpO1xuXHRcdHRoaXMud29ya3NwYWNlPy5bU3ltYm9sLmRpc3Bvc2VdKCk7XG5cdFx0dGhpcy53b3Jrc3BhY2UgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGJ1aWxkRmlsZUluZm9NYXAoYnVpbGRDb25maWc6IHN0cmluZyk6IFByb21pc2U8TWFwPHN0cmluZywgRmlsZUluZm8+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSB0aGlzLndvcmtzcGFjZT8uZ2V0UHJvamVjdHMoYnVpbGRDb25maWcpID8/IFtdO1xuXHRcdGNvbnN0IGVudHJpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4ge1xuXHRcdFx0XHRjb25zdCBmaWxlcyA9IGF3YWl0IHByb2plY3QuZ2V0QWxsRmlsZXMoKTtcblx0XHRcdFx0cmV0dXJuIGZpbGVzLm1hcCgoZmlsZSk6IFtzdHJpbmcsIEZpbGVJbmZvXSA9PiBbZmlsZS5mdWxsUGF0aCwgeyBwcm9qZWN0IH1dKTtcblx0XHRcdH0pLFxuXHRcdCk7XG5cdFx0cmV0dXJuIG5ldyBNYXAoZW50cmllcy5mbGF0KCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBsb2FkVHModXJsOiBzdHJpbmcpOiB7IHNvdXJjZTogc3RyaW5nIH0gfCBudWxsIHtcblx0XHRpZiAoIXVybC5zdGFydHNXaXRoKFwiZmlsZTpcIikpIHJldHVybiBudWxsO1xuXG5cdFx0Y29uc3QgY2xlYW5QYXRoID0gbmV3IFVSTCh1cmwpLnBhdGhuYW1lO1xuXHRcdGNvbnN0IGZpbGVJbmZvID0gdGhpcy5maWxlSW5mb01hcC5nZXQoY2xlYW5QYXRoKTtcblx0XHRpZiAoZmlsZUluZm8gPT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cblx0XHRjb25zdCBjYWNoZWQgPSB0aGlzLnRyYW5zcGlsZUNhY2hlLmdldChjbGVhblBhdGgpO1xuXHRcdGlmIChjYWNoZWQgIT0gbnVsbCkgcmV0dXJuIHsgc291cmNlOiBjYWNoZWQgfTtcblxuXHRcdGNvbnN0IHsgcHJvamVjdCB9ID0gZmlsZUluZm87XG5cdFx0Y29uc3QgdHNDb25maWcgPSBwcm9qZWN0LmdldFRzQ29uZmlnU3luYygpO1xuXHRcdGNvbnN0IHVzZXJDb25maWcgPSBwcm9qZWN0LmdldFN3Y0NvbmZpZ1N5bmMoKTtcblxuXHRcdGNvbnN0IGZpbGUgPSBuZXcgRmlsZUV4KHsgZnVsbFBhdGg6IGNsZWFuUGF0aCB9KTtcblx0XHRjb25zdCByZXNwb25zZSA9IHRoaXMudHJhbnNwaWxlci50cmFuc2Zvcm1GaWxlU3luYyhmaWxlLCBCdWlsZFRhcmdldHMuZXM2LCB7XG5cdFx0XHR0c0NvbmZpZyxcblx0XHRcdGFsaWFzUGF0aHM6IHRydWUsXG5cdFx0XHR1c2VyQ29uZmlnLFxuXHRcdFx0d29ya3NwYWNlOiB0aGlzLndvcmtzcGFjZSxcblx0XHRcdHByb2plY3RzOiB0aGlzLndvcmtzcGFjZT8uZ2V0UHJvamVjdHModGhpcy5idWlsZENvbmZpZyksXG5cdFx0fSk7XG5cblx0XHRpZiAocmVzcG9uc2Uub3V0Y29tZSAhPT0gXCJzdWNjZXNzXCIpIHtcblx0XHRcdHRoaXMubG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gdHJhbnNwaWxlICR7Y2xlYW5QYXRofWAsIHJlc3BvbnNlKTtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHRyYW5zcGlsZSAke2NsZWFuUGF0aH1gKTtcblx0XHR9XG5cblx0XHR0aGlzLnRyYW5zcGlsZUNhY2hlLnNldChjbGVhblBhdGgsIHJlc3BvbnNlLmNvZGUpO1xuXHRcdHJldHVybiB7IHNvdXJjZTogcmVzcG9uc2UuY29kZSB9O1xuXHR9XG59XG4iXSwibmFtZXMiOlsicmVnaXN0ZXJIb29rcyIsInBhdGgiLCJpbmplY3RhYmxlIiwiQnVpbGRUYXJnZXRzIiwiU3djVHJhbnNwaWxlciIsIldvcmtzcGFjZURlZmF1bHRzIiwicGFja2FnZUFsaWFzZXMiLCJXb3Jrc3BhY2VGYWN0b3J5IiwiRmlsZUV4IiwiaW8iLCJzY3JpYmUiLCJyZXdyaXRlU2VydmVTcGVjaWZpZXIiLCJTb3VyY2VNb2R1bGVMb2FkZXIiLCJsb2dnZXIiLCJuYW1lIiwidHJhbnNwaWxlciIsImRpc3Bvc2VkIiwiaG9va3NSZWdpc3RlcmVkIiwid29ya3NwYWNlIiwiYnVpbGRDb25maWciLCJmaWxlSW5mb01hcCIsIk1hcCIsInRyYW5zcGlsZUNhY2hlIiwiYWxpYXNQYXRocyIsImFsaWFzQmFzZVVybCIsInJlc29sdmUiLCJ2ZXJzaW9uRmlsZVVybCIsImZpbGVVcmwiLCJvblJlc29sdmVkIiwiZ2V0V29ya3NwYWNlIiwiZ2V0QnVpbGRDb25maWciLCJoYXNTb3VyY2VGaWxlIiwiYWJzb2x1dGVQYXRoIiwiaGFzIiwic291cmNlRmlsZVBhdGhzIiwia2V5cyIsInNldFNvdXJjZUZpbGUiLCJwcm9qZWN0Iiwic2V0IiwiY29uZmlndXJlIiwib3B0aW9ucyIsImNsZWFyIiwiY3JlYXRlIiwicm9vdERpciIsInByb2Nlc3MiLCJjd2QiLCJidWlsZEZpbGVJbmZvTWFwIiwiYWxpYXNlcyIsImdldFBhY2thZ2VBbGlhc2VzIiwiYmFzZVVybCIsInBhdGhzIiwic3BlY2lmaWVyIiwiY29udGV4dCIsIm5leHQiLCJwYXJlbnRVcmwiLCJwYXJlbnRVUkwiLCJyZXdyaXR0ZW4iLCJpc1dhdGNoZWRUcyIsImZpbGVQYXRoIiwicmVzb2x2ZUJhcmUiLCJiYXJlIiwicmVzb2x2ZVBhdGgiLCJyZXN1bHQiLCJsb2FkIiwidXJsIiwibG9hZFRzIiwiZm9ybWF0Iiwic291cmNlIiwic2hvcnRDaXJjdWl0IiwiaW1wb3J0RW50cnkiLCJwYXRoVG9GaWxlVXJsIiwiaW52YWxpZGF0ZVRyYW5zcGlsZSIsImFic29sdXRlUGF0aHMiLCJmdWxsUGF0aCIsImRlbGV0ZSIsImludmFsaWRhdGVDb250ZW50Q2FjaGUiLCJkaXNwb3NlIiwiU3ltYm9sIiwidW5kZWZpbmVkIiwicHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsImVudHJpZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiZmlsZXMiLCJnZXRBbGxGaWxlcyIsImZpbGUiLCJmbGF0Iiwic3RhcnRzV2l0aCIsImNsZWFuUGF0aCIsIlVSTCIsInBhdGhuYW1lIiwiZmlsZUluZm8iLCJnZXQiLCJjYWNoZWQiLCJ0c0NvbmZpZyIsImdldFRzQ29uZmlnU3luYyIsInVzZXJDb25maWciLCJnZXRTd2NDb25maWdTeW5jIiwicmVzcG9uc2UiLCJ0cmFuc2Zvcm1GaWxlU3luYyIsImVzNiIsIm91dGNvbWUiLCJlcnJvciIsIkVycm9yIiwiY29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUEsU0FBU0EsYUFBYSxRQUFRLGNBQWM7QUFDNUMsT0FBT0MsVUFBVSxZQUFZO0FBQzdCLFNBQVNDLFVBQVUsUUFBUSxnQ0FBZ0M7QUFDM0QsU0FBU0MsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLGlCQUFpQixRQUFRLGtCQUFrQjtBQUVqRixTQUFTQyxjQUFjLEVBQUVDLGdCQUFnQixRQUFRLGlCQUFpQjtBQUNsRSxTQUFTQyxNQUFNLEVBQUVDLEVBQUUsUUFBUSxxQkFBcUI7QUFDaEQsU0FBc0JDLE1BQU0sUUFBUSxtQkFBbUI7QUFDdkQsU0FBU0MscUJBQXFCLFFBQVEsK0JBQStCO0FBMkJyRSxPQUFPLE1BQU1DO0lBQ0tDLFNBQWlCSCxPQUFPRyxNQUFNLENBQUNELG1CQUFtQkUsSUFBSSxFQUFFO0lBQ3hEQyxhQUFhLElBQUlYLGdCQUFnQjtJQUMxQ1ksV0FBVyxNQUFNO0lBQ2pCQyxrQkFBa0IsTUFBTTtJQUN4QkMsVUFBc0I7SUFDdEJDLGNBQWMsUUFBUTtJQUN0QkMsY0FBYyxJQUFJQyxNQUF3QjtJQUMxQ0MsaUJBQWlCLElBQUlELE1BQXNCO0lBQzNDRSxhQUF1QyxDQUFDLEVBQUU7SUFDMUNDLGVBQWV2QixLQUFLd0IsT0FBTyxDQUFDLEtBQUs7SUFDakNDLGlCQUE4QyxDQUFDQyxVQUFZQSxRQUFRO0lB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
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { type ChildProcess } from "node:child_process";
|
|
2
|
-
export type DeferredScriptStart = {
|
|
3
|
-
readonly label: string;
|
|
4
|
-
readonly cwd: string;
|
|
5
|
-
readonly script: string;
|
|
6
|
-
/** Workspace root used to detect pnpm/npm/yarn. */
|
|
7
|
-
readonly workspaceRoot: string;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Nixpacks-style child processes for foreign packages in a flux serve slice.
|
|
11
|
-
* Killed when the Flux container disposes (SIGINT → RootModule teardown).
|
|
12
|
-
*/
|
|
13
|
-
export declare class DeferredScriptRunner implements AsyncDisposable {
|
|
14
|
-
private readonly logger;
|
|
15
|
-
private readonly children;
|
|
16
|
-
start(options: DeferredScriptStart): ChildProcess;
|
|
17
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
18
|
-
}
|
package/types/src/flux.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { Workspace } from "@decohere/mesh";
|
|
2
|
-
import { HotReloadServer } from "./hot-reload-server.js";
|
|
3
|
-
export type FluxRunOptions = {
|
|
4
|
-
/** Mesh/Forge configuration name. Defaults to `debug` (`--configuration`). */
|
|
5
|
-
configuration?: string;
|
|
6
|
-
/** Arguments forwarded to the entry (bin-style `process.argv.slice(2)`). */
|
|
7
|
-
args?: string[];
|
|
8
|
-
/**
|
|
9
|
-
* Pre-built Workspace instead of `WorkspaceFactory`.
|
|
10
|
-
* Useful in tests to skip filesystem discovery.
|
|
11
|
-
*/
|
|
12
|
-
workspace?: Workspace;
|
|
13
|
-
};
|
|
14
|
-
export type FluxServeOptions = {
|
|
15
|
-
/** Mesh/Forge configuration name. Defaults to `debug` (`--configuration`). */
|
|
16
|
-
configuration?: string;
|
|
17
|
-
/** Name of the project to serve. Defaults to the first project in the workspace. */
|
|
18
|
-
project?: string;
|
|
19
|
-
/**
|
|
20
|
-
* Multiple Flux app package names to boot in one process (directory slice).
|
|
21
|
-
* When set, takes precedence over {@link project}.
|
|
22
|
-
*/
|
|
23
|
-
projects?: readonly string[];
|
|
24
|
-
/**
|
|
25
|
-
* Pre-built Workspace instead of `WorkspaceFactory`.
|
|
26
|
-
* Useful in tests to skip filesystem discovery.
|
|
27
|
-
*/
|
|
28
|
-
workspace?: Workspace;
|
|
29
|
-
/**
|
|
30
|
-
* Quiet window in milliseconds after the last affecting save before a reboot.
|
|
31
|
-
* Raise this for agent save trains.
|
|
32
|
-
*/
|
|
33
|
-
rebootDebounceMs?: number;
|
|
34
|
-
};
|
|
35
|
-
declare function run(entry: string, options?: FluxRunOptions): Promise<unknown>;
|
|
36
|
-
declare function serve(options?: FluxServeOptions): Promise<HotReloadServer>;
|
|
37
|
-
declare function dispose(): void;
|
|
38
|
-
export declare const flux: {
|
|
39
|
-
run: typeof run;
|
|
40
|
-
serve: typeof serve;
|
|
41
|
-
dispose: typeof dispose;
|
|
42
|
-
};
|
|
43
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type RewriteServeSpecifierOptions = {
|
|
2
|
-
specifier: string;
|
|
3
|
-
parentUrl: string;
|
|
4
|
-
isWatchedTs: (absolutePath: string) => boolean;
|
|
5
|
-
resolveBare: (specifier: string) => string | null;
|
|
6
|
-
versionFileUrl: (fileUrl: string) => string;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Map a resolve-hook specifier to a versioned watched `.ts` file URL.
|
|
10
|
-
* Covers relative `.js` / `.ts` / extensionless imports and bare workspace
|
|
11
|
-
* package names (dynamic `import()` never goes through SWC path rewrite).
|
|
12
|
-
*/
|
|
13
|
-
export declare function rewriteServeSpecifier(options: RewriteServeSpecifierOptions): string | null;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Workspace } from "@decohere/mesh";
|
|
2
|
-
import { type Action, ActionResponse } from "@decohere/nexus/cli";
|
|
3
|
-
export type RunOptions = {
|
|
4
|
-
/** Absolute or cwd-relative path to a `.ts` entry file. */
|
|
5
|
-
entry: string;
|
|
6
|
-
configuration: string;
|
|
7
|
-
/** Arguments forwarded to the entry (bin-style `process.argv.slice(2)`). */
|
|
8
|
-
args?: string[];
|
|
9
|
-
};
|
|
10
|
-
export declare class RunAction implements Action<RunOptions> {
|
|
11
|
-
private readonly workspace;
|
|
12
|
-
private readonly logger;
|
|
13
|
-
constructor(workspace: Workspace);
|
|
14
|
-
run(options: RunOptions): Promise<ActionResponse>;
|
|
15
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
-
import { RunAction } from "./run.action.js";
|
|
3
|
-
export declare class RunCommand extends DecohereCommand {
|
|
4
|
-
get actions(): (typeof RunAction)[];
|
|
5
|
-
constructor(name: string);
|
|
6
|
-
/**
|
|
7
|
-
* Commander passes positionals before options when `<entry> [args...]` is declared.
|
|
8
|
-
* The CLI host ModuleFactory expects `(opts, cmd)` — normalize and stash entry/args on opts.
|
|
9
|
-
*/
|
|
10
|
-
action(fn: (...args: any[]) => void | Promise<void>): this;
|
|
11
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
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
|
-
*/
|
|
5
|
-
export type SliceProjectView = {
|
|
6
|
-
readonly name: string;
|
|
7
|
-
/** Relative project dir from workspace root (e.g. `projects/funding/api`). */
|
|
8
|
-
readonly projectDirectory: string;
|
|
9
|
-
readonly main: string;
|
|
10
|
-
readonly scripts: Record<string, string>;
|
|
11
|
-
};
|
|
12
|
-
export type SliceKind = "flux" | "defer" | "skip";
|
|
13
|
-
export type ClassifiedSlice = {
|
|
14
|
-
readonly flux: SliceProjectView[];
|
|
15
|
-
readonly defer: SliceProjectView[];
|
|
16
|
-
readonly skip: SliceProjectView[];
|
|
17
|
-
};
|
|
18
|
-
/** Preferred package scripts for foreign toolchains (Nixpacks-style). */
|
|
19
|
-
export declare const DEFER_SCRIPT_CANDIDATES: readonly ["dev", "serve"];
|
|
20
|
-
/**
|
|
21
|
-
* Normalize a CLI slice token to a `projects/…` prefix without a trailing slash.
|
|
22
|
-
* `funding` and `projects/funding` both become `projects/funding`.
|
|
23
|
-
*/
|
|
24
|
-
export declare function normalizeSlicePrefix(slice: string): string;
|
|
25
|
-
/**
|
|
26
|
-
* True when `projectDirectory` belongs to the slice token.
|
|
27
|
-
*
|
|
28
|
-
* Matches:
|
|
29
|
-
* - nested: `projects/funding`, `projects/funding/api`
|
|
30
|
-
* - flat dotted package dirs: `projects/funding.web` for token `funding`
|
|
31
|
-
*
|
|
32
|
-
* Does not match siblings that only share a string prefix (`funding` vs `funding-fee.api`).
|
|
33
|
-
*/
|
|
34
|
-
export declare function isUnderSlice(projectDirectory: string, slicePrefix: string): boolean;
|
|
35
|
-
export declare function projectsInSlice(projects: readonly SliceProjectView[], slice: string): SliceProjectView[];
|
|
36
|
-
/** Union of packages under any of the slice tokens (deduped by package name). */
|
|
37
|
-
export declare function projectsInSlices(projects: readonly SliceProjectView[], slices: readonly string[]): SliceProjectView[];
|
|
38
|
-
/** Script invokes Flux (in-process serve stays on Flux, not deferred). */
|
|
39
|
-
export declare function isFluxOwnedScript(script: string): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* First Nixpacks-style serve script that is not Flux-owned.
|
|
42
|
-
* Prefers `dev`, then `serve`.
|
|
43
|
-
*/
|
|
44
|
-
export declare function resolveDeferScript(scripts: Record<string, string>): string | undefined;
|
|
45
|
-
/** Convention: Flux Node apps use `main` ending in `main.ts` / `main.tsx`. */
|
|
46
|
-
export declare function isFluxAppMain(main: string): boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Classify one package. Foreign serve scripts win over `main.ts` (Vite apps
|
|
49
|
-
* often have a main entry but must not be HMR-booted by Flux).
|
|
50
|
-
*/
|
|
51
|
-
export declare function classifySliceProject(project: SliceProjectView): SliceKind;
|
|
52
|
-
export declare function classifySliceProjects(projects: readonly SliceProjectView[], slices: string | readonly string[]): ClassifiedSlice;
|