@decohere/flux 0.0.1-dev.79 → 0.0.1-dev.8

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.
Files changed (51) hide show
  1. package/commonjs/src/ember.command.js +27 -0
  2. package/commonjs/src/ember.module.js +37 -0
  3. package/commonjs/src/hot-module-hooks.js +47 -0
  4. package/commonjs/src/hot-reload-server.js +160 -293
  5. package/commonjs/src/index.js +32 -33
  6. package/commonjs/src/serve.action.js +10 -94
  7. package/commonjs/src/serve.command.js +4 -36
  8. package/commonjs/src/serve.js +36 -0
  9. package/commonjs/src/workspace-serve.action.js +59 -0
  10. package/es6/src/ember.command.js +17 -0
  11. package/es6/src/ember.module.js +19 -0
  12. package/es6/src/hot-module-hooks.js +26 -0
  13. package/es6/src/hot-reload-server.js +117 -280
  14. package/es6/src/index.js +7 -6
  15. package/es6/src/serve.action.js +10 -92
  16. package/es6/src/serve.command.js +5 -37
  17. package/es6/src/serve.js +32 -0
  18. package/es6/src/workspace-serve.action.js +45 -0
  19. package/package.json +12 -8
  20. package/types/src/{flux.command.d.ts → ember.command.d.ts} +1 -1
  21. package/types/src/ember.module.d.ts +22 -0
  22. package/types/src/hot-module-hooks.d.ts +5 -0
  23. package/types/src/hot-reload-server.d.ts +22 -62
  24. package/types/src/index.d.ts +8 -8
  25. package/types/src/serve.action.d.ts +2 -17
  26. package/types/src/serve.command.d.ts +2 -7
  27. package/types/src/serve.d.ts +1 -0
  28. package/types/src/workspace-serve.action.d.ts +11 -0
  29. package/commonjs/src/deferred-script-runner.js +0 -58
  30. package/commonjs/src/flux.command.js +0 -29
  31. package/commonjs/src/flux.module.js +0 -38
  32. package/commonjs/src/rewrite-serve-specifier.js +0 -46
  33. package/commonjs/src/run.action.js +0 -71
  34. package/commonjs/src/run.command.js +0 -67
  35. package/commonjs/src/slice-serve.js +0 -132
  36. package/commonjs/src/source-module-loader.js +0 -216
  37. package/es6/src/deferred-script-runner.js +0 -48
  38. package/es6/src/flux.command.js +0 -19
  39. package/es6/src/flux.module.js +0 -28
  40. package/es6/src/rewrite-serve-specifier.js +0 -40
  41. package/es6/src/run.action.js +0 -58
  42. package/es6/src/run.command.js +0 -57
  43. package/es6/src/slice-serve.js +0 -107
  44. package/es6/src/source-module-loader.js +0 -160
  45. package/types/src/deferred-script-runner.d.ts +0 -18
  46. package/types/src/flux.module.d.ts +0 -16
  47. package/types/src/rewrite-serve-specifier.d.ts +0 -13
  48. package/types/src/run.action.d.ts +0 -17
  49. package/types/src/run.command.d.ts +0 -11
  50. package/types/src/slice-serve.d.ts +0 -52
  51. package/types/src/source-module-loader.d.ts +0 -49
@@ -9,44 +9,43 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- get DEFAULT_REBOOT_DEBOUNCE_MS () {
13
- return _hotreloadserver.DEFAULT_REBOOT_DEBOUNCE_MS;
12
+ get EmberActions () {
13
+ return _embermodule.EmberActions;
14
14
  },
15
- get DeferredScriptRunner () {
16
- return _deferredscriptrunner.DeferredScriptRunner;
15
+ get EmberCommand () {
16
+ return _embercommand.EmberCommand;
17
17
  },
18
- get FluxModule () {
19
- return _fluxmodule.FluxModule;
18
+ get EmberModule () {
19
+ return _embermodule.EmberModule;
20
20
  },
21
- get HotReloadServer () {
22
- return _hotreloadserver.HotReloadServer;
21
+ get ServeAction () {
22
+ return _serveaction.ServeAction;
23
23
  },
24
- get SourceModuleLoader () {
25
- return _sourcemoduleloader.SourceModuleLoader;
24
+ get ServeCommand () {
25
+ return _servecommand.ServeCommand;
26
26
  },
27
- get classifySliceProject () {
28
- return _sliceserve.classifySliceProject;
29
- },
30
- get classifySliceProjects () {
31
- return _sliceserve.classifySliceProjects;
32
- },
33
- get normalizeSlicePrefix () {
34
- return _sliceserve.normalizeSlicePrefix;
35
- },
36
- get projectsInSlice () {
37
- return _sliceserve.projectsInSlice;
38
- },
39
- get projectsInSlices () {
40
- return _sliceserve.projectsInSlices;
41
- },
42
- get resolveDeferScript () {
43
- return _sliceserve.resolveDeferScript;
27
+ get WorkspaceServeAction () {
28
+ return _workspaceserveaction.WorkspaceServeAction;
44
29
  }
45
30
  });
46
- const _deferredscriptrunner = require("./deferred-script-runner.js");
47
- const _fluxmodule = require("./flux.module.js");
48
- const _hotreloadserver = require("./hot-reload-server.js");
49
- const _sliceserve = require("./slice-serve.js");
50
- const _sourcemoduleloader = require("./source-module-loader.js");
31
+ const _embercommand = require("./ember.command.js");
32
+ const _embermodule = require("./ember.module.js");
33
+ _export_star(require("./hot-reload-server.js"), exports);
34
+ const _serveaction = require("./serve.action.js");
35
+ const _servecommand = require("./serve.command.js");
36
+ const _workspaceserveaction = require("./workspace-serve.action.js");
37
+ function _export_star(from, to) {
38
+ Object.keys(from).forEach(function(k) {
39
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
40
+ Object.defineProperty(to, k, {
41
+ enumerable: true,
42
+ get: function() {
43
+ return from[k];
44
+ }
45
+ });
46
+ }
47
+ });
48
+ return from;
49
+ }
51
50
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERlZmVycmVkU2NyaXB0UnVubmVyIH0gZnJvbSBcIi4vZGVmZXJyZWQtc2NyaXB0LXJ1bm5lci5qc1wiO1xuZXhwb3J0IHsgRmx1eE1vZHVsZSB9IGZyb20gXCIuL2ZsdXgubW9kdWxlLmpzXCI7XG5leHBvcnQgdHlwZSB7IEhvdFJlbG9hZFNlcnZlck9wdGlvbnMgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuZXhwb3J0IHsgREVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMsIEhvdFJlbG9hZFNlcnZlciB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5leHBvcnQgdHlwZSB7IFJ1bk9wdGlvbnMgfSBmcm9tIFwiLi9ydW4uYWN0aW9uLmpzXCI7XG5leHBvcnQgdHlwZSB7IFNlcnZlT3B0aW9ucyB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuZXhwb3J0IHtcblx0dHlwZSBDbGFzc2lmaWVkU2xpY2UsXG5cdGNsYXNzaWZ5U2xpY2VQcm9qZWN0LFxuXHRjbGFzc2lmeVNsaWNlUHJvamVjdHMsXG5cdG5vcm1hbGl6ZVNsaWNlUHJlZml4LFxuXHRwcm9qZWN0c0luU2xpY2UsXG5cdHByb2plY3RzSW5TbGljZXMsXG5cdHJlc29sdmVEZWZlclNjcmlwdCxcblx0dHlwZSBTbGljZUtpbmQsXG5cdHR5cGUgU2xpY2VQcm9qZWN0Vmlldyxcbn0gZnJvbSBcIi4vc2xpY2Utc2VydmUuanNcIjtcbmV4cG9ydCB0eXBlIHsgU291cmNlTW9kdWxlTG9hZGVyT3B0aW9ucyB9IGZyb20gXCIuL3NvdXJjZS1tb2R1bGUtbG9hZGVyLmpzXCI7XG5leHBvcnQgeyBTb3VyY2VNb2R1bGVMb2FkZXIgfSBmcm9tIFwiLi9zb3VyY2UtbW9kdWxlLWxvYWRlci5qc1wiO1xuIl0sIm5hbWVzIjpbIkRFRkFVTFRfUkVCT09UX0RFQk9VTkNFX01TIiwiRGVmZXJyZWRTY3JpcHRSdW5uZXIiLCJGbHV4TW9kdWxlIiwiSG90UmVsb2FkU2VydmVyIiwiU291cmNlTW9kdWxlTG9hZGVyIiwiY2xhc3NpZnlTbGljZVByb2plY3QiLCJjbGFzc2lmeVNsaWNlUHJvamVjdHMiLCJub3JtYWxpemVTbGljZVByZWZpeCIsInByb2plY3RzSW5TbGljZSIsInByb2plY3RzSW5TbGljZXMiLCJyZXNvbHZlRGVmZXJTY3JpcHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBR1NBO2VBQUFBLDJDQUEwQjs7UUFIMUJDO2VBQUFBLDBDQUFvQjs7UUFDcEJDO2VBQUFBLHNCQUFVOztRQUVrQkM7ZUFBQUEsZ0NBQWU7O1FBZTNDQztlQUFBQSxzQ0FBa0I7O1FBVjFCQztlQUFBQSxnQ0FBb0I7O1FBQ3BCQztlQUFBQSxpQ0FBcUI7O1FBQ3JCQztlQUFBQSxnQ0FBb0I7O1FBQ3BCQztlQUFBQSwyQkFBZTs7UUFDZkM7ZUFBQUEsNEJBQWdCOztRQUNoQkM7ZUFBQUEsOEJBQWtCOzs7c0NBYmtCOzRCQUNWO2lDQUVpQzs0QkFhckQ7b0NBRTRCIn0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEVtYmVyQ29tbWFuZCB9IGZyb20gXCIuL2VtYmVyLmNvbW1hbmQuanNcIjtcbmV4cG9ydCB0eXBlIHsgRW1iZXJNb2R1bGVDb250ZXh0LCBFbWJlck1vZHVsZVJlc3VsdCB9IGZyb20gXCIuL2VtYmVyLm1vZHVsZS5qc1wiO1xuZXhwb3J0IHsgRW1iZXJBY3Rpb25zLCBFbWJlck1vZHVsZSB9IGZyb20gXCIuL2VtYmVyLm1vZHVsZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmV4cG9ydCB0eXBlIHsgU2VydmVPcHRpb25zIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5leHBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuZXhwb3J0IHsgU2VydmVDb21tYW5kIH0gZnJvbSBcIi4vc2VydmUuY29tbWFuZC5qc1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnMgfSBmcm9tIFwiLi93b3Jrc3BhY2Utc2VydmUuYWN0aW9uLmpzXCI7XG5leHBvcnQgeyBXb3Jrc3BhY2VTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3dvcmtzcGFjZS1zZXJ2ZS5hY3Rpb24uanNcIjtcbiJdLCJuYW1lcyI6WyJFbWJlckFjdGlvbnMiLCJFbWJlckNvbW1hbmQiLCJFbWJlck1vZHVsZSIsIlNlcnZlQWN0aW9uIiwiU2VydmVDb21tYW5kIiwiV29ya3NwYWNlU2VydmVBY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBRVNBO2VBQUFBLHlCQUFZOztRQUZaQztlQUFBQSwwQkFBWTs7UUFFRUM7ZUFBQUEsd0JBQVc7O1FBR3pCQztlQUFBQSx3QkFBVzs7UUFDWEM7ZUFBQUEsMEJBQVk7O1FBRVpDO2VBQUFBLDBDQUFvQjs7OzhCQVJBOzZCQUVhO3FCQUM1Qjs2QkFFYzs4QkFDQztzQ0FFUSJ9
@@ -8,115 +8,31 @@ Object.defineProperty(exports, "ServeAction", {
8
8
  return ServeAction;
9
9
  }
10
10
  });
11
- const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
11
  const _decorators = require("@decohere/crucible/decorators");
13
- const _mesh = require("@decohere/mesh");
14
12
  const _cli = require("@decohere/nexus/cli");
15
13
  const _scribe = require("@decohere/scribe");
16
- const _deferredscriptrunner = require("./deferred-script-runner.js");
17
14
  const _hotreloadserver = require("./hot-reload-server.js");
18
- const _sliceserve = require("./slice-serve.js");
19
- function _interop_require_default(obj) {
20
- return obj && obj.__esModule ? obj : {
21
- default: obj
22
- };
23
- }
24
15
  function _ts_decorate(decorators, target, key, desc) {
25
16
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26
17
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
27
18
  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;
28
19
  return c > 3 && r && Object.defineProperty(target, key, r), r;
29
20
  }
30
- function _ts_metadata(k, v) {
31
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
32
- }
33
21
  class ServeAction {
34
- server;
35
- workspace;
36
- deferredScripts;
37
- logger = _scribe.scribe.logger(ServeAction.name);
38
- constructor(server, workspace, deferredScripts){
39
- this.server = server;
40
- this.workspace = workspace;
41
- this.deferredScripts = deferredScripts;
42
- }
43
22
  async run(options) {
44
- const slices = (options.slices ?? []).filter((s)=>s !== "");
45
- if (slices.length > 0 && options.project != null) {
46
- throw new Error("Use either directory slices or --project, not both");
47
- }
48
- if (slices.length > 0) {
49
- return this.runSlices(options, slices);
50
- }
51
- await this.server.start({
52
- workspace: this.workspace,
53
- buildConfig: options.configuration,
54
- project: options.project,
55
- rebootDebounceMs: options.rebootDebounceMs
23
+ const { entry, watchDir } = options;
24
+ const logger = _scribe.scribe.logger("ServeAction");
25
+ const server = new _hotreloadserver.HotReloadServer(logger);
26
+ process.on("SIGINT", async ()=>{
27
+ await server.dispose();
28
+ process.exit(0);
56
29
  });
57
- return _cli.ActionResponse.Blocking(ServeAction.name);
58
- }
59
- async runSlices(options, slices) {
60
- const views = await this.toSliceViews(options.configuration);
61
- const classified = (0, _sliceserve.classifySliceProjects)(views, slices);
62
- const label = slices.join(" ");
63
- for (const skipped of classified.skip){
64
- this.logger.info(`skipped ${skipped.projectDirectory} — library (no Flux entry / scripts)`);
65
- }
66
- if (classified.flux.length === 0 && classified.defer.length === 0) {
67
- throw new Error(`No runnable projects in slice(s) "${label}" (need Flux main.ts apps and/or package scripts.dev/serve)`);
68
- }
69
- const workspaceRoot = _nodepath.default.resolve(this.workspace.rootDir ?? process.cwd());
70
- for (const deferred of classified.defer){
71
- const script = (0, _sliceserve.resolveDeferScript)(deferred.scripts);
72
- if (script == null) continue;
73
- const project = this.findProject(options.configuration, deferred.name);
74
- this.deferredScripts.start({
75
- label: deferred.projectDirectory,
76
- cwd: project.projectRoot,
77
- script,
78
- workspaceRoot
79
- });
80
- }
81
- if (classified.flux.length > 0) {
82
- await this.server.start({
83
- workspace: this.workspace,
84
- buildConfig: options.configuration,
85
- projects: classified.flux.map((p)=>p.name),
86
- rebootDebounceMs: options.rebootDebounceMs
87
- });
88
- }
89
- return _cli.ActionResponse.Blocking(ServeAction.name);
90
- }
91
- async toSliceViews(configuration) {
92
- const projects = this.workspace.getProjects(configuration);
93
- return Promise.all(projects.map((project)=>this.toSliceView(project)));
94
- }
95
- async toSliceView(project) {
96
- const pkg = await project.getPackageJson();
97
- return {
98
- name: project.name,
99
- projectDirectory: project.projectDirectory.replaceAll("\\", "/"),
100
- main: pkg.main ?? "src/index.ts",
101
- scripts: pkg.scripts ?? {}
102
- };
103
- }
104
- findProject(configuration, name) {
105
- const found = this.workspace.getProjects(configuration).find((p)=>p.name === name);
106
- if (found == null) {
107
- throw new Error(`Project "${name}" not found in workspace`);
108
- }
109
- return found;
30
+ await server.start(entry, watchDir);
31
+ return _cli.ActionResponse.Success(ServeAction.name);
110
32
  }
111
33
  }
112
34
  ServeAction = _ts_decorate([
113
- (0, _decorators.injectable)(),
114
- _ts_metadata("design:type", Function),
115
- _ts_metadata("design:paramtypes", [
116
- typeof _hotreloadserver.HotReloadServer === "undefined" ? Object : _hotreloadserver.HotReloadServer,
117
- typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace,
118
- typeof _deferredscriptrunner.DeferredScriptRunner === "undefined" ? Object : _deferredscriptrunner.DeferredScriptRunner
119
- ])
35
+ (0, _decorators.injectable)()
120
36
  ], ServeAction);
121
37
 
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyB0eXBlIFByb2plY3QsIFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgdHlwZSBBY3Rpb24sIEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IHR5cGUgTG9nZ2VyLCBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgRGVmZXJyZWRTY3JpcHRSdW5uZXIgfSBmcm9tIFwiLi9kZWZlcnJlZC1zY3JpcHQtcnVubmVyLmpzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBIb3RSZWxvYWRTZXJ2ZXIgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuaW1wb3J0IHtcblx0Y2xhc3NpZnlTbGljZVByb2plY3RzLFxuXHRyZXNvbHZlRGVmZXJTY3JpcHQsXG5cdHR5cGUgU2xpY2VQcm9qZWN0Vmlldyxcbn0gZnJvbSBcIi4vc2xpY2Utc2VydmUuanNcIjtcblxuZXhwb3J0IHR5cGUgU2VydmVPcHRpb25zID0ge1xuXHRjb25maWd1cmF0aW9uOiBzdHJpbmc7XG5cdHByb2plY3Q/OiBzdHJpbmc7XG5cdC8qKiBPbmUgb3IgbW9yZSBtb2R1bGUgZGlyZWN0b3J5IHRva2VucyAoYGZ1bmRpbmdgLCBgc2hlbGxgLCBgcHJvamVjdHMvZnVuZGluZ2ApLiAqL1xuXHRzbGljZXM/OiBzdHJpbmdbXTtcblx0cmVib290RGVib3VuY2VNcz86IG51bWJlcjtcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxTZXJ2ZU9wdGlvbnM+IHtcblx0cHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlciA9IHNjcmliZS5sb2dnZXIoU2VydmVBY3Rpb24ubmFtZSk7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgc2VydmVyOiBIb3RSZWxvYWRTZXJ2ZXIsXG5cdFx0cHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSxcblx0XHRwcml2YXRlIHJlYWRvbmx5IGRlZmVycmVkU2NyaXB0czogRGVmZXJyZWRTY3JpcHRSdW5uZXIsXG5cdCkge31cblxuXHRwdWJsaWMgYXN5bmMgcnVuKG9wdGlvbnM6IFNlcnZlT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRjb25zdCBzbGljZXMgPSAob3B0aW9ucy5zbGljZXMgPz8gW10pLmZpbHRlcigocykgPT4gcyAhPT0gXCJcIik7XG5cdFx0aWYgKHNsaWNlcy5sZW5ndGggPiAwICYmIG9wdGlvbnMucHJvamVjdCAhPSBudWxsKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVc2UgZWl0aGVyIGRpcmVjdG9yeSBzbGljZXMgb3IgLS1wcm9qZWN0LCBub3QgYm90aFwiKTtcblx0XHR9XG5cblx0XHRpZiAoc2xpY2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiB0aGlzLnJ1blNsaWNlcyhvcHRpb25zLCBzbGljZXMpO1xuXHRcdH1cblxuXHRcdGF3YWl0IHRoaXMuc2VydmVyLnN0YXJ0KHtcblx0XHRcdHdvcmtzcGFjZTogdGhpcy53b3Jrc3BhY2UsXG5cdFx0XHRidWlsZENvbmZpZzogb3B0aW9ucy5jb25maWd1cmF0aW9uLFxuXHRcdFx0cHJvamVjdDogb3B0aW9ucy5wcm9qZWN0LFxuXHRcdFx0cmVib290RGVib3VuY2VNczogb3B0aW9ucy5yZWJvb3REZWJvdW5jZU1zLFxuXHRcdH0pO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5CbG9ja2luZyhTZXJ2ZUFjdGlvbi5uYW1lKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgcnVuU2xpY2VzKG9wdGlvbnM6IFNlcnZlT3B0aW9ucywgc2xpY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRjb25zdCB2aWV3cyA9IGF3YWl0IHRoaXMudG9TbGljZVZpZXdzKG9wdGlvbnMuY29uZmlndXJhdGlvbik7XG5cdFx0Y29uc3QgY2xhc3NpZmllZCA9IGNsYXNzaWZ5U2xpY2VQcm9qZWN0cyh2aWV3cywgc2xpY2VzKTtcblx0XHRjb25zdCBsYWJlbCA9IHNsaWNlcy5qb2luKFwiIFwiKTtcblxuXHRcdGZvciAoY29uc3Qgc2tpcHBlZCBvZiBjbGFzc2lmaWVkLnNraXApIHtcblx0XHRcdHRoaXMubG9nZ2VyLmluZm8oXG5cdFx0XHRcdGBza2lwcGVkICR7c2tpcHBlZC5wcm9qZWN0RGlyZWN0b3J5fSDigJQgbGlicmFyeSAobm8gRmx1eCBlbnRyeSAvIHNjcmlwdHMpYCxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKGNsYXNzaWZpZWQuZmx1eC5sZW5ndGggPT09IDAgJiYgY2xhc3NpZmllZC5kZWZlci5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YE5vIHJ1bm5hYmxlIHByb2plY3RzIGluIHNsaWNlKHMpIFwiJHtsYWJlbH1cIiAobmVlZCBGbHV4IG1haW4udHMgYXBwcyBhbmQvb3IgcGFja2FnZSBzY3JpcHRzLmRldi9zZXJ2ZSlgLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VSb290ID0gcGF0aC5yZXNvbHZlKHRoaXMud29ya3NwYWNlLnJvb3REaXIgPz8gcHJvY2Vzcy5jd2QoKSk7XG5cblx0XHRmb3IgKGNvbnN0IGRlZmVycmVkIG9mIGNsYXNzaWZpZWQuZGVmZXIpIHtcblx0XHRcdGNvbnN0IHNjcmlwdCA9IHJlc29sdmVEZWZlclNjcmlwdChkZWZlcnJlZC5zY3JpcHRzKTtcblx0XHRcdGlmIChzY3JpcHQgPT0gbnVsbCkgY29udGludWU7XG5cdFx0XHRjb25zdCBwcm9qZWN0ID0gdGhpcy5maW5kUHJvamVjdChvcHRpb25zLmNvbmZpZ3VyYXRpb24sIGRlZmVycmVkLm5hbWUpO1xuXHRcdFx0dGhpcy5kZWZlcnJlZFNjcmlwdHMuc3RhcnQoe1xuXHRcdFx0XHRsYWJlbDogZGVmZXJyZWQucHJvamVjdERpcmVjdG9yeSxcblx0XHRcdFx0Y3dkOiBwcm9qZWN0LnByb2plY3RSb290LFxuXHRcdFx0XHRzY3JpcHQsXG5cdFx0XHRcdHdvcmtzcGFjZVJvb3QsXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoY2xhc3NpZmllZC5mbHV4Lmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuc2VydmVyLnN0YXJ0KHtcblx0XHRcdFx0d29ya3NwYWNlOiB0aGlzLndvcmtzcGFjZSxcblx0XHRcdFx0YnVpbGRDb25maWc6IG9wdGlvbnMuY29uZmlndXJhdGlvbixcblx0XHRcdFx0cHJvamVjdHM6IGNsYXNzaWZpZWQuZmx1eC5tYXAoKHApID0+IHAubmFtZSksXG5cdFx0XHRcdHJlYm9vdERlYm91bmNlTXM6IG9wdGlvbnMucmVib290RGVib3VuY2VNcyxcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5CbG9ja2luZyhTZXJ2ZUFjdGlvbi5uYW1lKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgdG9TbGljZVZpZXdzKGNvbmZpZ3VyYXRpb246IHN0cmluZyk6IFByb21pc2U8U2xpY2VQcm9qZWN0Vmlld1tdPiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSB0aGlzLndvcmtzcGFjZS5nZXRQcm9qZWN0cyhjb25maWd1cmF0aW9uKTtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwocHJvamVjdHMubWFwKChwcm9qZWN0KSA9PiB0aGlzLnRvU2xpY2VWaWV3KHByb2plY3QpKSk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIHRvU2xpY2VWaWV3KHByb2plY3Q6IFByb2plY3QpOiBQcm9taXNlPFNsaWNlUHJvamVjdFZpZXc+IHtcblx0XHRjb25zdCBwa2cgPSBhd2FpdCBwcm9qZWN0LmdldFBhY2thZ2VKc29uKCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdHByb2plY3REaXJlY3Rvcnk6IHByb2plY3QucHJvamVjdERpcmVjdG9yeS5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIiksXG5cdFx0XHRtYWluOiBwa2cubWFpbiA/PyBcInNyYy9pbmRleC50c1wiLFxuXHRcdFx0c2NyaXB0czogcGtnLnNjcmlwdHMgPz8ge30sXG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgZmluZFByb2plY3QoY29uZmlndXJhdGlvbjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9qZWN0IHtcblx0XHRjb25zdCBmb3VuZCA9IHRoaXMud29ya3NwYWNlLmdldFByb2plY3RzKGNvbmZpZ3VyYXRpb24pLmZpbmQoKHApID0+IHAubmFtZSA9PT0gbmFtZSk7XG5cdFx0aWYgKGZvdW5kID09IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBcIiR7bmFtZX1cIiBub3QgZm91bmQgaW4gd29ya3NwYWNlYCk7XG5cdFx0fVxuXHRcdHJldHVybiBmb3VuZDtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlNlcnZlQWN0aW9uIiwibG9nZ2VyIiwic2NyaWJlIiwibmFtZSIsInNlcnZlciIsIndvcmtzcGFjZSIsImRlZmVycmVkU2NyaXB0cyIsInJ1biIsIm9wdGlvbnMiLCJzbGljZXMiLCJmaWx0ZXIiLCJzIiwibGVuZ3RoIiwicHJvamVjdCIsIkVycm9yIiwicnVuU2xpY2VzIiwic3RhcnQiLCJidWlsZENvbmZpZyIsImNvbmZpZ3VyYXRpb24iLCJyZWJvb3REZWJvdW5jZU1zIiwiQWN0aW9uUmVzcG9uc2UiLCJCbG9ja2luZyIsInZpZXdzIiwidG9TbGljZVZpZXdzIiwiY2xhc3NpZmllZCIsImNsYXNzaWZ5U2xpY2VQcm9qZWN0cyIsImxhYmVsIiwiam9pbiIsInNraXBwZWQiLCJza2lwIiwiaW5mbyIsInByb2plY3REaXJlY3RvcnkiLCJmbHV4IiwiZGVmZXIiLCJ3b3Jrc3BhY2VSb290IiwicGF0aCIsInJlc29sdmUiLCJyb290RGlyIiwicHJvY2VzcyIsImN3ZCIsImRlZmVycmVkIiwic2NyaXB0IiwicmVzb2x2ZURlZmVyU2NyaXB0Iiwic2NyaXB0cyIsImZpbmRQcm9qZWN0IiwicHJvamVjdFJvb3QiLCJwcm9qZWN0cyIsIm1hcCIsInAiLCJnZXRQcm9qZWN0cyIsIlByb21pc2UiLCJhbGwiLCJ0b1NsaWNlVmlldyIsInBrZyIsImdldFBhY2thZ2VKc29uIiwicmVwbGFjZUFsbCIsIm1haW4iLCJmb3VuZCIsImZpbmQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBeUJhQTs7O2VBQUFBOzs7aUVBekJJOzRCQUNVO3NCQUVhO3FCQUNJO3dCQUNSO3NDQUVDO2lDQUVMOzRCQUt6Qjs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsTUFBTUE7Ozs7SUFDS0MsU0FBaUJDLGNBQU0sQ0FBQ0QsTUFBTSxDQUFDRCxZQUFZRyxJQUFJLEVBQUU7SUFFbEUsWUFDQyxBQUFpQkMsTUFBdUIsRUFDeEMsQUFBaUJDLFNBQW9CLEVBQ3JDLEFBQWlCQyxlQUFxQyxDQUNyRDthQUhnQkYsU0FBQUE7YUFDQUMsWUFBQUE7YUFDQUMsa0JBQUFBO0lBQ2Y7SUFFSCxNQUFhQyxJQUFJQyxPQUFxQixFQUEyQjtRQUNoRSxNQUFNQyxTQUFTLEFBQUNELENBQUFBLFFBQVFDLE1BQU0sSUFBSSxFQUFFLEFBQUQsRUFBR0MsTUFBTSxDQUFDLENBQUNDLElBQU1BLE1BQU07UUFDMUQsSUFBSUYs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
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbiwgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IEhvdFJlbG9hZFNlcnZlciB9IGZyb20gXCIuL2hvdC1yZWxvYWQtc2VydmVyLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFNlcnZlT3B0aW9ucyA9IHtcblx0ZW50cnk6IHN0cmluZztcblx0d2F0Y2hEaXI6IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxTZXJ2ZU9wdGlvbnM+IHtcblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBTZXJ2ZU9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgeyBlbnRyeSwgd2F0Y2hEaXIgfSA9IG9wdGlvbnM7XG5cdFx0Y29uc3QgbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihcIlNlcnZlQWN0aW9uXCIpO1xuXHRcdGNvbnN0IHNlcnZlciA9IG5ldyBIb3RSZWxvYWRTZXJ2ZXIobG9nZ2VyKTtcblxuXHRcdHByb2Nlc3Mub24oXCJTSUdJTlRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0YXdhaXQgc2VydmVyLmRpc3Bvc2UoKTtcblx0XHRcdHByb2Nlc3MuZXhpdCgwKTtcblx0XHR9KTtcblxuXHRcdGF3YWl0IHNlcnZlci5zdGFydChlbnRyeSwgd2F0Y2hEaXIpO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5TdWNjZXNzKFNlcnZlQWN0aW9uLm5hbWUpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiU2VydmVBY3Rpb24iLCJydW4iLCJvcHRpb25zIiwiZW50cnkiLCJ3YXRjaERpciIsImxvZ2dlciIsInNjcmliZSIsInNlcnZlciIsIkhvdFJlbG9hZFNlcnZlciIsInByb2Nlc3MiLCJvbiIsImRpc3Bvc2UiLCJleGl0Iiwic3RhcnQiLCJBY3Rpb25SZXNwb25zZSIsIlN1Y2Nlc3MiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7OytCQVdhQTs7O2VBQUFBOzs7NEJBWGM7cUJBQ2lCO3dCQUNyQjtpQ0FDUzs7Ozs7OztBQVF6QixNQUFNQTtJQUNaLE1BQWFDLElBQUlDLE9BQXFCLEVBQTJCO1FBQ2hFLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0Y7UUFDNUIsTUFBTUcsU0FBU0MsY0FBTSxDQUFDRCxNQUFNLENBQUM7UUFDN0IsTUFBTUUsU0FBUyxJQUFJQyxnQ0FBZSxDQUFDSDtRQUVuQ0ksUUFBUUMsRUFBRSxDQUFDLFVBQVU7WUFDcEIsTUFBTUgsT0FBT0ksT0FBTztZQUNwQkYsUUFBUUcsSUFBSSxDQUFDO1FBQ2Q7UUFFQSxNQUFNTCxPQUFPTSxLQUFLLENBQUNWLE9BQU9DO1FBQzFCLE9BQU9VLG1CQUFjLENBQUNDLE9BQU8sQ0FBQ2YsWUFBWWdCLElBQUk7SUFDL0M7QUFDRCJ9
@@ -9,49 +9,17 @@ Object.defineProperty(exports, "ServeCommand", {
9
9
  }
10
10
  });
11
11
  const _cli = require("@decohere/nexus/cli");
12
- const _hotreloadserver = require("./hot-reload-server.js");
13
- const _serveaction = require("./serve.action.js");
12
+ const _workspaceserveaction = require("./workspace-serve.action.js");
14
13
  class ServeCommand extends _cli.DecohereCommand {
15
14
  get actions() {
16
15
  return [
17
- _serveaction.ServeAction
16
+ _workspaceserveaction.WorkspaceServeAction
18
17
  ];
19
18
  }
20
19
  constructor(name){
21
20
  super(name);
22
- this.description("Serve a project or directory slices (Flux apps in-process; foreign packages via package scripts)");
23
- this.argument("[slices...]", "Module directories to serve (e.g. funding shell secmaster, or projects/funding)");
24
- this.addOption(new _cli.ConfigurationOption("debug"));
25
- this.addOption(new _cli.ProjectOption());
26
- this.option("--reboot-debounce-ms <ms>", "Quiet window in milliseconds after the last affecting save before a reboot", (value)=>(0, _hotreloadserver.resolveRebootDebounceMs)(Number(value)), _hotreloadserver.DEFAULT_REBOOT_DEBOUNCE_MS);
21
+ this.description("Serve the first project in a workspace configuration");
27
22
  }
28
- /**
29
- * Commander passes positional args before options when `[slices...]` is declared.
30
- * The CLI host ModuleFactory expects `(opts, cmd)` — normalize here.
31
- */ action(fn) {
32
- return super.action((...args)=>{
33
- const cmd = args.at(-1);
34
- const first = args[0];
35
- const hasPositionalSlices = Array.isArray(first) || typeof first === "string" || first === undefined;
36
- const opts = hasPositionalSlices ? args[1] : args[0];
37
- const slices = normalizePositionalSlices(first);
38
- if (slices.length > 0) {
39
- cmd.setOptionValue("slices", slices);
40
- }
41
- return fn(opts, cmd);
42
- });
43
- }
44
- }
45
- function normalizePositionalSlices(first) {
46
- if (Array.isArray(first)) {
47
- return first.filter((s)=>typeof s === "string" && s !== "");
48
- }
49
- if (typeof first === "string" && first !== "") {
50
- return [
51
- first
52
- ];
53
- }
54
- return [];
55
23
  }
56
24
 
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kLCBQcm9qZWN0T3B0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB0eXBlIHsgT3B0aW9uVmFsdWVzIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgREVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMsIHJlc29sdmVSZWJvb3REZWJvdW5jZU1zIH0gZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmltcG9ydCB7IFNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBTZXJ2ZUNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGlvbnMoKSB7XG5cdFx0cmV0dXJuIFtTZXJ2ZUFjdGlvbl07XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcblx0XHRcdFwiU2VydmUgYSBwcm9qZWN0IG9yIGRpcmVjdG9yeSBzbGljZXMgKEZsdXggYXBwcyBpbi1wcm9jZXNzOyBmb3JlaWduIHBhY2thZ2VzIHZpYSBwYWNrYWdlIHNjcmlwdHMpXCIsXG5cdFx0KTtcblx0XHR0aGlzLmFyZ3VtZW50KFxuXHRcdFx0XCJbc2xpY2VzLi4uXVwiLFxuXHRcdFx0XCJNb2R1bGUgZGlyZWN0b3JpZXMgdG8gc2VydmUgKGUuZy4gZnVuZGluZyBzaGVsbCBzZWNtYXN0ZXIsIG9yIHByb2plY3RzL2Z1bmRpbmcpXCIsXG5cdFx0KTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlndXJhdGlvbk9wdGlvbihcImRlYnVnXCIpKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgUHJvamVjdE9wdGlvbigpKTtcblx0XHR0aGlzLm9wdGlvbihcblx0XHRcdFwiLS1yZWJvb3QtZGVib3VuY2UtbXMgPG1zPlwiLFxuXHRcdFx0XCJRdWlldCB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGFmdGVyIHRoZSBsYXN0IGFmZmVjdGluZyBzYXZlIGJlZm9yZSBhIHJlYm9vdFwiLFxuXHRcdFx0KHZhbHVlOiBzdHJpbmcpID0+IHJlc29sdmVSZWJvb3REZWJvdW5jZU1zKE51bWJlcih2YWx1ZSkpLFxuXHRcdFx0REVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMsXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21tYW5kZXIgcGFzc2VzIHBvc2l0aW9uYWwgYXJncyBiZWZvcmUgb3B0aW9ucyB3aGVuIGBbc2xpY2VzLi4uXWAgaXMgZGVjbGFyZWQuXG5cdCAqIFRoZSBDTEkgaG9zdCBNb2R1bGVGYWN0b3J5IGV4cGVjdHMgYChvcHRzLCBjbWQpYCDigJQgbm9ybWFsaXplIGhlcmUuXG5cdCAqL1xuXHRwdWJsaWMgb3ZlcnJpZGUgYWN0aW9uKGZuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KTogdGhpcyB7XG5cdFx0cmV0dXJuIHN1cGVyLmFjdGlvbigoLi4uYXJnczogYW55W10pID0+IHtcblx0XHRcdGNvbnN0IGNtZCA9IGFyZ3MuYXQoLTEpIGFzIERlY29oZXJlQ29tbWFuZDtcblx0XHRcdGNvbnN0IGZpcnN0ID0gYXJnc1swXTtcblx0XHRcdGNvbnN0IGhhc1Bvc2l0aW9uYWxTbGljZXMgPVxuXHRcdFx0XHRBcnJheS5pc0FycmF5KGZpcnN0KSB8fCB0eXBlb2YgZmlyc3QgPT09IFwic3RyaW5nXCIgfHwgZmlyc3QgPT09IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IG9wdHMgPSBoYXNQb3NpdGlvbmFsU2xpY2VzID8gKGFyZ3NbMV0gYXMgT3B0aW9uVmFsdWVzKSA6IChhcmdzWzBdIGFzIE9wdGlvblZhbHVlcyk7XG5cblx0XHRcdGNvbnN0IHNsaWNlcyA9IG5vcm1hbGl6ZVBvc2l0aW9uYWxTbGljZXMoZmlyc3QpO1xuXHRcdFx0aWYgKHNsaWNlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcInNsaWNlc1wiLCBzbGljZXMpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZuKG9wdHMsIGNtZCk7XG5cdFx0fSk7XG5cdH1cbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBvc2l0aW9uYWxTbGljZXMoZmlyc3Q6IHVua25vd24pOiBzdHJpbmdbXSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGZpcnN0KSkge1xuXHRcdHJldHVybiBmaXJzdC5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiAmJiBzICE9PSBcIlwiKTtcblx0fVxuXHRpZiAodHlwZW9mIGZpcnN0ID09PSBcInN0cmluZ1wiICYmIGZpcnN0ICE9PSBcIlwiKSB7XG5cdFx0cmV0dXJuIFtmaXJzdF07XG5cdH1cblx0cmV0dXJuIFtdO1xufVxuIl0sIm5hbWVzIjpbIlNlcnZlQ29tbWFuZCIsIkRlY29oZXJlQ29tbWFuZCIsImFjdGlvbnMiLCJTZXJ2ZUFjdGlvbiIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50IiwiYWRkT3B0aW9uIiwiQ29uZmlndXJhdGlvbk9wdGlvbiIsIlByb2plY3RPcHRpb24iLCJvcHRpb24iLCJ2YWx1ZSIsInJlc29sdmVSZWJvb3REZWJvdW5jZU1zIiwiTnVtYmVyIiwiREVGQVVMVF9SRUJPT1RfREVCT1VOQ0VfTVMiLCJhY3Rpb24iLCJmbiIsImFyZ3MiLCJjbWQiLCJhdCIsImZpcnN0IiwiaGFzUG9zaXRpb25hbFNsaWNlcyIsIkFycmF5IiwiaXNBcnJheSIsInVuZGVmaW5lZCIsIm9wdHMiLCJzbGljZXMiLCJub3JtYWxpemVQb3NpdGlvbmFsU2xpY2VzIiwibGVuZ3RoIiwic2V0T3B0aW9uVmFsdWUiLCJmaWx0ZXIiLCJzIl0sIm1hcHBpbmdzIjoiOzs7OytCQUthQTs7O2VBQUFBOzs7cUJBTHVEO2lDQUVBOzZCQUN4QztBQUVyQixNQUFNQSxxQkFBcUJDLG9CQUFlO0lBQ2hELElBQW9CQyxVQUFVO1FBQzdCLE9BQU87WUFBQ0Msd0JBQVc7U0FBQztJQUNyQjtJQUVBLFlBQW1CQyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUNmO1FBRUQsSUFBSSxDQUFDQyxRQUFRLENBQ1osZUFDQTtRQUVELElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlDLHdCQUFtQixDQUFDO1FBQ3ZDLElBQUksQ0FBQ0QsU0FBUyxDQUFDLElBQUlFLGtCQUFhO1FBQ2hDLElBQUksQ0FBQ0MsTUFBTSxDQUNWLDZCQUNBLDhFQUNBLENBQUNDLFFBQWtCQyxJQUFBQSx3Q0FBdUIsRUFBQ0MsT0FBT0YsU0FDbERHLDJDQUEwQjtJQUU1QjtJQUVBOzs7RUFHQyxHQUNELEFBQWdCQyxPQUFPQyxFQUE0QyxFQUFRO1FBQzFFLE9BQU8sS0FBSyxDQUFDRCxPQUFPLENBQUMsR0FBR0U7WUFDdkIsTUFBTUMsTUFBTUQsS0FBS0UsRUFBRSxDQUFDLENBQUM7WUFDckIsTUFBTUMsUUFBUUgsSUFBSSxDQUFDLEVBQUU7WUFDckIsTUFBTUksc0JBQ0xDLE1BQU1DLE9BQU8sQ0FBQ0gsVUFBVSxPQUFPQSxVQUFVLFlBQVlBLFVBQVVJO1lBQ2hFLE1BQU1DLE9BQU9KLHNCQUF1QkosSUFBSSxDQUFDLEVBQUUsR0FBcUJBLElBQUksQ0FBQyxFQUFFO1lBRXZFLE1BQU1TLFNBQVNDLDBCQUEwQlA7WUFDekMsSUFBSU0sT0FBT0UsTUFBTSxHQUFHLEdBQUc7Z0JBQ3RCVixJQUFJVyxjQUFjLENBQUMsVUFBVUg7WUFDOUI7WUFDQSxPQUFPVixHQUFHUyxNQUFNUDtRQUNqQjtJQUNEO0FBQ0Q7QUFDQSxTQUFTUywwQkFBMEJQLEtBQWM7SUFDaEQsSUFBSUUsTUFBTUMsT0FBTyxDQUFDSCxRQUFRO1FBQ3pCLE9BQU9BLE1BQU1VLE1BQU0sQ0FBQyxDQUFDQyxJQUFtQixPQUFPQSxNQUFNLFlBQVlBLE1BQU07SUFDeEU7SUFDQSxJQUFJLE9BQU9YLFVBQVUsWUFBWUEsVUFBVSxJQUFJO1FBQzlDLE9BQU87WUFBQ0E7U0FBTTtJQUNmO0lBQ0EsT0FBTyxFQUFFO0FBQ1YifQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjb2hlcmVDb21tYW5kIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFdvcmtzcGFjZVNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vd29ya3NwYWNlLXNlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VydmVDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbV29ya3NwYWNlU2VydmVBY3Rpb25dO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJTZXJ2ZSB0aGUgZmlyc3QgcHJvamVjdCBpbiBhIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uXCIpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiU2VydmVDb21tYW5kIiwiRGVjb2hlcmVDb21tYW5kIiwiYWN0aW9ucyIsIldvcmtzcGFjZVNlcnZlQWN0aW9uIiwibmFtZSIsImRlc2NyaXB0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7cUJBSG1CO3NDQUNLO0FBRTlCLE1BQU1BLHFCQUFxQkMsb0JBQWU7SUFDaEQsSUFBb0JDLFVBQVU7UUFDN0IsT0FBTztZQUFDQywwQ0FBb0I7U0FBQztJQUM5QjtJQUVBLFlBQW1CQyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUFDO0lBQ2xCO0FBQ0QifQ==
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _nodeutil = require("node:util");
6
+ const _scribe = require("@decohere/scribe");
7
+ const _hotreloadserver = require("./hot-reload-server.js");
8
+ const { values } = (0, _nodeutil.parseArgs)({
9
+ args: process.argv.slice(2),
10
+ options: {
11
+ entry: {
12
+ type: "string",
13
+ short: "e"
14
+ },
15
+ watchDir: {
16
+ type: "string",
17
+ multiple: true,
18
+ short: "w"
19
+ }
20
+ },
21
+ allowPositionals: false
22
+ });
23
+ const entry = values.entry;
24
+ const watchDirs = values.watchDir ?? [];
25
+ if (!entry) {
26
+ console.error("Usage: forge-hmr --entry <path> --watchDir <dir> [--watchDir <dir>...]");
27
+ process.exit(1);
28
+ }
29
+ if (watchDirs.length === 0) {
30
+ console.error("Usage: forge-hmr --entry <path> --watchDir <dir> [--watchDir <dir>...]");
31
+ process.exit(1);
32
+ }
33
+ const hmr = new _hotreloadserver.HotReloadServer(_scribe.scribe.logger("HotReloadServer"));
34
+ await hmr.start(entry, ...watchDirs);
35
+
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NlcnZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBIb3RSZWxvYWRTZXJ2ZXIgfSBmcm9tIFwiLi9ob3QtcmVsb2FkLXNlcnZlci5qc1wiO1xuXG5jb25zdCB7IHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcblx0YXJnczogcHJvY2Vzcy5hcmd2LnNsaWNlKDIpLFxuXHRvcHRpb25zOiB7XG5cdFx0ZW50cnk6IHsgdHlwZTogXCJzdHJpbmdcIiwgc2hvcnQ6IFwiZVwiIH0sXG5cdFx0d2F0Y2hEaXI6IHsgdHlwZTogXCJzdHJpbmdcIiwgbXVsdGlwbGU6IHRydWUsIHNob3J0OiBcIndcIiB9LFxuXHR9LFxuXHRhbGxvd1Bvc2l0aW9uYWxzOiBmYWxzZSxcbn0pO1xuXG5jb25zdCBlbnRyeSA9IHZhbHVlcy5lbnRyeTtcbmNvbnN0IHdhdGNoRGlycyA9IHZhbHVlcy53YXRjaERpciA/PyBbXTtcblxuaWYgKCFlbnRyeSkge1xuXHRjb25zb2xlLmVycm9yKFwiVXNhZ2U6IGZvcmdlLWhtciAtLWVudHJ5IDxwYXRoPiAtLXdhdGNoRGlyIDxkaXI+IFstLXdhdGNoRGlyIDxkaXI+Li4uXVwiKTtcblx0cHJvY2Vzcy5leGl0KDEpO1xufVxuXG5pZiAod2F0Y2hEaXJzLmxlbmd0aCA9PT0gMCkge1xuXHRjb25zb2xlLmVycm9yKFwiVXNhZ2U6IGZvcmdlLWhtciAtLWVudHJ5IDxwYXRoPiAtLXdhdGNoRGlyIDxkaXI+IFstLXdhdGNoRGlyIDxkaXI+Li4uXVwiKTtcblx0cHJvY2Vzcy5leGl0KDEpO1xufVxuXG5jb25zdCBobXIgPSBuZXcgSG90UmVsb2FkU2VydmVyKHNjcmliZS5sb2dnZXIoXCJIb3RSZWxvYWRTZXJ2ZXJcIikpO1xuYXdhaXQgaG1yLnN0YXJ0KGVudHJ5LCAuLi53YXRjaERpcnMpO1xuIl0sIm5hbWVzIjpbInZhbHVlcyIsInBhcnNlQXJncyIsImFyZ3MiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwib3B0aW9ucyIsImVudHJ5IiwidHlwZSIsInNob3J0Iiwid2F0Y2hEaXIiLCJtdWx0aXBsZSIsImFsbG93UG9zaXRpb25hbHMiLCJ3YXRjaERpcnMiLCJjb25zb2xlIiwiZXJyb3IiLCJleGl0IiwibGVuZ3RoIiwiaG1yIiwiSG90UmVsb2FkU2VydmVyIiwic2NyaWJlIiwibG9nZ2VyIiwic3RhcnQiXSwibWFwcGluZ3MiOiI7Ozs7MEJBQTBCO3dCQUNIO2lDQUNTO0FBRWhDLE1BQU0sRUFBRUEsTUFBTSxFQUFFLEdBQUdDLElBQUFBLG1CQUFTLEVBQUM7SUFDNUJDLE1BQU1DLFFBQVFDLElBQUksQ0FBQ0MsS0FBSyxDQUFDO0lBQ3pCQyxTQUFTO1FBQ1JDLE9BQU87WUFBRUMsTUFBTTtZQUFVQyxPQUFPO1FBQUk7UUFDcENDLFVBQVU7WUFBRUYsTUFBTTtZQUFVRyxVQUFVO1lBQU1GLE9BQU87UUFBSTtJQUN4RDtJQUNBRyxrQkFBa0I7QUFDbkI7QUFFQSxNQUFNTCxRQUFRUCxPQUFPTyxLQUFLO0FBQzFCLE1BQU1NLFlBQVliLE9BQU9VLFFBQVEsSUFBSSxFQUFFO0FBRXZDLElBQUksQ0FBQ0gsT0FBTztJQUNYTyxRQUFRQyxLQUFLLENBQUM7SUFDZFosUUFBUWEsSUFBSSxDQUFDO0FBQ2Q7QUFFQSxJQUFJSCxVQUFVSSxNQUFNLEtBQUssR0FBRztJQUMzQkgsUUFBUUMsS0FBSyxDQUFDO0lBQ2RaLFFBQVFhLElBQUksQ0FBQztBQUNkO0FBRUEsTUFBTUUsTUFBTSxJQUFJQyxnQ0FBZSxDQUFDQyxjQUFNLENBQUNDLE1BQU0sQ0FBQztBQUM5QyxNQUFNSCxJQUFJSSxLQUFLLENBQUNmLFVBQVVNIn0=
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "WorkspaceServeAction", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return WorkspaceServeAction;
9
+ }
10
+ });
11
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
+ const _decorators = require("@decohere/crucible/decorators");
13
+ const _mesh = require("@decohere/mesh");
14
+ const _cli = require("@decohere/nexus/cli");
15
+ const _serveaction = require("./serve.action.js");
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ function _ts_decorate(decorators, target, key, desc) {
22
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
23
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24
+ 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;
25
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
26
+ }
27
+ function _ts_metadata(k, v) {
28
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
29
+ }
30
+ class WorkspaceServeAction {
31
+ workspace;
32
+ constructor(workspace){
33
+ this.workspace = workspace;
34
+ }
35
+ async run(options) {
36
+ const { configuration } = options;
37
+ const projects = this.workspace.getProjects(configuration);
38
+ const project = projects.at(0);
39
+ if (project == null) {
40
+ return _cli.ActionResponse.Error(WorkspaceServeAction.name, `No projects found for configuration: ${configuration}`);
41
+ }
42
+ const outDir = project.getOutDir();
43
+ const entry = _nodepath.default.join(outDir, "src", "index.js");
44
+ const serveAction = new _serveaction.ServeAction();
45
+ return serveAction.run({
46
+ entry,
47
+ watchDir: outDir
48
+ });
49
+ }
50
+ }
51
+ WorkspaceServeAction = _ts_decorate([
52
+ (0, _decorators.injectable)(),
53
+ _ts_metadata("design:type", Function),
54
+ _ts_metadata("design:paramtypes", [
55
+ typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
56
+ ])
57
+ ], WorkspaceServeAction);
58
+
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3dvcmtzcGFjZS1zZXJ2ZS5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3NlcnZlLmFjdGlvbi5qc1wiO1xuXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VTZXJ2ZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnM+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlOiBXb3Jrc3BhY2UpIHt9XG5cblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBXb3Jrc3BhY2VTZXJ2ZU9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBvcHRpb25zO1xuXHRcdGNvbnN0IHByb2plY3RzID0gdGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMoY29uZmlndXJhdGlvbik7XG5cdFx0Y29uc3QgcHJvamVjdCA9IHByb2plY3RzLmF0KDApO1xuXG5cdFx0aWYgKHByb2plY3QgPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLkVycm9yKFxuXHRcdFx0XHRXb3Jrc3BhY2VTZXJ2ZUFjdGlvbi5uYW1lLFxuXHRcdFx0XHRgTm8gcHJvamVjdHMgZm91bmQgZm9yIGNvbmZpZ3VyYXRpb246ICR7Y29uZmlndXJhdGlvbn1gLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBvdXREaXIgPSBwcm9qZWN0LmdldE91dERpcigpO1xuXHRcdGNvbnN0IGVudHJ5ID0gcGF0aC5qb2luKG91dERpciwgXCJzcmNcIiwgXCJpbmRleC5qc1wiKTtcblx0XHRjb25zdCBzZXJ2ZUFjdGlvbiA9IG5ldyBTZXJ2ZUFjdGlvbigpO1xuXHRcdHJldHVybiBzZXJ2ZUFjdGlvbi5ydW4oeyBlbnRyeSwgd2F0Y2hEaXI6IG91dERpciB9KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldvcmtzcGFjZVNlcnZlQWN0aW9uIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsImNvbmZpZ3VyYXRpb24iLCJwcm9qZWN0cyIsImdldFByb2plY3RzIiwicHJvamVjdCIsImF0IiwiQWN0aW9uUmVzcG9uc2UiLCJFcnJvciIsIm5hbWUiLCJvdXREaXIiLCJnZXRPdXREaXIiLCJlbnRyeSIsInBhdGgiLCJqb2luIiwic2VydmVBY3Rpb24iLCJTZXJ2ZUFjdGlvbiIsIndhdGNoRGlyIl0sIm1hcHBpbmdzIjoiOzs7OytCQWFhQTs7O2VBQUFBOzs7aUVBYkk7NEJBQ1U7c0JBRUQ7cUJBRUs7NkJBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQU9yQixNQUFNQTs7SUFDWixZQUFtQixBQUFpQkMsU0FBb0IsQ0FBRTthQUF0QkEsWUFBQUE7SUFBdUI7SUFFM0QsTUFBYUMsSUFBSUMsT0FBOEIsRUFBMkI7UUFDekUsTUFBTSxFQUFFQyxhQUFhLEVBQUUsR0FBR0Q7UUFDMUIsTUFBTUUsV0FBVyxJQUFJLENBQUNKLFNBQVMsQ0FBQ0ssV0FBVyxDQUFDRjtRQUM1QyxNQUFNRyxVQUFVRixTQUFTRyxFQUFFLENBQUM7UUFFNUIsSUFBSUQsV0FBVyxNQUFNO1lBQ3BCLE9BQU9FLG1CQUFjLENBQUNDLEtBQUssQ0FDMUJWLHFCQUFxQlcsSUFBSSxFQUN6QixDQUFDLHFDQUFxQyxFQUFFUCxlQUFlO1FBRXpEO1FBRUEsTUFBTVEsU0FBU0wsUUFBUU0sU0FBUztRQUNoQyxNQUFNQyxRQUFRQyxpQkFBSSxDQUFDQyxJQUFJLENBQUNKLFFBQVEsT0FBTztRQUN2QyxNQUFNSyxjQUFjLElBQUlDLHdCQUFXO1FBQ25DLE9BQU9ELFlBQVlmLEdBQUcsQ0FBQztZQUFFWTtZQUFPSyxVQUFVUDtRQUFPO0lBQ2xEO0FBQ0QifQ==
@@ -0,0 +1,17 @@
1
+ import { DecohereCommand } from "@decohere/nexus/cli";
2
+ import { ServeCommand } from "./serve.command.js";
3
+ export class EmberCommand extends DecohereCommand {
4
+ constructor(commands, handler){
5
+ super(EmberCommand);
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2VtYmVyLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBY3Rpb25zIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7XG5cdHR5cGUgQ29tbWFuZEhhbmRsZXIsXG5cdHR5cGUgQ29tbWFuZFJlc3BvbnNlLFxuXHR0eXBlIENvbW1hbmRUeXBlLFxuXHREZWNvaGVyZUNvbW1hbmQsXG59IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBTZXJ2ZUNvbW1hbmQgfSBmcm9tIFwiLi9zZXJ2ZS5jb21tYW5kLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBFbWJlckNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoY29tbWFuZHM6IFJlY29yZDxzdHJpbmcsIENvbW1hbmRUeXBlPiwgaGFuZGxlcjogQ29tbWFuZEhhbmRsZXIpIHtcblx0XHRzdXBlcihFbWJlckNvbW1hbmQpO1xuXHRcdHRoaXMuZXhpdE92ZXJyaWRlKCk7XG5cdFx0dGhpcy5yZWdpc3RlclN1YmNvbW1hbmQoeyBzZXJ2ZTogU2VydmVDb21tYW5kLCAuLi5jb21tYW5kcyB9LCBoYW5kbGVyKTtcblx0fVxuXG5cdHB1YmxpYyBydW4oX2FjdGlvbnM6IEFjdGlvbnMsIF9vcHRpb25zOiBuZXZlcik6IFByb21pc2U8Q29tbWFuZFJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaGVscCgpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRGVjb2hlcmVDb21tYW5kIiwiU2VydmVDb21tYW5kIiwiRW1iZXJDb21tYW5kIiwiY29tbWFuZHMiLCJoYW5kbGVyIiwiZXhpdE92ZXJyaWRlIiwicmVnaXN0ZXJTdWJjb21tYW5kIiwic2VydmUiLCJydW4iLCJfYWN0aW9ucyIsIl9vcHRpb25zIiwiaGVscCJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FJQ0EsZUFBZSxRQUNULHNCQUFzQjtBQUM3QixTQUFTQyxZQUFZLFFBQVEscUJBQXFCO0FBRWxELE9BQU8sTUFBTUMscUJBQXFCRjtJQUNqQyxZQUFtQkcsUUFBcUMsRUFBRUMsT0FBdUIsQ0FBRTtRQUNsRixLQUFLLENBQUNGO1FBQ04sSUFBSSxDQUFDRyxZQUFZO1FBQ2pCLElBQUksQ0FBQ0Msa0JBQWtCLENBQUM7WUFBRUMsT0FBT047WUFBYyxHQUFHRSxRQUFRO1FBQUMsR0FBR0M7SUFDL0Q7SUFFT0ksSUFBSUMsUUFBaUIsRUFBRUMsUUFBZSxFQUE0QjtRQUN4RSxPQUFPLElBQUksQ0FBQ0MsSUFBSTtJQUNqQjtBQUNEIn0=
@@ -0,0 +1,19 @@
1
+ import { WorkspaceFactory } from "@decohere/mesh";
2
+ import { ModuleManifest } from "@decohere/nexus/cli";
3
+ import { EmberCommand } from "./ember.command.js";
4
+ import { WorkspaceServeAction } from "./workspace-serve.action.js";
5
+ export const EmberActions = {};
6
+ export class EmberModule extends ModuleManifest {
7
+ id = "ember";
8
+ command = EmberCommand;
9
+ actions = {
10
+ serve: WorkspaceServeAction
11
+ };
12
+ createWorkspace(options) {
13
+ return WorkspaceFactory.create({
14
+ configFile: options.configFile
15
+ });
16
+ }
17
+ }
18
+
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2VtYmVyLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgV29ya3NwYWNlRmFjdG9yeSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBNb2R1bGVNYW5pZmVzdCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRhaW5lckJ1aWxkZXIgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NvbXBvc2l0aW9uXCI7XG5pbXBvcnQgeyBFbWJlckNvbW1hbmQgfSBmcm9tIFwiLi9lbWJlci5jb21tYW5kLmpzXCI7XG5pbXBvcnQgeyBXb3Jrc3BhY2VTZXJ2ZUFjdGlvbiB9IGZyb20gXCIuL3dvcmtzcGFjZS1zZXJ2ZS5hY3Rpb24uanNcIjtcblxuZXhwb3J0IHR5cGUgRW1iZXJNb2R1bGVDb250ZXh0ID0ge1xuXHRidWlsZGVyOiBDb250YWluZXJCdWlsZGVyO1xuXHR3b3Jrc3BhY2U6IFdvcmtzcGFjZTtcbn07XG5cbmV4cG9ydCB0eXBlIEVtYmVyTW9kdWxlUmVzdWx0ID0ge1xuXHRhY3Rpb25zOiB0eXBlb2YgRW1iZXJBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IEVtYmVyQWN0aW9ucyA9IHt9O1xuXG5leHBvcnQgY2xhc3MgRW1iZXJNb2R1bGUgZXh0ZW5kcyBNb2R1bGVNYW5pZmVzdCB7XG5cdHB1YmxpYyByZWFkb25seSBpZCA9IFwiZW1iZXJcIjtcblx0cHVibGljIHJlYWRvbmx5IGNvbW1hbmQgPSBFbWJlckNvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdHNlcnZlOiBXb3Jrc3BhY2VTZXJ2ZUFjdGlvbixcblx0fTtcblxuXHRwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlV29ya3NwYWNlKG9wdGlvbnM6IFdvcmtzcGFjZUZhY3RvcnlPcHRpb25zKSB7XG5cdFx0cmV0dXJuIFdvcmtzcGFjZUZhY3RvcnkuY3JlYXRlKHsgY29uZmlnRmlsZTogb3B0aW9ucy5jb25maWdGaWxlIH0pO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiV29ya3NwYWNlRmFjdG9yeSIsIk1vZHVsZU1hbmlmZXN0IiwiRW1iZXJDb21tYW5kIiwiV29ya3NwYWNlU2VydmVBY3Rpb24iLCJFbWJlckFjdGlvbnMiLCJFbWJlck1vZHVsZSIsImlkIiwiY29tbWFuZCIsImFjdGlvbnMiLCJzZXJ2ZSIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjcmVhdGUiLCJjb25maWdGaWxlIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxnQkFBZ0IsUUFBUSxpQkFBaUI7QUFFbEQsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUVyRCxTQUFTQyxZQUFZLFFBQVEscUJBQXFCO0FBQ2xELFNBQVNDLG9CQUFvQixRQUFRLDhCQUE4QjtBQVduRSxPQUFPLE1BQU1DLGVBQWUsQ0FBQyxFQUFFO0FBRS9CLE9BQU8sTUFBTUMsb0JBQW9CSjtJQUNoQkssS0FBSyxRQUFRO0lBQ2JDLFVBQVVMLGFBQWE7SUFDdkJNLFVBQVU7UUFDekJDLE9BQU9OO0lBQ1IsRUFBRTtJQUVjTyxnQkFBZ0JDLE9BQWdDLEVBQUU7UUFDakUsT0FBT1gsaUJBQWlCWSxNQUFNLENBQUM7WUFBRUMsWUFBWUYsUUFBUUUsVUFBVTtRQUFDO0lBQ2pFO0FBQ0QifQ==
@@ -0,0 +1,26 @@
1
+ import { registerHooks } from "node:module";
2
+ const resolvers = new Set();
3
+ let initialized = false;
4
+ export function initModuleHooks() {
5
+ if (initialized) {
6
+ return;
7
+ }
8
+ initialized = true;
9
+ registerHooks({
10
+ resolve: (specifier, context, next)=>{
11
+ const result = next(specifier, context);
12
+ for (const handler of resolvers){
13
+ handler(result, context.parentURL ?? "");
14
+ }
15
+ return result;
16
+ }
17
+ });
18
+ }
19
+ export function addResolverHook(fn) {
20
+ resolvers.add(fn);
21
+ }
22
+ export function removeResolverHook(fn) {
23
+ resolvers.delete(fn);
24
+ }
25
+
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2hvdC1tb2R1bGUtaG9va3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvbHZlRm5PdXRwdXQsIFJlc29sdmVIb29rQ29udGV4dCB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJIb29rcyB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlSGFuZGxlciA9IChyZXN1bHQ6IFJlc29sdmVGbk91dHB1dCwgcGFyZW50VXJsOiBzdHJpbmcpID0+IHZvaWQ7XG5cbmNvbnN0IHJlc29sdmVycyA9IG5ldyBTZXQ8UmVzb2x2ZUhhbmRsZXI+KCk7XG5sZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRNb2R1bGVIb29rcygpOiB2b2lkIHtcblx0aWYgKGluaXRpYWxpemVkKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGluaXRpYWxpemVkID0gdHJ1ZTtcblxuXHRyZWdpc3Rlckhvb2tzKHtcblx0XHRyZXNvbHZlOiAoXG5cdFx0XHRzcGVjaWZpZXI6IHN0cmluZyxcblx0XHRcdGNvbnRleHQ6IFJlc29sdmVIb29rQ29udGV4dCxcblx0XHRcdG5leHQ6IChzcGVjaWZpZXI6IHN0cmluZywgY29udGV4dD86IFBhcnRpYWw8UmVzb2x2ZUhvb2tDb250ZXh0PikgPT4gUmVzb2x2ZUZuT3V0cHV0LFxuXHRcdCkgPT4ge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gbmV4dChzcGVjaWZpZXIsIGNvbnRleHQpIGFzIFJlc29sdmVGbk91dHB1dDtcblx0XHRcdGZvciAoY29uc3QgaGFuZGxlciBvZiByZXNvbHZlcnMpIHtcblx0XHRcdFx0aGFuZGxlcihyZXN1bHQsIGNvbnRleHQucGFyZW50VVJMID8/IFwiXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJlc29sdmVySG9vayhmbjogUmVzb2x2ZUhhbmRsZXIpOiB2b2lkIHtcblx0cmVzb2x2ZXJzLmFkZChmbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVSZXNvbHZlckhvb2soZm46IFJlc29sdmVIYW5kbGVyKTogdm9pZCB7XG5cdHJlc29sdmVycy5kZWxldGUoZm4pO1xufVxuIl0sIm5hbWVzIjpbInJlZ2lzdGVySG9va3MiLCJyZXNvbHZlcnMiLCJTZXQiLCJpbml0aWFsaXplZCIsImluaXRNb2R1bGVIb29rcyIsInJlc29sdmUiLCJzcGVjaWZpZXIiLCJjb250ZXh0IiwibmV4dCIsInJlc3VsdCIsImhhbmRsZXIiLCJwYXJlbnRVUkwiLCJhZGRSZXNvbHZlckhvb2siLCJmbiIsImFkZCIsInJlbW92ZVJlc29sdmVySG9vayIsImRlbGV0ZSJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsYUFBYSxRQUFRLGNBQWM7QUFJNUMsTUFBTUMsWUFBWSxJQUFJQztBQUN0QixJQUFJQyxjQUFjO0FBRWxCLE9BQU8sU0FBU0M7SUFDZixJQUFJRCxhQUFhO1FBQ2hCO0lBQ0Q7SUFDQUEsY0FBYztJQUVkSCxjQUFjO1FBQ2JLLFNBQVMsQ0FDUkMsV0FDQUMsU0FDQUM7WUFFQSxNQUFNQyxTQUFTRCxLQUFLRixXQUFXQztZQUMvQixLQUFLLE1BQU1HLFdBQVdULFVBQVc7Z0JBQ2hDUyxRQUFRRCxRQUFRRixRQUFRSSxTQUFTLElBQUk7WUFDdEM7WUFDQSxPQUFPRjtRQUNSO0lBQ0Q7QUFDRDtBQUVBLE9BQU8sU0FBU0csZ0JBQWdCQyxFQUFrQjtJQUNqRFosVUFBVWEsR0FBRyxDQUFDRDtBQUNmO0FBRUEsT0FBTyxTQUFTRSxtQkFBbUJGLEVBQWtCO0lBQ3BEWixVQUFVZSxNQUFNLENBQUNIO0FBQ2xCIn0=