@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.
Files changed (130) hide show
  1. package/commonjs/src/actions/build.action.js +108 -0
  2. package/commonjs/src/actions/clean.action.js +55 -0
  3. package/commonjs/src/actions/commit.action.js +80 -0
  4. package/commonjs/src/actions/copy.action.js +83 -0
  5. package/commonjs/src/actions/dependency-report.action.js +142 -0
  6. package/commonjs/src/actions/dependency-sync.action.js +100 -0
  7. package/commonjs/src/actions/index.js +30 -0
  8. package/commonjs/src/actions/publish.action.js +156 -0
  9. package/commonjs/src/actions/sync-lock-file.action.js +43 -0
  10. package/commonjs/src/actions/tag.action.js +76 -0
  11. package/commonjs/src/actions/version.action.js +209 -0
  12. package/commonjs/src/actions/watch.action.js +50 -0
  13. package/commonjs/src/commands/build.command.js +49 -0
  14. package/commonjs/src/commands/dependency.command.js +88 -0
  15. package/commonjs/src/commands/forge.command.js +24 -0
  16. package/commonjs/src/commands/index.js +25 -0
  17. package/commonjs/src/commands/publish.command.js +32 -0
  18. package/commonjs/src/commands/tag.command.js +28 -0
  19. package/commonjs/src/commands/version.command.js +36 -0
  20. package/commonjs/src/const.js +81 -0
  21. package/commonjs/src/errors.js +39 -0
  22. package/commonjs/src/extensions/project.extensions.js +66 -0
  23. package/commonjs/src/factories/swc-config.factory.js +98 -0
  24. package/commonjs/src/forge.module.js +109 -0
  25. package/commonjs/src/index.js +22 -0
  26. package/commonjs/src/mixins/caches-outputs.mixin.js +42 -0
  27. package/commonjs/src/mixins/incremental-transform.mixin.js +36 -0
  28. package/commonjs/src/services/dependency-resolver.service.js +172 -0
  29. package/commonjs/src/services/file-writer.service.js +232 -0
  30. package/commonjs/src/services/swc-transpiler.js +176 -0
  31. package/commonjs/src/services/ts-program-host.js +135 -0
  32. package/commonjs/src/services/type-emission-program.js +160 -0
  33. package/commonjs/src/services/type-emitter.js +141 -0
  34. package/commonjs/src/types/build-target.type.js +17 -0
  35. package/commonjs/src/types/configuration.type.js +6 -0
  36. package/commonjs/src/types/dependency.types.js +6 -0
  37. package/commonjs/src/types/swc-config.type.js +17 -0
  38. package/commonjs/src/types/transform-response.model.js +64 -0
  39. package/commonjs/src/types/transformer.type.js +13 -0
  40. package/commonjs/src/types/workspace-config.type.js +6 -0
  41. package/commonjs/src/vitest/forge-build.plugin.js +129 -0
  42. package/commonjs/src/vitest/index.js +13 -0
  43. package/commonjs/src/workspace.config.js +73 -0
  44. package/es6/src/actions/build.action.js +100 -0
  45. package/es6/src/actions/clean.action.js +46 -0
  46. package/es6/src/actions/commit.action.js +71 -0
  47. package/es6/src/actions/copy.action.js +69 -0
  48. package/es6/src/actions/dependency-report.action.js +134 -0
  49. package/es6/src/actions/dependency-sync.action.js +92 -0
  50. package/es6/src/actions/index.js +13 -0
  51. package/es6/src/actions/publish.action.js +147 -0
  52. package/es6/src/actions/sync-lock-file.action.js +33 -0
  53. package/es6/src/actions/tag.action.js +67 -0
  54. package/es6/src/actions/version.action.js +189 -0
  55. package/es6/src/actions/watch.action.js +41 -0
  56. package/es6/src/commands/build.command.js +34 -0
  57. package/es6/src/commands/dependency.command.js +78 -0
  58. package/es6/src/commands/forge.command.js +14 -0
  59. package/es6/src/commands/index.js +8 -0
  60. package/es6/src/commands/publish.command.js +22 -0
  61. package/es6/src/commands/tag.command.js +18 -0
  62. package/es6/src/commands/version.command.js +26 -0
  63. package/es6/src/const.js +60 -0
  64. package/es6/src/errors.js +18 -0
  65. package/es6/src/extensions/project.extensions.js +51 -0
  66. package/es6/src/factories/swc-config.factory.js +83 -0
  67. package/es6/src/forge.module.js +58 -0
  68. package/es6/src/index.js +4 -0
  69. package/es6/src/mixins/caches-outputs.mixin.js +32 -0
  70. package/es6/src/mixins/incremental-transform.mixin.js +26 -0
  71. package/es6/src/services/dependency-resolver.service.js +162 -0
  72. package/es6/src/services/file-writer.service.js +217 -0
  73. package/es6/src/services/swc-transpiler.js +161 -0
  74. package/es6/src/services/ts-program-host.js +120 -0
  75. package/es6/src/services/type-emission-program.js +145 -0
  76. package/es6/src/services/type-emitter.js +134 -0
  77. package/es6/src/types/build-target.type.js +7 -0
  78. package/es6/src/types/configuration.type.js +3 -0
  79. package/es6/src/types/dependency.types.js +3 -0
  80. package/es6/src/types/swc-config.type.js +7 -0
  81. package/es6/src/types/transform-response.model.js +46 -0
  82. package/es6/src/types/transformer.type.js +3 -0
  83. package/es6/src/types/workspace-config.type.js +3 -0
  84. package/es6/src/vitest/forge-build.plugin.js +114 -0
  85. package/es6/src/vitest/index.js +3 -0
  86. package/es6/src/workspace.config.js +49 -0
  87. package/package.json +43 -0
  88. package/types/src/actions/build.action.d.ts +22 -0
  89. package/types/src/actions/clean.action.d.ts +13 -0
  90. package/types/src/actions/commit.action.d.ts +17 -0
  91. package/types/src/actions/copy.action.d.ts +14 -0
  92. package/types/src/actions/dependency-report.action.d.ts +36 -0
  93. package/types/src/actions/dependency-sync.action.d.ts +17 -0
  94. package/types/src/actions/index.d.ts +11 -0
  95. package/types/src/actions/publish.action.d.ts +34 -0
  96. package/types/src/actions/sync-lock-file.action.d.ts +10 -0
  97. package/types/src/actions/tag.action.d.ts +19 -0
  98. package/types/src/actions/version.action.d.ts +35 -0
  99. package/types/src/actions/watch.action.d.ts +14 -0
  100. package/types/src/commands/build.command.d.ts +16 -0
  101. package/types/src/commands/dependency.command.d.ts +5 -0
  102. package/types/src/commands/forge.command.d.ts +6 -0
  103. package/types/src/commands/index.d.ts +6 -0
  104. package/types/src/commands/publish.command.d.ts +6 -0
  105. package/types/src/commands/tag.command.d.ts +6 -0
  106. package/types/src/commands/version.command.d.ts +12 -0
  107. package/types/src/const.d.ts +3 -0
  108. package/types/src/errors.d.ts +4 -0
  109. package/types/src/extensions/project.extensions.d.ts +13 -0
  110. package/types/src/factories/swc-config.factory.d.ts +24 -0
  111. package/types/src/forge.module.d.ts +31 -0
  112. package/types/src/index.d.ts +4 -0
  113. package/types/src/mixins/caches-outputs.mixin.d.ts +7 -0
  114. package/types/src/mixins/incremental-transform.mixin.d.ts +13 -0
  115. package/types/src/services/dependency-resolver.service.d.ts +15 -0
  116. package/types/src/services/file-writer.service.d.ts +20 -0
  117. package/types/src/services/swc-transpiler.d.ts +28 -0
  118. package/types/src/services/ts-program-host.d.ts +22 -0
  119. package/types/src/services/type-emission-program.d.ts +22 -0
  120. package/types/src/services/type-emitter.d.ts +43 -0
  121. package/types/src/types/build-target.type.d.ts +7 -0
  122. package/types/src/types/configuration.type.d.ts +6 -0
  123. package/types/src/types/dependency.types.d.ts +39 -0
  124. package/types/src/types/swc-config.type.d.ts +9 -0
  125. package/types/src/types/transform-response.model.d.ts +54 -0
  126. package/types/src/types/transformer.type.d.ts +37 -0
  127. package/types/src/types/workspace-config.type.d.ts +13 -0
  128. package/types/src/vitest/forge-build.plugin.d.ts +18 -0
  129. package/types/src/vitest/index.d.ts +2 -0
  130. 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+IHtcblx0XHRjb25zdCBjb250ZW50cyA9IGF3YWl0IGlvLnJlYWRGaWxlKGZpbGUuZnVsbFBhdGgpO1xuXHRcdGNvbnN0IHBhcnNlZCA9IEFycmF5LmZyb20oYXdhaXQgcGFyc2VJbXBvcnRzKGNvbnRlbnRzKSk7XG5cblx0XHRjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IHdhcm5pbmdzOiBEZXBlbmRlbmN5V2FybmluZ1tdID0gW107XG5cblx0XHRmb3IgKGNvbnN0IGltcHQgb2YgcGFyc2VkKSB7XG5cdFx0XHRpZiAoaW1wdC5tb2R1bGVTcGVjaWZpZXIudmFsdWUgIT0gbnVsbCkge1xuXHRcdFx0XHRpbXBvcnRzLnB1c2goaW1wdC5tb2R1bGVTcGVjaWZpZXIudmFsdWUpO1xuXHRcdFx0fSBlbHNlIGlmIChpbXB0LmlzRHluYW1pY0ltcG9ydCkge1xuXHRcdFx0XHRjb25zdCBsaW5lID0gY29udGVudHMuc3Vic3RyaW5nKDAsIGltcHQuc3RhcnRJbmRleCkuc3BsaXQoXCJcXG5cIikubGVuZ3RoO1xuXHRcdFx0XHR3YXJuaW5ncy5wdXNoKHtcblx0XHRcdFx0XHRmaWxlOiBmaWxlLmZ1bGxQYXRoLFxuXHRcdFx0XHRcdGxpbmUsXG5cdFx0XHRcdFx0bWVzc2FnZTogYER5bmFtaWMgaW1wb3J0IHdpdGggbm9uLWxpdGVyYWwgc3BlY2lmaWVyIFxcYCR7aW1wdC5tb2R1bGVTcGVjaWZpZXIuY29kZX1cXGAgY2Fubm90IGJlIHN0YXRpY2FsbHkgcmVzb2x2ZWRgLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4geyBpbXBvcnRzLCB3YXJuaW5ncyB9O1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRGVwZW5kZW5jeVJlc29sdmVyIiwiY29tcHV0ZURyaWZ0IiwiY3VycmVudCIsImNvbXB1dGVkIiwic29ydEtleXMiLCJvYmoiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJzb3J0IiwiY3VycmVudERlcHMiLCJkZXBlbmRlbmNpZXMiLCJjb21wdXRlZERlcHMiLCJjdXJyZW50RGV2RGVwcyIsImRldkRlcGVuZGVuY2llcyIsImNvbXB1dGVkRGV2RGVwcyIsImhhc0RyaWZ0IiwiSlNPTiIsInN0cmluZ2lmeSIsIm9yaWdpbmFsIiwidXBkYXRlZCIsImdldFdvcmtzcGFjZVBhY2thZ2VzIiwid29ya3NwYWNlIiwicHJvamVjdHMiLCJwYWNrYWdlSnNvbiIsImdldFBhY2thZ2VKc29uIiwiY2F0Y2giLCJFcnJvciIsInBhY2thZ2VKc29uRGlyZWN0b3J5IiwiaW50ZXJuYWxzIiwiTWFwIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInByb2oiLCJuYW1lIiwidmVyc2lvbiIsImlzSW50ZXJuYWwiLCJwYWNrYWdlcyIsImZpbHRlciIsImtleSIsImhhcyIsInZhbCIsImRldlBhY2thZ2VzIiwiaXNEZXYiLCJjb21wdXRlUHJvamVjdERlcGVuZGVuY2llcyIsInByb2plY3QiLCJ3b3Jrc3BhY2VQYWNrYWdlcyIsIndhcm5pbmdzIiwiZ2V0RGVwZW5kZW5jaWVzIiwicGtnIiwidXBkYXRlZFBhY2thZ2UiLCJ3aXRoRGVwZW5kZW5jaWVzIiwid2l0aERldkRlcGVuZGVuY2llcyIsImZpbGVzIiwiZ2V0QWxsRmlsZXMiLCJyZXN1bHRzIiwiZmlsZSIsImdldEZpbGVJbXBvcnRzIiwiaW1wb3J0cyIsImZsYXRNYXAiLCJyIiwiYWxsRGVwZW5kZW5jaWVzIiwiU2V0IiwiZmlsZUltcG9ydCIsImdldERlcGVuZGVuY3lGcm9tIiwiZGVwIiwibWlzc2luZyIsImxlbmd0aCIsIm5hbWVzIiwiam9pbiIsIkZvcmdlRXJyb3IiLCJyZXNvbHZlZCIsImltcG9ydE5hbWUiLCJzdGFydHNXaXRoIiwicGFja2FnZU5hbWVNYXRjaCIsIm1hdGNoIiwicGFja2FnZU5hbWUiLCJCVUlMVF9JTl9NT0RVTEVTIiwiaW5jbHVkZXMiLCJwYWNrZyIsImdldCIsInVuZGVmaW5lZCIsImludGVybmFsIiwiY29udGVudHMiLCJpbyIsInJlYWRGaWxlIiwiZnVsbFBhdGgiLCJwYXJzZWQiLCJBcnJheSIsImZyb20iLCJwYXJzZUltcG9ydHMiLCJpbXB0IiwibW9kdWxlU3BlY2lmaWVyIiwidmFsdWUiLCJwdXNoIiwiaXNEeW5hbWljSW1wb3J0IiwibGluZSIsInN1YnN0cmluZyIsInN0YXJ0SW5kZXgiLCJzcGxpdCIsIm1lc3NhZ2UiLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7OytCQW9CYUE7OztlQUFBQTs7OzRCQXBCYztvQkFFSzs4QkFDSDt1QkFDSTt3QkFDTjs7Ozs7OztBQWVwQixNQUFNQTtJQUNMQyxhQUFhQyxPQUFvQixFQUFFQyxRQUFxQixFQUFxQjtRQUNuRixNQUFNQyxXQUFXLENBQUNDLE1BQ2pCQyxPQUFPQyxXQUFXLENBQUNELE9BQU9FLE9BQU8sQ0FBQ0gsS0FBS0ksSUFBSTtRQUU1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