@decohere/forge 0.0.1-dev.20 → 0.0.1-dev.20261105.103

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 (181) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +152 -0
  3. package/es6/src/actions/build.action.js +3 -7
  4. package/es6/src/actions/clean.action.js +3 -6
  5. package/es6/src/actions/commit.action.js +3 -6
  6. package/es6/src/actions/copy.action.js +61 -12
  7. package/es6/src/actions/dependency-report.action.js +7 -7
  8. package/es6/src/actions/dependency-sync.action.js +8 -6
  9. package/es6/src/actions/docker.action.js +82 -36
  10. package/es6/src/actions/index.js +3 -2
  11. package/es6/src/actions/link.action.js +2 -5
  12. package/es6/src/actions/package.action.js +219 -0
  13. package/es6/src/actions/paths.action.js +97 -0
  14. package/es6/src/actions/publish.action.js +3 -6
  15. package/es6/src/actions/sync-lock-file.action.js +2 -4
  16. package/es6/src/actions/tag.action.js +5 -9
  17. package/es6/src/actions/typecheck.action.js +52 -0
  18. package/es6/src/actions/unlink.action.js +1 -3
  19. package/es6/src/actions/version.action.js +69 -17
  20. package/es6/src/actions/watch.action.js +2 -5
  21. package/es6/src/commands/build.command.js +4 -3
  22. package/es6/src/commands/dependency.command.js +1 -3
  23. package/es6/src/commands/docker.command.js +2 -4
  24. package/es6/src/commands/forge.command.js +1 -3
  25. package/es6/src/commands/index.js +3 -2
  26. package/es6/src/commands/link.command.js +4 -3
  27. package/es6/src/commands/package.command.js +26 -0
  28. package/es6/src/commands/paths.command.js +14 -0
  29. package/es6/src/commands/publish.command.js +1 -3
  30. package/es6/src/commands/tag.command.js +1 -3
  31. package/es6/src/commands/typecheck.command.js +14 -0
  32. package/es6/src/commands/version.command.js +3 -3
  33. package/es6/src/const.js +0 -2
  34. package/es6/src/create-workspace.js +26 -0
  35. package/es6/src/errors.js +1 -3
  36. package/es6/src/extensions/project.extensions.js +5 -7
  37. package/es6/src/factories/swc-config.factory.js +29 -9
  38. package/es6/src/forge.module.js +15 -20
  39. package/es6/src/index.js +2 -2
  40. package/es6/src/packaging/dependency-pinner.service.js +103 -0
  41. package/es6/src/packaging/deployable.js +21 -0
  42. package/es6/src/packaging/import-graph.service.js +122 -0
  43. package/es6/src/packaging/release-exports.js +80 -0
  44. package/es6/src/packaging/ui-assets.js +49 -0
  45. package/es6/src/semver/index.js +1 -0
  46. package/es6/src/semver/semver.js +75 -0
  47. package/es6/src/services/dependency-resolver.service.js +70 -26
  48. package/es6/src/services/file-writer.service.js +2 -11
  49. package/es6/src/services/incremental-watch.js +18 -0
  50. package/es6/src/services/output-cache.js +29 -0
  51. package/es6/src/services/swc-transpiler.js +85 -99
  52. package/es6/src/services/transpile-cache.js +29 -0
  53. package/es6/src/services/ts-compiler-options.js +39 -0
  54. package/es6/src/services/ts-program-host.js +4 -6
  55. package/es6/src/services/type-emission-program.js +25 -10
  56. package/es6/src/services/type-emitter.js +57 -20
  57. package/es6/src/transpile/index.js +6 -0
  58. package/es6/src/types/build-target.type.js +0 -2
  59. package/es6/src/types/configuration.type.js +0 -2
  60. package/es6/src/types/dependency.types.js +0 -2
  61. package/es6/src/types/swc-config.type.js +0 -2
  62. package/es6/src/types/transform-response.model.js +0 -7
  63. package/es6/src/types/transformer.type.js +0 -2
  64. package/es6/src/types/workspace-config.type.js +0 -2
  65. package/es6/src/vitest/forge-build.plugin.js +27 -43
  66. package/es6/src/vitest/index.js +0 -2
  67. package/es6/src/workspace.config.js +26 -6
  68. package/package.json +21 -10
  69. package/types/src/actions/build.action.d.ts +4 -4
  70. package/types/src/actions/clean.action.d.ts +3 -3
  71. package/types/src/actions/commit.action.d.ts +3 -3
  72. package/types/src/actions/copy.action.d.ts +18 -3
  73. package/types/src/actions/dependency-report.action.d.ts +3 -3
  74. package/types/src/actions/dependency-sync.action.d.ts +3 -3
  75. package/types/src/actions/docker.action.d.ts +14 -3
  76. package/types/src/actions/index.d.ts +3 -0
  77. package/types/src/actions/link.action.d.ts +3 -3
  78. package/types/src/actions/package.action.d.ts +38 -0
  79. package/types/src/actions/paths.action.d.ts +28 -0
  80. package/types/src/actions/publish.action.d.ts +4 -4
  81. package/types/src/actions/sync-lock-file.action.d.ts +2 -2
  82. package/types/src/actions/tag.action.d.ts +3 -3
  83. package/types/src/actions/typecheck.action.d.ts +14 -0
  84. package/types/src/actions/unlink.action.d.ts +2 -2
  85. package/types/src/actions/version.action.d.ts +14 -4
  86. package/types/src/actions/watch.action.d.ts +3 -3
  87. package/types/src/commands/build.command.d.ts +3 -2
  88. package/types/src/commands/dependency.command.d.ts +2 -2
  89. package/types/src/commands/docker.command.d.ts +1 -1
  90. package/types/src/commands/forge.command.d.ts +2 -2
  91. package/types/src/commands/index.d.ts +3 -0
  92. package/types/src/commands/link.command.d.ts +3 -2
  93. package/types/src/commands/package.command.d.ts +11 -0
  94. package/types/src/commands/paths.command.d.ts +6 -0
  95. package/types/src/commands/publish.command.d.ts +1 -1
  96. package/types/src/commands/tag.command.d.ts +1 -1
  97. package/types/src/commands/typecheck.command.d.ts +6 -0
  98. package/types/src/commands/version.command.d.ts +1 -1
  99. package/types/src/create-workspace.d.ts +7 -0
  100. package/types/src/errors.d.ts +1 -1
  101. package/types/src/extensions/project.extensions.d.ts +2 -2
  102. package/types/src/factories/swc-config.factory.d.ts +3 -2
  103. package/types/src/forge.module.d.ts +10 -4
  104. package/types/src/index.d.ts +2 -0
  105. package/types/src/packaging/dependency-pinner.service.d.ts +20 -0
  106. package/types/src/packaging/deployable.d.ts +17 -0
  107. package/types/src/packaging/import-graph.service.d.ts +33 -0
  108. package/types/src/packaging/release-exports.d.ts +18 -0
  109. package/types/src/packaging/ui-assets.d.ts +21 -0
  110. package/types/src/semver/index.d.ts +1 -0
  111. package/types/src/semver/semver.d.ts +20 -0
  112. package/types/src/services/dependency-resolver.service.d.ts +8 -1
  113. package/types/src/services/file-writer.service.d.ts +1 -2
  114. package/types/src/services/incremental-watch.d.ts +13 -0
  115. package/types/src/services/output-cache.d.ts +10 -0
  116. package/types/src/services/swc-transpiler.d.ts +28 -15
  117. package/types/src/services/transpile-cache.d.ts +17 -0
  118. package/types/src/services/ts-compiler-options.d.ts +8 -0
  119. package/types/src/services/ts-program-host.d.ts +2 -2
  120. package/types/src/services/type-emission-program.d.ts +10 -3
  121. package/types/src/services/type-emitter.d.ts +21 -8
  122. package/types/src/transpile/index.d.ts +6 -0
  123. package/types/src/types/configuration.type.d.ts +6 -1
  124. package/types/src/types/dependency.types.d.ts +8 -9
  125. package/types/src/types/swc-config.type.d.ts +7 -1
  126. package/types/src/types/transform-response.model.d.ts +2 -7
  127. package/types/src/types/transformer.type.d.ts +3 -12
  128. package/types/src/types/workspace-config.type.d.ts +3 -3
  129. package/types/src/vitest/forge-build.plugin.d.ts +0 -2
  130. package/commonjs/src/actions/build.action.js +0 -116
  131. package/commonjs/src/actions/clean.action.js +0 -55
  132. package/commonjs/src/actions/commit.action.js +0 -87
  133. package/commonjs/src/actions/copy.action.js +0 -83
  134. package/commonjs/src/actions/dependency-report.action.js +0 -142
  135. package/commonjs/src/actions/dependency-sync.action.js +0 -100
  136. package/commonjs/src/actions/docker.action.js +0 -162
  137. package/commonjs/src/actions/index.js +0 -33
  138. package/commonjs/src/actions/link.action.js +0 -156
  139. package/commonjs/src/actions/publish.action.js +0 -156
  140. package/commonjs/src/actions/sync-lock-file.action.js +0 -43
  141. package/commonjs/src/actions/tag.action.js +0 -76
  142. package/commonjs/src/actions/unlink.action.js +0 -76
  143. package/commonjs/src/actions/version.action.js +0 -209
  144. package/commonjs/src/actions/watch.action.js +0 -51
  145. package/commonjs/src/commands/build.command.js +0 -49
  146. package/commonjs/src/commands/dependency.command.js +0 -88
  147. package/commonjs/src/commands/docker.command.js +0 -28
  148. package/commonjs/src/commands/forge.command.js +0 -24
  149. package/commonjs/src/commands/index.js +0 -27
  150. package/commonjs/src/commands/link.command.js +0 -89
  151. package/commonjs/src/commands/publish.command.js +0 -32
  152. package/commonjs/src/commands/tag.command.js +0 -28
  153. package/commonjs/src/commands/version.command.js +0 -36
  154. package/commonjs/src/const.js +0 -81
  155. package/commonjs/src/errors.js +0 -39
  156. package/commonjs/src/extensions/project.extensions.js +0 -94
  157. package/commonjs/src/factories/swc-config.factory.js +0 -98
  158. package/commonjs/src/forge.module.js +0 -115
  159. package/commonjs/src/index.js +0 -46
  160. package/commonjs/src/mixins/caches-outputs.mixin.js +0 -44
  161. package/commonjs/src/mixins/incremental-transform.mixin.js +0 -36
  162. package/commonjs/src/services/dependency-resolver.service.js +0 -172
  163. package/commonjs/src/services/file-writer.service.js +0 -232
  164. package/commonjs/src/services/swc-transpiler.js +0 -235
  165. package/commonjs/src/services/ts-program-host.js +0 -135
  166. package/commonjs/src/services/type-emission-program.js +0 -160
  167. package/commonjs/src/services/type-emitter.js +0 -141
  168. package/commonjs/src/types/build-target.type.js +0 -17
  169. package/commonjs/src/types/configuration.type.js +0 -6
  170. package/commonjs/src/types/dependency.types.js +0 -6
  171. package/commonjs/src/types/swc-config.type.js +0 -17
  172. package/commonjs/src/types/transform-response.model.js +0 -65
  173. package/commonjs/src/types/transformer.type.js +0 -13
  174. package/commonjs/src/types/workspace-config.type.js +0 -6
  175. package/commonjs/src/vitest/forge-build.plugin.js +0 -129
  176. package/commonjs/src/vitest/index.js +0 -13
  177. package/commonjs/src/workspace.config.js +0 -75
  178. package/es6/src/mixins/caches-outputs.mixin.js +0 -34
  179. package/es6/src/mixins/incremental-transform.mixin.js +0 -26
  180. package/types/src/mixins/caches-outputs.mixin.d.ts +0 -7
  181. package/types/src/mixins/incremental-transform.mixin.d.ts +0 -13
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "Copy", {
6
- enumerable: true,
7
- get: function() {
8
- return Copy;
9
- }
10
- });
11
- const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
- const _decorators = require("@decohere/crucible/decorators");
13
- const _mesh = require("@decohere/mesh");
14
- const _cli = require("@decohere/nexus/cli");
15
- const _io = require("@decohere/nexus/io");
16
- const _system = require("@decohere/nexus/system");
17
- const _scribe = require("@decohere/scribe");
18
- function _interop_require_default(obj) {
19
- return obj && obj.__esModule ? obj : {
20
- default: obj
21
- };
22
- }
23
- function _ts_decorate(decorators, target, key, desc) {
24
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
25
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
26
- 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;
27
- return c > 3 && r && Object.defineProperty(target, key, r), r;
28
- }
29
- function _ts_metadata(k, v) {
30
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
31
- }
32
- const COPY_RETRY_ATTEMPTS = 3;
33
- const COPY_RETRY_DELAY_MS = 25;
34
- class Copy {
35
- workspace;
36
- #logger = _scribe.scribe.logger(Copy.name);
37
- constructor(workspace){
38
- this.workspace = workspace;
39
- }
40
- run = async (options)=>{
41
- if (!options.copy) {
42
- this.#logger.info("Skipping copy");
43
- return _cli.ActionResponse.Skipped(Copy.name);
44
- }
45
- await Promise.all(this.workspace.getProjects(options.configuration).map(async (proj)=>{
46
- const outDir = proj.getOutDir();
47
- const pattern = proj.copyFiles;
48
- const files = await _io.io.findFiles(pattern, {
49
- cwd: proj.projectDirectory
50
- });
51
- await Promise.all(files.map((file)=>this.copyFileToOut(file, outDir)));
52
- }));
53
- return _cli.ActionResponse.Success(Copy.name);
54
- };
55
- async copyFileToOut(file, outDir) {
56
- const dest = _nodepath.default.join(outDir, file.relativePath);
57
- await _io.io.copyFile(file.fullPath, dest, {
58
- mkdir: true
59
- });
60
- this.#logger.trace(`Copied ${file.fullPath} -> ${dest}`);
61
- }
62
- }
63
- _ts_decorate([
64
- (0, _system.retry)({
65
- attempts: COPY_RETRY_ATTEMPTS,
66
- delayMs: COPY_RETRY_DELAY_MS
67
- }),
68
- _ts_metadata("design:type", Function),
69
- _ts_metadata("design:paramtypes", [
70
- typeof FileEx === "undefined" ? Object : FileEx,
71
- String
72
- ]),
73
- _ts_metadata("design:returntype", Promise)
74
- ], Copy.prototype, "copyFileToOut", null);
75
- Copy = _ts_decorate([
76
- (0, _decorators.injectable)(),
77
- _ts_metadata("design:type", Function),
78
- _ts_metadata("design:paramtypes", [
79
- typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
80
- ])
81
- ], Copy);
82
-
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2NvcHkuYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tIFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIjtcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL3VzZUltcG9ydFR5cGU6IDxEST5cbmltcG9ydCB7IFdvcmtzcGFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgdHlwZSBGaWxlRXgsIGlvIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pb1wiO1xuaW1wb3J0IHsgcmV0cnkgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL3N5c3RlbVwiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcblxuY29uc3QgQ09QWV9SRVRSWV9BVFRFTVBUUyA9IDM7XG5jb25zdCBDT1BZX1JFVFJZX0RFTEFZX01TID0gMjU7XG5cbmV4cG9ydCB0eXBlIENvcHlPcHRpb25zID0ge1xuXHRjb3B5OiBib29sZWFuO1xuXHRjb25maWd1cmF0aW9uOiBzdHJpbmc7XG59O1xuXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29weSBpbXBsZW1lbnRzIEFjdGlvbjxDb3B5T3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihDb3B5Lm5hbWUpO1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSkge31cblxuXHRwdWJsaWMgcnVuID0gYXN5bmMgKG9wdGlvbnM6IENvcHlPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZT4gPT4ge1xuXHRcdGlmICghb3B0aW9ucy5jb3B5KSB7XG5cdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhcIlNraXBwaW5nIGNvcHlcIik7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU2tpcHBlZChDb3B5Lm5hbWUpO1xuXHRcdH1cblxuXHRcdGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0dGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKS5tYXAoYXN5bmMgKHByb2opID0+IHtcblx0XHRcdFx0Y29uc3Qgb3V0RGlyID0gcHJvai5nZXRPdXREaXIoKTtcblx0XHRcdFx0Y29uc3QgcGF0dGVybiA9IHByb2ouY29weUZpbGVzO1xuXHRcdFx0XHRjb25zdCBmaWxlcyA9IGF3YWl0IGlvLmZpbmRGaWxlcyhwYXR0ZXJuLCB7IGN3ZDogcHJvai5wcm9qZWN0RGlyZWN0b3J5IH0pO1xuXHRcdFx0XHRhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoKGZpbGUpID0+IHRoaXMuY29weUZpbGVUb091dChmaWxlLCBvdXREaXIpKSk7XG5cdFx0XHR9KSxcblx0XHQpO1xuXG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoQ29weS5uYW1lKTtcblx0fTtcblxuXHRAcmV0cnkoeyBhdHRlbXB0czogQ09QWV9SRVRSWV9BVFRFTVBUUywgZGVsYXlNczogQ09QWV9SRVRSWV9ERUxBWV9NUyB9KVxuXHRwcml2YXRlIGFzeW5jIGNvcHlGaWxlVG9PdXQoZmlsZTogRmlsZUV4LCBvdXREaXI6IHN0cmluZykge1xuXHRcdGNvbnN0IGRlc3QgPSBwYXRoLmpvaW4ob3V0RGlyLCBmaWxlLnJlbGF0aXZlUGF0aCk7XG5cdFx0YXdhaXQgaW8uY29weUZpbGUoZmlsZS5mdWxsUGF0aCwgZGVzdCwgeyBta2RpcjogdHJ1ZSB9KTtcblx0XHR0aGlzLiNsb2dnZXIudHJhY2UoYENvcGllZCAke2ZpbGUuZnVsbFBhdGh9IC0+ICR7ZGVzdH1gKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkNvcHkiLCJDT1BZX1JFVFJZX0FUVEVNUFRTIiwiQ09QWV9SRVRSWV9ERUxBWV9NUyIsInNjcmliZSIsImxvZ2dlciIsIm5hbWUiLCJ3b3Jrc3BhY2UiLCJydW4iLCJvcHRpb25zIiwiY29weSIsImluZm8iLCJBY3Rpb25SZXNwb25zZSIsIlNraXBwZWQiLCJQcm9taXNlIiwiYWxsIiwiZ2V0UHJvamVjdHMiLCJjb25maWd1cmF0aW9uIiwibWFwIiwicHJvaiIsIm91dERpciIsImdldE91dERpciIsInBhdHRlcm4iLCJjb3B5RmlsZXMiLCJmaWxlcyIsImlvIiwiZmluZEZpbGVzIiwiY3dkIiwicHJvamVjdERpcmVjdG9yeSIsImZpbGUiLCJjb3B5RmlsZVRvT3V0IiwiU3VjY2VzcyIsImRlc3QiLCJwYXRoIiwiam9pbiIsInJlbGF0aXZlUGF0aCIsImNvcHlGaWxlIiwiZnVsbFBhdGgiLCJta2RpciIsInRyYWNlIiwiYXR0ZW1wdHMiLCJkZWxheU1zIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1CYUE7OztlQUFBQTs7O2lFQW5CSTs0QkFDVTtzQkFFRDtxQkFFSztvQkFDQzt3QkFDVjt3QkFDQzs7Ozs7Ozs7Ozs7Ozs7O0FBRXZCLE1BQU1DLHNCQUFzQjtBQUM1QixNQUFNQyxzQkFBc0I7QUFRckIsTUFBTUY7O0lBQ1osQ0FBQSxNQUFPLEdBQUdHLGNBQU0sQ0FBQ0MsTUFBTSxDQUFDSixLQUFLSyxJQUFJLEVBQUU7SUFDbkMsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRXBEQyxNQUFNLE9BQU9DO1FBQ25CLElBQUksQ0FBQ0EsUUFBUUMsSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ0MsSUFBSSxDQUFDO1lBQ2xCLE9BQU9DLG1CQUFjLENBQUNDLE9BQU8sQ0FBQ1osS0FBS0ssSUFBSTtRQUN4QztRQUVBLE1BQU1RLFFBQVFDLEdBQUcsQ0FDaEIsSUFBSSxDQUFDUixTQUFTLENBQUNTLFdBQVcsQ0FBQ1AsUUFBUVEsYUFBYSxFQUFFQyxHQUFHLENBQUMsT0FBT0M7WUFDNUQsTUFBTUMsU0FBU0QsS0FBS0UsU0FBUztZQUM3QixNQUFNQyxVQUFVSCxLQUFLSSxTQUFTO1lBQzlCLE1BQU1DLFFBQVEsTUFBTUMsTUFBRSxDQUFDQyxTQUFTLENBQUNKLFNBQVM7Z0JBQUVLLEtBQUtSLEtBQUtTLGdCQUFnQjtZQUFDO1lBQ3ZFLE1BQU1kLFFBQVFDLEdBQUcsQ0FBQ1MsTUFBTU4sR0FBRyxDQUFDLENBQUNXLE9BQVMsSUFBSSxDQUFDQyxhQUFhLENBQUNELE1BQU1UO1FBQ2hFO1FBR0QsT0FBT1IsbUJBQWMsQ0FBQ21CLE9BQU8sQ0FBQzlCLEtBQUtLLElBQUk7SUFDeEMsRUFBRTtJQUVGLE1BQ2N3QixjQUFjRCxJQUFZLEVBQUVULE1BQWMsRUFBRTtRQUN6RCxNQUFNWSxPQUFPQyxpQkFBSSxDQUFDQyxJQUFJLENBQUNkLFFBQVFTLEtBQUtNLFlBQVk7UUFDaEQsTUFBTVYsTUFBRSxDQUFDVyxRQUFRLENBQUNQLEtBQUtRLFFBQVEsRUFBRUwsTUFBTTtZQUFFTSxPQUFPO1FBQUs7UUFDckQsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUVWLEtBQUtRLFFBQVEsQ0FBQyxJQUFJLEVBQUVMLE1BQU07SUFDeEQ7QUFDRDs7O1FBTlVRLFVBQVV0QztRQUFxQnVDLFNBQVN0QyJ9
@@ -1,142 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "ReportDependencies", {
6
- enumerable: true,
7
- get: function() {
8
- return ReportDependencies;
9
- }
10
- });
11
- const _decorators = require("@decohere/crucible/decorators");
12
- const _mesh = require("@decohere/mesh");
13
- const _cli = require("@decohere/nexus/cli");
14
- const _io = require("@decohere/nexus/io");
15
- const _scribe = require("@decohere/scribe");
16
- const _errors = require("../errors.js");
17
- const _dependencyresolverservice = require("../services/dependency-resolver.service.js");
18
- function _ts_decorate(decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- 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;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- }
24
- function _ts_metadata(k, v) {
25
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
26
- }
27
- class ReportDependencies {
28
- workspace;
29
- resolver;
30
- #logger = _scribe.scribe.logger(ReportDependencies.name);
31
- constructor(workspace, resolver){
32
- this.workspace = workspace;
33
- this.resolver = resolver;
34
- }
35
- async run(options) {
36
- const { configuration, file, failOnDrift } = options;
37
- try {
38
- const projectDeps = await this.analyzeWorkspace(this.workspace, configuration);
39
- this.logReport(projectDeps);
40
- if (file) {
41
- await this.writeReportFile(file, projectDeps);
42
- }
43
- if (failOnDrift) {
44
- const driftReport = this.buildDriftReport(projectDeps);
45
- this.throwOnDrift(driftReport);
46
- }
47
- return _cli.ActionResponse.Success(ReportDependencies.name, projectDeps);
48
- } catch (error) {
49
- const message = (0, _errors.formatUnknownError)(error);
50
- return _cli.ActionResponse.Error(ReportDependencies.name, message);
51
- }
52
- }
53
- async analyzeWorkspace(workspace, configuration) {
54
- const projects = workspace.getProjects(configuration);
55
- const workspacePackages = await this.resolver.getWorkspacePackages(this.workspace, projects);
56
- return Promise.all(projects.map((project)=>this.analyzeProject(project, workspacePackages)));
57
- }
58
- async analyzeProject(project, workspacePackages) {
59
- const { entry, currentPackage, updatedPackage, warnings } = await this.getDependencies(project, workspacePackages);
60
- const drift = this.resolver.computeDrift(currentPackage, updatedPackage);
61
- return {
62
- projectName: project.name,
63
- entry,
64
- drift,
65
- warnings
66
- };
67
- }
68
- async getDependencies(project, workspacePackages) {
69
- const currentPackage = await project.getPackageJson();
70
- const { updatedPackage, warnings } = await this.resolver.computeProjectDependencies(project, workspacePackages);
71
- const entry = {
72
- projectName: project.name,
73
- dependencies: Object.keys(updatedPackage.dependencies ?? {}),
74
- devDependencies: Object.keys(updatedPackage.devDependencies ?? {})
75
- };
76
- return {
77
- entry,
78
- currentPackage,
79
- updatedPackage,
80
- warnings
81
- };
82
- }
83
- buildDriftReport(reports) {
84
- return Object.fromEntries(reports.filter((r)=>r.drift != null).map((r)=>[
85
- r.projectName,
86
- r.drift
87
- ]));
88
- }
89
- throwOnDrift(driftReport) {
90
- const driftedProjects = Object.keys(driftReport);
91
- if (driftedProjects.length > 0) {
92
- for (const [projectName, drift] of Object.entries(driftReport)){
93
- this.#logger.warn(`Dependency drift in '${projectName}'`, {
94
- original: drift.original,
95
- updated: drift.updated
96
- });
97
- }
98
- throw new Error(`Dependency drift detected in: ${driftedProjects.join(", ")}`);
99
- }
100
- }
101
- logReport(reports) {
102
- for (const { entry, warnings } of reports){
103
- this.#logger.info(`${entry.projectName}:`);
104
- if (entry.dependencies.length) {
105
- this.#logger.info(` dependencies: ${entry.dependencies.join(", ")}`);
106
- }
107
- if (entry.devDependencies.length) {
108
- this.#logger.info(` devDependencies: ${entry.devDependencies.join(", ")}`);
109
- }
110
- for (const warning of warnings){
111
- this.#logger.warn(` warning: ${warning.file}:${warning.line}: ${warning.message}`);
112
- }
113
- }
114
- }
115
- async writeReportFile(file, reports) {
116
- const lines = reports.flatMap(({ entry, warnings })=>[
117
- `${entry.projectName}:`,
118
- ...entry.dependencies.length ? [
119
- ` dependencies: ${entry.dependencies.join(", ")}`
120
- ] : [],
121
- ...entry.devDependencies.length ? [
122
- ` devDependencies: ${entry.devDependencies.join(", ")}`
123
- ] : [],
124
- ...warnings.map((w)=>` warning: ${w.file}:${w.line}: ${w.message}`),
125
- ""
126
- ]);
127
- await _io.io.writeFile(file, lines.join("\n"), {
128
- mkdir: true
129
- });
130
- this.#logger.info(`Report written to ${file}`);
131
- }
132
- }
133
- ReportDependencies = _ts_decorate([
134
- (0, _decorators.injectable)(),
135
- _ts_metadata("design:type", Function),
136
- _ts_metadata("design:paramtypes", [
137
- typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace,
138
- typeof _dependencyresolverservice.DependencyResolver === "undefined" ? Object : _dependencyresolverservice.DependencyResolver
139
- ])
140
- ], ReportDependencies);
141
-
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2RlcGVuZGVuY3ktcmVwb3J0LmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VKc29uLCBQcm9qZWN0IH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IGlvIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pb1wiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IGZvcm1hdFVua25vd25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL3VzZUltcG9ydFR5cGU6IDxEST5cbmltcG9ydCB7IERlcGVuZGVuY3lSZXNvbHZlciB9IGZyb20gXCIuLi9zZXJ2aWNlcy9kZXBlbmRlbmN5LXJlc29sdmVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB0eXBlIHsgRGVwZW5kZW5jeVdhcm5pbmcsIERyaWZ0RW50cnksIFBhY2thZ2UgfSBmcm9tIFwiLi4vdHlwZXMvZGVwZW5kZW5jeS50eXBlcy5qc1wiO1xuXG50eXBlIFJlcG9ydE9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0ZmlsZT86IHN0cmluZztcblx0ZmFpbE9uRHJpZnQ/OiBib29sZWFuO1xufTtcblxudHlwZSBSZXBvcnRFbnRyeSA9IHtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcblx0ZGVwZW5kZW5jaWVzOiBzdHJpbmdbXTtcblx0ZGV2RGVwZW5kZW5jaWVzOiBzdHJpbmdbXTtcbn07XG5cbnR5cGUgRHJpZnRSZXBvcnQgPSBSZWNvcmQ8c3RyaW5nLCBEcmlmdEVudHJ5PjtcblxudHlwZSBQcm9qZWN0UmVwb3J0ID0ge1xuXHRwcm9qZWN0TmFtZTogc3RyaW5nO1xuXHRlbnRyeTogUmVwb3J0RW50cnk7XG5cdGRyaWZ0OiBEcmlmdEVudHJ5IHwgbnVsbDtcblx0d2FybmluZ3M6IERlcGVuZGVuY3lXYXJuaW5nW107XG59O1xuXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVwb3J0RGVwZW5kZW5jaWVzIGltcGxlbWVudHMgQWN0aW9uPFJlcG9ydE9wdGlvbnM+IHtcblx0I2xvZ2dlciA9IHNjcmliZS5sb2dnZXIoUmVwb3J0RGVwZW5kZW5jaWVzLm5hbWUpO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZXI6IERlcGVuZGVuY3lSZXNvbHZlcixcblx0KSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogUmVwb3J0T3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U8UHJvamVjdFJlcG9ydD4+IHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb24sIGZpbGUsIGZhaWxPbkRyaWZ0IH0gPSBvcHRpb25zO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHByb2plY3REZXBzID0gYXdhaXQgdGhpcy5hbmFseXplV29ya3NwYWNlKHRoaXMud29ya3NwYWNlLCBjb25maWd1cmF0aW9uKTtcblx0XHRcdHRoaXMubG9nUmVwb3J0KHByb2plY3REZXBzKTtcblxuXHRcdFx0aWYgKGZpbGUpIHtcblx0XHRcdFx0YXdhaXQgdGhpcy53cml0ZVJlcG9ydEZpbGUoZmlsZSwgcHJvamVjdERlcHMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZmFpbE9uRHJpZnQpIHtcblx0XHRcdFx0Y29uc3QgZHJpZnRSZXBvcnQgPSB0aGlzLmJ1aWxkRHJpZnRSZXBvcnQocHJvamVjdERlcHMpO1xuXHRcdFx0XHR0aGlzLnRocm93T25EcmlmdChkcmlmdFJlcG9ydCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5TdWNjZXNzKFJlcG9ydERlcGVuZGVuY2llcy5uYW1lLCBwcm9qZWN0RGVwcyk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBmb3JtYXRVbmtub3duRXJyb3IoZXJyb3IpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLkVycm9yPFByb2plY3RSZXBvcnQ+KFJlcG9ydERlcGVuZGVuY2llcy5uYW1lLCBtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGFuYWx5emVXb3Jrc3BhY2UoXG5cdFx0d29ya3NwYWNlOiBXb3Jrc3BhY2UsXG5cdFx0Y29uZmlndXJhdGlvbjogc3RyaW5nLFxuXHQpOiBQcm9taXNlPFByb2plY3RSZXBvcnRbXT4ge1xuXHRcdGNvbnN0IHByb2plY3RzID0gd29ya3NwYWNlLmdldFByb2plY3RzKGNvbmZpZ3VyYXRpb24pO1xuXHRcdGNvbnN0IHdvcmtzcGFjZVBhY2thZ2VzID0gYXdhaXQgdGhpcy5yZXNvbHZlci5nZXRXb3Jrc3BhY2VQYWNrYWdlcyhcblx0XHRcdHRoaXMud29ya3NwYWNlLFxuXHRcdFx0cHJvamVjdHMsXG5cdFx0KTtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoXG5cdFx0XHRwcm9qZWN0cy5tYXAoKHByb2plY3QpID0+IHRoaXMuYW5hbHl6ZVByb2plY3QocHJvamVjdCwgd29ya3NwYWNlUGFja2FnZXMpKSxcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBhbmFseXplUHJvamVjdChcblx0XHRwcm9qZWN0OiBQcm9qZWN0LFxuXHRcdHdvcmtzcGFjZVBhY2thZ2VzOiBNYXA8c3RyaW5nLCBQYWNrYWdlPixcblx0KTogUHJvbWlzZTxQcm9qZWN0UmVwb3J0PiB7XG5cdFx0Y29uc3QgeyBlbnRyeSwgY3VycmVudFBhY2thZ2UsIHVwZGF0ZWRQYWNrYWdlLCB3YXJuaW5ncyB9ID0gYXdhaXQgdGhpcy5nZXREZXBlbmRlbmNpZXMoXG5cdFx0XHRwcm9qZWN0LFxuXHRcdFx0d29ya3NwYWNlUGFja2FnZXMsXG5cdFx0KTtcblx0XHRjb25zdCBkcmlmdCA9IHRoaXMucmVzb2x2ZXIuY29tcHV0ZURyaWZ0KGN1cnJlbnRQYWNrYWdlLCB1cGRhdGVkUGFja2FnZSk7XG5cdFx0cmV0dXJuIHsgcHJvamVjdE5hbWU6IHByb2plY3QubmFtZSwgZW50cnksIGRyaWZ0LCB3YXJuaW5ncyB9O1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBnZXREZXBlbmRlbmNpZXMoXG5cdFx0cHJvamVjdDogUHJvamVjdCxcblx0XHR3b3Jrc3BhY2VQYWNrYWdlczogTWFwPHN0cmluZywgUGFja2FnZT4sXG5cdCk6IFByb21pc2U8e1xuXHRcdGVudHJ5OiBSZXBvcnRFbnRyeTtcblx0XHRjdXJyZW50UGFja2FnZTogUGFja2FnZUpzb247XG5cdFx0dXBkYXRlZFBhY2thZ2U6IFBhY2thZ2VKc29uO1xuXHRcdHdhcm5pbmdzOiBEZXBlbmRlbmN5V2FybmluZ1tdO1xuXHR9PiB7XG5cdFx0Y29uc3QgY3VycmVudFBhY2thZ2UgPSBhd2FpdCBwcm9qZWN0LmdldFBhY2thZ2VKc29uKCk7XG5cdFx0Y29uc3QgeyB1cGRhdGVkUGFja2FnZSwgd2FybmluZ3MgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZXIuY29tcHV0ZVByb2plY3REZXBlbmRlbmNpZXMoXG5cdFx0XHRwcm9qZWN0LFxuXHRcdFx0d29ya3NwYWNlUGFja2FnZXMsXG5cdFx0KTtcblxuXHRcdGNvbnN0IGVudHJ5OiBSZXBvcnRFbnRyeSA9IHtcblx0XHRcdHByb2plY3ROYW1lOiBwcm9qZWN0Lm5hbWUsXG5cdFx0XHRkZXBlbmRlbmNpZXM6IE9iamVjdC5rZXlzKHVwZGF0ZWRQYWNrYWdlLmRlcGVuZGVuY2llcyA/PyB7fSksXG5cdFx0XHRkZXZEZXBlbmRlbmNpZXM6IE9iamVjdC5rZXlzKHVwZGF0ZWRQYWNrYWdlLmRldkRlcGVuZGVuY2llcyA/PyB7fSksXG5cdFx0fTtcblxuXHRcdHJldHVybiB7IGVudHJ5LCBjdXJyZW50UGFja2FnZSwgdXBkYXRlZFBhY2thZ2UsIHdhcm5pbmdzIH07XG5cdH1cblxuXHRwcml2YXRlIGJ1aWxkRHJpZnRSZXBvcnQocmVwb3J0czogUHJvamVjdFJlcG9ydFtdKTogRHJpZnRSZXBvcnQge1xuXHRcdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRyZXBvcnRzXG5cdFx0XHRcdC5maWx0ZXIoKHIpOiByIGlzIFByb2plY3RSZXBvcnQgJiB7IGRyaWZ0OiBEcmlmdEVudHJ5IH0gPT4gci5kcmlmdCAhPSBudWxsKVxuXHRcdFx0XHQubWFwKChyKSA9PiBbci5wcm9qZWN0TmFtZSwgci5kcmlmdF0pLFxuXHRcdCk7XG5cdH1cblxuXHRwcml2YXRlIHRocm93T25EcmlmdChkcmlmdFJlcG9ydDogRHJpZnRSZXBvcnQpOiB2b2lkIHtcblx0XHRjb25zdCBkcmlmdGVkUHJvamVjdHMgPSBPYmplY3Qua2V5cyhkcmlmdFJlcG9ydCk7XG5cdFx0aWYgKGRyaWZ0ZWRQcm9qZWN0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFtwcm9qZWN0TmFtZSwgZHJpZnRdIG9mIE9iamVjdC5lbnRyaWVzKGRyaWZ0UmVwb3J0KSkge1xuXHRcdFx0XHR0aGlzLiNsb2dnZXIud2FybihgRGVwZW5kZW5jeSBkcmlmdCBpbiAnJHtwcm9qZWN0TmFtZX0nYCwge1xuXHRcdFx0XHRcdG9yaWdpbmFsOiBkcmlmdC5vcmlnaW5hbCxcblx0XHRcdFx0XHR1cGRhdGVkOiBkcmlmdC51cGRhdGVkLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHRocm93IG5ldyBFcnJvcihgRGVwZW5kZW5jeSBkcmlmdCBkZXRlY3RlZCBpbjogJHtkcmlmdGVkUHJvamVjdHMuam9pbihcIiwgXCIpfWApO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgbG9nUmVwb3J0KHJlcG9ydHM6IFByb2plY3RSZXBvcnRbXSkge1xuXHRcdGZvciAoY29uc3QgeyBlbnRyeSwgd2FybmluZ3MgfSBvZiByZXBvcnRzKSB7XG5cdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgJHtlbnRyeS5wcm9qZWN0TmFtZX06YCk7XG5cdFx0XHRpZiAoZW50cnkuZGVwZW5kZW5jaWVzLmxlbmd0aCkge1xuXHRcdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgICBkZXBlbmRlbmNpZXM6ICR7ZW50cnkuZGVwZW5kZW5jaWVzLmpvaW4oXCIsIFwiKX1gKTtcblx0XHRcdH1cblx0XHRcdGlmIChlbnRyeS5kZXZEZXBlbmRlbmNpZXMubGVuZ3RoKSB7XG5cdFx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKGAgIGRldkRlcGVuZGVuY2llczogJHtlbnRyeS5kZXZEZXBlbmRlbmNpZXMuam9pbihcIiwgXCIpfWApO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChjb25zdCB3YXJuaW5nIG9mIHdhcm5pbmdzKSB7XG5cdFx0XHRcdHRoaXMuI2xvZ2dlci53YXJuKGAgIHdhcm5pbmc6ICR7d2FybmluZy5maWxlfToke3dhcm5pbmcubGluZX06ICR7d2FybmluZy5tZXNzYWdlfWApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgd3JpdGVSZXBvcnRGaWxlKGZpbGU6IHN0cmluZywgcmVwb3J0czogUHJvamVjdFJlcG9ydFtdKSB7XG5cdFx0Y29uc3QgbGluZXMgPSByZXBvcnRzLmZsYXRNYXAoKHsgZW50cnksIHdhcm5pbmdzIH0pID0+IFtcblx0XHRcdGAke2VudHJ5LnByb2plY3ROYW1lfTpgLFxuXHRcdFx0Li4uKGVudHJ5LmRlcGVuZGVuY2llcy5sZW5ndGhcblx0XHRcdFx0PyBbYCAgZGVwZW5kZW5jaWVzOiAke2VudHJ5LmRlcGVuZGVuY2llcy5qb2luKFwiLCBcIil9YF1cblx0XHRcdFx0OiBbXSksXG5cdFx0XHQuLi4oZW50cnkuZGV2RGVwZW5kZW5jaWVzLmxlbmd0aFxuXHRcdFx0XHQ/IFtgICBkZXZEZXBlbmRlbmNpZXM6ICR7ZW50cnkuZGV2RGVwZW5kZW5jaWVzLmpvaW4oXCIsIFwiKX1gXVxuXHRcdFx0XHQ6IFtdKSxcblx0XHRcdC4uLndhcm5pbmdzLm1hcCgodykgPT4gYCAgd2FybmluZzogJHt3LmZpbGV9OiR7dy5saW5lfTogJHt3Lm1lc3NhZ2V9YCksXG5cdFx0XHRcIlwiLFxuXHRcdF0pO1xuXHRcdGF3YWl0IGlvLndyaXRlRmlsZShmaWxlLCBsaW5lcy5qb2luKFwiXFxuXCIpLCB7IG1rZGlyOiB0cnVlIH0pO1xuXHRcdHRoaXMuI2xvZ2dlci5pbmZvKGBSZXBvcnQgd3JpdHRlbiB0byAke2ZpbGV9YCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJSZXBvcnREZXBlbmRlbmNpZXMiLCJzY3JpYmUiLCJsb2dnZXIiLCJuYW1lIiwid29ya3NwYWNlIiwicmVzb2x2ZXIiLCJydW4iLCJvcHRpb25zIiwiY29uZmlndXJhdGlvbiIsImZpbGUiLCJmYWlsT25EcmlmdCIsInByb2plY3REZXBzIiwiYW5hbHl6ZVdvcmtzcGFjZSIsImxvZ1JlcG9ydCIsIndyaXRlUmVwb3J0RmlsZSIsImRyaWZ0UmVwb3J0IiwiYnVpbGREcmlmdFJlcG9ydCIsInRocm93T25EcmlmdCIsIkFjdGlvblJlc3BvbnNlIiwiU3VjY2VzcyIsImVycm9yIiwibWVzc2FnZSIsImZvcm1hdFVua25vd25FcnJvciIsIkVycm9yIiwicHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsIndvcmtzcGFjZVBhY2thZ2VzIiwiZ2V0V29ya3NwYWNlUGFja2FnZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicHJvamVjdCIsImFuYWx5emVQcm9qZWN0IiwiZW50cnkiLCJjdXJyZW50UGFja2FnZSIsInVwZGF0ZWRQYWNrYWdlIiwid2FybmluZ3MiLCJnZXREZXBlbmRlbmNpZXMiLCJkcmlmdCIsImNvbXB1dGVEcmlmdCIsInByb2plY3ROYW1lIiwiZ2V0UGFja2FnZUpzb24iLCJjb21wdXRlUHJvamVjdERlcGVuZGVuY2llcyIsImRlcGVuZGVuY2llcyIsIk9iamVjdCIsImtleXMiLCJkZXZEZXBlbmRlbmNpZXMiLCJyZXBvcnRzIiwiZnJvbUVudHJpZXMiLCJmaWx0ZXIiLCJyIiwiZHJpZnRlZFByb2plY3RzIiwibGVuZ3RoIiwiZW50cmllcyIsIndhcm4iLCJvcmlnaW5hbCIsInVwZGF0ZWQiLCJqb2luIiwiaW5mbyIsIndhcm5pbmciLCJsaW5lIiwibGluZXMiLCJmbGF0TWFwIiwidyIsImlvIiwid3JpdGVGaWxlIiwibWtkaXIiXSwibWFwcGluZ3MiOiI7Ozs7K0JBbUNhQTs7O2VBQUFBOzs7NEJBbkNjO3NCQUdEO3FCQUVLO29CQUNaO3dCQUNJO3dCQUNZOzJDQUVBOzs7Ozs7Ozs7O0FBeUI1QixNQUFNQTs7O0lBQ1osQ0FBQSxNQUFPLEdBQUdDLGNBQU0sQ0FBQ0MsTUFBTSxDQUFDRixtQkFBbUJHLElBQUksRUFBRTtJQUVqRCxZQUNDLEFBQWlCQyxTQUFvQixFQUNyQyxBQUFpQkMsUUFBNEIsQ0FDNUM7YUFGZ0JELFlBQUFBO2FBQ0FDLFdBQUFBO0lBQ2Y7SUFFSCxNQUFhQyxJQUFJQyxPQUFzQixFQUEwQztRQUNoRixNQUFNLEVBQUVDLGFBQWEsRUFBRUMsSUFBSSxFQUFFQyxXQUFXLEVBQUUsR0FBR0g7UUFFN0MsSUFBSTtZQUNILE1BQU1JLGNBQWMsTUFBTSxJQUFJLENBQUNDLGdCQUFnQixDQUFDLElBQUksQ0FBQ1IsU0FBUyxFQUFFSTtZQUNoRSxJQUFJLENBQUNLLFNBQVMsQ0FBQ0Y7WUFFZixJQUFJRixNQUFNO2dCQUNULE1BQU0sSUFBSSxDQUFDSyxlQUFlLENBQUNMLE1BQU1FO1lBQ2xDO1lBRUEsSUFBSUQsYUFBYTtnQkFDaEIsTUFBTUssY0FB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
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "SyncDependencies", {
6
- enumerable: true,
7
- get: function() {
8
- return SyncDependencies;
9
- }
10
- });
11
- const _decorators = require("@decohere/crucible/decorators");
12
- const _mesh = require("@decohere/mesh");
13
- const _cli = require("@decohere/nexus/cli");
14
- const _scribe = require("@decohere/scribe");
15
- const _errors = require("../errors.js");
16
- const _dependencyresolverservice = require("../services/dependency-resolver.service.js");
17
- function _ts_decorate(decorators, target, key, desc) {
18
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
- 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;
21
- return c > 3 && r && Object.defineProperty(target, key, r), r;
22
- }
23
- function _ts_metadata(k, v) {
24
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
- }
26
- class SyncDependencies {
27
- workspace;
28
- resolver;
29
- #logger = _scribe.scribe.logger(SyncDependencies.name);
30
- constructor(workspace, resolver){
31
- this.workspace = workspace;
32
- this.resolver = resolver;
33
- }
34
- async run(options) {
35
- const { configuration, logDiff } = options;
36
- const projects = this.workspace.getProjects(configuration);
37
- const workspacePackages = await this.resolver.getWorkspacePackages(this.workspace, projects);
38
- const computed = await Promise.all(projects.map((project)=>this.computeDependenciesFor(project, workspacePackages)));
39
- const results = computed.map((c)=>c.syncResult);
40
- if (results.some((r)=>!r.succeeded)) {
41
- return _cli.ActionResponse.Error(SyncDependencies.name, results);
42
- }
43
- const succeeded = computed.filter((c)=>c.succeeded);
44
- await Promise.all(succeeded.map((c)=>c.project.persistPackageJson(c.updatedPackage)));
45
- const syncResults = succeeded.map((c)=>{
46
- const drift = this.resolver.computeDrift(c.originalPackage, c.updatedPackage);
47
- if (drift && logDiff) {
48
- this.#logger.warn(`Dependency drift synced in '${c.syncResult.projectName}'`, drift);
49
- }
50
- return {
51
- ...c.syncResult,
52
- drift
53
- };
54
- });
55
- const failedResults = results.filter((r)=>!r.succeeded);
56
- return _cli.ActionResponse.Success(SyncDependencies.name, [
57
- ...syncResults,
58
- ...failedResults
59
- ]);
60
- }
61
- async computeDependenciesFor(project, workspacePackages) {
62
- try {
63
- const originalPackage = await project.getPackageJson();
64
- const { updatedPackage, warnings } = await this.resolver.computeProjectDependencies(project, workspacePackages);
65
- for (const warning of warnings){
66
- this.#logger.warn(`${warning.file}:${warning.line}: ${warning.message}`);
67
- }
68
- return {
69
- succeeded: true,
70
- syncResult: {
71
- projectName: project.name,
72
- succeeded: true
73
- },
74
- project,
75
- originalPackage,
76
- updatedPackage
77
- };
78
- } catch (error) {
79
- const message = (0, _errors.formatUnknownError)(error);
80
- return {
81
- succeeded: false,
82
- syncResult: {
83
- projectName: project.name,
84
- error: `${project.name}: ${message}`,
85
- succeeded: false
86
- }
87
- };
88
- }
89
- }
90
- }
91
- SyncDependencies = _ts_decorate([
92
- (0, _decorators.injectable)(),
93
- _ts_metadata("design:type", Function),
94
- _ts_metadata("design:paramtypes", [
95
- typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace,
96
- typeof _dependencyresolverservice.DependencyResolver === "undefined" ? Object : _dependencyresolverservice.DependencyResolver
97
- ])
98
- ], SyncDependencies);
99
-
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2RlcGVuZGVuY3ktc3luYy5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWNrYWdlSnNvbiwgUHJvamVjdCB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiO1xuaW1wb3J0IHsgZm9ybWF0VW5rbm93bkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy5qc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2RlcGVuZGVuY3ktcmVzb2x2ZXIuc2VydmljZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWNrYWdlLCBTeW5jcHJvamVjdFJlc3VsdCB9IGZyb20gXCIuLi90eXBlcy9kZXBlbmRlbmN5LnR5cGVzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIERlcGVuZGVuY2llc09wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0bG9nRGlmZj86IGJvb2xlYW47XG59O1xuXG50eXBlIFN5bmNDb21wdXRlZCA9XG5cdHwgeyBzdWNjZWVkZWQ6IGZhbHNlOyBzeW5jUmVzdWx0OiBTeW5jcHJvamVjdFJlc3VsdCB9XG5cdHwge1xuXHRcdFx0c3VjY2VlZGVkOiB0cnVlO1xuXHRcdFx0c3luY1Jlc3VsdDogU3luY3Byb2plY3RSZXN1bHQ7XG5cdFx0XHRwcm9qZWN0OiBQcm9qZWN0O1xuXHRcdFx0b3JpZ2luYWxQYWNrYWdlOiBQYWNrYWdlSnNvbjtcblx0XHRcdHVwZGF0ZWRQYWNrYWdlOiBQYWNrYWdlSnNvbjtcblx0ICB9O1xuXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3luY0RlcGVuZGVuY2llcyBpbXBsZW1lbnRzIEFjdGlvbjxEZXBlbmRlbmNpZXNPcHRpb25zPiB7XG5cdCNsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKFN5bmNEZXBlbmRlbmNpZXMubmFtZSk7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlOiBXb3Jrc3BhY2UsXG5cdFx0cHJpdmF0ZSByZWFkb25seSByZXNvbHZlcjogRGVwZW5kZW5jeVJlc29sdmVyLFxuXHQpIHt9XG5cblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBEZXBlbmRlbmNpZXNPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZTxTeW5jcHJvamVjdFJlc3VsdD4+IHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb24sIGxvZ0RpZmYgfSA9IG9wdGlvbnM7XG5cblx0XHRjb25zdCBwcm9qZWN0cyA9IHRoaXMud29ya3NwYWNlLmdldFByb2plY3RzKGNvbmZpZ3VyYXRpb24pO1xuXHRcdGNvbnN0IHdvcmtzcGFjZVBhY2thZ2VzID0gYXdhaXQgdGhpcy5yZXNvbHZlci5nZXRXb3Jrc3BhY2VQYWNrYWdlcyhcblx0XHRcdHRoaXMud29ya3NwYWNlLFxuXHRcdFx0cHJvamVjdHMsXG5cdFx0KTtcblxuXHRcdGNvbnN0IGNvbXB1dGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRwcm9qZWN0cy5tYXAoKHByb2plY3QpID0+IHRoaXMuY29tcHV0ZURlcGVuZGVuY2llc0Zvcihwcm9qZWN0LCB3b3Jrc3BhY2VQYWNrYWdlcykpLFxuXHRcdCk7XG5cblx0XHRjb25zdCByZXN1bHRzID0gY29tcHV0ZWQubWFwKChjKSA9PiBjLnN5bmNSZXN1bHQpO1xuXHRcdGlmIChyZXN1bHRzLnNvbWUoKHIpID0+ICFyLnN1Y2NlZWRlZCkpIHtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5FcnJvcihTeW5jRGVwZW5kZW5jaWVzLm5hbWUsIHJlc3VsdHMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHN1Y2NlZWRlZCA9IGNvbXB1dGVkLmZpbHRlcihcblx0XHRcdChjKTogYyBpcyBTeW5jQ29tcHV0ZWQgJiB7IHN1Y2NlZWRlZDogdHJ1ZSB9ID0+IGMuc3VjY2VlZGVkLFxuXHRcdCk7XG5cblx0XHRhd2FpdCBQcm9taXNlLmFsbChzdWNjZWVkZWQubWFwKChjKSA9PiBjLnByb2plY3QucGVyc2lzdFBhY2thZ2VKc29uKGMudXBkYXRlZFBhY2thZ2UpKSk7XG5cblx0XHRjb25zdCBzeW5jUmVzdWx0cyA9IHN1Y2NlZWRlZC5tYXAoKGMpID0+IHtcblx0XHRcdGNvbnN0IGRyaWZ0ID0gdGhpcy5yZXNvbHZlci5jb21wdXRlRHJpZnQoYy5vcmlnaW5hbFBhY2thZ2UsIGMudXBkYXRlZFBhY2thZ2UpO1xuXHRcdFx0aWYgKGRyaWZ0ICYmIGxvZ0RpZmYpIHtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLndhcm4oYERlcGVuZGVuY3kgZHJpZnQgc3luY2VkIGluICcke2Muc3luY1Jlc3VsdC5wcm9qZWN0TmFtZX0nYCwgZHJpZnQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHsgLi4uYy5zeW5jUmVzdWx0LCBkcmlmdCB9O1xuXHRcdH0pO1xuXG5cdFx0Y29uc3QgZmFpbGVkUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKChyKSA9PiAhci5zdWNjZWVkZWQpO1xuXG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoU3luY0RlcGVuZGVuY2llcy5uYW1lLCBbLi4uc3luY1Jlc3VsdHMsIC4uLmZhaWxlZFJlc3VsdHNdKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgY29tcHV0ZURlcGVuZGVuY2llc0Zvcihcblx0XHRwcm9qZWN0OiBQcm9qZWN0LFxuXHRcdHdvcmtzcGFjZVBhY2thZ2VzOiBNYXA8c3RyaW5nLCBQYWNrYWdlPixcblx0KTogUHJvbWlzZTxTeW5jQ29tcHV0ZWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgb3JpZ2luYWxQYWNrYWdlID0gYXdhaXQgcHJvamVjdC5nZXRQYWNrYWdlSnNvbigpO1xuXHRcdFx0Y29uc3QgeyB1cGRhdGVkUGFja2FnZSwgd2FybmluZ3MgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZXIuY29tcHV0ZVByb2plY3REZXBlbmRlbmNpZXMoXG5cdFx0XHRcdHByb2plY3QsXG5cdFx0XHRcdHdvcmtzcGFjZVBhY2thZ2VzLFxuXHRcdFx0KTtcblx0XHRcdGZvciAoY29uc3Qgd2FybmluZyBvZiB3YXJuaW5ncykge1xuXHRcdFx0XHR0aGlzLiNsb2dnZXIud2FybihgJHt3YXJuaW5nLmZpbGV9OiR7d2FybmluZy5saW5lfTogJHt3YXJuaW5nLm1lc3NhZ2V9YCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRzdWNjZWVkZWQ6IHRydWUsXG5cdFx0XHRcdHN5bmNSZXN1bHQ6IHsgcHJvamVjdE5hbWU6IHByb2plY3QubmFtZSwgc3VjY2VlZGVkOiB0cnVlIH0sXG5cdFx0XHRcdHByb2plY3QsXG5cdFx0XHRcdG9yaWdpbmFsUGFja2FnZSxcblx0XHRcdFx0dXBkYXRlZFBhY2thZ2UsXG5cdFx0XHR9O1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZm9ybWF0VW5rbm93bkVycm9yKGVycm9yKTtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHN1Y2NlZWRlZDogZmFsc2UsXG5cdFx0XHRcdHN5bmNSZXN1bHQ6IHtcblx0XHRcdFx0XHRwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lLFxuXHRcdFx0XHRcdGVycm9yOiBgJHtwcm9qZWN0Lm5hbWV9OiAke21lc3NhZ2V9YCxcblx0XHRcdFx0XHRzdWNjZWVkZWQ6IGZhbHNlLFxuXHRcdFx0XHR9LFxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJTeW5jRGVwZW5kZW5jaWVzIiwic2NyaWJlIiwibG9nZ2VyIiwibmFtZSIsIndvcmtzcGFjZSIsInJlc29sdmVyIiwicnVuIiwib3B0aW9ucyIsImNvbmZpZ3VyYXRpb24iLCJsb2dEaWZmIiwicHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsIndvcmtzcGFjZVBhY2thZ2VzIiwiZ2V0V29ya3NwYWNlUGFja2FnZXMiLCJjb21wdXRlZCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJwcm9qZWN0IiwiY29tcHV0ZURlcGVuZGVuY2llc0ZvciIsInJlc3VsdHMiLCJjIiwic3luY1Jlc3VsdCIsInNvbWUiLCJyIiwic3VjY2VlZGVkIiwiQWN0aW9uUmVzcG9uc2UiLCJFcnJvciIsImZpbHRlciIsInBlcnNpc3RQYWNrYWdlSnNvbiIsInVwZGF0ZWRQYWNrYWdlIiwic3luY1Jlc3VsdHMiLCJkcmlmdCIsImNvbXB1dGVEcmlmdCIsIm9yaWdpbmFsUGFja2FnZSIsIndhcm4iLCJwcm9qZWN0TmFtZSIsImZhaWxlZFJlc3VsdHMiLCJTdWNjZXNzIiwiZ2V0UGFja2FnZUpzb24iLCJ3YXJuaW5ncyIsImNvbXB1dGVQcm9qZWN0RGVwZW5kZW5jaWVzIiwid2FybmluZyIsImZpbGUiLCJsaW5lIiwibWVzc2FnZSIsImVycm9yIiwiZm9ybWF0VW5rbm93bkVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OytCQTRCYUE7OztlQUFBQTs7OzRCQTVCYztzQkFHRDtxQkFFSzt3QkFDUjt3QkFDWTsyQ0FFQTs7Ozs7Ozs7OztBQW1CNUIsTUFBTUE7OztJQUNaLENBQUEsTUFBTyxHQUFHQyxjQUFNLENBQUNDLE1BQU0sQ0FBQ0YsaUJBQWlCRyxJQUFJLEVBQUU7SUFFL0MsWUFDQyxBQUFpQkMsU0FBb0IsRUFDckMsQUFBaUJDLFFBQTRCLENBQzVDO2FBRmdCRCxZQUFBQTthQUNBQyxXQUFBQTtJQUNmO0lBRUgsTUFBYUMsSUFBSUMsT0FBNEIsRUFBOEM7UUFDMUYsTUFBTSxFQUFFQyxhQUFhLEVBQUVDLE9BQU8sRUFBRSxHQUFHRjtRQUVuQyxNQUFNRyxXQUFXLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxXQUFXLENBQUNIO1FBQzVDLE1BQU1JLG9CQUFvQixNQUFNLElBQUksQ0FBQ1AsUUFBUSxDQUFDUSxvQkFBb0IsQ0FDakUsSUFBSSxDQUFDVCxTQUFTLEVBQ2RNO1FBR0QsTUFBTUksV0FBVyxNQUFNQyxRQUFRQyxHQUFHLENBQ2pDTixTQUFTTyxHQUFHLENBQUMsQ0FBQ0MsVUFBWSxJQUFJLENBQUNDLHNCQUFzQixDQUFDRCxTQUFTTjtRQUdoRSxNQUFNUSxVQUFVTixTQUFTRyxHQUFHLENBQUMsQ0FBQ0ksSUFBTUEsRUFBRUMsVUFBVTtRQUNoRCxJQUFJRixRQUFRRyxJQUFJLENBQUMsQ0FBQ0MsSUFBTSxDQUFDQSxFQUFFQyxTQUFTLEdBQUc7WUFDdEMsT0FBT0MsbUJBQWMsQ0FBQ0MsS0FBSyxDQUFDM0IsaUJBQWlCRyxJQUFJLEVBQUVpQjtRQUNwRDtRQUVBLE1BQU1LLFlBQVlYLFNBQVNjLE1BQU0sQ0FDaEMsQ0FBQ1AsSUFBK0NBLEVBQUVJLFNBQVM7UUFHNUQsTUFBTVYsUUFBUUMsR0FBRyxDQUFDUyxVQUFVUixHQUFHLENBQUMsQ0FBQ0ksSUFBTUEsRUFBRUgsT0FBTyxDQUFDVyxrQkFBa0IsQ0FBQ1IsRUFBRVMsY0FBYztRQUVwRixNQUFNQyxjQUFjTixVQUFVUixHQUFHLENBQUMsQ0FBQ0k7WUFDbEMsTUFBTVcsUUFBUSxJQUFJLENBQUMzQixRQUFRLENBQUM0QixZQUFZLENBQUNaLEVBQUVhLGVBQWUsRUFBRWIsRUFBRVMsY0FBYztZQUM1RSxJQUFJRSxTQUFTdkIsU0FBUztnQkFDckIsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDMEIsSUFBSSxDQUFDLENBQUMsNEJBQTRCLEVBQUVkLEVBQUVDLFVBQVUsQ0FBQ2MsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFSjtZQUMvRTtZQUNBLE9BQU87Z0JBQUUsR0FBR1gsRUFBRUMsVUFBVTtnQkFBRVU7WUFBTTtRQUNqQztRQUVBLE1BQU1LLGdCQUFnQmpCLFFBQVFRLE1BQU0sQ0FBQyxDQUFDSixJQUFNLENBQUNBLEVBQUVDLFNBQVM7UUFFeEQsT0FBT0MsbUJBQWMsQ0FBQ1ksT0FBTyxDQUFDdEMsaUJBQWlCRyxJQUFJLEVBQUU7ZUFBSTRCO2VBQWdCTTtTQUFjO0lBQ3hGO0lBRUEsTUFBY2xCLHVCQUNiRCxPQUFnQixFQUNoQk4saUJBQXVDLEVBQ2Y7UUFDeEIsSUFBSTtZQUNILE1BQU1zQixrQkFBa0IsTUFBTWhCLFFBQVFxQixjQUFjO1lBQ3BELE1BQU0sRUFBRVQsY0FBYyxFQUFFVSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQ25DLFFBQVEsQ0FBQ29DLDBCQUEwQixDQUNsRnZCLFNBQ0FOO1lBRUQsS0FBSyxNQUFNOEIsV0FBV0YsU0FBVTtnQkFDL0IsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDTCxJQUFJLENBQUMsR0FBR08sUUFBUUMsSUFBSSxDQUFDLENBQUMsRUFBRUQsUUFBUUUsSUFBSSxDQUFDLEVBQUUsRUFBRUYsUUFBUUcsT0FBTyxFQUFFO1lBQ3hFO1lBQ0EsT0FBTztnQkFDTnBCLFdBQVc7Z0JBQ1hILFlBQVk7b0JBQUVjLGFBQWFsQixRQUFRZixJQUFJO29CQUFFc0IsV0FBVztnQkFBSztnQkFDekRQO2dCQUNBZ0I7Z0JBQ0FKO1lBQ0Q7UUFDRCxFQUFFLE9BQU9nQixPQUFPO1lBQ2YsTUFBTUQsVUFBVUUsSUFBQUEsMEJBQWtCLEVBQUNEO1lBQ25DLE9BQU87Z0JBQ05yQixXQUFXO2dCQUNYSCxZQUFZO29CQUNYYyxhQUFhbEIsUUFBUWYsSUFBSTtvQkFDekIyQyxPQUFPLEdBQUc1QixRQUFRZixJQUFJLENBQUMsRUFBRSxFQUFFMEMsU0FBUztvQkFDcENwQixXQUFXO2dCQUNaO1lBQ0Q7UUFDRDtJQUNEO0FBQ0QifQ==
@@ -1,162 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "Docker", {
6
- enumerable: true,
7
- get: function() {
8
- return Docker;
9
- }
10
- });
11
- const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
- const _decorators = require("@decohere/crucible/decorators");
13
- const _mesh = require("@decohere/mesh");
14
- const _cli = require("@decohere/nexus/cli");
15
- const _interop = require("@decohere/nexus/interop");
16
- const _io = require("@decohere/nexus/io");
17
- const _scribe = require("@decohere/scribe");
18
- const _errors = require("../errors.js");
19
- function _interop_require_default(obj) {
20
- return obj && obj.__esModule ? obj : {
21
- default: obj
22
- };
23
- }
24
- function _ts_decorate(decorators, target, key, desc) {
25
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
26
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
27
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
28
- return c > 3 && r && Object.defineProperty(target, key, r), r;
29
- }
30
- function _ts_metadata(k, v) {
31
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
32
- }
33
- class Docker {
34
- workspace;
35
- #logger = _scribe.scribe.logger(Docker.name);
36
- docker = new _interop.Docker();
37
- #defaultRegistry = process.env.FORGE_DOCKER_REGISTRY?.trim() || "ghcr.io";
38
- constructor(workspace){
39
- this.workspace = workspace;
40
- }
41
- async run(options) {
42
- const projects = await this.getDockerProjects(this.workspace.getProjects(options.configuration));
43
- if (projects.length === 0) {
44
- throw new _errors.ForgeError(`No projects found with a Dockerfile`);
45
- }
46
- const version = await this.workspace.getVersion();
47
- const responses = await Promise.all(projects.map(async (project)=>await this.buildProject(project, version, options)));
48
- const failed = responses.filter((response)=>!response.succeeded);
49
- if (failed.length > 0) {
50
- return _cli.ActionResponse.Error(Docker.name, responses);
51
- }
52
- return _cli.ActionResponse.Success(Docker.name, responses);
53
- }
54
- async getDockerProjects(projects) {
55
- const result = [];
56
- for (const project of projects){
57
- const dockerfile = project.dockerConfig?.dockerfile ?? "Dockerfile";
58
- const dockerfilePath = _nodepath.default.join(project.projectRoot, dockerfile);
59
- if (!await _io.io.fileExists(dockerfilePath)) {
60
- this.#logger.info(`Skipping ${project.name}: missing ${dockerfile}`);
61
- continue;
62
- }
63
- result.push(project);
64
- }
65
- return result;
66
- }
67
- async buildProject(project, version, options) {
68
- const dockerConfig = project.dockerConfig ?? {};
69
- const envBuildArgs = this.parseJsonEnv("FORGE_DOCKER_BUILD_ARGS_JSON", {});
70
- const envSecrets = this.parseJsonEnv("FORGE_DOCKER_SECRETS_JSON", {});
71
- const envTags = this.parseJsonEnv("FORGE_DOCKER_EXTRA_TAGS_JSON", []);
72
- const image = dockerConfig.image ?? this.defaultImageName(project.name);
73
- const dockerfile = dockerConfig.dockerfile ?? "Dockerfile";
74
- const tags = [
75
- `${image}:${version}`,
76
- ...dockerConfig.tags ?? [],
77
- ...envTags
78
- ];
79
- const buildArgs = this.interpolateBuildArgs({
80
- ...dockerConfig.buildArgs ?? {},
81
- ...envBuildArgs
82
- }, version);
83
- const secrets = {
84
- ...dockerConfig.secrets ?? {},
85
- ...envSecrets
86
- };
87
- this.#logger.info(`${options.dryRun ? "[dry-run] " : ""}Building ${project.name}`);
88
- try {
89
- if (!options.dryRun) {
90
- await this.docker.build(project.projectRoot, {
91
- cwd: project.projectRoot,
92
- dockerfile: _nodepath.default.join(project.projectRoot, dockerfile),
93
- tags,
94
- buildArgs,
95
- secrets
96
- });
97
- if (options.push || dockerConfig.push) {
98
- for (const tag of tags){
99
- await this.docker.push(tag, {
100
- cwd: project.projectRoot
101
- });
102
- }
103
- }
104
- }
105
- return {
106
- projectName: project.name,
107
- image,
108
- tags,
109
- succeeded: true,
110
- message: options.dryRun ? "Dry run" : `Built ${image}`
111
- };
112
- } catch (reason) {
113
- const message = (0, _errors.formatUnknownError)(reason);
114
- return {
115
- projectName: project.name,
116
- image,
117
- tags,
118
- succeeded: false,
119
- message,
120
- error: `${project.name}: ${message}`
121
- };
122
- }
123
- }
124
- interpolateBuildArgs(buildArgs, version) {
125
- const result = {};
126
- const versionPlaceholder = "$" + "{version}";
127
- for (const [key, value] of Object.entries(buildArgs ?? {})){
128
- result[key] = value.split(versionPlaceholder).join(version);
129
- }
130
- return result;
131
- }
132
- defaultImageName(projectName) {
133
- return `${this.#defaultRegistry}/${this.normalizeDockerRepository(projectName)}`;
134
- }
135
- normalizeDockerRepository(name) {
136
- const repository = name.replace(/^@/, "").split("/").map((segment)=>segment.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "")).filter(Boolean).join("/");
137
- if (repository === "") {
138
- throw new _errors.ForgeError(`Could not derive a Docker repository from project name "${name}"`);
139
- }
140
- return repository;
141
- }
142
- parseJsonEnv(name, fallback) {
143
- const value = process.env[name];
144
- if (value == null || value.trim() === "") {
145
- return fallback;
146
- }
147
- try {
148
- return JSON.parse(value);
149
- } catch (reason) {
150
- throw new _errors.ForgeError(`Invalid JSON in ${name}: ${(0, _errors.formatUnknownError)(reason)}`);
151
- }
152
- }
153
- }
154
- Docker = _ts_decorate([
155
- (0, _decorators.injectable)(),
156
- _ts_metadata("design:type", Function),
157
- _ts_metadata("design:paramtypes", [
158
- typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
159
- ])
160
- ], Docker);
161
-
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2RvY2tlci5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uLCBSZXN1bHRTdGF0dXMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgQWN0aW9uUmVzcG9uc2UgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgRG9ja2VyIGFzIERvY2tlckludGVyb3AgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2ludGVyb3BcIjtcbmltcG9ydCB7IGlvIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pb1wiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IEZvcmdlRXJyb3IsIGZvcm1hdFVua25vd25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcblxuZXhwb3J0IHR5cGUgRG9ja2VyT3B0aW9ucyA9IHtcblx0Y29uZmlndXJhdGlvbjogc3RyaW5nO1xuXHRkcnlSdW4/OiBib29sZWFuO1xuXHRwdXNoPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERvY2tlclJlc3BvbnNlID0gUmVzdWx0U3RhdHVzICYge1xuXHRwcm9qZWN0TmFtZTogc3RyaW5nO1xuXHRpbWFnZTogc3RyaW5nO1xuXHR0YWdzOiBzdHJpbmdbXTtcblx0bWVzc2FnZTogc3RyaW5nO1xufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvY2tlciBpbXBsZW1lbnRzIEFjdGlvbjxEb2NrZXJPcHRpb25zPiB7XG5cdCNsb2dnZXIgPSBzY3JpYmUubG9nZ2VyKERvY2tlci5uYW1lKTtcblx0cHJpdmF0ZSByZWFkb25seSBkb2NrZXIgPSBuZXcgRG9ja2VySW50ZXJvcCgpO1xuXHRyZWFkb25seSAjZGVmYXVsdFJlZ2lzdHJ5ID0gcHJvY2Vzcy5lbnYuRk9SR0VfRE9DS0VSX1JFR0lTVFJZPy50cmltKCkgfHwgXCJnaGNyLmlvXCI7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlOiBXb3Jrc3BhY2UpIHt9XG5cblx0cHVibGljIGFzeW5jIHJ1bihvcHRpb25zOiBEb2NrZXJPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZTxEb2NrZXJSZXNwb25zZT4+IHtcblx0XHRjb25zdCBwcm9qZWN0cyA9IGF3YWl0IHRoaXMuZ2V0RG9ja2VyUHJvamVjdHMoXG5cdFx0XHR0aGlzLndvcmtzcGFjZS5nZXRQcm9qZWN0cyhvcHRpb25zLmNvbmZpZ3VyYXRpb24pLFxuXHRcdCk7XG5cdFx0aWYgKHByb2plY3RzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYE5vIHByb2plY3RzIGZvdW5kIHdpdGggYSBEb2NrZXJmaWxlYCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmVyc2lvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFZlcnNpb24oKTtcblx0XHRjb25zdCByZXNwb25zZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChhc3luYyAocHJvamVjdCkgPT4gYXdhaXQgdGhpcy5idWlsZFByb2plY3QocHJvamVjdCwgdmVyc2lvbiwgb3B0aW9ucykpLFxuXHRcdCk7XG5cdFx0Y29uc3QgZmFpbGVkID0gcmVzcG9uc2VzLmZpbHRlcigocmVzcG9uc2UpID0+ICFyZXNwb25zZS5zdWNjZWVkZWQpO1xuXHRcdGlmIChmYWlsZWQubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLkVycm9yKERvY2tlci5uYW1lLCByZXNwb25zZXMpO1xuXHRcdH1cblx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU3VjY2VzcyhEb2NrZXIubmFtZSwgcmVzcG9uc2VzKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgZ2V0RG9ja2VyUHJvamVjdHMocHJvamVjdHM6IHJlYWRvbmx5IFByb2plY3RbXSkge1xuXHRcdGNvbnN0IHJlc3VsdDogUHJvamVjdFtdID0gW107XG5cdFx0Zm9yIChjb25zdCBwcm9qZWN0IG9mIHByb2plY3RzKSB7XG5cdFx0XHRjb25zdCBkb2NrZXJmaWxlID0gcHJvamVjdC5kb2NrZXJDb25maWc/LmRvY2tlcmZpbGUgPz8gXCJEb2NrZXJmaWxlXCI7XG5cdFx0XHRjb25zdCBkb2NrZXJmaWxlUGF0aCA9IHBhdGguam9pbihwcm9qZWN0LnByb2plY3RSb290LCBkb2NrZXJmaWxlKTtcblx0XHRcdGlmICghKGF3YWl0IGlvLmZpbGVFeGlzdHMoZG9ja2VyZmlsZVBhdGgpKSkge1xuXHRcdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgU2tpcHBpbmcgJHtwcm9qZWN0Lm5hbWV9OiBtaXNzaW5nICR7ZG9ja2VyZmlsZX1gKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3VsdC5wdXNoKHByb2plY3QpO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBidWlsZFByb2plY3QoXG5cdFx0cHJvamVjdDogUHJvamVjdCxcblx0XHR2ZXJzaW9uOiBzdHJpbmcsXG5cdFx0b3B0aW9uczogRG9ja2VyT3B0aW9ucyxcblx0KTogUHJvbWlzZTxEb2NrZXJSZXNwb25zZT4ge1xuXHRcdGNvbnN0IGRvY2tlckNvbmZpZyA9IHByb2plY3QuZG9ja2VyQ29uZmlnID8/IHt9O1xuXHRcdGNvbnN0IGVudkJ1aWxkQXJncyA9IHRoaXMucGFyc2VKc29uRW52PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuXHRcdFx0XCJGT1JHRV9ET0NLRVJfQlVJTERfQVJHU19KU09OXCIsXG5cdFx0XHR7fSxcblx0XHQpO1xuXHRcdGNvbnN0IGVudlNlY3JldHMgPSB0aGlzLnBhcnNlSnNvbkVudjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pihcblx0XHRcdFwiRk9SR0VfRE9DS0VSX1NFQ1JFVFNfSlNPTlwiLFxuXHRcdFx0e30sXG5cdFx0KTtcblx0XHRjb25zdCBlbnZUYWdzID0gdGhpcy5wYXJzZUpzb25FbnY8c3RyaW5nW10+KFwiRk9SR0VfRE9DS0VSX0VYVFJBX1RBR1NfSlNPTlwiLCBbXSk7XG5cblx0XHRjb25zdCBpbWFnZSA9IGRvY2tlckNvbmZpZy5pbWFnZSA/PyB0aGlzLmRlZmF1bHRJbWFnZU5hbWUocHJvamVjdC5uYW1lKTtcblx0XHRjb25zdCBkb2NrZXJmaWxlID0gZG9ja2VyQ29uZmlnLmRvY2tlcmZpbGUgPz8gXCJEb2NrZXJmaWxlXCI7XG5cdFx0Y29uc3QgdGFncyA9IFtgJHtpbWFnZX06JHt2ZXJzaW9ufWAsIC4uLihkb2NrZXJDb25maWcudGFncyA/PyBbXSksIC4uLmVudlRhZ3NdO1xuXHRcdGNvbnN0IGJ1aWxkQXJncyA9IHRoaXMuaW50ZXJwb2xhdGVCdWlsZEFyZ3MoXG5cdFx0XHR7IC4uLihkb2NrZXJDb25maWcuYnVpbGRBcmdzID8/IHt9KSwgLi4uZW52QnVpbGRBcmdzIH0sXG5cdFx0XHR2ZXJzaW9uLFxuXHRcdCk7XG5cdFx0Y29uc3Qgc2VjcmV0cyA9IHsgLi4uKGRvY2tlckNvbmZpZy5zZWNyZXRzID8/IHt9KSwgLi4uZW52U2VjcmV0cyB9O1xuXG5cdFx0dGhpcy4jbG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5kcnlSdW4gPyBcIltkcnktcnVuXSBcIiA6IFwiXCJ9QnVpbGRpbmcgJHtwcm9qZWN0Lm5hbWV9YCk7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICghb3B0aW9ucy5kcnlSdW4pIHtcblx0XHRcdFx0YXdhaXQgdGhpcy5kb2NrZXIuYnVpbGQocHJvamVjdC5wcm9qZWN0Um9vdCwge1xuXHRcdFx0XHRcdGN3ZDogcHJvamVjdC5wcm9qZWN0Um9vdCxcblx0XHRcdFx0XHRkb2NrZXJmaWxlOiBwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0Um9vdCwgZG9ja2VyZmlsZSksXG5cdFx0XHRcdFx0dGFncyxcblx0XHRcdFx0XHRidWlsZEFyZ3MsXG5cdFx0XHRcdFx0c2VjcmV0cyxcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0aWYgKG9wdGlvbnMucHVzaCB8fCBkb2NrZXJDb25maWcucHVzaCkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMuZG9ja2VyLnB1c2godGFnLCB7IGN3ZDogcHJvamVjdC5wcm9qZWN0Um9vdCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cHJvamVjdE5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdFx0aW1hZ2UsXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdHN1Y2NlZWRlZDogdHJ1ZSxcblx0XHRcdFx0bWVzc2FnZTogb3B0aW9ucy5kcnlSdW4gPyBcIkRyeSBydW5cIiA6IGBCdWlsdCAke2ltYWdlfWAsXG5cdFx0XHR9O1xuXHRcdH0gY2F0Y2ggKHJlYXNvbikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGZvcm1hdFVua25vd25FcnJvcihyZWFzb24pO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cHJvamVjdE5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdFx0aW1hZ2UsXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdHN1Y2NlZWRlZDogZmFsc2UsXG5cdFx0XHRcdG1lc3NhZ2UsXG5cdFx0XHRcdGVycm9yOiBgJHtwcm9qZWN0Lm5hbWV9OiAke21lc3NhZ2V9YCxcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbnRlcnBvbGF0ZUJ1aWxkQXJncyhcblx0XHRidWlsZEFyZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQsXG5cdFx0dmVyc2lvbjogc3RyaW5nLFxuXHQpIHtcblx0XHRjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0XHRjb25zdCB2ZXJzaW9uUGxhY2Vob2xkZXIgPSBcIiRcIiArIFwie3ZlcnNpb259XCI7XG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYnVpbGRBcmdzID8/IHt9KSkge1xuXHRcdFx0cmVzdWx0W2tleV0gPSB2YWx1ZS5zcGxpdCh2ZXJzaW9uUGxhY2Vob2xkZXIpLmpvaW4odmVyc2lvbik7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwcml2YXRlIGRlZmF1bHRJbWFnZU5hbWUocHJvamVjdE5hbWU6IHN0cmluZykge1xuXHRcdHJldHVybiBgJHt0aGlzLiNkZWZhdWx0UmVnaXN0cnl9LyR7dGhpcy5ub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5KHByb2plY3ROYW1lKX1gO1xuXHR9XG5cblx0cHJpdmF0ZSBub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5KG5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IHJlcG9zaXRvcnkgPSBuYW1lXG5cdFx0XHQucmVwbGFjZSgvXkAvLCBcIlwiKVxuXHRcdFx0LnNwbGl0KFwiL1wiKVxuXHRcdFx0Lm1hcCgoc2VnbWVudCkgPT5cblx0XHRcdFx0c2VnbWVudFxuXHRcdFx0XHRcdC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0LnJlcGxhY2UoL1teYS16MC05XSsvZywgXCItXCIpXG5cdFx0XHRcdFx0LnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIiksXG5cdFx0XHQpXG5cdFx0XHQuZmlsdGVyKEJvb2xlYW4pXG5cdFx0XHQuam9pbihcIi9cIik7XG5cblx0XHRpZiAocmVwb3NpdG9yeSA9PT0gXCJcIikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYENvdWxkIG5vdCBkZXJpdmUgYSBEb2NrZXIgcmVwb3NpdG9yeSBmcm9tIHByb2plY3QgbmFtZSBcIiR7bmFtZX1cImApO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXBvc2l0b3J5O1xuXHR9XG5cblx0cHJpdmF0ZSBwYXJzZUpzb25FbnY8VD4obmFtZTogc3RyaW5nLCBmYWxsYmFjazogVCk6IFQge1xuXHRcdGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV07XG5cdFx0aWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUudHJpbSgpID09PSBcIlwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsbGJhY2s7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyBUO1xuXHRcdH0gY2F0Y2ggKHJlYXNvbikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYEludmFsaWQgSlNPTiBpbiAke25hbWV9OiAke2Zvcm1hdFVua25vd25FcnJvcihyZWFzb24pfWApO1xuXHRcdH1cblx0fVxufVxuIl0sIm5hbWVzIjpbIkRvY2tlciIsInNjcmliZSIsImxvZ2dlciIsIm5hbWUiLCJkb2NrZXIiLCJEb2NrZXJJbnRlcm9wIiwicHJvY2VzcyIsImVudiIsIkZPUkdFX0RPQ0tFUl9SRUdJU1RSWSIsInRyaW0iLCJ3b3Jrc3BhY2UiLCJydW4iLCJvcHRpb25zIiwicHJvamVjdHMiLCJnZXREb2NrZXJQcm9qZWN0cyIsImdldFByb2plY3RzIiwiY29uZmlndXJhdGlvbiIsImxlbmd0aCIsIkZvcmdlRXJyb3IiLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInJlc3BvbnNlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJwcm9qZWN0IiwiYnVpbGRQcm9qZWN0IiwiZmFpbGVkIiwiZmlsdGVyIiwicmVzcG9uc2UiLCJzdWNjZWVkZWQiLCJBY3Rpb25SZXNwb25zZSIsIkVycm9yIiwiU3VjY2VzcyIsInJlc3VsdCIsImRvY2tlcmZpbGUiLCJkb2NrZXJDb25maWciLCJkb2NrZXJmaWxlUGF0aCIsInBhdGgiLCJqb2luIiwicHJvamVjdFJvb3QiLCJpbyIsImZpbGVFeGlzdHMiLCJpbmZvIiwicHVzaCIsImVudkJ1aWxkQXJncyIsInBhcnNlSnNvbkVudiIsImVudlNlY3JldHMiLCJlbnZUYWdzIiwiaW1hZ2UiLCJkZWZhdWx0SW1hZ2VOYW1lIiwidGFncyIsImJ1aWxkQXJncyIsImludGVycG9sYXRlQnVpbGRBcmdzIiwic2VjcmV0cyIsImRyeVJ1biIsImJ1aWxkIiwiY3dkIiwidGFnIiwicHJvamVjdE5hbWUiLCJtZXNzYWdlIiwicmVhc29uIiwiZm9ybWF0VW5rbm93bkVycm9yIiwiZXJyb3IiLCJ2ZXJzaW9uUGxhY2Vob2xkZXIiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJzcGxpdCIsIm5vcm1hbGl6ZURvY2tlclJlcG9zaXRvcnkiLCJyZXBvc2l0b3J5IiwicmVwbGFjZSIsInNlZ21lbnQiLCJ0b0xvd2VyQ2FzZSIsIkJvb2xlYW4iLCJmYWxsYmFjayIsIkpTT04iLCJwYXJzZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkEwQmFBOzs7ZUFBQUE7OztpRUExQkk7NEJBQ1U7c0JBR0Q7cUJBRUs7eUJBQ1M7b0JBQ3JCO3dCQUNJO3dCQUN3Qjs7Ozs7Ozs7Ozs7Ozs7O0FBZ0J4QyxNQUFNQTs7SUFDWixDQUFBLE1BQU8sR0FBR0MsY0FBTSxDQUFDQyxNQUFNLENBQUNGLE9BQU9HLElBQUksRUFBRTtJQUNwQkMsU0FBUyxJQUFJQyxlQUFhLEdBQUc7SUFDckMsQ0FBQSxlQUFnQixHQUFHQyxRQUFRQyxHQUFHLENBQUNDLHFCQUFxQixFQUFFQyxVQUFVLFVBQVU7SUFFbkYsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRTNELE1BQWFDLElBQUlDLE9BQXNCLEVBQTJDO1FBQ2pGLE1BQU1DLFdBQVcsTUFBTSxJQUFJLENBQUNDLGlCQUFpQixDQUM1QyxJQUFJLENBQUNKLFNBQVMsQ0FBQ0ssV0FBVyxDQUFDSCxRQUFRSSxhQUFhO1FBRWpELElBQUlILFNBQVNJLE1BQU0sS0FBSyxHQUFHO1lBQzFCLE1BQU0sSUFBSUMsa0JBQVUsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDO1FBQzNEO1FBRUEsTUFBTUMsVUFBVSxNQUFNLElBQUksQ0FBQ1QsU0FBUyxDQUFDVSxVQUFVO1FBQy9DLE1BQU1DLFlBQVksTUFBTUMsUUFBUUMsR0FBRyxDQUNsQ1YsU0FBU1csR0FBRyxDQUFDLE9BQU9DLFVBQVksTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsU0FBU04sU0FBU1A7UUFFM0UsTUFBTWUsU0FBU04sVUFBVU8sTUFBTSxDQUFDLENBQUNDLFdBQWEsQ0FBQ0EsU0FBU0MsU0FBUztRQUNqRSxJQUFJSCxPQUFPVixNQUFNLEdBQUcsR0FBRztZQUN0QixPQUFPYyxtQkFBYyxDQUFDQyxLQUFLLENBQUNoQyxPQUFPRyxJQUFJLEVBQUVrQjtRQUMxQztRQUNBLE9BQU9VLG1CQUFjLENBQUNFLE9BQU8sQ0FBQ2pDLE9BQU9HLElBQUksRUFBRWtCO0lBQzVDO0lBRUEsTUFBY1Asa0JBQWtCRCxRQUE0QixFQUFFO1FBQzdELE1BQU1xQixTQUFvQixFQUFFO1FBQzVCLEtBQUssTUFBTVQsV0FBV1osU0FBVTtZQUMvQixNQUFNc0IsYUFBYVYsUUFBUVcsWUFBWSxFQUFFRCxjQUFjO1lBQ3ZELE1BQU1FLGlCQUFpQkMsaUJBQUksQ0FBQ0MsSUFBSSxDQUFDZCxRQUFRZSxXQUFXLEVBQUVMO1lBQ3RELElBQUksQ0FBRSxNQUFNTSxNQUFFLENBQUNDLFVBQVUsQ0FBQ0wsaUJBQWtCO2dCQUMzQyxJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNNLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRWxCLFFBQVF0QixJQUFJLENBQUMsVUFBVSxFQUFFZ0MsWUFBWTtnQkFDbkU7WUFDRDtZQUVBRCxPQUFPVSxJQUFJLENBQUNuQjtRQUNiO1FBQ0EsT0FBT1M7SUFDUjtJQUVBLE1BQWNSLGFBQ2JELE9BQWdCLEVBQ2hCTixPQUFlLEVBQ2ZQLE9BQXNCLEVBQ0k7UUFDMUIsTUFBTXdCLGVBQWVYLFFBQVFXLFlBQVksSUFBSSxDQUFDO1FBQzlDLE1BQU1TLGVBQWUsSUFBSSxDQUFDQyxZQUFZLENBQ3JDLGdDQUNBLENBQUM7UUFFRixNQUFNQyxhQUFhLElBQUksQ0FBQ0QsWUFBWSxDQUNuQyw2QkFDQSxDQUFDO1FBRUYsTUFBTUUsVUFBVSxJQUFJLENBQUNGLFlBQVksQ0FBVyxnQ0FBZ0MsRUFBRTtRQUU5RSxNQUFNRyxRQUFRYixhQUFhYSxLQUFLLElBQUksSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQ3pCLFFBQVF0QixJQUFJO1FBQ3RFLE1BQU1nQyxhQUFhQyxhQUFhRCxVQUFVLElBQUk7UUFDOUMsTUFBTWdCLE9BQU87WUFBQyxHQUFHRixNQUFNLENBQUMsRUFBRTlCLFNBQVM7ZUFBTWlCLGFBQWFlLElBQUksSUFBSSxFQUFFO2VBQU1IO1NBQVE7UUFDOUUsTUFBTUksWUFBWSxJQUFJLENBQUNDLG9CQUFvQixDQUMxQztZQUFFLEdBQUlqQixhQUFhZ0IsU0FBUyxJQUFJLENBQUMsQ0FBQztZQUFHLEdBQUdQLFlBQVk7UUFBQyxHQUNyRDFCO1FBRUQsTUFBTW1DLFVBQVU7WUFBRSxHQUFJbEIsYUFBYWtCLE9BQU8sSUFBSSxDQUFDLENBQUM7WUFBRyxHQUFHUCxVQUFVO1FBQUM7UUFFakUsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDSixJQUFJLENBQUMsR0FBRy9CLFFBQVEyQyxNQUFNLEdBQUcsZUFBZSxHQUFHLFNBQVMsRUFBRTlCLFFBQVF0QixJQUFJLEVBQUU7UUFDakYsSUFBSTtZQUNILElBQUksQ0FBQ1MsUUFBUTJDLE1BQU0sRUFBRTtnQkFDcEIsTUFBTSxJQUFJLENBQUNuRCxNQUFNLENBQUNvRCxLQUFLLENBQUMvQixRQUFRZSxXQUFXLEVBQUU7b0JBQzVDaUIsS0FBS2hDLFFBQVFlLFdBQVc7b0JBQ3hCTCxZQUFZRyxpQkFBSSxDQUFDQyxJQUFJLENBQUNkLFFBQVFlLFdBQVcsRUFBRUw7b0JBQzNDZ0I7b0JBQ0FDO29CQUNBRTtnQkFDRDtnQkFFQSxJQUFJMUMsUUFBUWdDLElBQUksSUFBSVIsYUFBYVEsSUFBSSxFQUFFO29CQUN0QyxLQUFLLE1BQU1jLE9BQU9QLEtBQU07d0JBQ3ZCLE1BQU0sSUFBSSxDQUFDL0MsTUFBTSxDQUFDd0MsSUFBSSxDQUFDYyxLQUFLOzRCQUFFRCxLQUFLaEMsUUFBUWUsV0FBVzt3QkFBQztvQkFDeEQ7Z0JBQ0Q7WUFDRDtZQUVBLE9BQU87Z0JBQ05tQixhQUFhbEMsUUFBUXRCLElBQUk7Z0JBQ3pCOEM7Z0JBQ0FFO2dCQUNBckIsV0FBVztnQkFDWDhCLFNBQVNoRCxRQUFRMkMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUVOLE9BQU87WUFDdkQ7UUFDRCxFQUFFLE9BQU9ZLFFBQVE7WUFDaEIsTUFBTUQsVUFBVUUsSUFBQUEsMEJBQWtCLEVBQUNEO1lBQ25DLE9BQU87Z0JBQ05GLGFBQWFsQyxRQUFRdEIsSUFBSTtnQkFDekI4QztnQkFDQUU7Z0JBQ0FyQixXQUFXO2dCQUNYOEI7Z0JBQ0FHLE9BQU8sR0FBR3RDLFFBQVF0QixJQUFJLENBQUMsRUFBRSxFQUFFeUQsU0FBUztZQUNyQztRQUNEO0lBQ0Q7SUFFUVAscUJBQ1BELFNBQTZDLEVBQzdDakMsT0FBZSxFQUNkO1FBQ0QsTUFBTWUsU0FBaUMsQ0FBQztRQUN4QyxNQUFNOEIscUJBQXFCLE1BQU07UUFDakMsS0FBSyxNQUFNLENBQUNDLEtBQUtDLE1BQU0sSUFBSUMsT0FBT0MsT0FBTyxDQUFDaEIsYUFBYSxDQUFDLEdBQUk7WUFDM0RsQixNQUFNLENBQUMrQixJQUFJLEdBQUdDLE1BQU1HLEtBQUssQ0FBQ0wsb0JBQW9CekIsSUFBSSxDQUFDcEI7UUFDcEQ7UUFDQSxPQUFPZTtJQUNSO0lBRVFnQixpQkFBaUJTLFdBQW1CLEVBQUU7UUFDN0MsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFBLGVBQWdCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ1cseUJBQXlCLENBQUNYLGNBQWM7SUFDakY7SUFFUVcsMEJBQTBCbkUsSUFBWSxFQUFFO1FBQy9DLE1BQU1vRSxhQUFhcEUsS0FDakJxRSxPQUFPLENBQUMsTUFBTSxJQUNkSCxLQUFLLENBQUMsS0FDTjdDLEdBQUcsQ0FBQyxDQUFDaUQsVUFDTEEsUUFDRUMsV0FBVyxHQUNYRixPQUFPLENBQUMsZUFBZSxLQUN2QkEsT0FBTyxDQUFDLFlBQVksS0FFdEI1QyxNQUFNLENBQUMrQyxTQUNQcEMsSUFBSSxDQUFDO1FBRVAsSUFBSWdDLGVBQWUsSUFBSTtZQUN0QixNQUFNLElBQUlyRCxrQkFBVSxDQUFDLENBQUMsd0RBQXdELEVBQUVmLEtBQUssQ0FBQyxDQUFDO1FBQ3hGO1FBRUEsT0FBT29FO0lBQ1I7SUFFUXpCLGFBQWdCM0MsSUFBWSxFQUFFeUUsUUFBVyxFQUFLO1FBQ3JELE1BQU1WLFFBQVE1RCxRQUFRQyxHQUFHLENBQUNKLEtBQUs7UUFDL0IsSUFBSStELFNBQVMsUUFBUUEsTUFBTXpELElBQUksT0FBTyxJQUFJO1lBQ3pDLE9BQU9tRTtRQUNSO1FBRUEsSUFBSTtZQUNILE9BQU9DLEtBQUtDLEtBQUssQ0FBQ1o7UUFDbkIsRUFBRSxPQUFPTCxRQUFRO1lBQ2hCLE1BQU0sSUFBSTNDLGtCQUFVLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWYsS0FBSyxFQUFFLEVBQUUyRCxJQUFBQSwwQkFBa0IsRUFBQ0QsU0FBUztRQUM5RTtJQUNEO0FBQ0QifQ==
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./build.action.js"), exports);
6
- _export_star(require("./clean.action.js"), exports);
7
- _export_star(require("./commit.action.js"), exports);
8
- _export_star(require("./copy.action.js"), exports);
9
- _export_star(require("./dependency-report.action.js"), exports);
10
- _export_star(require("./dependency-sync.action.js"), exports);
11
- _export_star(require("./docker.action.js"), exports);
12
- _export_star(require("./link.action.js"), exports);
13
- _export_star(require("./publish.action.js"), exports);
14
- _export_star(require("./sync-lock-file.action.js"), exports);
15
- _export_star(require("./tag.action.js"), exports);
16
- _export_star(require("./unlink.action.js"), exports);
17
- _export_star(require("./version.action.js"), exports);
18
- _export_star(require("./watch.action.js"), exports);
19
- function _export_star(from, to) {
20
- Object.keys(from).forEach(function(k) {
21
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
22
- Object.defineProperty(to, k, {
23
- enumerable: true,
24
- get: function() {
25
- return from[k];
26
- }
27
- });
28
- }
29
- });
30
- return from;
31
- }
32
-
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2J1aWxkLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xlYW4uYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21taXQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb3B5LmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwZW5kZW5jeS1yZXBvcnQuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZXBlbmRlbmN5LXN5bmMuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb2NrZXIuYWN0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHVibGlzaC5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N5bmMtbG9jay1maWxlLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFnLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5saW5rLmFjdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmVyc2lvbi5hY3Rpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dhdGNoLmFjdGlvbi5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWM7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0E7cUJBQ0EifQ==