@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
@@ -1,216 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "SourceModuleLoader", {
6
- enumerable: true,
7
- get: function() {
8
- return SourceModuleLoader;
9
- }
10
- });
11
- const _nodemodule = require("node:module");
12
- const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
13
- const _decorators = require("@decohere/crucible/decorators");
14
- const _forge = require("@decohere/forge");
15
- const _mesh = require("@decohere/mesh");
16
- const _io = require("@decohere/nexus/io");
17
- const _scribe = require("@decohere/scribe");
18
- const _rewriteservespecifier = require("./rewrite-serve-specifier.js");
19
- function _interop_require_default(obj) {
20
- return obj && obj.__esModule ? obj : {
21
- default: obj
22
- };
23
- }
24
- function _getRequireWildcardCache(nodeInterop) {
25
- if (typeof WeakMap !== "function") return null;
26
- var cacheBabelInterop = new WeakMap();
27
- var cacheNodeInterop = new WeakMap();
28
- return (_getRequireWildcardCache = function(nodeInterop) {
29
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
30
- })(nodeInterop);
31
- }
32
- function _interop_require_wildcard(obj, nodeInterop) {
33
- if (!nodeInterop && obj && obj.__esModule) {
34
- return obj;
35
- }
36
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
37
- return {
38
- default: obj
39
- };
40
- }
41
- var cache = _getRequireWildcardCache(nodeInterop);
42
- if (cache && cache.has(obj)) {
43
- return cache.get(obj);
44
- }
45
- var newObj = {
46
- __proto__: null
47
- };
48
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
49
- for(var key in obj){
50
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
51
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
52
- if (desc && (desc.get || desc.set)) {
53
- Object.defineProperty(newObj, key, desc);
54
- } else {
55
- newObj[key] = obj[key];
56
- }
57
- }
58
- }
59
- newObj.default = obj;
60
- if (cache) {
61
- cache.set(obj, newObj);
62
- }
63
- return newObj;
64
- }
65
- function _ts_decorate(decorators, target, key, desc) {
66
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
67
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
68
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
69
- return c > 3 && r && Object.defineProperty(target, key, r), r;
70
- }
71
- class SourceModuleLoader {
72
- logger = _scribe.scribe.logger(SourceModuleLoader.name);
73
- transpiler = new _forge.SwcTranspiler();
74
- disposed = false;
75
- hooksRegistered = false;
76
- workspace;
77
- buildConfig = "debug";
78
- fileInfoMap = new Map();
79
- transpileCache = new Map();
80
- aliasPaths = {};
81
- aliasBaseUrl = _nodepath.default.resolve(".");
82
- versionFileUrl = (fileUrl)=>fileUrl;
83
- onResolved;
84
- getWorkspace() {
85
- return this.workspace;
86
- }
87
- getBuildConfig() {
88
- return this.buildConfig;
89
- }
90
- hasSourceFile(absolutePath) {
91
- return this.fileInfoMap.has(absolutePath);
92
- }
93
- sourceFilePaths() {
94
- return this.fileInfoMap.keys();
95
- }
96
- setSourceFile(absolutePath, project) {
97
- this.fileInfoMap.set(absolutePath, {
98
- project
99
- });
100
- }
101
- async configure(options) {
102
- this.disposed = false;
103
- this.transpileCache.clear();
104
- this.buildConfig = options.buildConfig;
105
- this.workspace = options.workspace ?? await _mesh.WorkspaceFactory.create({
106
- ..._forge.WorkspaceDefaults,
107
- rootDir: process.cwd()
108
- });
109
- this.versionFileUrl = options.versionFileUrl ?? ((fileUrl)=>fileUrl);
110
- this.onResolved = options.onResolved;
111
- this.fileInfoMap = await this.buildFileInfoMap(this.buildConfig);
112
- const aliases = this.workspace.getPackageAliases(this.buildConfig);
113
- this.aliasBaseUrl = aliases.baseUrl;
114
- this.aliasPaths = aliases.paths;
115
- }
116
- registerHooks() {
117
- if (this.hooksRegistered) return;
118
- this.hooksRegistered = true;
119
- (0, _nodemodule.registerHooks)({
120
- resolve: (specifier, context, next)=>{
121
- if (this.disposed) return next(specifier, context);
122
- const parentUrl = context.parentURL ?? "";
123
- const rewritten = (0, _rewriteservespecifier.rewriteServeSpecifier)({
124
- specifier,
125
- parentUrl,
126
- isWatchedTs: (filePath)=>this.fileInfoMap.has(filePath),
127
- resolveBare: (bare)=>_mesh.packageAliases.resolvePath(bare, this.aliasPaths, this.aliasBaseUrl),
128
- versionFileUrl: this.versionFileUrl
129
- }) ?? specifier;
130
- const result = next(rewritten, context);
131
- this.onResolved?.(result, parentUrl);
132
- return result;
133
- },
134
- load: (url, context, next)=>{
135
- if (this.disposed) return next(url, context);
136
- const result = this.loadTs(url);
137
- if (result != null) {
138
- return {
139
- format: "module",
140
- source: result.source,
141
- shortCircuit: true
142
- };
143
- }
144
- return next(url, context);
145
- }
146
- });
147
- }
148
- async importEntry(absolutePath) {
149
- const url = this.versionFileUrl(_io.io.pathToFileUrl(_nodepath.default.resolve(absolutePath)));
150
- return Promise.resolve(url).then((p)=>/*#__PURE__*/ _interop_require_wildcard(require(p)));
151
- }
152
- invalidateTranspile(...absolutePaths) {
153
- for (const fullPath of absolutePaths){
154
- this.transpileCache.delete(fullPath);
155
- this.transpiler.invalidateContentCache(new _io.FileEx({
156
- fullPath
157
- }));
158
- }
159
- }
160
- dispose() {
161
- this.disposed = true;
162
- this.transpileCache.clear();
163
- this.fileInfoMap.clear();
164
- this.workspace?.[Symbol.dispose]();
165
- this.workspace = undefined;
166
- }
167
- async buildFileInfoMap(buildConfig) {
168
- const projects = this.workspace?.getProjects(buildConfig) ?? [];
169
- const entries = await Promise.all(projects.map(async (project)=>{
170
- const files = await project.getAllFiles();
171
- return files.map((file)=>[
172
- file.fullPath,
173
- {
174
- project
175
- }
176
- ]);
177
- }));
178
- return new Map(entries.flat());
179
- }
180
- loadTs(url) {
181
- if (!url.startsWith("file:")) return null;
182
- const cleanPath = new URL(url).pathname;
183
- const fileInfo = this.fileInfoMap.get(cleanPath);
184
- if (fileInfo == null) return null;
185
- const cached = this.transpileCache.get(cleanPath);
186
- if (cached != null) return {
187
- source: cached
188
- };
189
- const { project } = fileInfo;
190
- const tsConfig = project.getTsConfigSync();
191
- const userConfig = project.getSwcConfigSync();
192
- const file = new _io.FileEx({
193
- fullPath: cleanPath
194
- });
195
- const response = this.transpiler.transformFileSync(file, _forge.BuildTargets.es6, {
196
- tsConfig,
197
- aliasPaths: true,
198
- userConfig,
199
- workspace: this.workspace,
200
- projects: this.workspace?.getProjects(this.buildConfig)
201
- });
202
- if (response.outcome !== "success") {
203
- this.logger.error(`Failed to transpile ${cleanPath}`, response);
204
- throw new Error(`Failed to transpile ${cleanPath}`);
205
- }
206
- this.transpileCache.set(cleanPath, response.code);
207
- return {
208
- source: response.code
209
- };
210
- }
211
- }
212
- SourceModuleLoader = _ts_decorate([
213
- (0, _decorators.injectable)()
214
- ], SourceModuleLoader);
215
-
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3NvdXJjZS1tb2R1bGUtbG9hZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcblx0TG9hZEZuT3V0cHV0LFxuXHRMb2FkSG9va0NvbnRleHQsXG5cdFJlc29sdmVGbk91dHB1dCxcblx0UmVzb2x2ZUhvb2tDb250ZXh0LFxufSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHJlZ2lzdGVySG9va3MgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tIFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IEJ1aWxkVGFyZ2V0cywgU3djVHJhbnNwaWxlciwgV29ya3NwYWNlRGVmYXVsdHMgfSBmcm9tIFwiQGRlY29oZXJlL2ZvcmdlXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QsIFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHsgcGFja2FnZUFsaWFzZXMsIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IEZpbGVFeCwgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciwgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IHJld3JpdGVTZXJ2ZVNwZWNpZmllciB9IGZyb20gXCIuL3Jld3JpdGUtc2VydmUtc3BlY2lmaWVyLmpzXCI7XG5cbnR5cGUgRmlsZUluZm8gPSB7IHByb2plY3Q6IFByb2plY3QgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VNb2R1bGVMb2FkZXJPcHRpb25zIHtcblx0LyoqIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbmFtZS4gKi9cblx0YnVpbGRDb25maWc6IHN0cmluZztcblx0LyoqXG5cdCAqIFByZS1idWlsdCBXb3Jrc3BhY2UgaW5zdGFuY2UgdG8gdXNlIGluc3RlYWQgb2YgcnVubmluZyBXb3Jrc3BhY2VGYWN0b3J5LlxuXHQgKiBVc2VmdWwgaW4gdGVzdHMgdG8gYnlwYXNzIGZpbGVzeXN0ZW0tYmFzZWQgd29ya3NwYWNlIGRpc2NvdmVyeS5cblx0ICovXG5cdHdvcmtzcGFjZT86IFdvcmtzcGFjZTtcblx0LyoqXG5cdCAqIE1hcCBhIHdhdGNoZWQgYC50c2AgZmlsZSBVUkwgZm9yIEVTTSByZXNvbHV0aW9uLlxuXHQgKiBIb3QgcmVsb2FkIHBhc3NlcyBhIGA/dmVyc2lvbj1gIGJ1c3Q7IG9uZS1zaG90IHJ1biB1c2VzIGlkZW50aXR5LlxuXHQgKi9cblx0dmVyc2lvbkZpbGVVcmw/OiAoZmlsZVVybDogc3RyaW5nKSA9PiBzdHJpbmc7XG5cdC8qKiBPcHRpb25hbCBwb3N0LXJlc29sdmUgaG9vayAoZS5nLiBkZXBlbmRlbmN5IHRyYWNraW5nIGZvciBITVIpLiAqL1xuXHRvblJlc29sdmVkPzogKHJlc3VsdDogUmVzb2x2ZUZuT3V0cHV0LCBwYXJlbnRVcmw6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgTm9kZSBFU00gcmVzb2x2ZS9sb2FkIGhvb2tzIGFuZCBTV0MtdHJhbnNwaWxlcyB3b3Jrc3BhY2UgYC50c2BcbiAqIG9uIHRoZSBmbHkuIE5vIGZpbGUgd2F0Y2hpbmcgYW5kIG5vIGVudHJ5IHJlYm9vdCDigJQgdGhhdCBiZWxvbmdzIHRvXG4gKiB7QGxpbmsgSG90UmVsb2FkU2VydmVyfS5cbiAqL1xuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNvdXJjZU1vZHVsZUxvYWRlciB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIgPSBzY3JpYmUubG9nZ2VyKFNvdXJjZU1vZHVsZUxvYWRlci5uYW1lKTtcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc3BpbGVyID0gbmV3IFN3Y1RyYW5zcGlsZXIoKTtcblx0cHJpdmF0ZSBkaXNwb3NlZCA9IGZhbHNlO1xuXHRwcml2YXRlIGhvb2tzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXHRwcml2YXRlIHdvcmtzcGFjZT86IFdvcmtzcGFjZTtcblx0cHJpdmF0ZSBidWlsZENvbmZpZyA9IFwiZGVidWdcIjtcblx0cHJpdmF0ZSBmaWxlSW5mb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBGaWxlSW5mbz4oKTtcblx0cHJpdmF0ZSB0cmFuc3BpbGVDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cdHByaXZhdGUgYWxpYXNQYXRoczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cdHByaXZhdGUgYWxpYXNCYXNlVXJsID0gcGF0aC5yZXNvbHZlKFwiLlwiKTtcblx0cHJpdmF0ZSB2ZXJzaW9uRmlsZVVybDogKGZpbGVVcmw6IHN0cmluZykgPT4gc3RyaW5nID0gKGZpbGVVcmwpID0+IGZpbGVVcmw7XG5cdHByaXZhdGUgb25SZXNvbHZlZD86IChyZXN1bHQ6IFJlc29sdmVGbk91dHB1dCwgcGFyZW50VXJsOiBzdHJpbmcpID0+IHZvaWQ7XG5cblx0cHVibGljIGdldFdvcmtzcGFjZSgpOiBXb3Jrc3BhY2UgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLndvcmtzcGFjZTtcblx0fVxuXG5cdHB1YmxpYyBnZXRCdWlsZENvbmZpZygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmJ1aWxkQ29uZmlnO1xuXHR9XG5cblx0cHVibGljIGhhc1NvdXJjZUZpbGUoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5maWxlSW5mb01hcC5oYXMoYWJzb2x1dGVQYXRoKTtcblx0fVxuXG5cdHB1YmxpYyBzb3VyY2VGaWxlUGF0aHMoKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5maWxlSW5mb01hcC5rZXlzKCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0U291cmNlRmlsZShhYnNvbHV0ZVBhdGg6IHN0cmluZywgcHJvamVjdDogUHJvamVjdCk6IHZvaWQge1xuXHRcdHRoaXMuZmlsZUluZm9NYXAuc2V0KGFic29sdXRlUGF0aCwgeyBwcm9qZWN0IH0pO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGNvbmZpZ3VyZShvcHRpb25zOiBTb3VyY2VNb2R1bGVMb2FkZXJPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5kaXNwb3NlZCA9IGZhbHNlO1xuXHRcdHRoaXMudHJhbnNwaWxlQ2FjaGUuY2xlYXIoKTtcblx0XHR0aGlzLmJ1aWxkQ29uZmlnID0gb3B0aW9ucy5idWlsZENvbmZpZztcblx0XHR0aGlzLndvcmtzcGFjZSA9XG5cdFx0XHRvcHRpb25zLndvcmtzcGFjZSA/P1xuXHRcdFx0KGF3YWl0IFdvcmtzcGFjZUZhY3RvcnkuY3JlYXRlKHsgLi4uV29ya3NwYWNlRGVmYXVsdHMsIHJvb3REaXI6IHByb2Nlc3MuY3dkKCkgfSkpO1xuXHRcdHRoaXMudmVyc2lvbkZpbGVVcmwgPSBvcHRpb25zLnZlcnNpb25GaWxlVXJsID8/ICgoZmlsZVVybCkgPT4gZmlsZVVybCk7XG5cdFx0dGhpcy5vblJlc29sdmVkID0gb3B0aW9ucy5vblJlc29sdmVkO1xuXHRcdHRoaXMuZmlsZUluZm9NYXAgPSBhd2FpdCB0aGlzLmJ1aWxkRmlsZUluZm9NYXAodGhpcy5idWlsZENvbmZpZyk7XG5cdFx0Y29uc3QgYWxpYXNlcyA9IHRoaXMud29ya3NwYWNlLmdldFBhY2thZ2VBbGlhc2VzKHRoaXMuYnVpbGRDb25maWcpO1xuXHRcdHRoaXMuYWxpYXNCYXNlVXJsID0gYWxpYXNlcy5iYXNlVXJsO1xuXHRcdHRoaXMuYWxpYXNQYXRocyA9IGFsaWFzZXMucGF0aHM7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJIb29rcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5ob29rc1JlZ2lzdGVyZWQpIHJldHVybjtcblx0XHR0aGlzLmhvb2tzUmVnaXN0ZXJlZCA9IHRydWU7XG5cdFx0cmVnaXN0ZXJIb29rcyh7XG5cdFx0XHRyZXNvbHZlOiAoXG5cdFx0XHRcdHNwZWNpZmllcjogc3RyaW5nLFxuXHRcdFx0XHRjb250ZXh0OiBSZXNvbHZlSG9va0NvbnRleHQsXG5cdFx0XHRcdG5leHQ6IChzcGVjaWZpZXI6IHN0cmluZywgY29udGV4dD86IFBhcnRpYWw8UmVzb2x2ZUhvb2tDb250ZXh0PikgPT4gUmVzb2x2ZUZuT3V0cHV0LFxuXHRcdFx0KSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm4gbmV4dChzcGVjaWZpZXIsIGNvbnRleHQpO1xuXHRcdFx0XHRjb25zdCBwYXJlbnRVcmwgPSBjb250ZXh0LnBhcmVudFVSTCA/PyBcIlwiO1xuXHRcdFx0XHRjb25zdCByZXdyaXR0ZW4gPVxuXHRcdFx0XHRcdHJld3JpdGVTZXJ2ZVNwZWNpZmllcih7XG5cdFx0XHRcdFx0XHRzcGVjaWZpZXIsXG5cdFx0XHRcdFx0XHRwYXJlbnRVcmwsXG5cdFx0XHRcdFx0XHRpc1dhdGNoZWRUczogKGZpbGVQYXRoKSA9PiB0aGlzLmZpbGVJbmZvTWFwLmhhcyhmaWxlUGF0aCksXG5cdFx0XHRcdFx0XHRyZXNvbHZlQmFyZTogKGJhcmUpID0+XG5cdFx0XHRcdFx0XHRcdHBhY2thZ2VBbGlhc2VzLnJlc29sdmVQYXRoKGJhcmUsIHRoaXMuYWxpYXNQYXRocywgdGhpcy5hbGlhc0Jhc2VVcmwpLFxuXHRcdFx0XHRcdFx0dmVyc2lvbkZpbGVVcmw6IHRoaXMudmVyc2lvbkZpbGVVcmwsXG5cdFx0XHRcdFx0fSkgPz8gc3BlY2lmaWVyO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBuZXh0KHJld3JpdHRlbiwgY29udGV4dCkgYXMgUmVzb2x2ZUZuT3V0cHV0O1xuXHRcdFx0XHR0aGlzLm9uUmVzb2x2ZWQ/LihyZXN1bHQsIHBhcmVudFVybCk7XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9LFxuXHRcdFx0bG9hZDogKFxuXHRcdFx0XHR1cmw6IHN0cmluZyxcblx0XHRcdFx0Y29udGV4dDogTG9hZEhvb2tDb250ZXh0LFxuXHRcdFx0XHRuZXh0OiAodXJsOiBzdHJpbmcsIGNvbnRleHQ/OiBQYXJ0aWFsPExvYWRIb29rQ29udGV4dD4pID0+IExvYWRGbk91dHB1dCxcblx0XHRcdCk6IExvYWRGbk91dHB1dCA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm4gbmV4dCh1cmwsIGNvbnRleHQpO1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmxvYWRUcyh1cmwpO1xuXHRcdFx0XHRpZiAocmVzdWx0ICE9IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4geyBmb3JtYXQ6IFwibW9kdWxlXCIsIHNvdXJjZTogcmVzdWx0LnNvdXJjZSwgc2hvcnRDaXJjdWl0OiB0cnVlIH07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG5leHQodXJsLCBjb250ZXh0KTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgaW1wb3J0RW50cnkoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+IHtcblx0XHRjb25zdCB1cmwgPSB0aGlzLnZlcnNpb25GaWxlVXJsKGlvLnBhdGhUb0ZpbGVVcmwocGF0aC5yZXNvbHZlKGFic29sdXRlUGF0aCkpKTtcblx0XHRyZXR1cm4gaW1wb3J0KHVybCk7XG5cdH1cblxuXHRwdWJsaWMgaW52YWxpZGF0ZVRyYW5zcGlsZSguLi5hYnNvbHV0ZVBhdGhzOiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgZnVsbFBhdGggb2YgYWJzb2x1dGVQYXRocykge1xuXHRcdFx0dGhpcy50cmFuc3BpbGVDYWNoZS5kZWxldGUoZnVsbFBhdGgpO1xuXHRcdFx0dGhpcy50cmFuc3BpbGVyLmludmFsaWRhdGVDb250ZW50Q2FjaGUobmV3IEZpbGVFeCh7IGZ1bGxQYXRoIH0pKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLmRpc3Bvc2VkID0gdHJ1ZTtcblx0XHR0aGlzLnRyYW5zcGlsZUNhY2hlLmNsZWFyKCk7XG5cdFx0dGhpcy5maWxlSW5mb01hcC5jbGVhcigpO1xuXHRcdHRoaXMud29ya3NwYWNlPy5bU3ltYm9sLmRpc3Bvc2VdKCk7XG5cdFx0dGhpcy53b3Jrc3BhY2UgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGJ1aWxkRmlsZUluZm9NYXAoYnVpbGRDb25maWc6IHN0cmluZyk6IFByb21pc2U8TWFwPHN0cmluZywgRmlsZUluZm8+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSB0aGlzLndvcmtzcGFjZT8uZ2V0UHJvamVjdHMoYnVpbGRDb25maWcpID8/IFtdO1xuXHRcdGNvbnN0IGVudHJpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4ge1xuXHRcdFx0XHRjb25zdCBmaWxlcyA9IGF3YWl0IHByb2plY3QuZ2V0QWxsRmlsZXMoKTtcblx0XHRcdFx0cmV0dXJuIGZpbGVzLm1hcCgoZmlsZSk6IFtzdHJpbmcsIEZpbGVJbmZvXSA9PiBbZmlsZS5mdWxsUGF0aCwgeyBwcm9qZWN0IH1dKTtcblx0XHRcdH0pLFxuXHRcdCk7XG5cdFx0cmV0dXJuIG5ldyBNYXAoZW50cmllcy5mbGF0KCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBsb2FkVHModXJsOiBzdHJpbmcpOiB7IHNvdXJjZTogc3RyaW5nIH0gfCBudWxsIHtcblx0XHRpZiAoIXVybC5zdGFydHNXaXRoKFwiZmlsZTpcIikpIHJldHVybiBudWxsO1xuXG5cdFx0Y29uc3QgY2xlYW5QYXRoID0gbmV3IFVSTCh1cmwpLnBhdGhuYW1lO1xuXHRcdGNvbnN0IGZpbGVJbmZvID0gdGhpcy5maWxlSW5mb01hcC5nZXQoY2xlYW5QYXRoKTtcblx0XHRpZiAoZmlsZUluZm8gPT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cblx0XHRjb25zdCBjYWNoZWQgPSB0aGlzLnRyYW5zcGlsZUNhY2hlLmdldChjbGVhblBhdGgpO1xuXHRcdGlmIChjYWNoZWQgIT0gbnVsbCkgcmV0dXJuIHsgc291cmNlOiBjYWNoZWQgfTtcblxuXHRcdGNvbnN0IHsgcHJvamVjdCB9ID0gZmlsZUluZm87XG5cdFx0Y29uc3QgdHNDb25maWcgPSBwcm9qZWN0LmdldFRzQ29uZmlnU3luYygpO1xuXHRcdGNvbnN0IHVzZXJDb25maWcgPSBwcm9qZWN0LmdldFN3Y0NvbmZpZ1N5bmMoKTtcblxuXHRcdGNvbnN0IGZpbGUgPSBuZXcgRmlsZUV4KHsgZnVsbFBhdGg6IGNsZWFuUGF0aCB9KTtcblx0XHRjb25zdCByZXNwb25zZSA9IHRoaXMudHJhbnNwaWxlci50cmFuc2Zvcm1GaWxlU3luYyhmaWxlLCBCdWlsZFRhcmdldHMuZXM2LCB7XG5cdFx0XHR0c0NvbmZpZyxcblx0XHRcdGFsaWFzUGF0aHM6IHRydWUsXG5cdFx0XHR1c2VyQ29uZmlnLFxuXHRcdFx0d29ya3NwYWNlOiB0aGlzLndvcmtzcGFjZSxcblx0XHRcdHByb2plY3RzOiB0aGlzLndvcmtzcGFjZT8uZ2V0UHJvamVjdHModGhpcy5idWlsZENvbmZpZyksXG5cdFx0fSk7XG5cblx0XHRpZiAocmVzcG9uc2Uub3V0Y29tZSAhPT0gXCJzdWNjZXNzXCIpIHtcblx0XHRcdHRoaXMubG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gdHJhbnNwaWxlICR7Y2xlYW5QYXRofWAsIHJlc3BvbnNlKTtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHRyYW5zcGlsZSAke2NsZWFuUGF0aH1gKTtcblx0XHR9XG5cblx0XHR0aGlzLnRyYW5zcGlsZUNhY2hlLnNldChjbGVhblBhdGgsIHJlc3BvbnNlLmNvZGUpO1xuXHRcdHJldHVybiB7IHNvdXJjZTogcmVzcG9uc2UuY29kZSB9O1xuXHR9XG59XG4iXSwibmFtZXMiOlsiU291cmNlTW9kdWxlTG9hZGVyIiwibG9nZ2VyIiwic2NyaWJlIiwibmFtZSIsInRyYW5zcGlsZXIiLCJTd2NUcmFuc3BpbGVyIiwiZGlzcG9zZWQiLCJob29rc1JlZ2lzdGVyZWQiLCJ3b3Jrc3BhY2UiLCJidWlsZENvbmZpZyIsImZpbGVJbmZvTWFwIiwiTWFwIiwidHJhbnNwaWxlQ2FjaGUiLCJhbGlhc1BhdGhzIiwiYWxpYXNCYXNlVXJsIiwicGF0aCIsInJlc29sdmUiLCJ2ZXJzaW9uRmlsZVVybCIsImZpbGVVcmwiLCJvblJlc29sdmVkIiwiZ2V0V29ya3NwYWNlIiwiZ2V0QnVpbGRDb25maWciLCJoYXNTb3VyY2VGaWxlIiwiYWJzb2x1dGVQYXRoIiwiaGFzIiwic291cmNlRmlsZVBhdGhzIiwia2V5cyIsInNldFNvdXJjZUZpbGUiLCJwcm9qZWN0Iiwic2V0IiwiY29uZmlndXJlIiwib3B0aW9ucyIsImNsZWFyIiwiV29ya3NwYWNlRmFjdG9yeSIsImNyZWF0ZSIsIldvcmtzcGFjZURlZmF1bHRzIiwicm9vdERpciIsInByb2Nlc3MiLCJjd2QiLCJidWlsZEZpbGVJbmZvTWFwIiwiYWxpYXNlcyIsImdldFBhY2thZ2VBbGlhc2VzIiwiYmFzZVVybCIsInBhdGhzIiwicmVnaXN0ZXJIb29rcyIsInNwZWNpZmllciIsImNvbnRleHQiLCJuZXh0IiwicGFyZW50VXJsIiwicGFyZW50VVJMIiwicmV3cml0dGVuIiwicmV3cml0ZVNlcnZlU3BlY2lmaWVyIiwiaXNXYXRjaGVkVHMiLCJmaWxlUGF0aCIsInJlc29sdmVCYXJlIiwiYmFyZSIsInBhY2thZ2VBbGlhc2VzIiwicmVzb2x2ZVBhdGgiLCJyZXN1bHQiLCJsb2FkIiwidXJsIiwibG9hZFRzIiwiZm9ybWF0Iiwic291cmNlIiwic2hvcnRDaXJjdWl0IiwiaW1wb3J0RW50cnkiLCJpbyIsInBhdGhUb0ZpbGVVcmwiLCJpbnZhbGlkYXRlVHJhbnNwaWxlIiwiYWJzb2x1dGVQYXRocyIsImZ1bGxQYXRoIiwiZGVsZXRlIiwiaW52YWxpZGF0ZUNvbnRlbnRDYWNoZSIsIkZpbGVFeCIsImRpc3Bvc2UiLCJTeW1ib2wiLCJ1bmRlZmluZWQiLCJwcm9qZWN0cyIsImdldFByb2plY3RzIiwiZW50cmllcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJmaWxlcyIsImdldEFsbEZpbGVzIiwiZmlsZSIsImZsYXQiLCJzdGFydHNXaXRoIiwiY2xlYW5QYXRoIiwiVVJMIiwicGF0aG5hbWUiLCJmaWxlSW5mbyIsImdldCIsImNhY2hlZCIsInRzQ29uZmlnIiwiZ2V0VHNDb25maWdTeW5jIiwidXNlckNvbmZpZyIsImdldFN3Y0NvbmZpZ1N5bmMiLCJyZXNwb25zZSIsInRyYW5zZm9ybUZpbGVTeW5jIiwiQnVpbGRUYXJnZXRzIiwiZXM2Iiwib3V0Y29tZSIsImVycm9yIiwiRXJyb3IiLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7OytCQXlDYUE7OztlQUFBQTs7OzRCQW5DaUI7aUVBQ2I7NEJBQ1U7dUJBQ29DO3NCQUVkO29CQUN0Qjt3QkFDUzt1Q0FDRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQi9CLE1BQU1BO0lBQ0tDLFNBQWlCQyxjQUFNLENBQUNELE1BQU0sQ0FBQ0QsbUJBQW1CRyxJQUFJLEVBQUU7SUFDeERDLGFBQWEsSUFBSUMsb0JBQWEsR0FBRztJQUMxQ0MsV0FBVyxNQUFNO0lBQ2pCQyxrQkFBa0IsTUFBTTtJQUN4QkMsVUFBc0I7SUFDdEJDLGNBQWMsUUFBUTtJQUN0QkMsY0FBYyxJQUFJQyxNQUF3QjtJQUMxQ0MsaUJBQWlCLElBQUlELE1BQXNCO0lBQzNDRSxhQUF1QyxDQUFDLEVBQUU7SUFDMUNDLGVBQWVDLGlCQUFJLENBQUNDLE9BQU8sQ0FBQyxLQUFLO0lBQ2pDQyxpQkFBOEMsQ0FBQ0MsVUFBWUEsUUFBUTtJQUNuRUMsV0FBa0U7SUFFbkVDLGVBQXNDO1FBQzVDLE9BQU8sSUFBSSxDQUFDWixTQUFTO0lBQ3RCO0lBRU9hLGlCQUF5QjtRQUMvQixPQUFPLElBQUksQ0FBQ1osV0FBVztJQUN4QjtJQUVPYSxjQUFjQyxZQUFvQixFQUFXO1FBQ25ELE9BQU8sSUFBSSxDQUFDYixXQUFXLENBQUNj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
@@ -1,48 +0,0 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- }
7
- import { spawn } from "node:child_process";
8
- import { injectable } from "@decohere/crucible/decorators";
9
- import { detectPackageManager, packageManagerFromString } from "@decohere/nexus/interop";
10
- import { scribe } from "@decohere/scribe";
11
- export class DeferredScriptRunner {
12
- logger = scribe.logger(DeferredScriptRunner.name);
13
- children = [];
14
- start(options) {
15
- const pm = detectPackageManager(options.workspaceRoot) ?? packageManagerFromString("pnpm");
16
- this.logger.info(`deferred ${options.label} — running ${pm.name} run ${options.script} in ${options.cwd}`);
17
- const child = spawn(pm.name, [
18
- "run",
19
- options.script
20
- ], {
21
- cwd: options.cwd,
22
- stdio: "inherit",
23
- env: process.env,
24
- shell: false
25
- });
26
- child.on("exit", (code, signal)=>{
27
- if (signal) return;
28
- if (code != null && code !== 0) {
29
- this.logger.warn(`deferred ${options.label} exited with ${code}`);
30
- }
31
- });
32
- this.children.push(child);
33
- return child;
34
- }
35
- async [Symbol.asyncDispose]() {
36
- for (const child of this.children){
37
- if (!child.killed) {
38
- child.kill("SIGTERM");
39
- }
40
- }
41
- this.children.length = 0;
42
- }
43
- }
44
- DeferredScriptRunner = _ts_decorate([
45
- injectable()
46
- ], DeferredScriptRunner);
47
-
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2RlZmVycmVkLXNjcmlwdC1ydW5uZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDaGlsZFByb2Nlc3MsIHNwYXduIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHBhY2thZ2VNYW5hZ2VyRnJvbVN0cmluZyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5cbmV4cG9ydCB0eXBlIERlZmVycmVkU2NyaXB0U3RhcnQgPSB7XG5cdHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cdHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuXHRyZWFkb25seSBzY3JpcHQ6IHN0cmluZztcblx0LyoqIFdvcmtzcGFjZSByb290IHVzZWQgdG8gZGV0ZWN0IHBucG0vbnBtL3lhcm4uICovXG5cdHJlYWRvbmx5IHdvcmtzcGFjZVJvb3Q6IHN0cmluZztcbn07XG5cbi8qKlxuICogTml4cGFja3Mtc3R5bGUgY2hpbGQgcHJvY2Vzc2VzIGZvciBmb3JlaWduIHBhY2thZ2VzIGluIGEgZmx1eCBzZXJ2ZSBzbGljZS5cbiAqIEtpbGxlZCB3aGVuIHRoZSBGbHV4IGNvbnRhaW5lciBkaXNwb3NlcyAoU0lHSU5UIOKGkiBSb290TW9kdWxlIHRlYXJkb3duKS5cbiAqL1xuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmVycmVkU2NyaXB0UnVubmVyIGltcGxlbWVudHMgQXN5bmNEaXNwb3NhYmxlIHtcblx0cHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlciA9IHNjcmliZS5sb2dnZXIoRGVmZXJyZWRTY3JpcHRSdW5uZXIubmFtZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW46IENoaWxkUHJvY2Vzc1tdID0gW107XG5cblx0cHVibGljIHN0YXJ0KG9wdGlvbnM6IERlZmVycmVkU2NyaXB0U3RhcnQpOiBDaGlsZFByb2Nlc3Mge1xuXHRcdGNvbnN0IHBtID0gZGV0ZWN0UGFja2FnZU1hbmFnZXIob3B0aW9ucy53b3Jrc3BhY2VSb290KSA/PyBwYWNrYWdlTWFuYWdlckZyb21TdHJpbmcoXCJwbnBtXCIpO1xuXHRcdHRoaXMubG9nZ2VyLmluZm8oXG5cdFx0XHRgZGVmZXJyZWQgJHtvcHRpb25zLmxhYmVsfSDigJQgcnVubmluZyAke3BtLm5hbWV9IHJ1biAke29wdGlvbnMuc2NyaXB0fSBpbiAke29wdGlvbnMuY3dkfWAsXG5cdFx0KTtcblx0XHRjb25zdCBjaGlsZCA9IHNwYXduKHBtLm5hbWUsIFtcInJ1blwiLCBvcHRpb25zLnNjcmlwdF0sIHtcblx0XHRcdGN3ZDogb3B0aW9ucy5jd2QsXG5cdFx0XHRzdGRpbzogXCJpbmhlcml0XCIsXG5cdFx0XHRlbnY6IHByb2Nlc3MuZW52LFxuXHRcdFx0c2hlbGw6IGZhbHNlLFxuXHRcdH0pO1xuXHRcdGNoaWxkLm9uKFwiZXhpdFwiLCAoY29kZSwgc2lnbmFsKSA9PiB7XG5cdFx0XHRpZiAoc2lnbmFsKSByZXR1cm47XG5cdFx0XHRpZiAoY29kZSAhPSBudWxsICYmIGNvZGUgIT09IDApIHtcblx0XHRcdFx0dGhpcy5sb2dnZXIud2FybihgZGVmZXJyZWQgJHtvcHRpb25zLmxhYmVsfSBleGl0ZWQgd2l0aCAke2NvZGV9YCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcblx0XHRyZXR1cm4gY2hpbGQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikge1xuXHRcdFx0aWYgKCFjaGlsZC5raWxsZWQpIHtcblx0XHRcdFx0Y2hpbGQua2lsbChcIlNJR1RFUk1cIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuY2hpbGRyZW4ubGVuZ3RoID0gMDtcblx0fVxufVxuIl0sIm5hbWVzIjpbInNwYXduIiwiaW5qZWN0YWJsZSIsImRldGVjdFBhY2thZ2VNYW5hZ2VyIiwicGFja2FnZU1hbmFnZXJGcm9tU3RyaW5nIiwic2NyaWJlIiwiRGVmZXJyZWRTY3JpcHRSdW5uZXIiLCJsb2dnZXIiLCJuYW1lIiwiY2hpbGRyZW4iLCJzdGFydCIsIm9wdGlvbnMiLCJwbSIsIndvcmtzcGFjZVJvb3QiLCJpbmZvIiwibGFiZWwiLCJzY3JpcHQiLCJjd2QiLCJjaGlsZCIsInN0ZGlvIiwiZW52IiwicHJvY2VzcyIsInNoZWxsIiwib24iLCJjb2RlIiwic2lnbmFsIiwid2FybiIsInB1c2giLCJTeW1ib2wiLCJhc3luY0Rpc3Bvc2UiLCJraWxsZWQiLCJraWxsIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUE0QkEsS0FBSyxRQUFRLHFCQUFxQjtBQUM5RCxTQUFTQyxVQUFVLFFBQVEsZ0NBQWdDO0FBQzNELFNBQVNDLG9CQUFvQixFQUFFQyx3QkFBd0IsUUFBUSwwQkFBMEI7QUFDekYsU0FBc0JDLE1BQU0sUUFBUSxtQkFBbUI7QUFldkQsT0FBTyxNQUFNQztJQUNLQyxTQUFpQkYsT0FBT0UsTUFBTSxDQUFDRCxxQkFBcUJFLElBQUksRUFBRTtJQUMxREMsV0FBMkIsRUFBRSxDQUFDO0lBRXhDQyxNQUFNQyxPQUE0QixFQUFnQjtRQUN4RCxNQUFNQyxLQUFLVCxxQkFBcUJRLFFBQVFFLGFBQWEsS0FBS1QseUJBQXlCO1FBQ25GLElBQUksQ0FBQ0csTUFBTSxDQUFDTyxJQUFJLENBQ2YsQ0FBQyxTQUFTLEVBQUVILFFBQVFJLEtBQUssQ0FBQyxXQUFXLEVBQUVILEdBQUdKLElBQUksQ0FBQyxLQUFLLEVBQUVHLFFBQVFLLE1BQU0sQ0FBQyxJQUFJLEVBQUVMLFFBQVFNLEdBQUcsRUFBRTtRQUV6RixNQUFNQyxRQUFRakIsTUFBTVcsR0FBR0osSUFBSSxFQUFFO1lBQUM7WUFBT0csUUFBUUssTUFBTTtTQUFDLEVBQUU7WUFDckRDLEtBQUtOLFFBQVFNLEdBQUc7WUFDaEJFLE9BQU87WUFDUEMsS0FBS0MsUUFBUUQsR0FBRztZQUNoQkUsT0FBTztRQUNSO1FBQ0FKLE1BQU1LLEVBQUUsQ0FBQyxRQUFRLENBQUNDLE1BQU1DO1lBQ3ZCLElBQUlBLFFBQVE7WUFDWixJQUFJRCxRQUFRLFFBQVFBLFNBQVMsR0FBRztnQkFDL0IsSUFBSSxDQUFDakIsTUFBTSxDQUFDbUIsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFZixRQUFRSSxLQUFLLENBQUMsYUFBYSxFQUFFUyxNQUFNO1lBQ2pFO1FBQ0Q7UUFDQSxJQUFJLENBQUNmLFFBQVEsQ0FBQ2tCLElBQUksQ0FBQ1Q7UUFDbkIsT0FBT0E7SUFDUjtJQUVBLE1BQWEsQ0FBQ1UsT0FBT0MsWUFBWSxDQUFDLEdBQUc7UUFDcEMsS0FBSyxNQUFNWCxTQUFTLElBQUksQ0FBQ1QsUUFBUSxDQUFFO1lBQ2xDLElBQUksQ0FBQ1MsTUFBTVksTUFBTSxFQUFFO2dCQUNsQlosTUFBTWEsSUFBSSxDQUFDO1lBQ1o7UUFDRDtRQUNBLElBQUksQ0FBQ3RCLFFBQVEsQ0FBQ3VCLE1BQU0sR0FBRztJQUN4QjtBQUNEIn0=
@@ -1,19 +0,0 @@
1
- import { DecohereCommand } from "@decohere/nexus/cli";
2
- import { RunCommand } from "./run.command.js";
3
- import { ServeCommand } from "./serve.command.js";
4
- export class FluxCommand extends DecohereCommand {
5
- constructor(commands, handler){
6
- super(FluxCommand);
7
- this.exitOverride();
8
- this.registerSubcommand({
9
- serve: ServeCommand,
10
- run: RunCommand,
11
- ...commands
12
- }, handler);
13
- }
14
- run(_actions, _options) {
15
- return this.help();
16
- }
17
- }
18
-
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXguY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHtcblx0dHlwZSBDb21tYW5kSGFuZGxlcixcblx0dHlwZSBDb21tYW5kUmVzcG9uc2UsXG5cdHR5cGUgQ29tbWFuZFR5cGUsXG5cdERlY29oZXJlQ29tbWFuZCxcbn0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IFJ1bkNvbW1hbmQgfSBmcm9tIFwiLi9ydW4uY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgU2VydmVDb21tYW5kIH0gZnJvbSBcIi4vc2VydmUuY29tbWFuZC5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eENvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoY29tbWFuZHM6IFJlY29yZDxzdHJpbmcsIENvbW1hbmRUeXBlPiwgaGFuZGxlcjogQ29tbWFuZEhhbmRsZXIpIHtcblx0XHRzdXBlcihGbHV4Q29tbWFuZCk7XG5cdFx0dGhpcy5leGl0T3ZlcnJpZGUoKTtcblx0XHR0aGlzLnJlZ2lzdGVyU3ViY29tbWFuZCh7IHNlcnZlOiBTZXJ2ZUNvbW1hbmQsIHJ1bjogUnVuQ29tbWFuZCwgLi4uY29tbWFuZHMgfSwgaGFuZGxlcik7XG5cdH1cblxuXHRwdWJsaWMgcnVuKF9hY3Rpb25zOiBBY3Rpb25zLCBfb3B0aW9uczogbmV2ZXIpOiBQcm9taXNlPENvbW1hbmRSZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLmhlbHAoKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRlY29oZXJlQ29tbWFuZCIsIlJ1bkNvbW1hbmQiLCJTZXJ2ZUNvbW1hbmQiLCJGbHV4Q29tbWFuZCIsImNvbW1hbmRzIiwiaGFuZGxlciIsImV4aXRPdmVycmlkZSIsInJlZ2lzdGVyU3ViY29tbWFuZCIsInNlcnZlIiwicnVuIiwiX2FjdGlvbnMiLCJfb3B0aW9ucyIsImhlbHAiXSwibWFwcGluZ3MiOiJBQUNBLFNBSUNBLGVBQWUsUUFDVCxzQkFBc0I7QUFDN0IsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxTQUFTQyxZQUFZLFFBQVEscUJBQXFCO0FBRWxELE9BQU8sTUFBTUMsb0JBQW9CSDtJQUNoQyxZQUFtQkksUUFBcUMsRUFBRUMsT0FBdUIsQ0FBRTtRQUNsRixLQUFLLENBQUNGO1FBQ04sSUFBSSxDQUFDRyxZQUFZO1FBQ2pCLElBQUksQ0FBQ0Msa0JBQWtCLENBQUM7WUFBRUMsT0FBT047WUFBY08sS0FBS1I7WUFBWSxHQUFHRyxRQUFRO1FBQUMsR0FBR0M7SUFDaEY7SUFFT0ksSUFBSUMsUUFBaUIsRUFBRUMsUUFBZSxFQUE0QjtRQUN4RSxPQUFPLElBQUksQ0FBQ0MsSUFBSTtJQUNqQjtBQUNEIn0=
@@ -1,28 +0,0 @@
1
- import { WorkspaceFactory } from "@decohere/mesh";
2
- import { ModuleManifest } from "@decohere/nexus/cli";
3
- import { DeferredScriptRunner } from "./deferred-script-runner.js";
4
- import { FluxCommand } from "./flux.command.js";
5
- import { HotReloadServer } from "./hot-reload-server.js";
6
- import { RunAction } from "./run.action.js";
7
- import { ServeAction } from "./serve.action.js";
8
- import { SourceModuleLoader } from "./source-module-loader.js";
9
- export class FluxModule extends ModuleManifest {
10
- id = "flux";
11
- command = FluxCommand;
12
- actions = {
13
- serve: ServeAction,
14
- run: RunAction
15
- };
16
- registerServices(builder) {
17
- builder.registerSingleton(SourceModuleLoader);
18
- builder.registerSingleton(HotReloadServer);
19
- builder.registerSingleton(DeferredScriptRunner);
20
- }
21
- createWorkspace(options) {
22
- return WorkspaceFactory.create({
23
- configFile: options.configFile
24
- });
25
- }
26
- }
27
-
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL2ZsdXgubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0IHsgRGVmZXJyZWRTY3JpcHRSdW5uZXIgfSBmcm9tIFwiLi9kZWZlcnJlZC1zY3JpcHQtcnVubmVyLmpzXCI7XG5pbXBvcnQgeyBGbHV4Q29tbWFuZCB9IGZyb20gXCIuL2ZsdXguY29tbWFuZC5qc1wiO1xuaW1wb3J0IHsgSG90UmVsb2FkU2VydmVyIH0gZnJvbSBcIi4vaG90LXJlbG9hZC1zZXJ2ZXIuanNcIjtcbmltcG9ydCB7IFJ1bkFjdGlvbiB9IGZyb20gXCIuL3J1bi5hY3Rpb24uanNcIjtcbmltcG9ydCB7IFNlcnZlQWN0aW9uIH0gZnJvbSBcIi4vc2VydmUuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBTb3VyY2VNb2R1bGVMb2FkZXIgfSBmcm9tIFwiLi9zb3VyY2UtbW9kdWxlLWxvYWRlci5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRmx1eE1vZHVsZSBleHRlbmRzIE1vZHVsZU1hbmlmZXN0IHtcblx0cHVibGljIHJlYWRvbmx5IGlkID0gXCJmbHV4XCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gRmx1eENvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdHNlcnZlOiBTZXJ2ZUFjdGlvbixcblx0XHRydW46IFJ1bkFjdGlvbixcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihTb3VyY2VNb2R1bGVMb2FkZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oSG90UmVsb2FkU2VydmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKERlZmVycmVkU2NyaXB0UnVubmVyKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRyZXR1cm4gV29ya3NwYWNlRmFjdG9yeS5jcmVhdGUoeyBjb25maWdGaWxlOiBvcHRpb25zLmNvbmZpZ0ZpbGUgfSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXb3Jrc3BhY2VGYWN0b3J5IiwiTW9kdWxlTWFuaWZlc3QiLCJEZWZlcnJlZFNjcmlwdFJ1bm5lciIsIkZsdXhDb21tYW5kIiwiSG90UmVsb2FkU2VydmVyIiwiUnVuQWN0aW9uIiwiU2VydmVBY3Rpb24iLCJTb3VyY2VNb2R1bGVMb2FkZXIiLCJGbHV4TW9kdWxlIiwiaWQiLCJjb21tYW5kIiwiYWN0aW9ucyIsInNlcnZlIiwicnVuIiwicmVnaXN0ZXJTZXJ2aWNlcyIsImJ1aWxkZXIiLCJyZWdpc3RlclNpbmdsZXRvbiIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjcmVhdGUiLCJjb25maWdGaWxlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSxpQkFBaUI7QUFFbEQsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUVyRCxTQUFTQyxvQkFBb0IsUUFBUSw4QkFBOEI7QUFDbkUsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUNoRCxTQUFTQyxlQUFlLFFBQVEseUJBQXlCO0FBQ3pELFNBQVNDLFNBQVMsUUFBUSxrQkFBa0I7QUFDNUMsU0FBU0MsV0FBVyxRQUFRLG9CQUFvQjtBQUNoRCxTQUFTQyxrQkFBa0IsUUFBUSw0QkFBNEI7QUFFL0QsT0FBTyxNQUFNQyxtQkFBbUJQO0lBQ2ZRLEtBQUssT0FBTztJQUNaQyxVQUFVUCxZQUFZO0lBQ3RCUSxVQUFVO1FBQ3pCQyxPQUFPTjtRQUNQTyxLQUFLUjtJQUNOLEVBQUU7SUFFS1MsaUJBQWlCQyxPQUF5QixFQUFFO1FBQ2xEQSxRQUFRQyxpQkFBaUIsQ0FBQ1Q7UUFDMUJRLFFBQVFDLGlCQUFpQixDQUFDWjtRQUMxQlcsUUFBUUMsaUJBQWlCLENBQUNkO0lBQzNCO0lBRWdCZSxnQkFBZ0JDLE9BQWdDLEVBQUU7UUFDakUsT0FBT2xCLGlCQUFpQm1CLE1BQU0sQ0FBQztZQUFFQyxZQUFZRixRQUFRRSxVQUFVO1FBQUM7SUFDakU7QUFDRCJ9
@@ -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==
@@ -1,58 +0,0 @@
1
- function _ts_decorate(decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- }
7
- function _ts_metadata(k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- }
10
- import 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 { scribe } from "@decohere/scribe";
16
- // biome-ignore lint/style/useImportType: <DI>
17
- import { SourceModuleLoader } from "./source-module-loader.js";
18
- export class RunAction {
19
- loader;
20
- workspace;
21
- logger = scribe.logger(RunAction.name);
22
- constructor(loader, workspace){
23
- this.loader = loader;
24
- this.workspace = workspace;
25
- }
26
- async run(options) {
27
- const entry = options.entry?.trim();
28
- if (entry == null || entry === "") {
29
- throw new Error("flux run requires an entry file path");
30
- }
31
- const absoluteEntry = path.resolve(entry);
32
- const passthrough = options.args ?? [];
33
- await this.loader.configure({
34
- workspace: this.workspace,
35
- buildConfig: options.configuration
36
- });
37
- this.loader.registerHooks();
38
- // Bin-style entries (forge.ts, flux.ts) read process.argv.slice(2).
39
- process.argv = [
40
- process.execPath,
41
- absoluteEntry,
42
- ...passthrough
43
- ];
44
- this.logger.trace(`Running ${absoluteEntry}`);
45
- await this.loader.importEntry(absoluteEntry);
46
- return ActionResponse.Success(RunAction.name);
47
- }
48
- }
49
- RunAction = _ts_decorate([
50
- injectable(),
51
- _ts_metadata("design:type", Function),
52
- _ts_metadata("design:paramtypes", [
53
- typeof SourceModuleLoader === "undefined" ? Object : SourceModuleLoader,
54
- typeof Workspace === "undefined" ? Object : Workspace
55
- ])
56
- ], RunAction);
57
-
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3J1bi5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbiwgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIsIHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBTb3VyY2VNb2R1bGVMb2FkZXIgfSBmcm9tIFwiLi9zb3VyY2UtbW9kdWxlLWxvYWRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBSdW5PcHRpb25zID0ge1xuXHQvKiogQWJzb2x1dGUgb3IgY3dkLXJlbGF0aXZlIHBhdGggdG8gYSBgLnRzYCBlbnRyeSBmaWxlLiAqL1xuXHRlbnRyeTogc3RyaW5nO1xuXHRjb25maWd1cmF0aW9uOiBzdHJpbmc7XG5cdC8qKiBBcmd1bWVudHMgZm9yd2FyZGVkIHRvIHRoZSBlbnRyeSAoYmluLXN0eWxlIGBwcm9jZXNzLmFyZ3Yuc2xpY2UoMilgKS4gKi9cblx0YXJncz86IHN0cmluZ1tdO1xufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bkFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbjxSdW5PcHRpb25zPiB7XG5cdHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXIgPSBzY3JpYmUubG9nZ2VyKFJ1bkFjdGlvbi5uYW1lKTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSByZWFkb25seSBsb2FkZXI6IFNvdXJjZU1vZHVsZUxvYWRlcixcblx0XHRwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlLFxuXHQpIHt9XG5cblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBSdW5PcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZT4ge1xuXHRcdGNvbnN0IGVudHJ5ID0gb3B0aW9ucy5lbnRyeT8udHJpbSgpO1xuXHRcdGlmIChlbnRyeSA9PSBudWxsIHx8IGVudHJ5ID09PSBcIlwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJmbHV4IHJ1biByZXF1aXJlcyBhbiBlbnRyeSBmaWxlIHBhdGhcIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWJzb2x1dGVFbnRyeSA9IHBhdGgucmVzb2x2ZShlbnRyeSk7XG5cdFx0Y29uc3QgcGFzc3Rocm91Z2ggPSBvcHRpb25zLmFyZ3MgPz8gW107XG5cblx0XHRhd2FpdCB0aGlzLmxvYWRlci5jb25maWd1cmUoe1xuXHRcdFx0d29ya3NwYWNlOiB0aGlzLndvcmtzcGFjZSxcblx0XHRcdGJ1aWxkQ29uZmlnOiBvcHRpb25zLmNvbmZpZ3VyYXRpb24sXG5cdFx0fSk7XG5cdFx0dGhpcy5sb2FkZXIucmVnaXN0ZXJIb29rcygpO1xuXG5cdFx0Ly8gQmluLXN0eWxlIGVudHJpZXMgKGZvcmdlLnRzLCBmbHV4LnRzKSByZWFkIHByb2Nlc3MuYXJndi5zbGljZSgyKS5cblx0XHRwcm9jZXNzLmFyZ3YgPSBbcHJvY2Vzcy5leGVjUGF0aCwgYWJzb2x1dGVFbnRyeSwgLi4ucGFzc3Rocm91Z2hdO1xuXG5cdFx0dGhpcy5sb2dnZXIudHJhY2UoYFJ1bm5pbmcgJHthYnNvbHV0ZUVudHJ5fWApO1xuXHRcdGF3YWl0IHRoaXMubG9hZGVyLmltcG9ydEVudHJ5KGFic29sdXRlRW50cnkpO1xuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5TdWNjZXNzKFJ1bkFjdGlvbi5uYW1lKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbInBhdGgiLCJpbmplY3RhYmxlIiwiV29ya3NwYWNlIiwiQWN0aW9uUmVzcG9uc2UiLCJzY3JpYmUiLCJTb3VyY2VNb2R1bGVMb2FkZXIiLCJSdW5BY3Rpb24iLCJsb2dnZXIiLCJuYW1lIiwibG9hZGVyIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsImVudHJ5IiwidHJpbSIsIkVycm9yIiwiYWJzb2x1dGVFbnRyeSIsInJlc29sdmUiLCJwYXNzdGhyb3VnaCIsImFyZ3MiLCJjb25maWd1cmUiLCJidWlsZENvbmZpZyIsImNvbmZpZ3VyYXRpb24iLCJyZWdpc3Rlckhvb2tzIiwicHJvY2VzcyIsImFyZ3YiLCJleGVjUGF0aCIsInRyYWNlIiwiaW1wb3J0RW50cnkiLCJTdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxVQUFVLFlBQVk7QUFDN0IsU0FBU0MsVUFBVSxRQUFRLGdDQUFnQztBQUMzRCw4Q0FBOEM7QUFDOUMsU0FBU0MsU0FBUyxRQUFRLGlCQUFpQjtBQUMzQyxTQUFzQkMsY0FBYyxRQUFRLHNCQUFzQjtBQUNsRSxTQUFzQkMsTUFBTSxRQUFRLG1CQUFtQjtBQUN2RCw4Q0FBOEM7QUFDOUMsU0FBU0Msa0JBQWtCLFFBQVEsNEJBQTRCO0FBVy9ELE9BQU8sTUFBTUM7OztJQUNLQyxTQUFpQkgsT0FBT0csTUFBTSxDQUFDRCxVQUFVRSxJQUFJLEVBQUU7SUFFaEUsWUFDQyxBQUFpQkMsTUFBMEIsRUFDM0MsQUFBaUJDLFNBQW9CLENBQ3BDO2FBRmdCRCxTQUFBQTthQUNBQyxZQUFBQTtJQUNmO0lBRUgsTUFBYUMsSUFBSUMsT0FBbUIsRUFBMkI7UUFDOUQsTUFBTUMsUUFBUUQsUUFBUUMsS0FBSyxFQUFFQztRQUM3QixJQUFJRCxTQUFTLFFBQVFBLFVBQVUsSUFBSTtZQUNsQyxNQUFNLElBQUlFLE1BQU07UUFDakI7UUFFQSxNQUFNQyxnQkFBZ0JoQixLQUFLaUIsT0FBTyxDQUFDSjtRQUNuQyxNQUFNSyxjQUFjTixRQUFRTyxJQUFJLElBQUksRUFBRTtRQUV0QyxNQUFNLElBQUksQ0FBQ1YsTUFBTSxDQUFDVyxTQUFTLENBQUM7WUFDM0JWLFdBQVcsSUFBSSxDQUFDQSxTQUFTO1lBQ3pCVyxhQUFhVCxRQUFRVSxhQUFhO1FBQ25DO1FBQ0EsSUFBSSxDQUFDYixNQUFNLENBQUNjLGFBQWE7UUFFekIsb0VBQW9FO1FBQ3BFQyxRQUFRQyxJQUFJLEdBQUc7WUFBQ0QsUUFBUUUsUUFBUTtZQUFFVjtlQUFrQkU7U0FBWTtRQUVoRSxJQUFJLENBQUNYLE1BQU0sQ0FBQ29CLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRVgsZUFBZTtRQUM1QyxNQUFNLElBQUksQ0FBQ1AsTUFBTSxDQUFDbUIsV0FBVyxDQUFDWjtRQUM5QixPQUFPYixlQUFlMEIsT0FBTyxDQUFDdkIsVUFBVUUsSUFBSTtJQUM3QztBQUNEIn0=
@@ -1,57 +0,0 @@
1
- import { ConfigurationOption, DecohereCommand } from "@decohere/nexus/cli";
2
- import { RunAction } from "./run.action.js";
3
- export class RunCommand extends DecohereCommand {
4
- get actions() {
5
- return [
6
- RunAction
7
- ];
8
- }
9
- constructor(name){
10
- super(name);
11
- this.description("Compile and run a TypeScript entry on the fly (no watch / HMR)");
12
- this.argument("<entry>", "Path to the TypeScript entry file");
13
- this.argument("[args...]", "Arguments forwarded to the entry after rewriting argv");
14
- this.addOption(new ConfigurationOption("debug"));
15
- }
16
- /**
17
- * Commander passes positionals before options when `<entry> [args...]` is declared.
18
- * The CLI host ModuleFactory expects `(opts, cmd)` — normalize and stash entry/args on opts.
19
- */ action(fn) {
20
- return super.action((...args)=>{
21
- const cmd = args.at(-1);
22
- const opts = args.at(-2);
23
- const { entry, entryArgs } = normalizeRunPositionals(args.slice(0, -2));
24
- cmd.setOptionValue("entry", entry);
25
- cmd.setOptionValue("args", entryArgs);
26
- return fn(opts, cmd);
27
- });
28
- }
29
- }
30
- /** Commander yields `[entry, args[]]` or sometimes a flat list depending on arity. */ function normalizeRunPositionals(positionals) {
31
- if (positionals.length === 0) {
32
- return {
33
- entry: "",
34
- entryArgs: []
35
- };
36
- }
37
- const first = positionals[0];
38
- if (typeof first !== "string" || first === "") {
39
- return {
40
- entry: "",
41
- entryArgs: []
42
- };
43
- }
44
- const second = positionals[1];
45
- if (Array.isArray(second)) {
46
- return {
47
- entry: first,
48
- entryArgs: second.filter((s)=>typeof s === "string")
49
- };
50
- }
51
- return {
52
- entry: first,
53
- entryArgs: positionals.slice(1).filter((s)=>typeof s === "string" && s !== "")
54
- };
55
- }
56
-
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZsdXgvc3JjL3J1bi5jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyYXRpb25PcHRpb24sIERlY29oZXJlQ29tbWFuZCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvblZhbHVlcyB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IFJ1bkFjdGlvbiB9IGZyb20gXCIuL3J1bi5hY3Rpb24uanNcIjtcblxuZXhwb3J0IGNsYXNzIFJ1bkNvbW1hbmQgZXh0ZW5kcyBEZWNvaGVyZUNvbW1hbmQge1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFjdGlvbnMoKSB7XG5cdFx0cmV0dXJuIFtSdW5BY3Rpb25dO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJDb21waWxlIGFuZCBydW4gYSBUeXBlU2NyaXB0IGVudHJ5IG9uIHRoZSBmbHkgKG5vIHdhdGNoIC8gSE1SKVwiKTtcblx0XHR0aGlzLmFyZ3VtZW50KFwiPGVudHJ5PlwiLCBcIlBhdGggdG8gdGhlIFR5cGVTY3JpcHQgZW50cnkgZmlsZVwiKTtcblx0XHR0aGlzLmFyZ3VtZW50KFwiW2FyZ3MuLi5dXCIsIFwiQXJndW1lbnRzIGZvcndhcmRlZCB0byB0aGUgZW50cnkgYWZ0ZXIgcmV3cml0aW5nIGFyZ3ZcIik7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IENvbmZpZ3VyYXRpb25PcHRpb24oXCJkZWJ1Z1wiKSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29tbWFuZGVyIHBhc3NlcyBwb3NpdGlvbmFscyBiZWZvcmUgb3B0aW9ucyB3aGVuIGA8ZW50cnk+IFthcmdzLi4uXWAgaXMgZGVjbGFyZWQuXG5cdCAqIFRoZSBDTEkgaG9zdCBNb2R1bGVGYWN0b3J5IGV4cGVjdHMgYChvcHRzLCBjbWQpYCDigJQgbm9ybWFsaXplIGFuZCBzdGFzaCBlbnRyeS9hcmdzIG9uIG9wdHMuXG5cdCAqL1xuXHRwdWJsaWMgb3ZlcnJpZGUgYWN0aW9uKGZuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KTogdGhpcyB7XG5cdFx0cmV0dXJuIHN1cGVyLmFjdGlvbigoLi4uYXJnczogYW55W10pID0+IHtcblx0XHRcdGNvbnN0IGNtZCA9IGFyZ3MuYXQoLTEpIGFzIERlY29oZXJlQ29tbWFuZDtcblx0XHRcdGNvbnN0IG9wdHMgPSBhcmdzLmF0KC0yKSBhcyBPcHRpb25WYWx1ZXM7XG5cdFx0XHRjb25zdCB7IGVudHJ5LCBlbnRyeUFyZ3MgfSA9IG5vcm1hbGl6ZVJ1blBvc2l0aW9uYWxzKGFyZ3Muc2xpY2UoMCwgLTIpKTtcblx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcImVudHJ5XCIsIGVudHJ5KTtcblx0XHRcdGNtZC5zZXRPcHRpb25WYWx1ZShcImFyZ3NcIiwgZW50cnlBcmdzKTtcblx0XHRcdHJldHVybiBmbihvcHRzLCBjbWQpO1xuXHRcdH0pO1xuXHR9XG59XG5cbi8qKiBDb21tYW5kZXIgeWllbGRzIGBbZW50cnksIGFyZ3NbXV1gIG9yIHNvbWV0aW1lcyBhIGZsYXQgbGlzdCBkZXBlbmRpbmcgb24gYXJpdHkuICovXG5mdW5jdGlvbiBub3JtYWxpemVSdW5Qb3NpdGlvbmFscyhwb3NpdGlvbmFsczogdW5rbm93bltdKToge1xuXHRlbnRyeTogc3RyaW5nO1xuXHRlbnRyeUFyZ3M6IHN0cmluZ1tdO1xufSB7XG5cdGlmIChwb3NpdGlvbmFscy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4geyBlbnRyeTogXCJcIiwgZW50cnlBcmdzOiBbXSB9O1xuXHR9XG5cblx0Y29uc3QgZmlyc3QgPSBwb3NpdGlvbmFsc1swXTtcblx0aWYgKHR5cGVvZiBmaXJzdCAhPT0gXCJzdHJpbmdcIiB8fCBmaXJzdCA9PT0gXCJcIikge1xuXHRcdHJldHVybiB7IGVudHJ5OiBcIlwiLCBlbnRyeUFyZ3M6IFtdIH07XG5cdH1cblxuXHRjb25zdCBzZWNvbmQgPSBwb3NpdGlvbmFsc1sxXTtcblx0aWYgKEFycmF5LmlzQXJyYXkoc2Vjb25kKSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRlbnRyeTogZmlyc3QsXG5cdFx0XHRlbnRyeUFyZ3M6IHNlY29uZC5maWx0ZXIoKHMpOiBzIGlzIHN0cmluZyA9PiB0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiksXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0ZW50cnk6IGZpcnN0LFxuXHRcdGVudHJ5QXJnczogcG9zaXRpb25hbHNcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmZpbHRlcigocyk6IHMgaXMgc3RyaW5nID0+IHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmIHMgIT09IFwiXCIpLFxuXHR9O1xufVxuIl0sIm5hbWVzIjpbIkNvbmZpZ3VyYXRpb25PcHRpb24iLCJEZWNvaGVyZUNvbW1hbmQiLCJSdW5BY3Rpb24iLCJSdW5Db21tYW5kIiwiYWN0aW9ucyIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImFyZ3VtZW50IiwiYWRkT3B0aW9uIiwiYWN0aW9uIiwiZm4iLCJhcmdzIiwiY21kIiwiYXQiLCJvcHRzIiwiZW50cnkiLCJlbnRyeUFyZ3MiLCJub3JtYWxpemVSdW5Qb3NpdGlvbmFscyIsInNsaWNlIiwic2V0T3B0aW9uVmFsdWUiLCJwb3NpdGlvbmFscyIsImxlbmd0aCIsImZpcnN0Iiwic2Vjb25kIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwicyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsbUJBQW1CLEVBQUVDLGVBQWUsUUFBUSxzQkFBc0I7QUFFM0UsU0FBU0MsU0FBUyxRQUFRLGtCQUFrQjtBQUU1QyxPQUFPLE1BQU1DLG1CQUFtQkY7SUFDL0IsSUFBb0JHLFVBQVU7UUFDN0IsT0FBTztZQUFDRjtTQUFVO0lBQ25CO0lBRUEsWUFBbUJHLElBQVksQ0FBRTtRQUNoQyxLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQyxXQUFXLENBQUM7UUFDakIsSUFBSSxDQUFDQyxRQUFRLENBQUMsV0FBVztRQUN6QixJQUFJLENBQUNBLFFBQVEsQ0FBQyxhQUFhO1FBQzNCLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlSLG9CQUFvQjtJQUN4QztJQUVBOzs7RUFHQyxHQUNELEFBQWdCUyxPQUFPQyxFQUE0QyxFQUFRO1FBQzFFLE9BQU8sS0FBSyxDQUFDRCxPQUFPLENBQUMsR0FBR0U7WUFDdkIsTUFBTUMsTUFBTUQsS0FBS0UsRUFBRSxDQUFDLENBQUM7WUFDckIsTUFBTUMsT0FBT0gsS0FBS0UsRUFBRSxDQUFDLENBQUM7WUFDdEIsTUFBTSxFQUFFRSxLQUFLLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyx3QkFBd0JOLEtBQUtPLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDcEVOLElBQUlPLGNBQWMsQ0FBQyxTQUFTSjtZQUM1QkgsSUFBSU8sY0FBYyxDQUFDLFFBQVFIO1lBQzNCLE9BQU9OLEdBQUdJLE1BQU1GO1FBQ2pCO0lBQ0Q7QUFDRDtBQUVBLG9GQUFvRixHQUNwRixTQUFTSyx3QkFBd0JHLFdBQXNCO0lBSXRELElBQUlBLFlBQVlDLE1BQU0sS0FBSyxHQUFHO1FBQzdCLE9BQU87WUFBRU4sT0FBTztZQUFJQyxXQUFXLEVBQUU7UUFBQztJQUNuQztJQUVBLE1BQU1NLFFBQVFGLFdBQVcsQ0FBQyxFQUFFO0lBQzVCLElBQUksT0FBT0UsVUFBVSxZQUFZQSxVQUFVLElBQUk7UUFDOUMsT0FBTztZQUFFUCxPQUFPO1lBQUlDLFdBQVcsRUFBRTtRQUFDO0lBQ25DO0lBRUEsTUFBTU8sU0FBU0gsV0FBVyxDQUFDLEVBQUU7SUFDN0IsSUFBSUksTUFBTUMsT0FBTyxDQUFDRixTQUFTO1FBQzFCLE9BQU87WUFDTlIsT0FBT087WUFDUE4sV0FBV08sT0FBT0csTUFBTSxDQUFDLENBQUNDLElBQW1CLE9BQU9BLE1BQU07UUFDM0Q7SUFDRDtJQUVBLE9BQU87UUFDTlosT0FBT087UUFDUE4sV0FBV0ksWUFDVEYsS0FBSyxDQUFDLEdBQ05RLE1BQU0sQ0FBQyxDQUFDQyxJQUFtQixPQUFPQSxNQUFNLFlBQVlBLE1BQU07SUFDN0Q7QUFDRCJ9