@decohere/forge 0.0.1-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commonjs/src/actions/build.action.js +108 -0
- package/commonjs/src/actions/clean.action.js +55 -0
- package/commonjs/src/actions/commit.action.js +80 -0
- package/commonjs/src/actions/copy.action.js +83 -0
- package/commonjs/src/actions/dependency-report.action.js +142 -0
- package/commonjs/src/actions/dependency-sync.action.js +100 -0
- package/commonjs/src/actions/index.js +30 -0
- package/commonjs/src/actions/publish.action.js +156 -0
- package/commonjs/src/actions/sync-lock-file.action.js +43 -0
- package/commonjs/src/actions/tag.action.js +76 -0
- package/commonjs/src/actions/version.action.js +209 -0
- package/commonjs/src/actions/watch.action.js +50 -0
- package/commonjs/src/commands/build.command.js +49 -0
- package/commonjs/src/commands/dependency.command.js +88 -0
- package/commonjs/src/commands/forge.command.js +24 -0
- package/commonjs/src/commands/index.js +25 -0
- package/commonjs/src/commands/publish.command.js +32 -0
- package/commonjs/src/commands/tag.command.js +28 -0
- package/commonjs/src/commands/version.command.js +36 -0
- package/commonjs/src/const.js +81 -0
- package/commonjs/src/errors.js +39 -0
- package/commonjs/src/extensions/project.extensions.js +66 -0
- package/commonjs/src/factories/swc-config.factory.js +98 -0
- package/commonjs/src/forge.module.js +109 -0
- package/commonjs/src/index.js +22 -0
- package/commonjs/src/mixins/caches-outputs.mixin.js +42 -0
- package/commonjs/src/mixins/incremental-transform.mixin.js +36 -0
- package/commonjs/src/services/dependency-resolver.service.js +172 -0
- package/commonjs/src/services/file-writer.service.js +232 -0
- package/commonjs/src/services/swc-transpiler.js +176 -0
- package/commonjs/src/services/ts-program-host.js +135 -0
- package/commonjs/src/services/type-emission-program.js +160 -0
- package/commonjs/src/services/type-emitter.js +141 -0
- package/commonjs/src/types/build-target.type.js +17 -0
- package/commonjs/src/types/configuration.type.js +6 -0
- package/commonjs/src/types/dependency.types.js +6 -0
- package/commonjs/src/types/swc-config.type.js +17 -0
- package/commonjs/src/types/transform-response.model.js +64 -0
- package/commonjs/src/types/transformer.type.js +13 -0
- package/commonjs/src/types/workspace-config.type.js +6 -0
- package/commonjs/src/vitest/forge-build.plugin.js +129 -0
- package/commonjs/src/vitest/index.js +13 -0
- package/commonjs/src/workspace.config.js +73 -0
- package/es6/src/actions/build.action.js +100 -0
- package/es6/src/actions/clean.action.js +46 -0
- package/es6/src/actions/commit.action.js +71 -0
- package/es6/src/actions/copy.action.js +69 -0
- package/es6/src/actions/dependency-report.action.js +134 -0
- package/es6/src/actions/dependency-sync.action.js +92 -0
- package/es6/src/actions/index.js +13 -0
- package/es6/src/actions/publish.action.js +147 -0
- package/es6/src/actions/sync-lock-file.action.js +33 -0
- package/es6/src/actions/tag.action.js +67 -0
- package/es6/src/actions/version.action.js +189 -0
- package/es6/src/actions/watch.action.js +41 -0
- package/es6/src/commands/build.command.js +34 -0
- package/es6/src/commands/dependency.command.js +78 -0
- package/es6/src/commands/forge.command.js +14 -0
- package/es6/src/commands/index.js +8 -0
- package/es6/src/commands/publish.command.js +22 -0
- package/es6/src/commands/tag.command.js +18 -0
- package/es6/src/commands/version.command.js +26 -0
- package/es6/src/const.js +60 -0
- package/es6/src/errors.js +18 -0
- package/es6/src/extensions/project.extensions.js +51 -0
- package/es6/src/factories/swc-config.factory.js +83 -0
- package/es6/src/forge.module.js +58 -0
- package/es6/src/index.js +4 -0
- package/es6/src/mixins/caches-outputs.mixin.js +32 -0
- package/es6/src/mixins/incremental-transform.mixin.js +26 -0
- package/es6/src/services/dependency-resolver.service.js +162 -0
- package/es6/src/services/file-writer.service.js +217 -0
- package/es6/src/services/swc-transpiler.js +161 -0
- package/es6/src/services/ts-program-host.js +120 -0
- package/es6/src/services/type-emission-program.js +145 -0
- package/es6/src/services/type-emitter.js +134 -0
- package/es6/src/types/build-target.type.js +7 -0
- package/es6/src/types/configuration.type.js +3 -0
- package/es6/src/types/dependency.types.js +3 -0
- package/es6/src/types/swc-config.type.js +7 -0
- package/es6/src/types/transform-response.model.js +46 -0
- package/es6/src/types/transformer.type.js +3 -0
- package/es6/src/types/workspace-config.type.js +3 -0
- package/es6/src/vitest/forge-build.plugin.js +114 -0
- package/es6/src/vitest/index.js +3 -0
- package/es6/src/workspace.config.js +49 -0
- package/package.json +43 -0
- package/types/src/actions/build.action.d.ts +22 -0
- package/types/src/actions/clean.action.d.ts +13 -0
- package/types/src/actions/commit.action.d.ts +17 -0
- package/types/src/actions/copy.action.d.ts +14 -0
- package/types/src/actions/dependency-report.action.d.ts +36 -0
- package/types/src/actions/dependency-sync.action.d.ts +17 -0
- package/types/src/actions/index.d.ts +11 -0
- package/types/src/actions/publish.action.d.ts +34 -0
- package/types/src/actions/sync-lock-file.action.d.ts +10 -0
- package/types/src/actions/tag.action.d.ts +19 -0
- package/types/src/actions/version.action.d.ts +35 -0
- package/types/src/actions/watch.action.d.ts +14 -0
- package/types/src/commands/build.command.d.ts +16 -0
- package/types/src/commands/dependency.command.d.ts +5 -0
- package/types/src/commands/forge.command.d.ts +6 -0
- package/types/src/commands/index.d.ts +6 -0
- package/types/src/commands/publish.command.d.ts +6 -0
- package/types/src/commands/tag.command.d.ts +6 -0
- package/types/src/commands/version.command.d.ts +12 -0
- package/types/src/const.d.ts +3 -0
- package/types/src/errors.d.ts +4 -0
- package/types/src/extensions/project.extensions.d.ts +13 -0
- package/types/src/factories/swc-config.factory.d.ts +24 -0
- package/types/src/forge.module.d.ts +31 -0
- package/types/src/index.d.ts +4 -0
- package/types/src/mixins/caches-outputs.mixin.d.ts +7 -0
- package/types/src/mixins/incremental-transform.mixin.d.ts +13 -0
- package/types/src/services/dependency-resolver.service.d.ts +15 -0
- package/types/src/services/file-writer.service.d.ts +20 -0
- package/types/src/services/swc-transpiler.d.ts +28 -0
- package/types/src/services/ts-program-host.d.ts +22 -0
- package/types/src/services/type-emission-program.d.ts +22 -0
- package/types/src/services/type-emitter.d.ts +43 -0
- package/types/src/types/build-target.type.d.ts +7 -0
- package/types/src/types/configuration.type.d.ts +6 -0
- package/types/src/types/dependency.types.d.ts +39 -0
- package/types/src/types/swc-config.type.d.ts +9 -0
- package/types/src/types/transform-response.model.d.ts +54 -0
- package/types/src/types/transformer.type.d.ts +37 -0
- package/types/src/types/workspace-config.type.d.ts +13 -0
- package/types/src/vitest/forge-build.plugin.d.ts +18 -0
- package/types/src/vitest/index.d.ts +2 -0
- package/types/src/workspace.config.d.ts +6 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ForgeModule", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ForgeModule;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mesh = require("@decohere/mesh");
|
|
12
|
+
const _cli = require("@decohere/nexus/cli");
|
|
13
|
+
const _index = /*#__PURE__*/ _interop_require_wildcard(require("./actions/index.js"));
|
|
14
|
+
const _index1 = /*#__PURE__*/ _interop_require_wildcard(require("./commands/index.js"));
|
|
15
|
+
const _dependencyresolverservice = require("./services/dependency-resolver.service.js");
|
|
16
|
+
const _filewriterservice = require("./services/file-writer.service.js");
|
|
17
|
+
const _swctranspiler = require("./services/swc-transpiler.js");
|
|
18
|
+
const _typeemitter = require("./services/type-emitter.js");
|
|
19
|
+
const _transformertype = require("./types/transformer.type.js");
|
|
20
|
+
const _workspaceconfig = require("./workspace.config.js");
|
|
21
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
22
|
+
if (typeof WeakMap !== "function") return null;
|
|
23
|
+
var cacheBabelInterop = new WeakMap();
|
|
24
|
+
var cacheNodeInterop = new WeakMap();
|
|
25
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
26
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
27
|
+
})(nodeInterop);
|
|
28
|
+
}
|
|
29
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
30
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
33
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
34
|
+
return {
|
|
35
|
+
default: obj
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
39
|
+
if (cache && cache.has(obj)) {
|
|
40
|
+
return cache.get(obj);
|
|
41
|
+
}
|
|
42
|
+
var newObj = {
|
|
43
|
+
__proto__: null
|
|
44
|
+
};
|
|
45
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
46
|
+
for(var key in obj){
|
|
47
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
48
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
49
|
+
if (desc && (desc.get || desc.set)) {
|
|
50
|
+
Object.defineProperty(newObj, key, desc);
|
|
51
|
+
} else {
|
|
52
|
+
newObj[key] = obj[key];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
newObj.default = obj;
|
|
57
|
+
if (cache) {
|
|
58
|
+
cache.set(obj, newObj);
|
|
59
|
+
}
|
|
60
|
+
return newObj;
|
|
61
|
+
}
|
|
62
|
+
class ForgeModule extends _cli.ModuleManifest {
|
|
63
|
+
id = "forge";
|
|
64
|
+
command = _index1.ForgeCommand;
|
|
65
|
+
actions = {
|
|
66
|
+
clean: _index.Clean,
|
|
67
|
+
copy: _index.Copy,
|
|
68
|
+
build: _index.Build,
|
|
69
|
+
watch: _index.Watch,
|
|
70
|
+
publish: _index.Publish,
|
|
71
|
+
syncDependencies: _index.SyncDependencies,
|
|
72
|
+
syncLockFile: _index.SyncLockFile,
|
|
73
|
+
reportDependencies: _index.ReportDependencies,
|
|
74
|
+
version: _index.Version,
|
|
75
|
+
tag: _index.Tag,
|
|
76
|
+
commitFiles: _index.CommitFiles
|
|
77
|
+
};
|
|
78
|
+
commands = {
|
|
79
|
+
build: _index1.BuildCommand,
|
|
80
|
+
publish: _index1.PublishCommand,
|
|
81
|
+
dependencies: _index1.DependencyCommand,
|
|
82
|
+
version: _index1.VersionCommand,
|
|
83
|
+
tag: _index1.TagCommand
|
|
84
|
+
};
|
|
85
|
+
registerServices(builder) {
|
|
86
|
+
builder.registerSingleton(_transformertype.TransformerKey, _swctranspiler.SwcTranspiler);
|
|
87
|
+
builder.registerSingleton(_transformertype.TransformerKey, _typeemitter.TypeEmitter);
|
|
88
|
+
builder.registerSingleton(_dependencyresolverservice.DependencyResolver);
|
|
89
|
+
builder.registerSingleton(_filewriterservice.FileWriterService);
|
|
90
|
+
}
|
|
91
|
+
async createWorkspace(options) {
|
|
92
|
+
const { configurations: _, ...forgeDefaults } = _workspaceconfig.WorkspaceDefaults;
|
|
93
|
+
const userConfig = await _mesh.UserConfigFactory.getUserConfig(options.configFile);
|
|
94
|
+
// Only apply forge default configurations when user config doesn't provide any.
|
|
95
|
+
// This ensures user-defined configurations take priority while still providing
|
|
96
|
+
// sensible defaults (debug + release) when no config file is present.
|
|
97
|
+
const configurations = userConfig.configurations?.length ? undefined : _workspaceconfig.DefaultConfigurations;
|
|
98
|
+
return _mesh.WorkspaceFactory.create({
|
|
99
|
+
...forgeDefaults,
|
|
100
|
+
...configurations ? {
|
|
101
|
+
configurations
|
|
102
|
+
} : {},
|
|
103
|
+
configFile: options.configFile,
|
|
104
|
+
rootDir: options.rootDir ?? _workspaceconfig.WorkspaceDefaults.rootDir
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2ZvcmdlLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyQ29uZmlnRmFjdG9yeSwgV29ya3NwYWNlRmFjdG9yeSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VGYWN0b3J5T3B0aW9ucyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBNb2R1bGVNYW5pZmVzdCB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRhaW5lckJ1aWxkZXIgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NvbXBvc2l0aW9uXCI7XG5pbXBvcnQgKiBhcyBBY3Rpb25zIGZyb20gXCIuL2FjdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIENvbW1hbmRzIGZyb20gXCIuL2NvbW1hbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5UmVzb2x2ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9kZXBlbmRlbmN5LXJlc29sdmVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IEZpbGVXcml0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvZmlsZS13cml0ZXIuc2VydmljZS5qc1wiO1xuaW1wb3J0IHsgU3djVHJhbnNwaWxlciB9IGZyb20gXCIuL3NlcnZpY2VzL3N3Yy10cmFuc3BpbGVyLmpzXCI7XG5pbXBvcnQgeyBUeXBlRW1pdHRlciB9IGZyb20gXCIuL3NlcnZpY2VzL3R5cGUtZW1pdHRlci5qc1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtZXJLZXkgfSBmcm9tIFwiLi90eXBlcy90cmFuc2Zvcm1lci50eXBlLmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q29uZmlndXJhdGlvbnMsIFdvcmtzcGFjZURlZmF1bHRzIH0gZnJvbSBcIi4vd29ya3NwYWNlLmNvbmZpZy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRm9yZ2VNb2R1bGUgZXh0ZW5kcyBNb2R1bGVNYW5pZmVzdCB7XG5cdHB1YmxpYyByZWFkb25seSBpZCA9IFwiZm9yZ2VcIjtcblx0cHVibGljIHJlYWRvbmx5IGNvbW1hbmQgPSBDb21tYW5kcy5Gb3JnZUNvbW1hbmQ7XG5cdHB1YmxpYyByZWFkb25seSBhY3Rpb25zID0ge1xuXHRcdGNsZWFuOiBBY3Rpb25zLkNsZWFuLFxuXHRcdGNvcHk6IEFjdGlvbnMuQ29weSxcblx0XHRidWlsZDogQWN0aW9ucy5CdWlsZCxcblx0XHR3YXRjaDogQWN0aW9ucy5XYXRjaCxcblx0XHRwdWJsaXNoOiBBY3Rpb25zLlB1Ymxpc2gsXG5cdFx0c3luY0RlcGVuZGVuY2llczogQWN0aW9ucy5TeW5jRGVwZW5kZW5jaWVzLFxuXHRcdHN5bmNMb2NrRmlsZTogQWN0aW9ucy5TeW5jTG9ja0ZpbGUsXG5cdFx0cmVwb3J0RGVwZW5kZW5jaWVzOiBBY3Rpb25zLlJlcG9ydERlcGVuZGVuY2llcyxcblx0XHR2ZXJzaW9uOiBBY3Rpb25zLlZlcnNpb24sXG5cdFx0dGFnOiBBY3Rpb25zLlRhZyxcblx0XHRjb21taXRGaWxlczogQWN0aW9ucy5Db21taXRGaWxlcyxcblx0fTtcblx0cHVibGljIHJlYWRvbmx5IGNvbW1hbmRzID0ge1xuXHRcdGJ1aWxkOiBDb21tYW5kcy5CdWlsZENvbW1hbmQsXG5cdFx0cHVibGlzaDogQ29tbWFuZHMuUHVibGlzaENvbW1hbmQsXG5cdFx0ZGVwZW5kZW5jaWVzOiBDb21tYW5kcy5EZXBlbmRlbmN5Q29tbWFuZCxcblx0XHR2ZXJzaW9uOiBDb21tYW5kcy5WZXJzaW9uQ29tbWFuZCxcblx0XHR0YWc6IENvbW1hbmRzLlRhZ0NvbW1hbmQsXG5cdH07XG5cblx0cHVibGljIHJlZ2lzdGVyU2VydmljZXMoYnVpbGRlcjogQ29udGFpbmVyQnVpbGRlcikge1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oVHJhbnNmb3JtZXJLZXksIFN3Y1RyYW5zcGlsZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oVHJhbnNmb3JtZXJLZXksIFR5cGVFbWl0dGVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKERlcGVuZGVuY3lSZXNvbHZlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihGaWxlV3JpdGVyU2VydmljZSk7XG5cdH1cblxuXHRwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlV29ya3NwYWNlKG9wdGlvbnM6IFdvcmtzcGFjZUZhY3RvcnlPcHRpb25zKSB7XG5cdFx0Y29uc3QgeyBjb25maWd1cmF0aW9uczogXywgLi4uZm9yZ2VEZWZhdWx0cyB9ID0gV29ya3NwYWNlRGVmYXVsdHM7XG5cdFx0Y29uc3QgdXNlckNvbmZpZyA9IGF3YWl0IFVzZXJDb25maWdGYWN0b3J5LmdldFVzZXJDb25maWcob3B0aW9ucy5jb25maWdGaWxlKTtcblx0XHQvLyBPbmx5IGFwcGx5IGZvcmdlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgd2hlbiB1c2VyIGNvbmZpZyBkb2Vzbid0IHByb3ZpZGUgYW55LlxuXHRcdC8vIFRoaXMgZW5zdXJlcyB1c2VyLWRlZmluZWQgY29uZmlndXJhdGlvbnMgdGFrZSBwcmlvcml0eSB3aGlsZSBzdGlsbCBwcm92aWRpbmdcblx0XHQvLyBzZW5zaWJsZSBkZWZhdWx0cyAoZGVidWcgKyByZWxlYXNlKSB3aGVuIG5vIGNvbmZpZyBmaWxlIGlzIHByZXNlbnQuXG5cdFx0Y29uc3QgY29uZmlndXJhdGlvbnMgPSB1c2VyQ29uZmlnLmNvbmZpZ3VyYXRpb25zPy5sZW5ndGhcblx0XHRcdD8gdW5kZWZpbmVkXG5cdFx0XHQ6IERlZmF1bHRDb25maWd1cmF0aW9ucztcblx0XHRyZXR1cm4gV29ya3NwYWNlRmFjdG9yeS5jcmVhdGUoe1xuXHRcdFx0Li4uZm9yZ2VEZWZhdWx0cyxcblx0XHRcdC4uLihjb25maWd1cmF0aW9ucyA/IHsgY29uZmlndXJhdGlvbnMgfSA6IHt9KSxcblx0XHRcdGNvbmZpZ0ZpbGU6IG9wdGlvbnMuY29uZmlnRmlsZSxcblx0XHRcdHJvb3REaXI6IG9wdGlvbnMucm9vdERpciA/PyBXb3Jrc3BhY2VEZWZhdWx0cy5yb290RGlyLFxuXHRcdH0pO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRm9yZ2VNb2R1bGUiLCJNb2R1bGVNYW5pZmVzdCIsImlkIiwiY29tbWFuZCIsIkNvbW1hbmRzIiwiRm9yZ2VDb21tYW5kIiwiYWN0aW9ucyIsImNsZWFuIiwiQWN0aW9ucyIsIkNsZWFuIiwiY29weSIsIkNvcHkiLCJidWlsZCIsIkJ1aWxkIiwid2F0Y2giLCJXYXRjaCIsInB1Ymxpc2giLCJQdWJsaXNoIiwic3luY0RlcGVuZGVuY2llcyIsIlN5bmNEZXBlbmRlbmNpZXMiLCJzeW5jTG9ja0ZpbGUiLCJTeW5jTG9ja0ZpbGUiLCJyZXBvcnREZXBlbmRlbmNpZXMiLCJSZXBvcnREZXBlbmRlbmNpZXMiLCJ2ZXJzaW9uIiwiVmVyc2lvbiIsInRhZyIsIlRhZyIsImNvbW1pdEZpbGVzIiwiQ29tbWl0RmlsZXMiLCJjb21tYW5kcyIsIkJ1aWxkQ29tbWFuZCIsIlB1Ymxpc2hDb21tYW5kIiwiZGVwZW5kZW5jaWVzIiwiRGVwZW5kZW5jeUNvbW1hbmQiLCJWZXJzaW9uQ29tbWFuZCIsIlRhZ0NvbW1hbmQiLCJyZWdpc3RlclNlcnZpY2VzIiwiYnVpbGRlciIsInJlZ2lzdGVyU2luZ2xldG9uIiwiVHJhbnNmb3JtZXJLZXkiLCJTd2NUcmFuc3BpbGVyIiwiVHlwZUVtaXR0ZXIiLCJEZXBlbmRlbmN5UmVzb2x2ZXIiLCJGaWxlV3JpdGVyU2VydmljZSIsImNyZWF0ZVdvcmtzcGFjZSIsIm9wdGlvbnMiLCJjb25maWd1cmF0aW9ucyIsIl8iLCJmb3JnZURlZmF1bHRzIiwiV29ya3NwYWNlRGVmYXVsdHMiLCJ1c2VyQ29uZmlnIiwiVXNlckNvbmZpZ0ZhY3RvcnkiLCJnZXRVc2VyQ29uZmlnIiwiY29uZmlnRmlsZSIsImxlbmd0aCIsInVuZGVmaW5lZCIsIkRlZmF1bHRDb25maWd1cmF0aW9ucyIsIldvcmtzcGFjZUZhY3RvcnkiLCJjcmVhdGUiLCJyb290RGlyIl0sIm1hcHBpbmdzIjoiOzs7OytCQWFhQTs7O2VBQUFBOzs7c0JBYnVDO3FCQUVyQjsrREFFTjtnRUFDQzsyQ0FDUzttQ0FDRDsrQkFDSjs2QkFDRjtpQ0FDRztpQ0FDMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRCxNQUFNQSxvQkFBb0JDLG1CQUFjO0lBQzlCQyxLQUFLLFFBQVE7SUFDYkMsVUFBVUMsUUFBU0MsWUFBWSxDQUFDO0lBQ2hDQyxVQUFVO1FBQ3pCQyxPQUFPQyxPQUFRQyxLQUFLO1FBQ3BCQyxNQUFNRixPQUFRRyxJQUFJO1FBQ2xCQyxPQUFPSixPQUFRSyxLQUFLO1FBQ3BCQyxPQUFPTixPQUFRTyxLQUFLO1FBQ3BCQyxTQUFTUixPQUFRUyxPQUFPO1FBQ3hCQyxrQkFBa0JWLE9BQVFXLGdCQUFnQjtRQUMxQ0MsY0FBY1osT0FBUWEsWUFBWTtRQUNsQ0Msb0JBQW9CZCxPQUFRZSxrQkFBa0I7UUFDOUNDLFNBQVNoQixPQUFRaUIsT0FBTztRQUN4QkMsS0FBS2xCLE9BQVFtQixHQUFHO1FBQ2hCQyxhQUFhcEIsT0FBUXFCLFdBQVc7SUFDakMsRUFBRTtJQUNjQyxXQUFXO1FBQzFCbEIsT0FBT1IsUUFBUzJCLFlBQVk7UUFDNUJmLFNBQVNaLFFBQVM0QixjQUFjO1FBQ2hDQyxjQUFjN0IsUUFBUzhCLGlCQUFpQjtRQUN4Q1YsU0FBU3BCLFFBQVMrQixjQUFjO1FBQ2hDVCxLQUFLdEIsUUFBU2dDLFVBQVU7SUFDekIsRUFBRTtJQUVLQyxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDQywrQkFBYyxFQUFFQyw0QkFBYTtRQUN2REgsUUFBUUMsaUJBQWlCLENBQUNDLCtCQUFjLEVBQUVFLHdCQUFXO1FBQ3JESixRQUFRQyxpQkFBaUIsQ0FBQ0ksNkNBQWtCO1FBQzVDTCxRQUFRQyxpQkFBaUIsQ0FBQ0ssb0NBQWlCO0lBQzVDO0lBRUEsTUFBc0JDLGdCQUFnQkMsT0FBZ0MsRUFBRTtRQUN2RSxNQUFNLEVBQUVDLGdCQUFnQkMsQ0FBQyxFQUFFLEdBQUdDLGVBQWUsR0FBR0Msa0NBQWlCO1FBQ2pFLE1BQU1DLGFBQWEsTUFBTUMsdUJBQWlCLENBQUNDLGFBQWEsQ0FBQ1AsUUFBUVEsVUFBVTtRQUMzRSxnRkFBZ0Y7UUFDaEYsK0VBQStFO1FBQy9FLHNFQUFzRTtRQUN0RSxNQUFNUCxpQkFBaUJJLFdBQVdKLGNBQWMsRUFBRVEsU0FDL0NDLFlBQ0FDLHNDQUFxQjtRQUN4QixPQUFPQyxzQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDO1lBQzlCLEdBQUdWLGFBQWE7WUFDaEIsR0FBSUYsaUJBQWlCO2dCQUFFQTtZQUFlLElBQUksQ0FBQyxDQUFDO1lBQzVDTyxZQUFZUixRQUFRUSxVQUFVO1lBQzlCTSxTQUFTZCxRQUFRYyxPQUFPLElBQUlWLGtDQUFpQixDQUFDVSxPQUFPO1FBQ3REO0lBQ0Q7QUFDRCJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get ForgeError () {
|
|
13
|
+
return _errors.ForgeError;
|
|
14
|
+
},
|
|
15
|
+
get ForgeModule () {
|
|
16
|
+
return _forgemodule.ForgeModule;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _errors = require("./errors.js");
|
|
20
|
+
const _forgemodule = require("./forge.module.js");
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZvcmdlRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmV4cG9ydCB7IEZvcmdlTW9kdWxlIH0gZnJvbSBcIi4vZm9yZ2UubW9kdWxlLmpzXCI7XG5leHBvcnQgdHlwZSB7IEZvcmdlQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZS5qc1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXMvd29ya3NwYWNlLWNvbmZpZy50eXBlLmpzXCI7XG4iXSwibmFtZXMiOlsiRm9yZ2VFcnJvciIsIkZvcmdlTW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQUFTQTtlQUFBQSxrQkFBVTs7UUFDVkM7ZUFBQUEsd0JBQVc7Ozt3QkFETzs2QkFDQyJ9
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "CachesOutputs", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return CachesOutputs;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _io = require("@decohere/nexus/io");
|
|
12
|
+
class CachesOutputs {
|
|
13
|
+
/** Maps source file fullPath -> output TransformResponses for cleanup in watch mode. */ get outputCache() {
|
|
14
|
+
const self = this;
|
|
15
|
+
if (self.__outputCache == null) {
|
|
16
|
+
self.__outputCache = new Map();
|
|
17
|
+
}
|
|
18
|
+
return self.__outputCache;
|
|
19
|
+
}
|
|
20
|
+
cacheOutputs(responses) {
|
|
21
|
+
for (const response of responses){
|
|
22
|
+
if (response.outcome !== "success") continue;
|
|
23
|
+
const existing = this.outputCache.get(response.file.fullPath) ?? [];
|
|
24
|
+
this.outputCache.set(response.file.fullPath, [
|
|
25
|
+
...existing,
|
|
26
|
+
response
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
deleteCachedOutputs(filePath) {
|
|
31
|
+
const outputs = this.outputCache.get(filePath);
|
|
32
|
+
if (outputs == null) return;
|
|
33
|
+
for (const response of outputs){
|
|
34
|
+
if (response.outputPath != null) {
|
|
35
|
+
void _io.io.deleteFile(response.outputPath);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
this.outputCache.delete(filePath);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL21peGlucy9jYWNoZXMtb3V0cHV0cy5taXhpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNmb3JtUmVzcG9uc2UgfSBmcm9tIFwiLi4vdHlwZXMvdHJhbnNmb3JtLXJlc3BvbnNlLm1vZGVsLmpzXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYWNoZXNPdXRwdXRzIHtcblx0LyoqIE1hcHMgc291cmNlIGZpbGUgZnVsbFBhdGggLT4gb3V0cHV0IFRyYW5zZm9ybVJlc3BvbnNlcyBmb3IgY2xlYW51cCBpbiB3YXRjaCBtb2RlLiAqL1xuXHRwcm90ZWN0ZWQgZ2V0IG91dHB1dENhY2hlKCk6IE1hcDxzdHJpbmcsIFRyYW5zZm9ybVJlc3BvbnNlW10+IHtcblx0XHRjb25zdCBzZWxmID0gdGhpcyBhcyB7IF9fb3V0cHV0Q2FjaGU/OiBNYXA8c3RyaW5nLCBUcmFuc2Zvcm1SZXNwb25zZVtdPiB9O1xuXHRcdGlmIChzZWxmLl9fb3V0cHV0Q2FjaGUgPT0gbnVsbCkge1xuXHRcdFx0c2VsZi5fX291dHB1dENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFRyYW5zZm9ybVJlc3BvbnNlW10+KCk7XG5cdFx0fVxuXHRcdHJldHVybiBzZWxmLl9fb3V0cHV0Q2FjaGU7XG5cdH1cblxuXHRwcm90ZWN0ZWQgY2FjaGVPdXRwdXRzKHJlc3BvbnNlczogVHJhbnNmb3JtUmVzcG9uc2VbXSk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgcmVzcG9uc2Ugb2YgcmVzcG9uc2VzKSB7XG5cdFx0XHRpZiAocmVzcG9uc2Uub3V0Y29tZSAhPT0gXCJzdWNjZXNzXCIpIGNvbnRpbnVlO1xuXHRcdFx0Y29uc3QgZXhpc3RpbmcgPSB0aGlzLm91dHB1dENhY2hlLmdldChyZXNwb25zZS5maWxlLmZ1bGxQYXRoKSA/PyBbXTtcblx0XHRcdHRoaXMub3V0cHV0Q2FjaGUuc2V0KHJlc3BvbnNlLmZpbGUuZnVsbFBhdGgsIFsuLi5leGlzdGluZywgcmVzcG9uc2VdKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgZGVsZXRlQ2FjaGVkT3V0cHV0cyhmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3V0cHV0cyA9IHRoaXMub3V0cHV0Q2FjaGUuZ2V0KGZpbGVQYXRoKTtcblx0XHRpZiAob3V0cHV0cyA9PSBudWxsKSByZXR1cm47XG5cdFx0Zm9yIChjb25zdCByZXNwb25zZSBvZiBvdXRwdXRzKSB7XG5cdFx0XHRpZiAocmVzcG9uc2Uub3V0cHV0UGF0aCAhPSBudWxsKSB7XG5cdFx0XHRcdHZvaWQgaW8uZGVsZXRlRmlsZShyZXNwb25zZS5vdXRwdXRQYXRoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5vdXRwdXRDYWNoZS5kZWxldGUoZmlsZVBhdGgpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiQ2FjaGVzT3V0cHV0cyIsIm91dHB1dENhY2hlIiwic2VsZiIsIl9fb3V0cHV0Q2FjaGUiLCJNYXAiLCJjYWNoZU91dHB1dHMiLCJyZXNwb25zZXMiLCJyZXNwb25zZSIsIm91dGNvbWUiLCJleGlzdGluZyIsImdldCIsImZpbGUiLCJmdWxsUGF0aCIsInNldCIsImRlbGV0ZUNhY2hlZE91dHB1dHMiLCJmaWxlUGF0aCIsIm91dHB1dHMiLCJvdXRwdXRQYXRoIiwiaW8iLCJkZWxldGVGaWxlIiwiZGVsZXRlIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdzQkE7OztlQUFBQTs7O29CQUhIO0FBR1osTUFBZUE7SUFDckIsc0ZBQXNGLEdBQ3RGLElBQWNDLGNBQWdEO1FBQzdELE1BQU1DLE9BQU8sSUFBSTtRQUNqQixJQUFJQSxLQUFLQyxhQUFhLElBQUksTUFBTTtZQUMvQkQsS0FBS0MsYUFBYSxHQUFHLElBQUlDO1FBQzFCO1FBQ0EsT0FBT0YsS0FBS0MsYUFBYTtJQUMxQjtJQUVVRSxhQUFhQyxTQUE4QixFQUFRO1FBQzVELEtBQUssTUFBTUMsWUFBWUQsVUFBVztZQUNqQyxJQUFJQyxTQUFTQyxPQUFPLEtBQUssV0FBVztZQUNwQyxNQUFNQyxXQUFXLElBQUksQ0FBQ1IsV0FBVyxDQUFDUyxHQUFHLENBQUNILFNBQVNJLElBQUksQ0FBQ0MsUUFBUSxLQUFLLEVBQUU7WUFDbkUsSUFBSSxDQUFDWCxXQUFXLENBQUNZLEdBQUcsQ0FBQ04sU0FBU0ksSUFBSSxDQUFDQyxRQUFRLEVBQUU7bUJBQUlIO2dCQUFVRjthQUFTO1FBQ3JFO0lBQ0Q7SUFFVU8sb0JBQW9CQyxRQUFnQixFQUFRO1FBQ3JELE1BQU1DLFVBQVUsSUFBSSxDQUFDZixXQUFXLENBQUNTLEdBQUcsQ0FBQ0s7UUFDckMsSUFBSUMsV0FBVyxNQUFNO1FBQ3JCLEtBQUssTUFBTVQsWUFBWVMsUUFBUztZQUMvQixJQUFJVCxTQUFTVSxVQUFVLElBQUksTUFBTTtnQkFDaEMsS0FBS0MsTUFBRSxDQUFDQyxVQUFVLENBQUNaLFNBQVNVLFVBQVU7WUFDdkM7UUFDRDtRQUNBLElBQUksQ0FBQ2hCLFdBQVcsQ0FBQ21CLE1BQU0sQ0FBQ0w7SUFDekI7QUFDRCJ9
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "IncrementalTransform", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return IncrementalTransform;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _rxjs = require("rxjs");
|
|
12
|
+
// WeakMap avoids the private-field-in-mixin problem: private class fields (#x)
|
|
13
|
+
// are not accessible when methods are copied onto a different class prototype.
|
|
14
|
+
const subjects = new WeakMap();
|
|
15
|
+
function getSubject(instance) {
|
|
16
|
+
let subject = subjects.get(instance);
|
|
17
|
+
if (subject == null) {
|
|
18
|
+
subject = new _rxjs.Subject();
|
|
19
|
+
subjects.set(instance, subject);
|
|
20
|
+
}
|
|
21
|
+
return subject;
|
|
22
|
+
}
|
|
23
|
+
class IncrementalTransform {
|
|
24
|
+
get incrementalTransform$() {
|
|
25
|
+
return getSubject(this).asObservable();
|
|
26
|
+
}
|
|
27
|
+
watch(workspace) {
|
|
28
|
+
workspace.projectFileChanged$.subscribe((evt)=>{
|
|
29
|
+
void this.onIncrementalFileEvent(evt).then((responses)=>{
|
|
30
|
+
getSubject(this).next(responses);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL21peGlucy9pbmNyZW1lbnRhbC10cmFuc2Zvcm0ubWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9qZWN0RmlsZUV2ZW50LCBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNmb3JtUmVzcG9uc2UgfSBmcm9tIFwiLi4vdHlwZXMvdHJhbnNmb3JtLXJlc3BvbnNlLm1vZGVsLmpzXCI7XG5cbi8vIFdlYWtNYXAgYXZvaWRzIHRoZSBwcml2YXRlLWZpZWxkLWluLW1peGluIHByb2JsZW06IHByaXZhdGUgY2xhc3MgZmllbGRzICgjeClcbi8vIGFyZSBub3QgYWNjZXNzaWJsZSB3aGVuIG1ldGhvZHMgYXJlIGNvcGllZCBvbnRvIGEgZGlmZmVyZW50IGNsYXNzIHByb3RvdHlwZS5cbmNvbnN0IHN1YmplY3RzID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBTdWJqZWN0PFRyYW5zZm9ybVJlc3BvbnNlW10+PigpO1xuXG5mdW5jdGlvbiBnZXRTdWJqZWN0KGluc3RhbmNlOiBvYmplY3QpOiBTdWJqZWN0PFRyYW5zZm9ybVJlc3BvbnNlW10+IHtcblx0bGV0IHN1YmplY3QgPSBzdWJqZWN0cy5nZXQoaW5zdGFuY2UpO1xuXHRpZiAoc3ViamVjdCA9PSBudWxsKSB7XG5cdFx0c3ViamVjdCA9IG5ldyBTdWJqZWN0PFRyYW5zZm9ybVJlc3BvbnNlW10+KCk7XG5cdFx0c3ViamVjdHMuc2V0KGluc3RhbmNlLCBzdWJqZWN0KTtcblx0fVxuXHRyZXR1cm4gc3ViamVjdDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEluY3JlbWVudGFsVHJhbnNmb3JtIHtcblx0cHVibGljIGdldCBpbmNyZW1lbnRhbFRyYW5zZm9ybSQoKTogT2JzZXJ2YWJsZTxUcmFuc2Zvcm1SZXNwb25zZVtdPiB7XG5cdFx0cmV0dXJuIGdldFN1YmplY3QodGhpcykuYXNPYnNlcnZhYmxlKCk7XG5cdH1cblxuXHRwdWJsaWMgd2F0Y2god29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcblx0XHR3b3Jrc3BhY2UucHJvamVjdEZpbGVDaGFuZ2VkJC5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuXHRcdFx0dm9pZCB0aGlzLm9uSW5jcmVtZW50YWxGaWxlRXZlbnQoZXZ0KS50aGVuKChyZXNwb25zZXMpID0+IHtcblx0XHRcdFx0Z2V0U3ViamVjdCh0aGlzKS5uZXh0KHJlc3BvbnNlcyk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgZm9yIGV2ZXJ5IHdvcmtzcGFjZSBmaWxlIGNoYW5nZS4gSW1wbGVtZW50YXRpb25zIHNob3VsZCBpbnZhbGlkYXRlXG5cdCAqIGFueSBpbnRlcm5hbCBjYWNoZXMsIHBlcmZvcm0gdGhlIGluY3JlbWVudGFsIHRyYW5zZm9ybSwgYW5kIHJldHVybiB0aGUgcmVzdWx0cy5cblx0ICogUmV0dXJuIGFuIGVtcHR5IGFycmF5IGZvciBkZWxldGlvbnMgb3Igd2hlbiBubyBvdXRwdXQgaXMgcHJvZHVjZWQuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYWJzdHJhY3Qgb25JbmNyZW1lbnRhbEZpbGVFdmVudChcblx0XHRldnQ6IFByb2plY3RGaWxlRXZlbnQsXG5cdCk6IFByb21pc2U8VHJhbnNmb3JtUmVzcG9uc2VbXT47XG59XG4iXSwibmFtZXMiOlsiSW5jcmVtZW50YWxUcmFuc2Zvcm0iLCJzdWJqZWN0cyIsIldlYWtNYXAiLCJnZXRTdWJqZWN0IiwiaW5zdGFuY2UiLCJzdWJqZWN0IiwiZ2V0IiwiU3ViamVjdCIsInNldCIsImluY3JlbWVudGFsVHJhbnNmb3JtJCIsImFzT2JzZXJ2YWJsZSIsIndhdGNoIiwid29ya3NwYWNlIiwicHJvamVjdEZpbGVDaGFuZ2VkJCIsInN1YnNjcmliZSIsImV2dCIsIm9uSW5jcmVtZW50YWxGaWxlRXZlbnQiLCJ0aGVuIiwicmVzcG9uc2VzIiwibmV4dCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFrQnNCQTs7O2VBQUFBOzs7c0JBaEJFO0FBR3hCLCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsTUFBTUMsV0FBVyxJQUFJQztBQUVyQixTQUFTQyxXQUFXQyxRQUFnQjtJQUNuQyxJQUFJQyxVQUFVSixTQUFTSyxHQUFHLENBQUNGO0lBQzNCLElBQUlDLFdBQVcsTUFBTTtRQUNwQkEsVUFBVSxJQUFJRSxhQUFPO1FBQ3JCTixTQUFTTyxHQUFHLENBQUNKLFVBQVVDO0lBQ3hCO0lBQ0EsT0FBT0E7QUFDUjtBQUVPLE1BQWVMO0lBQ3JCLElBQVdTLHdCQUF5RDtRQUNuRSxPQUFPTixXQUFXLElBQUksRUFBRU8sWUFBWTtJQUNyQztJQUVPQyxNQUFNQyxTQUFvQixFQUFRO1FBQ3hDQSxVQUFVQyxtQkFBbUIsQ0FBQ0MsU0FBUyxDQUFDLENBQUNDO1lBQ3hDLEtBQUssSUFBSSxDQUFDQyxzQkFBc0IsQ0FBQ0QsS0FBS0UsSUFBSSxDQUFDLENBQUNDO2dCQUMzQ2YsV0FBVyxJQUFJLEVBQUVnQixJQUFJLENBQUNEO1lBQ3ZCO1FBQ0Q7SUFDRDtBQVVEIn0=
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "DependencyResolver", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return DependencyResolver;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _decorators = require("@decohere/crucible/decorators");
|
|
12
|
+
const _io = require("@decohere/nexus/io");
|
|
13
|
+
const _parseimports = require("parse-imports");
|
|
14
|
+
const _const = require("../const.js");
|
|
15
|
+
const _errors = require("../errors.js");
|
|
16
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
17
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
18
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
19
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
20
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
21
|
+
}
|
|
22
|
+
class DependencyResolver {
|
|
23
|
+
computeDrift(current, computed) {
|
|
24
|
+
const sortKeys = (obj)=>Object.fromEntries(Object.entries(obj).sort());
|
|
25
|
+
const currentDeps = sortKeys(current.dependencies ?? {});
|
|
26
|
+
const computedDeps = sortKeys(computed.dependencies ?? {});
|
|
27
|
+
const currentDevDeps = sortKeys(current.devDependencies ?? {});
|
|
28
|
+
const computedDevDeps = sortKeys(computed.devDependencies ?? {});
|
|
29
|
+
const hasDrift = JSON.stringify(currentDeps) !== JSON.stringify(computedDeps) || JSON.stringify(currentDevDeps) !== JSON.stringify(computedDevDeps);
|
|
30
|
+
if (!hasDrift) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
original: {
|
|
35
|
+
dependencies: currentDeps,
|
|
36
|
+
devDependencies: currentDevDeps
|
|
37
|
+
},
|
|
38
|
+
updated: {
|
|
39
|
+
dependencies: computedDeps,
|
|
40
|
+
devDependencies: computedDevDeps
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async getWorkspacePackages(workspace, projects) {
|
|
45
|
+
const packageJson = await workspace.getPackageJson().catch(()=>{
|
|
46
|
+
throw new Error(`Root package.json not found at "${workspace.packageJsonDirectory}/package.json". ` + `Ensure the workspace root has a package.json with dependencies listed.`);
|
|
47
|
+
});
|
|
48
|
+
const internals = new Map(await Promise.all(projects.map(async (proj)=>{
|
|
49
|
+
const packageJson = await proj.getPackageJson();
|
|
50
|
+
return [
|
|
51
|
+
packageJson.name,
|
|
52
|
+
{
|
|
53
|
+
name: packageJson.name,
|
|
54
|
+
version: packageJson.version,
|
|
55
|
+
isInternal: true
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
})));
|
|
59
|
+
const packages = Object.entries(packageJson.dependencies).filter(([key])=>!internals.has(key)).map(([key, val])=>[
|
|
60
|
+
key,
|
|
61
|
+
{
|
|
62
|
+
name: key,
|
|
63
|
+
version: val
|
|
64
|
+
}
|
|
65
|
+
]);
|
|
66
|
+
const devPackages = Object.entries(packageJson.devDependencies).filter(([key])=>!internals.has(key)).map(([key, val])=>[
|
|
67
|
+
key,
|
|
68
|
+
{
|
|
69
|
+
name: key,
|
|
70
|
+
version: val,
|
|
71
|
+
isDev: true
|
|
72
|
+
}
|
|
73
|
+
]);
|
|
74
|
+
return new Map([
|
|
75
|
+
...packages,
|
|
76
|
+
...devPackages,
|
|
77
|
+
...internals
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
async computeProjectDependencies(project, workspacePackages) {
|
|
81
|
+
const { dependencies, devDependencies, warnings } = await this.getDependencies(project, workspacePackages);
|
|
82
|
+
const pkg = await project.getPackageJson();
|
|
83
|
+
const updatedPackage = pkg.withDependencies(dependencies).withDevDependencies(devDependencies);
|
|
84
|
+
return {
|
|
85
|
+
project,
|
|
86
|
+
updatedPackage,
|
|
87
|
+
warnings
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
async getDependencies(project, workspacePackages) {
|
|
91
|
+
const files = await project.getAllFiles();
|
|
92
|
+
const results = await Promise.all(files.map((file)=>this.getFileImports(file)));
|
|
93
|
+
const imports = results.flatMap((r)=>r.imports);
|
|
94
|
+
const warnings = results.flatMap((r)=>r.warnings);
|
|
95
|
+
const allDependencies = [
|
|
96
|
+
...new Set(imports)
|
|
97
|
+
].map((fileImport)=>this.getDependencyFrom(fileImport, workspacePackages)).filter((dep)=>dep != null);
|
|
98
|
+
const missing = allDependencies.filter((dep)=>dep.missing);
|
|
99
|
+
if (missing.length > 0) {
|
|
100
|
+
const names = missing.map((dep)=>dep.name).join(", ");
|
|
101
|
+
throw new _errors.ForgeError(`Missing packages in project "${project.name}": ${names}`);
|
|
102
|
+
}
|
|
103
|
+
const resolved = allDependencies.filter((dep)=>!dep.missing);
|
|
104
|
+
const dependencies = Object.fromEntries(resolved.filter((dep)=>!dep.isDev).map((dep)=>[
|
|
105
|
+
dep.name,
|
|
106
|
+
dep.version
|
|
107
|
+
]));
|
|
108
|
+
const devDependencies = Object.fromEntries(resolved.filter((dep)=>dep.isDev).map((dep)=>[
|
|
109
|
+
dep.name,
|
|
110
|
+
dep.version
|
|
111
|
+
]));
|
|
112
|
+
return {
|
|
113
|
+
dependencies,
|
|
114
|
+
devDependencies,
|
|
115
|
+
warnings
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
getDependencyFrom(importName, workspacePackages) {
|
|
119
|
+
if (importName.startsWith(".") || importName.startsWith("node:")) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const packageNameMatch = importName.match(/^(?:(@[^/]+\/[^/]+)|([^/]+))/);
|
|
123
|
+
const packageName = packageNameMatch?.[0];
|
|
124
|
+
if (packageName == null || _const.BUILT_IN_MODULES.includes(packageName)) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const packg = workspacePackages.get(packageName);
|
|
128
|
+
if (packg == null) {
|
|
129
|
+
return {
|
|
130
|
+
name: packageName,
|
|
131
|
+
version: undefined,
|
|
132
|
+
internal: undefined,
|
|
133
|
+
missing: true,
|
|
134
|
+
isDev: false
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
name: packageName,
|
|
139
|
+
version: packg.version ?? "",
|
|
140
|
+
internal: packg.isInternal ?? false,
|
|
141
|
+
missing: false,
|
|
142
|
+
isDev: packg.isDev ?? false
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
async getFileImports(file) {
|
|
146
|
+
const contents = await _io.io.readFile(file.fullPath);
|
|
147
|
+
const parsed = Array.from(await (0, _parseimports.parseImports)(contents));
|
|
148
|
+
const imports = [];
|
|
149
|
+
const warnings = [];
|
|
150
|
+
for (const impt of parsed){
|
|
151
|
+
if (impt.moduleSpecifier.value != null) {
|
|
152
|
+
imports.push(impt.moduleSpecifier.value);
|
|
153
|
+
} else if (impt.isDynamicImport) {
|
|
154
|
+
const line = contents.substring(0, impt.startIndex).split("\n").length;
|
|
155
|
+
warnings.push({
|
|
156
|
+
file: file.fullPath,
|
|
157
|
+
line,
|
|
158
|
+
message: `Dynamic import with non-literal specifier \`${impt.moduleSpecifier.code}\` cannot be statically resolved`
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
imports,
|
|
164
|
+
warnings
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
DependencyResolver = _ts_decorate([
|
|
169
|
+
(0, _decorators.injectable)()
|
|
170
|
+
], DependencyResolver);
|
|
171
|
+
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9zcmMvcHJvamVjdHMvZm9yZ2Uvc3JjL3NlcnZpY2VzL2RlcGVuZGVuY3ktcmVzb2x2ZXIuc2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VKc29uLCBQcm9qZWN0LCBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IHR5cGUgRmlsZUV4LCBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB7IHBhcnNlSW1wb3J0cyB9IGZyb20gXCJwYXJzZS1pbXBvcnRzXCI7XG5pbXBvcnQgeyBCVUlMVF9JTl9NT0RVTEVTIH0gZnJvbSBcIi4uL2NvbnN0LmpzXCI7XG5pbXBvcnQgeyBGb3JnZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHR5cGUge1xuXHREZXBlbmRlbmN5V2FybmluZyxcblx0RHJpZnRFbnRyeSxcblx0UGFja2FnZSxcblx0UmVzb2x2ZWREZXBlbmRlbmN5LFxufSBmcm9tIFwiLi4vdHlwZXMvZGVwZW5kZW5jeS50eXBlcy5qc1wiO1xuXG5leHBvcnQgdHlwZSBQcm9qZWN0RGVwZW5kZW5jaWVzID0ge1xuXHRwcm9qZWN0OiBQcm9qZWN0O1xuXHR1cGRhdGVkUGFja2FnZTogUGFja2FnZUpzb247XG5cdHdhcm5pbmdzOiBEZXBlbmRlbmN5V2FybmluZ1tdO1xufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlcGVuZGVuY3lSZXNvbHZlciB7XG5cdHB1YmxpYyBjb21wdXRlRHJpZnQoY3VycmVudDogUGFja2FnZUpzb24sIGNvbXB1dGVkOiBQYWNrYWdlSnNvbik6IERyaWZ0RW50cnkgfCBudWxsIHtcblx0XHRjb25zdCBzb3J0S2V5cyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+XG5cdFx0XHRPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMob2JqKS5zb3J0KCkpO1xuXG5cdFx0Y29uc3QgY3VycmVudERlcHMgPSBzb3J0S2V5cyhjdXJyZW50LmRlcGVuZGVuY2llcyA/PyB7fSk7XG5cdFx0Y29uc3QgY29tcHV0ZWREZXBzID0gc29ydEtleXMoY29tcHV0ZWQuZGVwZW5kZW5jaWVzID8/IHt9KTtcblx0XHRjb25zdCBjdXJyZW50RGV2RGVwcyA9IHNvcnRLZXlzKGN1cnJlbnQuZGV2RGVwZW5kZW5jaWVzID8/IHt9KTtcblx0XHRjb25zdCBjb21wdXRlZERldkRlcHMgPSBzb3J0S2V5cyhjb21wdXRlZC5kZXZEZXBlbmRlbmNpZXMgPz8ge30pO1xuXG5cdFx0Y29uc3QgaGFzRHJpZnQgPVxuXHRcdFx0SlNPTi5zdHJpbmdpZnkoY3VycmVudERlcHMpICE9PSBKU09OLnN0cmluZ2lmeShjb21wdXRlZERlcHMpIHx8XG5cdFx0XHRKU09OLnN0cmluZ2lmeShjdXJyZW50RGV2RGVwcykgIT09IEpTT04uc3RyaW5naWZ5KGNvbXB1dGVkRGV2RGVwcyk7XG5cblx0XHRpZiAoIWhhc0RyaWZ0KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0b3JpZ2luYWw6IHsgZGVwZW5kZW5jaWVzOiBjdXJyZW50RGVwcywgZGV2RGVwZW5kZW5jaWVzOiBjdXJyZW50RGV2RGVwcyB9LFxuXHRcdFx0dXBkYXRlZDogeyBkZXBlbmRlbmNpZXM6IGNvbXB1dGVkRGVwcywgZGV2RGVwZW5kZW5jaWVzOiBjb21wdXRlZERldkRlcHMgfSxcblx0XHR9O1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGdldFdvcmtzcGFjZVBhY2thZ2VzKFxuXHRcdHdvcmtzcGFjZTogV29ya3NwYWNlLFxuXHRcdHByb2plY3RzOiByZWFkb25seSBQcm9qZWN0W10sXG5cdCk6IFByb21pc2U8TWFwPHN0cmluZywgUGFja2FnZT4+IHtcblx0XHRjb25zdCBwYWNrYWdlSnNvbiA9IGF3YWl0IHdvcmtzcGFjZS5nZXRQYWNrYWdlSnNvbigpLmNhdGNoKCgpID0+IHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YFJvb3QgcGFja2FnZS5qc29uIG5vdCBmb3VuZCBhdCBcIiR7d29ya3NwYWNlLnBhY2thZ2VKc29uRGlyZWN0b3J5fS9wYWNrYWdlLmpzb25cIi4gYCArXG5cdFx0XHRcdFx0YEVuc3VyZSB0aGUgd29ya3NwYWNlIHJvb3QgaGFzIGEgcGFja2FnZS5qc29uIHdpdGggZGVwZW5kZW5jaWVzIGxpc3RlZC5gLFxuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IGludGVybmFscyA9IG5ldyBNYXAoXG5cdFx0XHRhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdFx0cHJvamVjdHMubWFwKGFzeW5jIChwcm9qKTogUHJvbWlzZTxbc3RyaW5nLCBQYWNrYWdlXT4gPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcHJvai5nZXRQYWNrYWdlSnNvbigpO1xuXHRcdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0XHRwYWNrYWdlSnNvbi5uYW1lLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiBwYWNrYWdlSnNvbi5uYW1lLFxuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwYWNrYWdlSnNvbi52ZXJzaW9uLFxuXHRcdFx0XHRcdFx0XHRpc0ludGVybmFsOiB0cnVlLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRdO1xuXHRcdFx0XHR9KSxcblx0XHRcdCksXG5cdFx0KTtcblxuXHRcdGNvbnN0IHBhY2thZ2VzID0gT2JqZWN0LmVudHJpZXMocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzKVxuXHRcdFx0LmZpbHRlcigoW2tleV0pID0+ICFpbnRlcm5hbHMuaGFzKGtleSkpXG5cdFx0XHQubWFwPFtzdHJpbmcsIFBhY2thZ2VdPigoW2tleSwgdmFsXSkgPT4gW2tleSwgeyBuYW1lOiBrZXksIHZlcnNpb246IHZhbCB9XSk7XG5cblx0XHRjb25zdCBkZXZQYWNrYWdlcyA9IE9iamVjdC5lbnRyaWVzKHBhY2thZ2VKc29uLmRldkRlcGVuZGVuY2llcylcblx0XHRcdC5maWx0ZXIoKFtrZXldKSA9PiAhaW50ZXJuYWxzLmhhcyhrZXkpKVxuXHRcdFx0Lm1hcDxbc3RyaW5nLCBQYWNrYWdlXT4oKFtrZXksIHZhbF0pID0+IFtrZXksIHsgbmFtZToga2V5LCB2ZXJzaW9uOiB2YWwsIGlzRGV2OiB0cnVlIH1dKTtcblxuXHRcdHJldHVybiBuZXcgTWFwKFsuLi5wYWNrYWdlcywgLi4uZGV2UGFja2FnZXMsIC4uLmludGVybmFsc10pO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGNvbXB1dGVQcm9qZWN0RGVwZW5kZW5jaWVzKFxuXHRcdHByb2plY3Q6IFByb2plY3QsXG5cdFx0d29ya3NwYWNlUGFja2FnZXM6IE1hcDxzdHJpbmcsIFBhY2thZ2U+LFxuXHQpOiBQcm9taXNlPFByb2plY3REZXBlbmRlbmNpZXM+IHtcblx0XHRjb25zdCB7IGRlcGVuZGVuY2llcywgZGV2RGVwZW5kZW5jaWVzLCB3YXJuaW5ncyB9ID0gYXdhaXQgdGhpcy5nZXREZXBlbmRlbmNpZXMoXG5cdFx0XHRwcm9qZWN0LFxuXHRcdFx0d29ya3NwYWNlUGFja2FnZXMsXG5cdFx0KTtcblxuXHRcdGNvbnN0IHBrZyA9IGF3YWl0IHByb2plY3QuZ2V0UGFja2FnZUpzb24oKTtcblx0XHRjb25zdCB1cGRhdGVkUGFja2FnZSA9IHBrZ1xuXHRcdFx0LndpdGhEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKVxuXHRcdFx0LndpdGhEZXZEZXBlbmRlbmNpZXMoZGV2RGVwZW5kZW5jaWVzKTtcblxuXHRcdHJldHVybiB7IHByb2plY3QsIHVwZGF0ZWRQYWNrYWdlLCB3YXJuaW5ncyB9O1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBnZXREZXBlbmRlbmNpZXMocHJvamVjdDogUHJvamVjdCwgd29ya3NwYWNlUGFja2FnZXM6IE1hcDxzdHJpbmcsIFBhY2thZ2U+KSB7XG5cdFx0Y29uc3QgZmlsZXMgPSBhd2FpdCBwcm9qZWN0LmdldEFsbEZpbGVzKCk7XG5cdFx0Y29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcCgoZmlsZSkgPT4gdGhpcy5nZXRGaWxlSW1wb3J0cyhmaWxlKSkpO1xuXHRcdGNvbnN0IGltcG9ydHMgPSByZXN1bHRzLmZsYXRNYXAoKHIpID0+IHIuaW1wb3J0cyk7XG5cdFx0Y29uc3Qgd2FybmluZ3MgPSByZXN1bHRzLmZsYXRNYXAoKHIpID0+IHIud2FybmluZ3MpO1xuXG5cdFx0Y29uc3QgYWxsRGVwZW5kZW5jaWVzID0gWy4uLm5ldyBTZXQoaW1wb3J0cyldXG5cdFx0XHQubWFwKChmaWxlSW1wb3J0KSA9PiB0aGlzLmdldERlcGVuZGVuY3lGcm9tKGZpbGVJbXBvcnQsIHdvcmtzcGFjZVBhY2thZ2VzKSlcblx0XHRcdC5maWx0ZXIoKGRlcCkgPT4gZGVwICE9IG51bGwpO1xuXG5cdFx0Y29uc3QgbWlzc2luZyA9IGFsbERlcGVuZGVuY2llcy5maWx0ZXIoXG5cdFx0XHQoZGVwKTogZGVwIGlzIFJlc29sdmVkRGVwZW5kZW5jeSAmIHsgbWlzc2luZzogdHJ1ZSB9ID0+IGRlcC5taXNzaW5nLFxuXHRcdCk7XG5cblx0XHRpZiAobWlzc2luZy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBuYW1lcyA9IG1pc3NpbmcubWFwKChkZXApID0+IGRlcC5uYW1lKS5qb2luKFwiLCBcIik7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihgTWlzc2luZyBwYWNrYWdlcyBpbiBwcm9qZWN0IFwiJHtwcm9qZWN0Lm5hbWV9XCI6ICR7bmFtZXN9YCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzb2x2ZWQgPSBhbGxEZXBlbmRlbmNpZXMuZmlsdGVyKFxuXHRcdFx0KGRlcCk6IGRlcCBpcyBSZXNvbHZlZERlcGVuZGVuY3kgJiB7IG1pc3Npbmc6IGZhbHNlIH0gPT4gIWRlcC5taXNzaW5nLFxuXHRcdCk7XG5cblx0XHRjb25zdCBkZXBlbmRlbmNpZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRyZXNvbHZlZFxuXHRcdFx0XHQuZmlsdGVyKChkZXApID0+ICFkZXAuaXNEZXYpXG5cdFx0XHRcdC5tYXA8W3N0cmluZywgc3RyaW5nXT4oKGRlcCkgPT4gW2RlcC5uYW1lLCBkZXAudmVyc2lvbl0pLFxuXHRcdCk7XG5cblx0XHRjb25zdCBkZXZEZXBlbmRlbmNpZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRyZXNvbHZlZFxuXHRcdFx0XHQuZmlsdGVyKChkZXApID0+IGRlcC5pc0Rldilcblx0XHRcdFx0Lm1hcDxbc3RyaW5nLCBzdHJpbmddPigoZGVwKSA9PiBbZGVwLm5hbWUsIGRlcC52ZXJzaW9uXSksXG5cdFx0KTtcblxuXHRcdHJldHVybiB7IGRlcGVuZGVuY2llcywgZGV2RGVwZW5kZW5jaWVzLCB3YXJuaW5ncyB9O1xuXHR9XG5cblx0cHJpdmF0ZSBnZXREZXBlbmRlbmN5RnJvbShcblx0XHRpbXBvcnROYW1lOiBzdHJpbmcsXG5cdFx0d29ya3NwYWNlUGFja2FnZXM6IE1hcDxzdHJpbmcsIFBhY2thZ2U+LFxuXHQpOiBSZXNvbHZlZERlcGVuZGVuY3kgfCB1bmRlZmluZWQge1xuXHRcdGlmIChpbXBvcnROYW1lLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IGltcG9ydE5hbWUuc3RhcnRzV2l0aChcIm5vZGU6XCIpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgcGFja2FnZU5hbWVNYXRjaCA9IGltcG9ydE5hbWUubWF0Y2goL14oPzooQFteL10rXFwvW14vXSspfChbXi9dKykpLyk7XG5cdFx0Y29uc3QgcGFja2FnZU5hbWUgPSBwYWNrYWdlTmFtZU1hdGNoPy5bMF07XG5cblx0XHRpZiAocGFja2FnZU5hbWUgPT0gbnVsbCB8fCBCVUlMVF9JTl9NT0RVTEVTLmluY2x1ZGVzKHBhY2thZ2VOYW1lKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBhY2tnID0gd29ya3NwYWNlUGFja2FnZXMuZ2V0KHBhY2thZ2VOYW1lKTtcblxuXHRcdGlmIChwYWNrZyA9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRuYW1lOiBwYWNrYWdlTmFtZSxcblx0XHRcdFx0dmVyc2lvbjogdW5kZWZpbmVkLFxuXHRcdFx0XHRpbnRlcm5hbDogdW5kZWZpbmVkLFxuXHRcdFx0XHRtaXNzaW5nOiB0cnVlLFxuXHRcdFx0XHRpc0RldjogZmFsc2UsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lOiBwYWNrYWdlTmFtZSxcblx0XHRcdHZlcnNpb246IHBhY2tnLnZlcnNpb24gPz8gXCJcIixcblx0XHRcdGludGVybmFsOiBwYWNrZy5pc0ludGVybmFsID8/IGZhbHNlLFxuXHRcdFx0bWlzc2luZzogZmFsc2UsXG5cdFx0XHRpc0RldjogcGFja2cuaXNEZXYgPz8gZmFsc2UsXG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgZ2V0RmlsZUltcG9ydHMoXG5cdFx0ZmlsZTogRmlsZUV4LFxuXHQpOiBQcm9taXNlPHsgaW1wb3J0czogc3RyaW5nW107IHdhcm5pbmdzOiBEZXBlbmRlbmN5V2FybmluZ1tdIH0+IHtcblx0XHRjb25zdCBjb250ZW50cyA9IGF3YWl0IGlvLnJlYWRGaWxlKGZpbGUuZnVsbFBhdGgpO1xuXHRcdGNvbnN0IHBhcnNlZCA9IEFycmF5LmZyb20oYXdhaXQgcGFyc2VJbXBvcnRzKGNvbnRlbnRzKSk7XG5cblx0XHRjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IHdhcm5pbmdzOiBEZXBlbmRlbmN5V2FybmluZ1tdID0gW107XG5cblx0XHRmb3IgKGNvbnN0IGltcHQgb2YgcGFyc2VkKSB7XG5cdFx0XHRpZiAoaW1wdC5tb2R1bGVTcGVjaWZpZXIudmFsdWUgIT0gbnVsbCkge1xuXHRcdFx0XHRpbXBvcnRzLnB1c2goaW1wdC5tb2R1bGVTcGVjaWZpZXIudmFsdWUpO1xuXHRcdFx0fSBlbHNlIGlmIChpbXB0LmlzRHluYW1pY0ltcG9ydCkge1xuXHRcdFx0XHRjb25zdCBsaW5lID0gY29udGVudHMuc3Vic3RyaW5nKDAsIGltcHQuc3RhcnRJbmRleCkuc3BsaXQoXCJcXG5cIikubGVuZ3RoO1xuXHRcdFx0XHR3YXJuaW5ncy5wdXNoKHtcblx0XHRcdFx0XHRmaWxlOiBmaWxlLmZ1bGxQYXRoLFxuXHRcdFx0XHRcdGxpbmUsXG5cdFx0XHRcdFx0bWVzc2FnZTogYER5bmFtaWMgaW1wb3J0IHdpdGggbm9uLWxpdGVyYWwgc3BlY2lmaWVyIFxcYCR7aW1wdC5tb2R1bGVTcGVjaWZpZXIuY29kZX1cXGAgY2Fubm90IGJlIHN0YXRpY2FsbHkgcmVzb2x2ZWRgLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4geyBpbXBvcnRzLCB3YXJuaW5ncyB9O1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRGVwZW5kZW5jeVJlc29sdmVyIiwiY29tcHV0ZURyaWZ0IiwiY3VycmVudCIsImNvbXB1dGVkIiwic29ydEtleXMiLCJvYmoiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJzb3J0IiwiY3VycmVudERlcHMiLCJkZXBlbmRlbmNpZXMiLCJjb21wdXRlZERlcHMiLCJjdXJyZW50RGV2RGVwcyIsImRldkRlcGVuZGVuY2llcyIsImNvbXB1dGVkRGV2RGVwcyIsImhhc0RyaWZ0IiwiSlNPTiIsInN0cmluZ2lmeSIsIm9yaWdpbmFsIiwidXBkYXRlZCIsImdldFdvcmtzcGFjZVBhY2thZ2VzIiwid29ya3NwYWNlIiwicHJvamVjdHMiLCJwYWNrYWdlSnNvbiIsImdldFBhY2thZ2VKc29uIiwiY2F0Y2giLCJFcnJvciIsInBhY2thZ2VKc29uRGlyZWN0b3J5IiwiaW50ZXJuYWxzIiwiTWFwIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInByb2oiLCJuYW1lIiwidmVyc2lvbiIsImlzSW50ZXJuYWwiLCJwYWNrYWdlcyIsImZpbHRlciIsImtleSIsImhhcyIsInZhbCIsImRldlBhY2thZ2VzIiwiaXNEZXYiLCJjb21wdXRlUHJvamVjdERlcGVuZGVuY2llcyIsInByb2plY3QiLCJ3b3Jrc3BhY2VQYWNrYWdlcyIsIndhcm5pbmdzIiwiZ2V0RGVwZW5kZW5jaWVzIiwicGtnIiwidXBkYXRlZFBhY2thZ2UiLCJ3aXRoRGVwZW5kZW5jaWVzIiwid2l0aERldkRlcGVuZGVuY2llcyIsImZpbGVzIiwiZ2V0QWxsRmlsZXMiLCJyZXN1bHRzIiwiZmlsZSIsImdldEZpbGVJbXBvcnRzIiwiaW1wb3J0cyIsImZsYXRNYXAiLCJyIiwiYWxsRGVwZW5kZW5jaWVzIiwiU2V0IiwiZmlsZUltcG9ydCIsImdldERlcGVuZGVuY3lGcm9tIiwiZGVwIiwibWlzc2luZyIsImxlbmd0aCIsIm5hbWVzIiwiam9pbiIsIkZvcmdlRXJyb3IiLCJyZXNvbHZlZCIsImltcG9ydE5hbWUiLCJzdGFydHNXaXRoIiwicGFja2FnZU5hbWVNYXRjaCIsIm1hdGNoIiwicGFja2FnZU5hbWUiLCJCVUlMVF9JTl9NT0RVTEVTIiwiaW5jbHVkZXMiLCJwYWNrZyIsImdldCIsInVuZGVmaW5lZCIsImludGVybmFsIiwiY29udGVudHMiLCJpbyIsInJlYWRGaWxlIiwiZnVsbFBhdGgiLCJwYXJzZWQiLCJBcnJheSIsImZyb20iLCJwYXJzZUltcG9ydHMiLCJpbXB0IiwibW9kdWxlU3BlY2lmaWVyIiwidmFsdWUiLCJwdXNoIiwiaXNEeW5hbWljSW1wb3J0IiwibGluZSIsInN1YnN0cmluZyIsInN0YXJ0SW5kZXgiLCJzcGxpdCIsIm1lc3NhZ2UiLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7OytCQW9CYUE7OztlQUFBQTs7OzRCQXBCYztvQkFFSzs4QkFDSDt1QkFDSTt3QkFDTjs7Ozs7OztBQWVwQixNQUFNQTtJQUNMQyxhQUFhQyxPQUFvQixFQUFFQyxRQUFxQixFQUFxQjtRQUNuRixNQUFNQyxXQUFXLENBQUNDLE1BQ2pCQyxPQUFPQyxXQUFXLENBQUNELE9BQU9FLE9BQU8sQ0FBQ0gsS0FBS0ksSUFBSTtRQUU1QyxNQUFNQyxjQUFjTixTQUFTRixRQUFRUyxZQUFZLElBQUksQ0FBQztRQUN0RCxNQUFNQyxlQUFlUixTQUFTRCxTQUFTUSxZQUFZLElBQUksQ0FBQztRQUN4RCxNQUFNRSxpQkFBaUJULFNBQVNGLFFBQVFZLGVBQWUsSUFBSSxDQUFDO1FBQzVELE1BQU1DLGtCQUFrQlgsU0FBU0QsU0FBU1csZUFBZSxJQUFJLENBQUM7UUFFOUQsTUFBTUUsV0FDTEMsS0FBS0MsU0FBUyxDQUFDUixpQkFBaUJPLEtBQUtDLFNBQVMsQ0FBQ04saUJBQy9DSyxLQUFLQyxTQUFTLENBQUNMLG9CQUFvQkksS0FBS0MsU0FBUyxDQUFDSDtRQUVuRCxJQUFJLENBQUNDLFVBQVU7WUFDZCxPQUFPO1FBQ1I7UUFFQSxPQUFPO1lBQ05HLFVBQVU7Z0JBQUVSLGNBQWNEO2dCQUFhSSxpQkFBaUJEO1lBQWU7WUFDdkVPLFNBQVM7Z0JBQUVULGNBQWNDO2dCQUFjRSxpQkFBaUJDO1lBQWdCO1FBQ3pFO0lBQ0Q7SUFFQSxNQUFhTSxxQkFDWkMsU0FBb0IsRUFDcEJDLFFBQTRCLEVBQ0k7UUFDaEMsTUFBTUMsY0FBYyxNQUFNRixVQUFVRyxjQUFjLEdBQUdDLEtBQUssQ0FBQztZQUMxRCxNQUFNLElBQUlDLE1BQ1QsQ0FBQyxnQ0FBZ0MsRUFBRUwsVUFBVU0sb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsR0FDbEYsQ0FBQyxzRUFBc0UsQ0FBQztRQUUzRTtRQUVBLE1BQU1DLFlBQVksSUFBSUMsSUFDckIsTUFBTUMsUUFBUUMsR0FBRyxDQUNoQlQsU0FBU1UsR0FBRyxDQUFDLE9BQU9DO1lBQ25CLE1BQU1WLGNBQWMsTUFBTVUsS0FBS1QsY0FBYztZQUM3QyxPQUFPO2dCQUNORCxZQUFZVyxJQUFJO2dCQUNoQjtvQkFDQ0EsTUFBTVgsWUFBWVcsSUFBSTtvQkFDdEJDLFNBQVNaLFlBQVlZLE9BQU87b0JBQzVCQyxZQUFZO2dCQUNiO2FBQ0E7UUFDRjtRQUlGLE1BQU1DLFdBQVdoQyxPQUFPRSxPQUFPLENBQUNnQixZQUFZYixZQUFZLEVBQ3RENEIsTUFBTSxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxHQUFLLENBQUNYLFVBQVVZLEdBQUcsQ0FBQ0QsTUFDakNQLEdBQUcsQ0FBb0IsQ0FBQyxDQUFDTyxLQUFLRSxJQUFJLEdBQUs7Z0JBQUNGO2dCQUFLO29CQUFFTCxNQUFNSztvQkFBS0osU0FBU007Z0JBQUk7YUFBRTtRQUUzRSxNQUFNQyxjQUFjckMsT0FBT0UsT0FBTyxDQUFDZ0IsWUFBWVYsZUFBZSxFQUM1RHlCLE1BQU0sQ0FBQyxDQUFDLENBQUNDLElBQUksR0FBSyxDQUFDWCxVQUFVWSxHQUFHLENBQUNELE1BQ2pDUCxHQUFHLENBQW9CLENBQUMsQ0FBQ08sS0FBS0UsSUFBSSxHQUFLO2dCQUFDRjtnQkFBSztvQkFBRUwsTUFBTUs7b0JBQUtKLFNBQVNNO29CQUFLRSxPQUFPO2dCQUFLO2FBQUU7UUFFeEYsT0FBTyxJQUFJZCxJQUFJO2VBQUlRO2VBQWFLO2VBQWdCZDtTQUFVO0lBQzNEO0lBRUEsTUFBYWdCLDJCQUNaQyxPQUFnQixFQUNoQkMsaUJBQXVDLEVBQ1I7UUFDL0IsTUFBTSxFQUFFcEMsWUFBWSxFQUFFRyxlQUFlLEVBQUVrQyxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQ0MsZUFBZSxDQUM3RUgsU0FDQUM7UUFHRCxNQUFNRyxNQUFNLE1BQU1KLFFBQVFyQixjQUFjO1FBQ3hDLE1BQU0wQixpQkFBaUJELElBQ3JCRSxnQkFBZ0IsQ0FBQ3pDLGNBQ2pCMEMsbUJBQW1CLENBQUN2QztRQUV0QixPQUFPO1lBQUVnQztZQUFTSztZQUFnQkg7UUFBUztJQUM1QztJQUVBLE1BQWNDLGdCQUFnQkgsT0FBZ0IsRUFBRUMsaUJBQXVDLEVBQUU7UUFDeEYsTUFBTU8sUUFBUSxNQUFNUixRQUFRUyxXQUFXO1FBQ3ZDLE1BQU1DLFVBQVUsTUFBTXpCLFFBQVFDLEdBQUcsQ0FBQ3NCLE1BQU1yQixHQUFHLENBQUMsQ0FBQ3dCLE9BQVMsSUFBSSxDQUFDQyxjQUFjLENBQUNEO1FBQzFFLE1BQU1FLFVBQVVILFFBQVFJLE9BQU8sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFRixPQUFPO1FBQ2hELE1BQU1YLFdBQVdRLFFBQVFJLE9BQU8sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFYixRQUFRO1FBRWxELE1BQU1jLGtCQUFrQjtlQUFJLElBQUlDLElBQUlKO1NBQVMsQ0FDM0MxQixHQUFHLENBQUMsQ0FBQytCLGFBQWUsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQ0QsWUFBWWpCLG9CQUN2RFIsTUFBTSxDQUFDLENBQUMyQixNQUFRQSxPQUFPO1FBRXpCLE1BQU1DLFVBQVVMLGdCQUFnQnZCLE1BQU0sQ0FDckMsQ0FBQzJCLE1BQXVEQSxJQUFJQyxPQUFPO1FBR3BFLElBQUlBLFFBQVFDLE1BQU0sR0FBRyxHQUFHO1lBQ3ZCLE1BQU1DLFFBQVFGLFFBQVFsQyxHQUFHLENBQUMsQ0FBQ2lDLE1BQVFBLElBQUkvQixJQUFJLEVBQUVtQyxJQUFJLENBQUM7WUFDbEQsTUFBTSxJQUFJQyxrQkFBVSxDQUFDLENBQUMsNkJBQTZCLEVBQUV6QixRQUFRWCxJQUFJLENBQUMsR0FBRyxFQUFFa0MsT0FBTztRQUMvRTtRQUVBLE1BQU1HLFdBQVdWLGdCQUFnQnZCLE1BQU0sQ0FDdEMsQ0FBQzJCLE1BQXdELENBQUNBLElBQUlDLE9BQU87UUFHdEUsTUFBTXhELGVBQWVMLE9BQU9DLFdBQVcsQ0FDdENpRSxTQUNFakMsTUFBTSxDQUFDLENBQUMyQixNQUFRLENBQUNBLElBQUl0QixLQUFLLEVBQzFCWCxHQUFHLENBQW1CLENBQUNpQyxNQUFRO2dCQUFDQSxJQUFJL0IsSUFBSTtnQkFBRStCLElBQUk5QixPQUFPO2FBQUM7UUFHekQsTUFBTXRCLGtCQUFrQlIsT0FBT0MsV0FBVyxDQUN6Q2lFLFNBQ0VqQyxNQUFNLENBQUMsQ0FBQzJCLE1BQVFBLElBQUl0QixLQUFLLEVBQ3pCWCxHQUFHLENBQW1CLENBQUNpQyxNQUFRO2dCQUFDQSxJQUFJL0IsSUFBSTtnQkFBRStCLElBQUk5QixPQUFPO2FBQUM7UUFHekQsT0FBTztZQUFFekI7WUFBY0c7WUFBaUJrQztRQUFTO0lBQ2xEO0lBRVFpQixrQkFDUFEsVUFBa0IsRUFDbEIxQixpQkFBdUMsRUFDTjtRQUNqQyxJQUFJMEIsV0FBV0MsVUFBVSxDQUFDLFFBQVFELFdBQVdDLFVBQVUsQ0FBQyxVQUFVO1lBQ2pFO1FBQ0Q7UUFFQSxNQUFNQyxtQkFBbUJGLFdBQVdHLEtBQUssQ0FBQztRQUMxQyxNQUFNQyxjQUFjRixrQkFBa0IsQ0FBQyxFQUFFO1FBRXpDLElBQUlFLGVBQWUsUUFBUUMsdUJBQWdCLENBQUNDLFFBQVEsQ0FBQ0YsY0FBYztZQUNsRTtRQUNEO1FBRUEsTUFBTUcsUUFBUWpDLGtCQUFrQmtDLEdBQUcsQ0FBQ0o7UUFFcEMsSUFBSUcsU0FBUyxNQUFNO1lBQ2xCLE9BQU87Z0JBQ043QyxNQUFNMEM7Z0JBQ056QyxTQUFTOEM7Z0JBQ1RDLFVBQVVEO2dCQUNWZixTQUFTO2dCQUNUdkIsT0FBTztZQUNSO1FBQ0Q7UUFFQSxPQUFPO1lBQ05ULE1BQU0wQztZQUNOekMsU0FBUzRDLE1BQU01QyxPQUFPLElBQUk7WUFDMUIrQyxVQUFVSCxNQUFNM0MsVUFBVSxJQUFJO1lBQzlCOEIsU0FBUztZQUNUdkIsT0FBT29DLE1BQU1wQyxLQUFLLElBQUk7UUFDdkI7SUFDRDtJQUVBLE1BQWNjLGVBQ2JELElBQVksRUFDb0Q7UUFDaEUsTUFBTTJCLFdBQVcsTUFBTUMsTUFBRSxDQUFDQyxRQUFRLENBQUM3QixLQUFLOEIsUUFBUTtRQUNoRCxNQUFNQyxTQUFTQyxNQUFNQyxJQUFJLENBQUMsTUFBTUMsSUFBQUEsMEJBQVksRUFBQ1A7UUFFN0MsTUFBTXpCLFVBQW9CLEVBQUU7UUFDNUIsTUFBTVgsV0FBZ0MsRUFBRTtRQUV4QyxLQUFLLE1BQU00QyxRQUFRSixPQUFRO1lBQzFCLElBQUlJLEtBQUtDLGVBQWUsQ0FBQ0MsS0FBSyxJQUFJLE1BQU07Z0JBQ3ZDbkMsUUFBUW9DLElBQUksQ0FBQ0gsS0FBS0MsZUFBZSxDQUFDQyxLQUFLO1lBQ3hDLE9BQU8sSUFBSUYsS0FBS0ksZUFBZSxFQUFFO2dCQUNoQyxNQUFNQyxPQUFPYixTQUFTYyxTQUFTLENBQUMsR0FBR04sS0FBS08sVUFBVSxFQUFFQyxLQUFLLENBQUMsTUFBTWhDLE1BQU07Z0JBQ3RFcEIsU0FBUytDLElBQUksQ0FBQztvQkFDYnRDLE1BQU1BLEtBQUs4QixRQUFRO29CQUNuQlU7b0JBQ0FJLFNBQVMsQ0FBQyw0Q0FBNEMsRUFBRVQsS0FBS0MsZUFBZSxDQUFDUyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7Z0JBQ3BIO1lBQ0Q7UUFDRDtRQUVBLE9BQU87WUFBRTNDO1lBQVNYO1FBQVM7SUFDNUI7QUFDRCJ9
|