@decohere/flux 0.0.1-dev.68 → 0.0.1-dev.7
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/ember.command.js +27 -0
- package/commonjs/src/ember.module.js +37 -0
- package/commonjs/src/hot-module-hooks.js +47 -0
- package/commonjs/src/hot-reload-server.js +121 -316
- package/commonjs/src/index.js +35 -9
- package/commonjs/src/serve.action.js +11 -23
- package/commonjs/src/serve.command.js +4 -8
- package/commonjs/src/serve.js +36 -0
- package/commonjs/src/workspace-serve.action.js +59 -0
- package/es6/src/ember.command.js +17 -0
- package/es6/src/ember.module.js +19 -0
- package/es6/src/hot-module-hooks.js +26 -0
- package/es6/src/hot-reload-server.js +119 -303
- package/es6/src/index.js +7 -3
- package/es6/src/serve.action.js +11 -25
- package/es6/src/serve.command.js +5 -9
- package/es6/src/serve.js +32 -0
- package/es6/src/workspace-serve.action.js +45 -0
- package/package.json +12 -7
- package/types/src/{flux.command.d.ts → ember.command.d.ts} +1 -1
- package/types/src/ember.module.d.ts +22 -0
- package/types/src/hot-module-hooks.d.ts +5 -0
- package/types/src/hot-reload-server.d.ts +22 -61
- package/types/src/index.d.ts +8 -3
- package/types/src/serve.action.d.ts +2 -8
- package/types/src/serve.command.d.ts +2 -2
- package/types/src/serve.d.ts +1 -0
- package/types/src/workspace-serve.action.d.ts +11 -0
- package/commonjs/src/flux.command.js +0 -27
- package/commonjs/src/flux.module.js +0 -32
- package/commonjs/src/rewrite-serve-specifier.js +0 -46
- package/es6/src/flux.command.js +0 -17
- package/es6/src/flux.module.js +0 -22
- package/es6/src/rewrite-serve-specifier.js +0 -40
- package/types/src/flux.module.d.ts +0 -14
- package/types/src/rewrite-serve-specifier.d.ts +0 -13
package/es6/src/serve.action.js
CHANGED
|
@@ -4,39 +4,25 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
|
-
function _ts_metadata(k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
}
|
|
10
7
|
import { injectable } from "@decohere/crucible/decorators";
|
|
11
|
-
// biome-ignore lint/style/useImportType: <DI>
|
|
12
|
-
import { Workspace } from "@decohere/mesh";
|
|
13
8
|
import { ActionResponse } from "@decohere/nexus/cli";
|
|
14
|
-
|
|
9
|
+
import { scribe } from "@decohere/scribe";
|
|
15
10
|
import { HotReloadServer } from "./hot-reload-server.js";
|
|
16
11
|
export class ServeAction {
|
|
17
|
-
server;
|
|
18
|
-
workspace;
|
|
19
|
-
constructor(server, workspace){
|
|
20
|
-
this.server = server;
|
|
21
|
-
this.workspace = workspace;
|
|
22
|
-
}
|
|
23
12
|
async run(options) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
const { entry, watchDir } = options;
|
|
14
|
+
const logger = scribe.logger("ServeAction");
|
|
15
|
+
const server = new HotReloadServer(logger);
|
|
16
|
+
process.on("SIGINT", async ()=>{
|
|
17
|
+
await server.dispose();
|
|
18
|
+
process.exit(0);
|
|
29
19
|
});
|
|
30
|
-
|
|
20
|
+
await server.start(entry, watchDir);
|
|
21
|
+
return ActionResponse.Success(ServeAction.name);
|
|
31
22
|
}
|
|
32
23
|
}
|
|
33
24
|
ServeAction = _ts_decorate([
|
|
34
|
-
injectable()
|
|
35
|
-
_ts_metadata("design:type", Function),
|
|
36
|
-
_ts_metadata("design:paramtypes", [
|
|
37
|
-
typeof HotReloadServer === "undefined" ? Object : HotReloadServer,
|
|
38
|
-
typeof Workspace === "undefined" ? Object : Workspace
|
|
39
|
-
])
|
|
25
|
+
injectable()
|
|
40
26
|
], ServeAction);
|
|
41
27
|
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbiwgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IEhvdFJlbG9hZFNlcnZlciB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFNlcnZlT3B0aW9ucyA9IHtcblx0ZW50cnk6IHN0cmluZztcblx0d2F0Y2hEaXI6IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxTZXJ2ZU9wdGlvbnM+IHtcblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBTZXJ2ZU9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgeyBlbnRyeSwgd2F0Y2hEaXIgfSA9IG9wdGlvbnM7XG5cdFx0Y29uc3QgbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihcIlNlcnZlQWN0aW9uXCIpO1xuXHRcdGNvbnN0IHNlcnZlciA9IG5ldyBIb3RSZWxvYWRTZXJ2ZXIobG9nZ2VyKTtcblxuXHRcdHByb2Nlc3Mub24oXCJTSUdJTlRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0YXdhaXQgc2VydmVyLmRpc3Bvc2UoKTtcblx0XHRcdHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcblxuXHRcdGF3YWl0IHNlcnZlci5zdGFydChlbnRyeSwgd2F0Y2hEaXIpO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5TdWNjZXNzKFNlcnZlQWN0aW9uLm5hbWUpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiaW5qZWN0YWJsZSIsIkFjdGlvblJlc3BvbnNlIiwic2NyaWJlIiwiSG90UmVsb2FkU2VydmVyIiwiU2VydmVBY3Rpb24iLCJydW4iLCJvcHRpb25zIiwiZW50cnkiLCJ3YXRjaERpciIsImxvZ2dlciIsInNlcnZlciIsInByb2Nlc3MiLCJvbiIsImRpc3Bvc2UiLCJleGl0Iiwic3RhcnQiLCJTdWNjZXNzIiwibmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsU0FBU0EsVUFBVSxRQUFRLGdDQUFnQztBQUMzRCxTQUFzQkMsY0FBYyxRQUFRLHNCQUFzQjtBQUNsRSxTQUFTQyxNQUFNLFFBQVEsbUJBQW1CO0FBQzFDLFNBQVNDLGVBQWUsUUFBUSx5QkFBeUI7QUFRekQsT0FBTyxNQUFNQztJQUNaLE1BQWFDLElBQUlDLE9BQXFCLEVBQTJCO1FBQ2hFLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0Y7UUFDNUIsTUFBTUcsU0FBU1AsT0FBT08sTUFBTSxDQUFDO1FBQzdCLE1BQU1DLFNBQVMsSUFBSVAsZ0JBQWdCTTtRQUVuQ0UsUUFBUUMsRUFBRSxDQUFDLFVBQVU7WUFDcEIsTUFBTUYsT0FBT0csT0FBTztZQUNwQkYsUUFBUUcsSUFBSSxDQUFDO1FBQ2Q7UUFFQSxNQUFNSixPQUFPSyxLQUFLLENBQUNSLE9BQU9DO1FBQzFCLE9BQU9QLGVBQWVlLE9BQU8sQ0FBQ1osWUFBWWEsSUFBSTtJQUMvQztBQUNEIn0=
|
package/es6/src/serve.command.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ServeAction } from "./serve.action.js";
|
|
1
|
+
import { DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
+
import { WorkspaceServeAction } from "./workspace-serve.action.js";
|
|
4
3
|
export class ServeCommand extends DecohereCommand {
|
|
5
4
|
get actions() {
|
|
6
5
|
return [
|
|
7
|
-
|
|
6
|
+
WorkspaceServeAction
|
|
8
7
|
];
|
|
9
8
|
}
|
|
10
9
|
constructor(name){
|
|
11
10
|
super(name);
|
|
12
|
-
this.description("Serve
|
|
13
|
-
this.addOption(new ConfigurationOption("debug"));
|
|
14
|
-
this.addOption(new ProjectOption());
|
|
15
|
-
this.option("--reboot-debounce-ms <ms>", "Quiet window in milliseconds after the last affecting save before a reboot", (value)=>resolveRebootDebounceMs(Number(value)), DEFAULT_REBOOT_DEBOUNCE_MS);
|
|
11
|
+
this.description("Serve the first project in a workspace configuration");
|
|
16
12
|
}
|
|
17
13
|
}
|
|
18
14
|
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjb2hlcmVDb21tYW5kIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFdvcmtzcGFjZVNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vd29ya3NwYWNlLXNlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VydmVDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbV29ya3NwYWNlU2VydmVBY3Rpb25dO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJTZXJ2ZSB0aGUgZmlyc3QgcHJvamVjdCBpbiBhIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uXCIpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRGVjb2hlcmVDb21tYW5kIiwiV29ya3NwYWNlU2VydmVBY3Rpb24iLCJTZXJ2ZUNvbW1hbmQiLCJhY3Rpb25zIiwibmFtZSIsImRlc2NyaXB0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsc0JBQXNCO0FBQ3RELFNBQVNDLG9CQUFvQixRQUFRLDhCQUE4QjtBQUVuRSxPQUFPLE1BQU1DLHFCQUFxQkY7SUFDakMsSUFBb0JHLFVBQVU7UUFDN0IsT0FBTztZQUFDRjtTQUFxQjtJQUM5QjtJQUVBLFlBQW1CRyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUFDO0lBQ2xCO0FBQ0QifQ==
|
package/es6/src/serve.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { parseArgs } from "node:util";
|
|
2
|
+
import { scribe } from "@decohere/scribe";
|
|
3
|
+
import { HotReloadServer } from "./hot-reload-server.js";
|
|
4
|
+
const { values } = parseArgs({
|
|
5
|
+
args: process.argv.slice(2),
|
|
6
|
+
options: {
|
|
7
|
+
entry: {
|
|
8
|
+
type: "string",
|
|
9
|
+
short: "e"
|
|
10
|
+
},
|
|
11
|
+
watchDir: {
|
|
12
|
+
type: "string",
|
|
13
|
+
multiple: true,
|
|
14
|
+
short: "w"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
allowPositionals: false
|
|
18
|
+
});
|
|
19
|
+
const entry = values.entry;
|
|
20
|
+
const watchDirs = values.watchDir ?? [];
|
|
21
|
+
if (!entry) {
|
|
22
|
+
console.error("Usage: forge-hmr --entry <path> --watchDir <dir> [--watchDir <dir>...]");
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
if (watchDirs.length === 0) {
|
|
26
|
+
console.error("Usage: forge-hmr --entry <path> --watchDir <dir> [--watchDir <dir>...]");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const hmr = new HotReloadServer(scribe.logger("HotReloadServer"));
|
|
30
|
+
await hmr.start(entry, ...watchDirs);
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBIb3RSZWxvYWRTZXJ2ZXIgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuXG5jb25zdCB7IHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcblx0YXJnczogcHJvY2Vzcy5hcmd2LnNsaWNlKDIpLFxuXHRvcHRpb25zOiB7XG5cdFx0ZW50cnk6IHsgdHlwZTogXCJzdHJpbmdcIiwgc2hvcnQ6IFwiZVwiIH0sXG5cdFx0d2F0Y2hEaXI6IHsgdHlwZTogXCJzdHJpbmdcIiwgbXVsdGlwbGU6IHRydWUsIHNob3J0OiBcIndcIiB9LFxuXHR9LFxuXHRhbGxvd1Bvc2l0aW9uYWxzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbnRyeSA9IHZhbHVlcy5lbnRyeTtcbmNvbnN0IHdhdGNoRGlycyA9IHZhbHVlcy53YXRjaERpciA/PyBbXTtcblxuaWYgKCFlbnRyeSkge1xuXHRjb25zb2xlLmVycm9yKFwiVXNhZ2U6IGZvcmdlLWhtciAtLWVudHJ5IDxwYXRoPiAtLXdhdGNoRGlyIDxkaXI+IFstLXdhdGNoRGlyIDxkaXI+Li4uXVwiKTtcblx0cHJvY2Vzcy5leGl0KDEpO1xufVxuXG5pZiAod2F0Y2hEaXJzLmxlbmd0aCA9PT0gMCkge1xuXHRjb25zb2xlLmVycm9yKFwiVXNhZ2U6IGZvcmdlLWhtciAtLWVudHJ5IDxwYXRoPiAtLXdhdGNoRGlyIDxkaXI+IFstLXdhdGNoRGlyIDxkaXI+Li4uXVwiKTtcblx0cHJvY2Vzcy5leGl0KDEpO1xufVxuXG5jb25zdCBobXIgPSBuZXcgSG90UmVsb2FkU2VydmVyKHNjcmliZS5sb2dnZXIoXCJIb3RSZWxvYWRTZXJ2ZXJcIikpO1xuYXdhaXQgaG1yLnN0YXJ0KGVudHJ5LCAuLi53YXRjaERpcnMpO1xuIl0sIm5hbWVzIjpbInBhcnNlQXJncyIsInNjcmliZSIsIkhvdFJlbG9hZFNlcnZlciIsInZhbHVlcyIsImFyZ3MiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwib3B0aW9ucyIsImVudHJ5IiwidHlwZSIsInNob3J0Iiwid2F0Y2hEaXIiLCJtdWx0aXBsZSIsImFsbG93UG9zaXRpb25hbHMiLCJ3YXRjaERpcnMiLCJjb25zb2xlIiwiZXJyb3IiLCJleGl0IiwibGVuZ3RoIiwiaG1yIiwibG9nZ2VyIiwic3RhcnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVMsUUFBUSxZQUFZO0FBQ3RDLFNBQVNDLE1BQU0sUUFBUSxtQkFBbUI7QUFDMUMsU0FBU0MsZUFBZSxRQUFRLHlCQUF5QjtBQUV6RCxNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHSCxVQUFVO0lBQzVCSSxNQUFNQyxRQUFRQyxJQUFJLENBQUNDLEtBQUssQ0FBQztJQUN6QkMsU0FBUztRQUNSQyxPQUFPO1lBQUVDLE1BQU07WUFBVUMsT0FBTztRQUFJO1FBQ3BDQyxVQUFVO1lBQUVGLE1BQU07WUFBVUcsVUFBVTtZQUFNRixPQUFPO1FBQUk7SUFDeEQ7SUFDQUcsa0JBQWtCO0FBQ25CO0FBRUEsTUFBTUwsUUFBUU4sT0FBT00sS0FBSztBQUMxQixNQUFNTSxZQUFZWixPQUFPUyxRQUFRLElBQUksRUFBRTtBQUV2QyxJQUFJLENBQUNILE9BQU87SUFDWE8sUUFBUUMsS0FBSyxDQUFDO0lBQ2RaLFFBQVFhLElBQUksQ0FBQztBQUNkO0FBRUEsSUFBSUgsVUFBVUksTUFBTSxLQUFLLEdBQUc7SUFDM0JILFFBQVFDLEtBQUssQ0FBQztJQUNkWixRQUFRYSxJQUFJLENBQUM7QUFDZDtBQUVBLE1BQU1FLE1BQU0sSUFBSWxCLGdCQUFnQkQsT0FBT29CLE1BQU0sQ0FBQztBQUM5QyxNQUFNRCxJQUFJRSxLQUFLLENBQUNiLFVBQVVNIn0=
|
|
@@ -0,0 +1,45 @@
|
|
|
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 path from "node:path";
|
|
11
|
+
import { injectable } from "@decohere/crucible/decorators";
|
|
12
|
+
// biome-ignore lint/style/useImportType: <DI>
|
|
13
|
+
import { Workspace } from "@decohere/mesh";
|
|
14
|
+
import { ActionResponse } from "@decohere/nexus/cli";
|
|
15
|
+
import { ServeAction } from "./serve.action.js";
|
|
16
|
+
export class WorkspaceServeAction {
|
|
17
|
+
workspace;
|
|
18
|
+
constructor(workspace){
|
|
19
|
+
this.workspace = workspace;
|
|
20
|
+
}
|
|
21
|
+
async run(options) {
|
|
22
|
+
const { configuration } = options;
|
|
23
|
+
const projects = this.workspace.getProjects(configuration);
|
|
24
|
+
const project = projects.at(0);
|
|
25
|
+
if (project == null) {
|
|
26
|
+
return ActionResponse.Error(WorkspaceServeAction.name, `No projects found for configuration: ${configuration}`);
|
|
27
|
+
}
|
|
28
|
+
const outDir = project.getOutDir();
|
|
29
|
+
const entry = path.join(outDir, "src", "index.js");
|
|
30
|
+
const serveAction = new ServeAction();
|
|
31
|
+
return serveAction.run({
|
|
32
|
+
entry,
|
|
33
|
+
watchDir: outDir
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
WorkspaceServeAction = _ts_decorate([
|
|
38
|
+
injectable(),
|
|
39
|
+
_ts_metadata("design:type", Function),
|
|
40
|
+
_ts_metadata("design:paramtypes", [
|
|
41
|
+
typeof Workspace === "undefined" ? Object : Workspace
|
|
42
|
+
])
|
|
43
|
+
], WorkspaceServeAction);
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3dvcmtzcGFjZS1zZXJ2ZS5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnM+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlOiBXb3Jrc3BhY2UpIHt9XG5cblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBvcHRpb25zO1xuXHRcdGNvbnN0IHByb2plY3RzID0gdGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMoY29uZmlndXJhdGlvbik7XG5cdFx0Y29uc3QgcHJvamVjdCA9IHByb2plY3RzLmF0KDApO1xuXG5cdFx0aWYgKHByb2plY3QgPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLkVycm9yKFxuXHRcdFx0XHRXb3Jrc3BhY2VTZXJ2ZUFjdGlvbi5uYW1lLFxuXHRcdFx0XHRgTm8gcHJvamVjdHMgZm91bmQgZm9yIGNvbmZpZ3VyYXRpb246ICR7Y29uZmlndXJhdGlvbn1gLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBvdXREaXIgPSBwcm9qZWN0LmdldE91dERpcigpO1xuXHRcdGNvbnN0IGVudHJ5ID0gcGF0aC5qb2luKG91dERpciwgXCJzcmNcIiwgXCJpbmRleC5qc1wiKTtcblx0XHRjb25zdCBzZXJ2ZUFjdGlvbiA9IG5ldyBTZXJ2ZUFjdGlvbigpO1xuXHRcdHJldHVybiBzZXJ2ZUFjdGlvbi5ydW4oeyBlbnRyeSwgd2F0Y2hEaXI6IG91dERpciB9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbInBhdGgiLCJpbmplY3RhYmxlIiwiV29ya3NwYWNlIiwiQWN0aW9uUmVzcG9uc2UiLCJTZXJ2ZUFjdGlvbiIsIldvcmtzcGFjZVNlcnZlQWN0aW9uIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsImNvbmZpZ3VyYXRpb24iLCJwcm9qZWN0cyIsImdldFByb2plY3RzIiwicHJvamVjdCIsImF0IiwiRXJyb3IiLCJuYW1lIiwib3V0RGlyIiwiZ2V0T3V0RGlyIiwiZW50cnkiLCJqb2luIiwic2VydmVBY3Rpb24iLCJ3YXRjaERpciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsVUFBVSxZQUFZO0FBQzdCLFNBQVNDLFVBQVUsUUFBUSxnQ0FBZ0M7QUFDM0QsOENBQThDO0FBQzlDLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUNyRCxTQUFTQyxXQUFXLFFBQVEsb0JBQW9CO0FBT2hELE9BQU8sTUFBTUM7O0lBQ1osWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRTNELE1BQWFDLElBQUlDLE9BQThCLEVBQTJCO1FBQ3pFLE1BQU0sRUFBRUMsYUFBYSxFQUFFLEdBQUdEO1FBQzFCLE1BQU1FLFdBQVcsSUFBSSxDQUFDSixTQUFTLENBQUNLLFdBQVcsQ0FBQ0Y7UUFDNUMsTUFBTUcsVUFBVUYsU0FBU0csRUFBRSxDQUFDO1FBRTVCLElBQUlELFdBQVcsTUFBTTtZQUNwQixPQUFPVCxlQUFlVyxLQUFLLENBQzFCVCxxQkFBcUJVLElBQUksRUFDekIsQ0FBQyxxQ0FBcUMsRUFBRU4sZUFBZTtRQUV6RDtRQUVBLE1BQU1PLFNBQVNKLFFBQVFLLFNBQVM7UUFDaEMsTUFBTUMsUUFBUWxCLEtBQUttQixJQUFJLENBQUNILFFBQVEsT0FBTztRQUN2QyxNQUFNSSxjQUFjLElBQUloQjtRQUN4QixPQUFPZ0IsWUFBWWIsR0FBRyxDQUFDO1lBQUVXO1lBQU9HLFVBQVVMO1FBQU87SUFDbEQ7QUFDRCJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decohere/flux",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
3
|
+
"version": "0.0.1-dev.7",
|
|
4
4
|
"description": "Hot module reload server for Node.js ESM applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -19,18 +19,23 @@
|
|
|
19
19
|
"types": "./types/src/index.d.ts",
|
|
20
20
|
"import": "./es6/src/index.js",
|
|
21
21
|
"require": "./commonjs/src/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./serve": {
|
|
24
|
+
"types": "./types/src/serve.d.ts",
|
|
25
|
+
"import": "./es6/src/serve.js"
|
|
22
26
|
}
|
|
23
27
|
},
|
|
28
|
+
"bin": {
|
|
29
|
+
"ember": "./es6/src/serve.js"
|
|
30
|
+
},
|
|
24
31
|
"scripts": {
|
|
25
32
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
26
33
|
},
|
|
27
34
|
"dependencies": {
|
|
28
|
-
"@decohere/crucible": "0.0.1-dev.
|
|
29
|
-
"@decohere/
|
|
30
|
-
"@decohere/
|
|
31
|
-
"@decohere/
|
|
32
|
-
"@decohere/scribe": "0.0.1-dev.68",
|
|
33
|
-
"rxjs": "^7.8.2"
|
|
35
|
+
"@decohere/crucible": "0.0.1-dev.7",
|
|
36
|
+
"@decohere/mesh": "0.0.1-dev.7",
|
|
37
|
+
"@decohere/nexus": "0.0.1-dev.7",
|
|
38
|
+
"@decohere/scribe": "0.0.1-dev.7"
|
|
34
39
|
},
|
|
35
40
|
"devDependencies": {}
|
|
36
41
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Actions } from "@decohere/nexus/cli";
|
|
2
2
|
import { type CommandHandler, type CommandResponse, type CommandType, DecohereCommand } from "@decohere/nexus/cli";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class EmberCommand extends DecohereCommand {
|
|
4
4
|
constructor(commands: Record<string, CommandType>, handler: CommandHandler);
|
|
5
5
|
run(_actions: Actions, _options: never): Promise<CommandResponse>;
|
|
6
6
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Workspace } from "@decohere/mesh";
|
|
2
|
+
import type { WorkspaceFactoryOptions } from "@decohere/nexus/cli";
|
|
3
|
+
import { ModuleManifest } from "@decohere/nexus/cli";
|
|
4
|
+
import type { ContainerBuilder } from "@decohere/nexus/composition";
|
|
5
|
+
import { EmberCommand } from "./ember.command.js";
|
|
6
|
+
import { WorkspaceServeAction } from "./workspace-serve.action.js";
|
|
7
|
+
export type EmberModuleContext = {
|
|
8
|
+
builder: ContainerBuilder;
|
|
9
|
+
workspace: Workspace;
|
|
10
|
+
};
|
|
11
|
+
export type EmberModuleResult = {
|
|
12
|
+
actions: typeof EmberActions;
|
|
13
|
+
};
|
|
14
|
+
export declare const EmberActions: {};
|
|
15
|
+
export declare class EmberModule extends ModuleManifest {
|
|
16
|
+
readonly id = "ember";
|
|
17
|
+
readonly command: typeof EmberCommand;
|
|
18
|
+
readonly actions: {
|
|
19
|
+
serve: typeof WorkspaceServeAction;
|
|
20
|
+
};
|
|
21
|
+
createWorkspace(options: WorkspaceFactoryOptions): any;
|
|
22
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ResolveFnOutput } from "node:module";
|
|
2
|
+
export type ResolveHandler = (result: ResolveFnOutput, parentUrl: string) => void;
|
|
3
|
+
export declare function initModuleHooks(): void;
|
|
4
|
+
export declare function addResolverHook(fn: ResolveHandler): void;
|
|
5
|
+
export declare function removeResolverHook(fn: ResolveHandler): void;
|
|
@@ -1,77 +1,38 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
|
-
import type {
|
|
3
|
-
/** Default quiet window before a file-change reboot. */
|
|
4
|
-
export declare const DEFAULT_REBOOT_DEBOUNCE_MS = 250;
|
|
5
|
-
export declare function resolveRebootDebounceMs(value: number | undefined): number;
|
|
2
|
+
import type { Logger } from "@decohere/scribe";
|
|
6
3
|
export interface HotReloadServerEvents {
|
|
7
|
-
start: [];
|
|
8
4
|
reboot: [];
|
|
9
5
|
}
|
|
10
|
-
export interface HotReloadServerOptions {
|
|
11
|
-
/** Build configuration name. */
|
|
12
|
-
buildConfig: string;
|
|
13
|
-
/** Name of the project to serve. Defaults to the first project in the workspace. */
|
|
14
|
-
project?: string;
|
|
15
|
-
/**
|
|
16
|
-
* Pre-built Workspace instance to use instead of running WorkspaceFactory.
|
|
17
|
-
* Useful in tests to bypass filesystem-based workspace discovery.
|
|
18
|
-
*/
|
|
19
|
-
workspace?: Workspace;
|
|
20
|
-
/**
|
|
21
|
-
* Quiet window in milliseconds after the last affecting save before a reboot.
|
|
22
|
-
* Defaults to {@link DEFAULT_REBOOT_DEBOUNCE_MS}. Raise this for agent save trains.
|
|
23
|
-
*/
|
|
24
|
-
rebootDebounceMs?: number;
|
|
25
|
-
}
|
|
26
6
|
export declare class HotReloadServer extends EventEmitter<HotReloadServerEvents> {
|
|
27
7
|
private readonly logger;
|
|
28
8
|
private disposed;
|
|
29
|
-
private
|
|
30
|
-
private
|
|
31
|
-
private
|
|
32
|
-
private workspace?;
|
|
33
|
-
private buildConfig;
|
|
34
|
-
private watchSubscription?;
|
|
35
|
-
/** Map from absolute .ts source file path to project info */
|
|
36
|
-
private fileInfoMap;
|
|
9
|
+
private entryModule;
|
|
10
|
+
private entry;
|
|
11
|
+
private sourceFiles;
|
|
37
12
|
private moduleCache;
|
|
38
13
|
private dependencies;
|
|
39
|
-
private
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
private aliasBaseUrl;
|
|
43
|
-
private rebootTail;
|
|
44
|
-
private rebootDebounceGen;
|
|
45
|
-
private rebootInFlight;
|
|
46
|
-
private rebootFollowUp;
|
|
47
|
-
private rebootQueued;
|
|
48
|
-
private scheduleReboot;
|
|
49
|
-
start(options: HotReloadServerOptions): Promise<void>;
|
|
14
|
+
private watchers;
|
|
15
|
+
constructor(logger: Logger);
|
|
16
|
+
start(entry: string, ...watchDirs: string[]): Promise<void>;
|
|
50
17
|
dispose(): Promise<void>;
|
|
51
|
-
|
|
52
|
-
private
|
|
53
|
-
private
|
|
54
|
-
private
|
|
55
|
-
private
|
|
56
|
-
private disposeEntry;
|
|
57
|
-
private resolveWorkspace;
|
|
58
|
-
private resolveProject;
|
|
59
|
-
private buildFileInfoMap;
|
|
60
|
-
private registerHooks;
|
|
61
|
-
private buildAliasPaths;
|
|
62
|
-
/**
|
|
63
|
-
* Post-next dependency tracker: records which source files import which
|
|
64
|
-
* other source files so that reloadIfAffected can traverse the graph.
|
|
65
|
-
*/
|
|
66
|
-
private onPostResolve;
|
|
67
|
-
private loadTs;
|
|
68
|
-
private onFileChange;
|
|
69
|
-
private reloadIfAffected;
|
|
18
|
+
private removeSourceFiles;
|
|
19
|
+
private getSourceFiles;
|
|
20
|
+
private configureModuleHooks;
|
|
21
|
+
private onResolve;
|
|
22
|
+
private isSourceModule;
|
|
70
23
|
private getDependencyGraph;
|
|
71
24
|
private trackDependency;
|
|
72
25
|
private getCachedOrNew;
|
|
73
26
|
private versionModule;
|
|
74
|
-
private
|
|
75
|
-
private
|
|
27
|
+
private watch;
|
|
28
|
+
private onFileAdded;
|
|
29
|
+
private onSourceFileChanged;
|
|
30
|
+
private onFileDeleted;
|
|
31
|
+
private reloadIfAffected;
|
|
76
32
|
private isSelf;
|
|
33
|
+
private invlidateModule;
|
|
34
|
+
private invalidateAllSourceFiles;
|
|
35
|
+
private disposeAndBoot;
|
|
36
|
+
private disposeEntry;
|
|
37
|
+
private bootEntry;
|
|
77
38
|
}
|
package/types/src/index.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type {
|
|
3
|
-
export {
|
|
1
|
+
export { EmberCommand } from "./ember.command.js";
|
|
2
|
+
export type { EmberModuleContext, EmberModuleResult } from "./ember.module.js";
|
|
3
|
+
export { EmberActions, EmberModule } from "./ember.module.js";
|
|
4
|
+
export * from "./hot-reload-server.js";
|
|
4
5
|
export type { ServeOptions } from "./serve.action.js";
|
|
6
|
+
export { ServeAction } from "./serve.action.js";
|
|
7
|
+
export { ServeCommand } from "./serve.command.js";
|
|
8
|
+
export type { WorkspaceServeOptions } from "./workspace-serve.action.js";
|
|
9
|
+
export { WorkspaceServeAction } from "./workspace-serve.action.js";
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { Workspace } from "@decohere/mesh";
|
|
2
1
|
import { type Action, ActionResponse } from "@decohere/nexus/cli";
|
|
3
|
-
import { HotReloadServer } from "./hot-reload-server.js";
|
|
4
2
|
export type ServeOptions = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
rebootDebounceMs?: number;
|
|
3
|
+
entry: string;
|
|
4
|
+
watchDir: string;
|
|
8
5
|
};
|
|
9
6
|
export declare class ServeAction implements Action<ServeOptions> {
|
|
10
|
-
private readonly server;
|
|
11
|
-
private readonly workspace;
|
|
12
|
-
constructor(server: HotReloadServer, workspace: Workspace);
|
|
13
7
|
run(options: ServeOptions): Promise<ActionResponse>;
|
|
14
8
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
-
import {
|
|
2
|
+
import { WorkspaceServeAction } from "./workspace-serve.action.js";
|
|
3
3
|
export declare class ServeCommand extends DecohereCommand {
|
|
4
|
-
get actions(): (typeof
|
|
4
|
+
get actions(): (typeof WorkspaceServeAction)[];
|
|
5
5
|
constructor(name: string);
|
|
6
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Workspace } from "@decohere/mesh";
|
|
2
|
+
import type { Action } from "@decohere/nexus/cli";
|
|
3
|
+
import { ActionResponse } from "@decohere/nexus/cli";
|
|
4
|
+
export type WorkspaceServeOptions = {
|
|
5
|
+
configuration: string;
|
|
6
|
+
};
|
|
7
|
+
export declare class WorkspaceServeAction implements Action<WorkspaceServeOptions> {
|
|
8
|
+
private readonly workspace;
|
|
9
|
+
constructor(workspace: Workspace);
|
|
10
|
+
run(options: WorkspaceServeOptions): Promise<ActionResponse>;
|
|
11
|
+
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "FluxCommand", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return FluxCommand;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _cli = require("@decohere/nexus/cli");
|
|
12
|
-
const _servecommand = require("./serve.command.js");
|
|
13
|
-
class FluxCommand extends _cli.DecohereCommand {
|
|
14
|
-
constructor(commands, handler){
|
|
15
|
-
super(FluxCommand);
|
|
16
|
-
this.exitOverride();
|
|
17
|
-
this.registerSubcommand({
|
|
18
|
-
serve: _servecommand.ServeCommand,
|
|
19
|
-
...commands
|
|
20
|
-
}, handler);
|
|
21
|
-
}
|
|
22
|
-
run(_actions, _options) {
|
|
23
|
-
return this.help();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXguY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHtcblx0dHlwZSBDb21tYW5kSGFuZGxlcixcblx0dHlwZSBDb21tYW5kUmVzcG9uc2UsXG5cdHR5cGUgQ29tbWFuZFR5cGUsXG5cdERlY29oZXJlQ29tbWFuZCxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFNlcnZlQ29tbWFuZCB9IGZyb20gXCIuL3NlcnZlLmNvbW1hbmQuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZsdXhDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGNvbW1hbmRzOiBSZWNvcmQ8c3RyaW5nLCBDb21tYW5kVHlwZT4sIGhhbmRsZXI6IENvbW1hbmRIYW5kbGVyKSB7XG5cdFx0c3VwZXIoRmx1eENvbW1hbmQpO1xuXHRcdHRoaXMuZXhpdE92ZXJyaWRlKCk7XG5cdFx0dGhpcy5yZWdpc3RlclN1YmNvbW1hbmQoeyBzZXJ2ZTogU2VydmVDb21tYW5kLCAuLi5jb21tYW5kcyB9LCBoYW5kbGVyKTtcblx0fVxuXG5cdHB1YmxpYyBydW4oX2FjdGlvbnM6IEFjdGlvbnMsIF9vcHRpb25zOiBuZXZlcik6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaGVscCgpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRmx1eENvbW1hbmQiLCJEZWNvaGVyZUNvbW1hbmQiLCJjb21tYW5kcyIsImhhbmRsZXIiLCJleGl0T3ZlcnJpZGUiLCJyZWdpc3RlclN1YmNvbW1hbmQiLCJzZXJ2ZSIsIlNlcnZlQ29tbWFuZCIsInJ1biIsIl9hY3Rpb25zIiwiX29wdGlvbnMiLCJoZWxwIl0sIm1hcHBpbmdzIjoiOzs7OytCQVNhQTs7O2VBQUFBOzs7cUJBSE47OEJBQ3NCO0FBRXRCLE1BQU1BLG9CQUFvQkMsb0JBQWU7SUFDL0MsWUFBbUJDLFFBQXFDLEVBQUVDLE9BQXVCLENBQUU7UUFDbEYsS0FBSyxDQUFDSDtRQUNOLElBQUksQ0FBQ0ksWUFBWTtRQUNqQixJQUFJLENBQUNDLGtCQUFrQixDQUFDO1lBQUVDLE9BQU9DLDBCQUFZO1lBQUUsR0FBR0wsUUFBUTtRQUFDLEdBQUdDO0lBQy9EO0lBRU9LLElBQUlDLFFBQWlCLEVBQUVDLFFBQWUsRUFBNEI7UUFDeEUsT0FBTyxJQUFJLENBQUNDLElBQUk7SUFDakI7QUFDRCJ9
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "FluxModule", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return FluxModule;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _mesh = require("@decohere/mesh");
|
|
12
|
-
const _cli = require("@decohere/nexus/cli");
|
|
13
|
-
const _fluxcommand = require("./flux.command.js");
|
|
14
|
-
const _hotreloadserver = require("./hot-reload-server.js");
|
|
15
|
-
const _serveaction = require("./serve.action.js");
|
|
16
|
-
class FluxModule extends _cli.ModuleManifest {
|
|
17
|
-
id = "flux";
|
|
18
|
-
command = _fluxcommand.FluxCommand;
|
|
19
|
-
actions = {
|
|
20
|
-
serve: _serveaction.ServeAction
|
|
21
|
-
};
|
|
22
|
-
registerServices(builder) {
|
|
23
|
-
builder.registerSingleton(_hotreloadserver.HotReloadServer);
|
|
24
|
-
}
|
|
25
|
-
createWorkspace(options) {
|
|
26
|
-
return _mesh.WorkspaceFactory.create({
|
|
27
|
-
configFile: options.configFile
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXgubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0IHsgRmx1eENvbW1hbmQgfSBmcm9tIFwiLi9mbHV4LmNvbW1hbmQuanNcIjtcbmltcG9ydCB7IEhvdFJlbG9hZFNlcnZlciB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5pbXBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eE1vZHVsZSBleHRlbmRzIE1vZHVsZU1hbmlmZXN0IHtcblx0cHVibGljIHJlYWRvbmx5IGlkID0gXCJmbHV4XCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gRmx1eENvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdHNlcnZlOiBTZXJ2ZUFjdGlvbixcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihIb3RSZWxvYWRTZXJ2ZXIpO1xuXHR9XG5cblx0cHVibGljIG92ZXJyaWRlIGNyZWF0ZVdvcmtzcGFjZShvcHRpb25zOiBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucykge1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7IGNvbmZpZ0ZpbGU6IG9wdGlvbnMuY29uZmlnRmlsZSB9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkZsdXhNb2R1bGUiLCJNb2R1bGVNYW5pZmVzdCIsImlkIiwiY29tbWFuZCIsIkZsdXhDb21tYW5kIiwiYWN0aW9ucyIsInNlcnZlIiwiU2VydmVBY3Rpb24iLCJyZWdpc3RlclNlcnZpY2VzIiwiYnVpbGRlciIsInJlZ2lzdGVyU2luZ2xldG9uIiwiSG90UmVsb2FkU2VydmVyIiwiY3JlYXRlV29ya3NwYWNlIiwib3B0aW9ucyIsIldvcmtzcGFjZUZhY3RvcnkiLCJjcmVhdGUiLCJjb25maWdGaWxlIl0sIm1hcHBpbmdzIjoiOzs7OytCQVFhQTs7O2VBQUFBOzs7c0JBUm9CO3FCQUVGOzZCQUVIO2lDQUNJOzZCQUNKO0FBRXJCLE1BQU1BLG1CQUFtQkMsbUJBQWM7SUFDN0JDLEtBQUssT0FBTztJQUNaQyxVQUFVQyx3QkFBVyxDQUFDO0lBQ3RCQyxVQUFVO1FBQ3pCQyxPQUFPQyx3QkFBVztJQUNuQixFQUFFO0lBRUtDLGlCQUFpQkMsT0FBeUIsRUFBRTtRQUNsREEsUUFBUUMsaUJBQWlCLENBQUNDLGdDQUFlO0lBQzFDO0lBRWdCQyxnQkFBZ0JDLE9BQWdDLEVBQUU7UUFDakUsT0FBT0Msc0JBQWdCLENBQUNDLE1BQU0sQ0FBQztZQUFFQyxZQUFZSCxRQUFRRyxVQUFVO1FBQUM7SUFDakU7QUFDRCJ9
|
|
@@ -1,46 +0,0 @@
|
|
|
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
|
package/es6/src/flux.command.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { DecohereCommand } from "@decohere/nexus/cli";
|
|
2
|
-
import { ServeCommand } from "./serve.command.js";
|
|
3
|
-
export class FluxCommand extends DecohereCommand {
|
|
4
|
-
constructor(commands, handler){
|
|
5
|
-
super(FluxCommand);
|
|
6
|
-
this.exitOverride();
|
|
7
|
-
this.registerSubcommand({
|
|
8
|
-
serve: ServeCommand,
|
|
9
|
-
...commands
|
|
10
|
-
}, handler);
|
|
11
|
-
}
|
|
12
|
-
run(_actions, _options) {
|
|
13
|
-
return this.help();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXguY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHtcblx0dHlwZSBDb21tYW5kSGFuZGxlcixcblx0dHlwZSBDb21tYW5kUmVzcG9uc2UsXG5cdHR5cGUgQ29tbWFuZFR5cGUsXG5cdERlY29oZXJlQ29tbWFuZCxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFNlcnZlQ29tbWFuZCB9IGZyb20gXCIuL3NlcnZlLmNvbW1hbmQuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZsdXhDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGNvbW1hbmRzOiBSZWNvcmQ8c3RyaW5nLCBDb21tYW5kVHlwZT4sIGhhbmRsZXI6IENvbW1hbmRIYW5kbGVyKSB7XG5cdFx0c3VwZXIoRmx1eENvbW1hbmQpO1xuXHRcdHRoaXMuZXhpdE92ZXJyaWRlKCk7XG5cdFx0dGhpcy5yZWdpc3RlclN1YmNvbW1hbmQoeyBzZXJ2ZTogU2VydmVDb21tYW5kLCAuLi5jb21tYW5kcyB9LCBoYW5kbGVyKTtcblx0fVxuXG5cdHB1YmxpYyBydW4oX2FjdGlvbnM6IEFjdGlvbnMsIF9vcHRpb25zOiBuZXZlcik6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaGVscCgpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRGVjb2hlcmVDb21tYW5kIiwiU2VydmVDb21tYW5kIiwiRmx1eENvbW1hbmQiLCJjb21tYW5kcyIsImhhbmRsZXIiLCJleGl0T3ZlcnJpZGUiLCJyZWdpc3RlclN1YmNvbW1hbmQiLCJzZXJ2ZSIsInJ1biIsIl9hY3Rpb25zIiwiX29wdGlvbnMiLCJoZWxwIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUlDQSxlQUFlLFFBQ1Qsc0JBQXNCO0FBQzdCLFNBQVNDLFlBQVksUUFBUSxxQkFBcUI7QUFFbEQsT0FBTyxNQUFNQyxvQkFBb0JGO0lBQ2hDLFlBQW1CRyxRQUFxQyxFQUFFQyxPQUF1QixDQUFFO1FBQ2xGLEtBQUssQ0FBQ0Y7UUFDTixJQUFJLENBQUNHLFlBQVk7UUFDakIsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQztZQUFFQyxPQUFPTjtZQUFjLEdBQUdFLFFBQVE7UUFBQyxHQUFHQztJQUMvRDtJQUVPSSxJQUFJQyxRQUFpQixFQUFFQyxRQUFlLEVBQTRCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDQyxJQUFJO0lBQ2pCO0FBQ0QifQ==
|
package/es6/src/flux.module.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { WorkspaceFactory } from "@decohere/mesh";
|
|
2
|
-
import { ModuleManifest } from "@decohere/nexus/cli";
|
|
3
|
-
import { FluxCommand } from "./flux.command.js";
|
|
4
|
-
import { HotReloadServer } from "./hot-reload-server.js";
|
|
5
|
-
import { ServeAction } from "./serve.action.js";
|
|
6
|
-
export class FluxModule extends ModuleManifest {
|
|
7
|
-
id = "flux";
|
|
8
|
-
command = FluxCommand;
|
|
9
|
-
actions = {
|
|
10
|
-
serve: ServeAction
|
|
11
|
-
};
|
|
12
|
-
registerServices(builder) {
|
|
13
|
-
builder.registerSingleton(HotReloadServer);
|
|
14
|
-
}
|
|
15
|
-
createWorkspace(options) {
|
|
16
|
-
return WorkspaceFactory.create({
|
|
17
|
-
configFile: options.configFile
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXgubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0IHsgRmx1eENvbW1hbmQgfSBmcm9tIFwiLi9mbHV4LmNvbW1hbmQuanNcIjtcbmltcG9ydCB7IEhvdFJlbG9hZFNlcnZlciB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5pbXBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eE1vZHVsZSBleHRlbmRzIE1vZHVsZU1hbmlmZXN0IHtcblx0cHVibGljIHJlYWRvbmx5IGlkID0gXCJmbHV4XCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gRmx1eENvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdHNlcnZlOiBTZXJ2ZUFjdGlvbixcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihIb3RSZWxvYWRTZXJ2ZXIpO1xuXHR9XG5cblx0cHVibGljIG92ZXJyaWRlIGNyZWF0ZVdvcmtzcGFjZShvcHRpb25zOiBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucykge1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7IGNvbmZpZ0ZpbGU6IG9wdGlvbnMuY29uZmlnRmlsZSB9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldvcmtzcGFjZUZhY3RvcnkiLCJNb2R1bGVNYW5pZmVzdCIsIkZsdXhDb21tYW5kIiwiSG90UmVsb2FkU2VydmVyIiwiU2VydmVBY3Rpb24iLCJGbHV4TW9kdWxlIiwiaWQiLCJjb21tYW5kIiwiYWN0aW9ucyIsInNlcnZlIiwicmVnaXN0ZXJTZXJ2aWNlcyIsImJ1aWxkZXIiLCJyZWdpc3RlclNpbmdsZXRvbiIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjcmVhdGUiLCJjb25maWdGaWxlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSxpQkFBaUI7QUFFbEQsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUVyRCxTQUFTQyxXQUFXLFFBQVEsb0JBQW9CO0FBQ2hELFNBQVNDLGVBQWUsUUFBUSx5QkFBeUI7QUFDekQsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUVoRCxPQUFPLE1BQU1DLG1CQUFtQko7SUFDZkssS0FBSyxPQUFPO0lBQ1pDLFVBQVVMLFlBQVk7SUFDdEJNLFVBQVU7UUFDekJDLE9BQU9MO0lBQ1IsRUFBRTtJQUVLTSxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDVDtJQUMzQjtJQUVnQlUsZ0JBQWdCQyxPQUFnQyxFQUFFO1FBQ2pFLE9BQU9kLGlCQUFpQmUsTUFBTSxDQUFDO1lBQUVDLFlBQVlGLFFBQVFFLFVBQVU7UUFBQztJQUNqRTtBQUNEIn0=
|
|
@@ -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==
|