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

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 (200) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +152 -0
  3. package/commonjs/src/actions/build.action.js +4 -6
  4. package/commonjs/src/actions/clean.action.js +4 -6
  5. package/commonjs/src/actions/commit.action.js +4 -6
  6. package/commonjs/src/actions/copy.action.js +62 -12
  7. package/commonjs/src/actions/dependency-report.action.js +8 -6
  8. package/commonjs/src/actions/dependency-sync.action.js +9 -5
  9. package/commonjs/src/actions/docker.action.js +83 -36
  10. package/commonjs/src/actions/index.js +3 -2
  11. package/commonjs/src/actions/link.action.js +3 -5
  12. package/commonjs/src/actions/package.action.js +234 -0
  13. package/commonjs/src/actions/paths.action.js +120 -0
  14. package/commonjs/src/actions/publish.action.js +4 -6
  15. package/commonjs/src/actions/sync-lock-file.action.js +2 -4
  16. package/commonjs/src/actions/tag.action.js +6 -9
  17. package/commonjs/src/actions/typecheck.action.js +67 -0
  18. package/commonjs/src/actions/unlink.action.js +1 -3
  19. package/commonjs/src/actions/version.action.js +74 -21
  20. package/commonjs/src/actions/watch.action.js +3 -5
  21. package/commonjs/src/commands/build.command.js +4 -3
  22. package/commonjs/src/commands/dependency.command.js +1 -3
  23. package/commonjs/src/commands/docker.command.js +2 -4
  24. package/commonjs/src/commands/forge.command.js +1 -3
  25. package/commonjs/src/commands/index.js +3 -2
  26. package/commonjs/src/commands/link.command.js +4 -3
  27. package/commonjs/src/commands/package.command.js +36 -0
  28. package/commonjs/src/commands/paths.command.js +24 -0
  29. package/commonjs/src/commands/publish.command.js +1 -3
  30. package/commonjs/src/commands/tag.command.js +1 -3
  31. package/commonjs/src/commands/typecheck.command.js +24 -0
  32. package/commonjs/src/commands/version.command.js +3 -3
  33. package/commonjs/src/const.js +0 -2
  34. package/commonjs/src/create-workspace.js +38 -0
  35. package/commonjs/src/errors.js +2 -4
  36. package/commonjs/src/extensions/project.extensions.js +11 -13
  37. package/commonjs/src/factories/swc-config.factory.js +29 -9
  38. package/commonjs/src/forge.module.js +15 -20
  39. package/commonjs/src/index.js +8 -2
  40. package/commonjs/src/packaging/dependency-pinner.service.js +118 -0
  41. package/commonjs/src/packaging/deployable.js +44 -0
  42. package/commonjs/src/packaging/import-graph.service.js +137 -0
  43. package/commonjs/src/packaging/release-exports.js +90 -0
  44. package/commonjs/src/packaging/ui-assets.js +75 -0
  45. package/commonjs/src/semver/index.js +18 -0
  46. package/commonjs/src/semver/semver.js +96 -0
  47. package/commonjs/src/services/dependency-resolver.service.js +70 -26
  48. package/commonjs/src/services/file-writer.service.js +2 -11
  49. package/commonjs/src/services/incremental-watch.js +24 -0
  50. package/commonjs/src/services/output-cache.js +39 -0
  51. package/commonjs/src/services/swc-transpiler.js +85 -99
  52. package/commonjs/src/services/transpile-cache.js +44 -0
  53. package/commonjs/src/services/ts-compiler-options.js +50 -0
  54. package/commonjs/src/services/ts-program-host.js +4 -6
  55. package/commonjs/src/services/type-emission-program.js +25 -10
  56. package/commonjs/src/services/type-emitter.js +60 -20
  57. package/commonjs/src/transpile/index.js +30 -0
  58. package/commonjs/src/types/build-target.type.js +0 -2
  59. package/commonjs/src/types/configuration.type.js +0 -2
  60. package/commonjs/src/types/dependency.types.js +0 -2
  61. package/commonjs/src/types/swc-config.type.js +0 -2
  62. package/commonjs/src/types/transform-response.model.js +3 -18
  63. package/commonjs/src/types/transformer.type.js +0 -2
  64. package/commonjs/src/types/workspace-config.type.js +0 -2
  65. package/commonjs/src/vitest/forge-build.plugin.js +28 -44
  66. package/commonjs/src/vitest/index.js +0 -2
  67. package/commonjs/src/workspace.config.js +27 -6
  68. package/es6/src/actions/build.action.js +3 -7
  69. package/es6/src/actions/clean.action.js +3 -6
  70. package/es6/src/actions/commit.action.js +3 -6
  71. package/es6/src/actions/copy.action.js +61 -12
  72. package/es6/src/actions/dependency-report.action.js +7 -7
  73. package/es6/src/actions/dependency-sync.action.js +8 -6
  74. package/es6/src/actions/docker.action.js +82 -36
  75. package/es6/src/actions/index.js +3 -2
  76. package/es6/src/actions/link.action.js +2 -5
  77. package/es6/src/actions/package.action.js +219 -0
  78. package/es6/src/actions/paths.action.js +97 -0
  79. package/es6/src/actions/publish.action.js +3 -6
  80. package/es6/src/actions/sync-lock-file.action.js +2 -4
  81. package/es6/src/actions/tag.action.js +5 -9
  82. package/es6/src/actions/typecheck.action.js +52 -0
  83. package/es6/src/actions/unlink.action.js +1 -3
  84. package/es6/src/actions/version.action.js +69 -17
  85. package/es6/src/actions/watch.action.js +2 -5
  86. package/es6/src/commands/build.command.js +4 -3
  87. package/es6/src/commands/dependency.command.js +1 -3
  88. package/es6/src/commands/docker.command.js +2 -4
  89. package/es6/src/commands/forge.command.js +1 -3
  90. package/es6/src/commands/index.js +3 -2
  91. package/es6/src/commands/link.command.js +4 -3
  92. package/es6/src/commands/package.command.js +26 -0
  93. package/es6/src/commands/paths.command.js +14 -0
  94. package/es6/src/commands/publish.command.js +1 -3
  95. package/es6/src/commands/tag.command.js +1 -3
  96. package/es6/src/commands/typecheck.command.js +14 -0
  97. package/es6/src/commands/version.command.js +3 -3
  98. package/es6/src/const.js +0 -2
  99. package/es6/src/create-workspace.js +26 -0
  100. package/es6/src/errors.js +1 -3
  101. package/es6/src/extensions/project.extensions.js +5 -7
  102. package/es6/src/factories/swc-config.factory.js +29 -9
  103. package/es6/src/forge.module.js +15 -20
  104. package/es6/src/index.js +2 -2
  105. package/es6/src/packaging/dependency-pinner.service.js +103 -0
  106. package/es6/src/packaging/deployable.js +21 -0
  107. package/es6/src/packaging/import-graph.service.js +122 -0
  108. package/es6/src/packaging/release-exports.js +80 -0
  109. package/es6/src/packaging/ui-assets.js +49 -0
  110. package/es6/src/semver/index.js +1 -0
  111. package/es6/src/semver/semver.js +75 -0
  112. package/es6/src/services/dependency-resolver.service.js +70 -26
  113. package/es6/src/services/file-writer.service.js +2 -11
  114. package/es6/src/services/incremental-watch.js +18 -0
  115. package/es6/src/services/output-cache.js +29 -0
  116. package/es6/src/services/swc-transpiler.js +85 -99
  117. package/es6/src/services/transpile-cache.js +29 -0
  118. package/es6/src/services/ts-compiler-options.js +39 -0
  119. package/es6/src/services/ts-program-host.js +4 -6
  120. package/es6/src/services/type-emission-program.js +25 -10
  121. package/es6/src/services/type-emitter.js +57 -20
  122. package/es6/src/transpile/index.js +6 -0
  123. package/es6/src/types/build-target.type.js +0 -2
  124. package/es6/src/types/configuration.type.js +0 -2
  125. package/es6/src/types/dependency.types.js +0 -2
  126. package/es6/src/types/swc-config.type.js +0 -2
  127. package/es6/src/types/transform-response.model.js +0 -7
  128. package/es6/src/types/transformer.type.js +0 -2
  129. package/es6/src/types/workspace-config.type.js +0 -2
  130. package/es6/src/vitest/forge-build.plugin.js +27 -43
  131. package/es6/src/vitest/index.js +0 -2
  132. package/es6/src/workspace.config.js +26 -5
  133. package/package.json +20 -6
  134. package/types/src/actions/build.action.d.ts +4 -4
  135. package/types/src/actions/clean.action.d.ts +3 -3
  136. package/types/src/actions/commit.action.d.ts +3 -3
  137. package/types/src/actions/copy.action.d.ts +18 -3
  138. package/types/src/actions/dependency-report.action.d.ts +3 -3
  139. package/types/src/actions/dependency-sync.action.d.ts +3 -3
  140. package/types/src/actions/docker.action.d.ts +14 -3
  141. package/types/src/actions/index.d.ts +3 -0
  142. package/types/src/actions/link.action.d.ts +3 -3
  143. package/types/src/actions/package.action.d.ts +38 -0
  144. package/types/src/actions/paths.action.d.ts +28 -0
  145. package/types/src/actions/publish.action.d.ts +4 -4
  146. package/types/src/actions/sync-lock-file.action.d.ts +2 -2
  147. package/types/src/actions/tag.action.d.ts +3 -3
  148. package/types/src/actions/typecheck.action.d.ts +14 -0
  149. package/types/src/actions/unlink.action.d.ts +2 -2
  150. package/types/src/actions/version.action.d.ts +14 -4
  151. package/types/src/actions/watch.action.d.ts +3 -3
  152. package/types/src/commands/build.command.d.ts +3 -2
  153. package/types/src/commands/dependency.command.d.ts +2 -2
  154. package/types/src/commands/docker.command.d.ts +1 -1
  155. package/types/src/commands/forge.command.d.ts +2 -2
  156. package/types/src/commands/index.d.ts +3 -0
  157. package/types/src/commands/link.command.d.ts +3 -2
  158. package/types/src/commands/package.command.d.ts +11 -0
  159. package/types/src/commands/paths.command.d.ts +6 -0
  160. package/types/src/commands/publish.command.d.ts +1 -1
  161. package/types/src/commands/tag.command.d.ts +1 -1
  162. package/types/src/commands/typecheck.command.d.ts +6 -0
  163. package/types/src/commands/version.command.d.ts +1 -1
  164. package/types/src/create-workspace.d.ts +7 -0
  165. package/types/src/errors.d.ts +1 -1
  166. package/types/src/extensions/project.extensions.d.ts +2 -2
  167. package/types/src/factories/swc-config.factory.d.ts +3 -2
  168. package/types/src/forge.module.d.ts +10 -4
  169. package/types/src/index.d.ts +2 -0
  170. package/types/src/packaging/dependency-pinner.service.d.ts +20 -0
  171. package/types/src/packaging/deployable.d.ts +17 -0
  172. package/types/src/packaging/import-graph.service.d.ts +33 -0
  173. package/types/src/packaging/release-exports.d.ts +18 -0
  174. package/types/src/packaging/ui-assets.d.ts +21 -0
  175. package/types/src/semver/index.d.ts +1 -0
  176. package/types/src/semver/semver.d.ts +20 -0
  177. package/types/src/services/dependency-resolver.service.d.ts +8 -1
  178. package/types/src/services/file-writer.service.d.ts +1 -2
  179. package/types/src/services/incremental-watch.d.ts +13 -0
  180. package/types/src/services/output-cache.d.ts +10 -0
  181. package/types/src/services/swc-transpiler.d.ts +28 -15
  182. package/types/src/services/transpile-cache.d.ts +17 -0
  183. package/types/src/services/ts-compiler-options.d.ts +8 -0
  184. package/types/src/services/ts-program-host.d.ts +2 -2
  185. package/types/src/services/type-emission-program.d.ts +10 -3
  186. package/types/src/services/type-emitter.d.ts +21 -8
  187. package/types/src/transpile/index.d.ts +6 -0
  188. package/types/src/types/configuration.type.d.ts +6 -1
  189. package/types/src/types/dependency.types.d.ts +8 -9
  190. package/types/src/types/swc-config.type.d.ts +7 -1
  191. package/types/src/types/transform-response.model.d.ts +2 -7
  192. package/types/src/types/transformer.type.d.ts +3 -12
  193. package/types/src/types/workspace-config.type.d.ts +3 -3
  194. package/types/src/vitest/forge-build.plugin.d.ts +0 -2
  195. package/commonjs/src/mixins/caches-outputs.mixin.js +0 -44
  196. package/commonjs/src/mixins/incremental-transform.mixin.js +0 -36
  197. package/es6/src/mixins/caches-outputs.mixin.js +0 -34
  198. package/es6/src/mixins/incremental-transform.mixin.js +0 -26
  199. package/types/src/mixins/caches-outputs.mixin.d.ts +0 -7
  200. package/types/src/mixins/incremental-transform.mixin.d.ts +0 -13
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PackageCommand", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PackageCommand;
9
+ }
10
+ });
11
+ const _cli = require("@decohere/devkit/cli");
12
+ const _packageaction = require("../actions/package.action.js");
13
+ class PackageCommand extends _cli.DecohereCommand {
14
+ get actions() {
15
+ return [
16
+ _packageaction.PackageDeployable
17
+ ];
18
+ }
19
+ constructor(name){
20
+ super(name);
21
+ this.description("Package a deployable (a project with a Dockerfile) with the workspace libraries it imports");
22
+ this.argument("[project]", "Package name of the deployable; omit to package every project with a Dockerfile");
23
+ }
24
+ /**
25
+ * Commander passes the positional before the options; the CLI host reads only options,
26
+ * so the project name is stashed on them.
27
+ */ action(fn) {
28
+ return super.action((...args)=>{
29
+ const cmd = args.at(-1);
30
+ const opts = args.at(-2);
31
+ const project = typeof args[0] === "string" ? args[0] : undefined;
32
+ cmd.setOptionValue("project", project);
33
+ return fn(opts, cmd);
34
+ });
35
+ }
36
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PathsCommand", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PathsCommand;
9
+ }
10
+ });
11
+ const _cli = require("@decohere/devkit/cli");
12
+ const _pathsaction = require("../actions/paths.action.js");
13
+ class PathsCommand extends _cli.DecohereCommand {
14
+ get actions() {
15
+ return [
16
+ _pathsaction.Paths
17
+ ];
18
+ }
19
+ constructor(name){
20
+ super(name);
21
+ this.description("Write tsconfig.paths.json: tsconfig paths for the workspace packages and their exported subpaths");
22
+ this.option("--check", "Fail if tsconfig.paths.json is missing or out of date", false);
23
+ }
24
+ }
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "PublishCommand", {
8
8
  return PublishCommand;
9
9
  }
10
10
  });
11
- const _cli = require("@decohere/nexus/cli");
11
+ const _cli = require("@decohere/devkit/cli");
12
12
  const _publishaction = require("../actions/publish.action.js");
13
13
  class PublishCommand extends _cli.DecohereCommand {
14
14
  get actions() {
@@ -28,5 +28,3 @@ class PublishCommand extends _cli.DecohereCommand {
28
28
  this.option("--prompt-otp", "Prompt interactively for npm OTP only (use when already logged in)", false);
29
29
  }
30
30
  }
31
-
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy9wdWJsaXNoLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kLCBEcnlSdW5PcHRpb24gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgUHVibGlzaCB9IGZyb20gXCIuLi9hY3Rpb25zL3B1Ymxpc2guYWN0aW9uLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBQdWJsaXNoQ29tbWFuZCBleHRlbmRzIERlY29oZXJlQ29tbWFuZCB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW1B1Ymxpc2hdO1xuXHR9XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKG5hbWUpO1xuXHRcdHRoaXMuZGVzY3JpcHRpb24oXCJQdWJsaXNoIHdvcmtzcGFjZSBwYWNrYWdlc1wiKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgQ29uZmlndXJhdGlvbk9wdGlvbihcInJlbGVhc2VcIikpO1xuXHRcdHRoaXMuYWRkT3B0aW9uKG5ldyBEcnlSdW5PcHRpb24oXCJSdW4gbnBtIHB1Ymxpc2ggdXNpbmcgZHJ5LXJ1biBmbGFnXCIpKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tY2hhbm5lbCA8Y2hhbm5lbD5cIiwgXCJUaGUgcmVsZWFzZSBjaGFubmVsXCIsIFwiYmV0YVwiKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tdG9rZW4gPHRva2VuPlwiLCBcIm5wbSBhY2Nlc3MgdG9rZW4gKHVzZWQgb25seSBmb3IgdGhpcyBjb21tYW5kKVwiKTtcblx0XHR0aGlzLm9wdGlvbihcIi0tb3RwIDxvdHA+XCIsIFwibnBtIG9uZS10aW1lIHBhc3N3b3JkIGZvciAyRkEtcHJvdGVjdGVkIHB1Ymxpc2hcIik7XG5cdFx0dGhpcy5vcHRpb24oXCItLXByb21wdC1hdXRoXCIsIFwiUHJvbXB0IGludGVyYWN0aXZlbHkgZm9yIG5wbSB0b2tlbiBhbmQgT1RQXCIsIGZhbHNlKTtcblx0XHR0aGlzLm9wdGlvbihcblx0XHRcdFwiLS1wcm9tcHQtb3RwXCIsXG5cdFx0XHRcIlByb21wdCBpbnRlcmFjdGl2ZWx5IGZvciBucG0gT1RQIG9ubHkgKHVzZSB3aGVuIGFscmVhZHkgbG9nZ2VkIGluKVwiLFxuXHRcdFx0ZmFsc2UsXG5cdFx0KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIlB1Ymxpc2hDb21tYW5kIiwiRGVjb2hlcmVDb21tYW5kIiwiYWN0aW9ucyIsIlB1Ymxpc2giLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJhZGRPcHRpb24iLCJDb25maWd1cmF0aW9uT3B0aW9uIiwiRHJ5UnVuT3B0aW9uIiwib3B0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7cUJBSHNEOytCQUMzQztBQUVqQixNQUFNQSx1QkFBdUJDLG9CQUFlO0lBQ2xELElBQW9CQyxVQUFVO1FBQzdCLE9BQU87WUFBQ0Msc0JBQU87U0FBQztJQUNqQjtJQUVBLFlBQW1CQyxJQUFZLENBQUU7UUFDaEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0MsV0FBVyxDQUFDO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUlDLHdCQUFtQixDQUFDO1FBQ3ZDLElBQUksQ0FBQ0QsU0FBUyxDQUFDLElBQUlFLGlCQUFZLENBQUM7UUFDaEMsSUFBSSxDQUFDQyxNQUFNLENBQUMsdUJBQXVCLHVCQUF1QjtRQUMxRCxJQUFJLENBQUNBLE1BQU0sQ0FBQyxtQkFBbUI7UUFDL0IsSUFBSSxDQUFDQSxNQUFNLENBQUMsZUFBZTtRQUMzQixJQUFJLENBQUNBLE1BQU0sQ0FBQyxpQkFBaUIsOENBQThDO1FBQzNFLElBQUksQ0FBQ0EsTUFBTSxDQUNWLGdCQUNBLHNFQUNBO0lBRUY7QUFDRCJ9
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "TagCommand", {
8
8
  return TagCommand;
9
9
  }
10
10
  });
11
- const _cli = require("@decohere/nexus/cli");
11
+ const _cli = require("@decohere/devkit/cli");
12
12
  const _tagaction = require("../actions/tag.action.js");
13
13
  class TagCommand extends _cli.DecohereCommand {
14
14
  get actions() {
@@ -24,5 +24,3 @@ class TagCommand extends _cli.DecohereCommand {
24
24
  this.addOption(new _cli.DryRunOption("Print the tag without creating it"));
25
25
  }
26
26
  }
27
-
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy90YWcuY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvaGVyZUNvbW1hbmQsIERyeVJ1bk9wdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBUYWcgfSBmcm9tIFwiLi4vYWN0aW9ucy90YWcuYWN0aW9uLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBUYWdDb21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kIHtcblx0cHVibGljIG92ZXJyaWRlIGdldCBhY3Rpb25zKCkge1xuXHRcdHJldHVybiBbVGFnXTtcblx0fVxuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uKFwiQ3JlYXRlIGFuZCBvcHRpb25hbGx5IHB1c2ggYSBnaXQgdGFnIGZvciB0aGUgd29ya3NwYWNlIHZlcnNpb25cIik7XG5cdFx0dGhpcy5vcHRpb24oXCItLXByZWZpeCA8cHJlZml4PlwiLCBcIlRhZyBwcmVmaXhcIiwgXCJ2XCIpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1wdXNoXCIsIFwiUHVzaCB0aGUgdGFnIGFuZCBjdXJyZW50IGJyYW5jaCB0byBvcmlnaW4gYWZ0ZXIgdGFnZ2luZ1wiLCBmYWxzZSk7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IERyeVJ1bk9wdGlvbihcIlByaW50IHRoZSB0YWcgd2l0aG91dCBjcmVhdGluZyBpdFwiKSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJUYWdDb21tYW5kIiwiRGVjb2hlcmVDb21tYW5kIiwiYWN0aW9ucyIsIlRhZyIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbiIsImFkZE9wdGlvbiIsIkRyeVJ1bk9wdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFHYUE7OztlQUFBQTs7O3FCQUhpQzsyQkFDMUI7QUFFYixNQUFNQSxtQkFBbUJDLG9CQUFlO0lBQzlDLElBQW9CQyxVQUFVO1FBQzdCLE9BQU87WUFBQ0MsY0FBRztTQUFDO0lBQ2I7SUFFQSxZQUFtQkMsSUFBWSxDQUFFO1FBQ2hDLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNDLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNDLE1BQU0sQ0FBQyxxQkFBcUIsY0FBYztRQUMvQyxJQUFJLENBQUNBLE1BQU0sQ0FBQyxVQUFVLDJEQUEyRDtRQUNqRixJQUFJLENBQUNDLFNBQVMsQ0FBQyxJQUFJQyxpQkFBWSxDQUFDO0lBQ2pDO0FBQ0QifQ==
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "TypeCheckCommand", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return TypeCheckCommand;
9
+ }
10
+ });
11
+ const _cli = require("@decohere/devkit/cli");
12
+ const _typecheckaction = require("../actions/typecheck.action.js");
13
+ class TypeCheckCommand extends _cli.DecohereCommand {
14
+ get actions() {
15
+ return [
16
+ _typecheckaction.TypeCheck
17
+ ];
18
+ }
19
+ constructor(name){
20
+ super(name);
21
+ this.description("Type-check workspace projects without emitting files");
22
+ this.addOption(new _cli.ConfigurationOption("debug"));
23
+ }
24
+ }
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "VersionCommand", {
8
8
  return VersionCommand;
9
9
  }
10
10
  });
11
- const _cli = require("@decohere/nexus/cli");
11
+ const _cli = require("@decohere/devkit/cli");
12
12
  const _synclockfileaction = require("../actions/sync-lock-file.action.js");
13
13
  const _versionaction = require("../actions/version.action.js");
14
14
  class VersionCommand extends _cli.DecohereCommand {
@@ -26,11 +26,11 @@ class VersionCommand extends _cli.DecohereCommand {
26
26
  this.option("--release-type <releaseType>", "The semver release type: major, minor, patch, prerelease", _versionaction.DefaultReleaseType);
27
27
  this.option("--channel <channel>", "The release channel (preid for prereleases, dist-tag for publish)", _versionaction.DefaultChannel);
28
28
  this.option("--version <version>", "Explicit base version to increment (overrides git tag discovery)");
29
+ this.option("--build-number <number>", "Set <base>-<channel>.<commit's UTC date>.<number>, with no git tags involved");
30
+ this.option("--from-build", "Copy the version from the built packages; fails if they don't all match", false);
29
31
  this.option("--no-sync", "Skip lockfile sync after versioning", true);
30
32
  this.option("--commit", "Commit versioned package.json files after bumping", false);
31
33
  this.option("--message <message>", "Commit message (used with --commit)");
32
34
  this.option("--from-changesets", "Read pending .changeset entries to determine the highest bump type (major > minor > patch)", false);
33
35
  }
34
36
  }
35
-
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb21tYW5kcy92ZXJzaW9uLmNvbW1hbmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhdGlvbk9wdGlvbiwgRGVjb2hlcmVDb21tYW5kLCBEcnlSdW5PcHRpb24gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgU3luY0xvY2tGaWxlIH0gZnJvbSBcIi4uL2FjdGlvbnMvc3luYy1sb2NrLWZpbGUuYWN0aW9uLmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q2hhbm5lbCwgRGVmYXVsdFJlbGVhc2VUeXBlLCBWZXJzaW9uIH0gZnJvbSBcIi4uL2FjdGlvbnMvdmVyc2lvbi5hY3Rpb24uanNcIjtcblxudHlwZSBWZXJzaW9uQWN0aW9ucyA9IHsgdmVyc2lvbjogVmVyc2lvbjsgc3luY0xvY2tGaWxlOiBTeW5jTG9ja0ZpbGUgfTtcblxuZXhwb3J0IGNsYXNzIFZlcnNpb25Db21tYW5kIGV4dGVuZHMgRGVjb2hlcmVDb21tYW5kPFZlcnNpb25BY3Rpb25zPiB7XG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgYWN0aW9ucygpIHtcblx0XHRyZXR1cm4gW1ZlcnNpb24sIFN5bmNMb2NrRmlsZV07XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSk7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbihcIkJ1bXAgd29ya3NwYWNlIHBhY2thZ2UgdmVyc2lvbnNcIik7XG5cdFx0dGhpcy5hZGRPcHRpb24obmV3IENvbmZpZ3VyYXRpb25PcHRpb24oXCJyZWxlYXNlXCIpKTtcblx0XHR0aGlzLmFkZE9wdGlvbihuZXcgRHJ5UnVuT3B0aW9uKFwiUnVuIG5wbSBwdWJsaXNoIHVzaW5nIGRyeS1ydW4gZmxhZ1wiKSk7XG5cdFx0dGhpcy5vcHRpb24oXG5cdFx0XHRcIi0tcmVsZWFzZS10eXBlIDxyZWxlYXNlVHlwZT5cIixcblx0XHRcdFwiVGhlIHNlbXZlciByZWxlYXNlIHR5cGU6IG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZXJlbGVhc2VcIixcblx0XHRcdERlZmF1bHRSZWxlYXNlVHlwZSxcblx0XHQpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLWNoYW5uZWwgPGNoYW5uZWw+XCIsXG5cdFx0XHRcIlRoZSByZWxlYXNlIGNoYW5uZWwgKHByZWlkIGZvciBwcmVyZWxlYXNlcywgZGlzdC10YWcgZm9yIHB1Ymxpc2gpXCIsXG5cdFx0XHREZWZhdWx0Q2hhbm5lbCxcblx0XHQpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLXZlcnNpb24gPHZlcnNpb24+XCIsXG5cdFx0XHRcIkV4cGxpY2l0IGJhc2UgdmVyc2lvbiB0byBpbmNyZW1lbnQgKG92ZXJyaWRlcyBnaXQgdGFnIGRpc2NvdmVyeSlcIixcblx0XHQpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1uby1zeW5jXCIsIFwiU2tpcCBsb2NrZmlsZSBzeW5jIGFmdGVyIHZlcnNpb25pbmdcIiwgdHJ1ZSk7XG5cdFx0dGhpcy5vcHRpb24oXCItLWNvbW1pdFwiLCBcIkNvbW1pdCB2ZXJzaW9uZWQgcGFja2FnZS5qc29uIGZpbGVzIGFmdGVyIGJ1bXBpbmdcIiwgZmFsc2UpO1xuXHRcdHRoaXMub3B0aW9uKFwiLS1tZXNzYWdlIDxtZXNzYWdlPlwiLCBcIkNvbW1pdCBtZXNzYWdlICh1c2VkIHdpdGggLS1jb21taXQpXCIpO1xuXHRcdHRoaXMub3B0aW9uKFxuXHRcdFx0XCItLWZyb20tY2hhbmdlc2V0c1wiLFxuXHRcdFx0XCJSZWFkIHBlbmRpbmcgLmNoYW5nZXNldCBlbnRyaWVzIHRvIGRldGVybWluZSB0aGUgaGlnaGVzdCBidW1wIHR5cGUgKG1ham9yID4gbWlub3IgPiBwYXRjaClcIixcblx0XHRcdGZhbHNlLFxuXHRcdCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJWZXJzaW9uQ29tbWFuZCIsIkRlY29oZXJlQ29tbWFuZCIsImFjdGlvbnMiLCJWZXJzaW9uIiwiU3luY0xvY2tGaWxlIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiYWRkT3B0aW9uIiwiQ29uZmlndXJhdGlvbk9wdGlvbiIsIkRyeVJ1bk9wdGlvbiIsIm9wdGlvbiIsIkRlZmF1bHRSZWxlYXNlVHlwZSIsIkRlZmF1bHRDaGFubmVsIl0sIm1hcHBpbmdzIjoiOzs7OytCQU1hQTs7O2VBQUFBOzs7cUJBTnNEO29DQUN0QzsrQkFDK0I7QUFJckQsTUFBTUEsdUJBQXVCQyxvQkFBZTtJQUNsRCxJQUFvQkMsVUFBVTtRQUM3QixPQUFPO1lBQUNDLHNCQUFPO1lBQUVDLGdDQUFZO1NBQUM7SUFDL0I7SUFFQSxZQUFtQkMsSUFBWSxDQUFFO1FBQ2hDLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNDLFdBQVcsQ0FBQztRQUNqQixJQUFJLENBQUNDLFNBQVMsQ0FBQyxJQUFJQyx3QkFBbUIsQ0FBQztRQUN2QyxJQUFJLENBQUNELFNBQVMsQ0FBQyxJQUFJRSxpQkFBWSxDQUFDO1FBQ2hDLElBQUksQ0FBQ0MsTUFBTSxDQUNWLGdDQUNBLDREQUNBQyxpQ0FBa0I7UUFFbkIsSUFBSSxDQUFDRCxNQUFNLENBQ1YsdUJBQ0EscUVBQ0FFLDZCQUFjO1FBRWYsSUFBSSxDQUFDRixNQUFNLENBQ1YsdUJBQ0E7UUFFRCxJQUFJLENBQUNBLE1BQU0sQ0FBQyxhQUFhLHVDQUF1QztRQUNoRSxJQUFJLENBQUNBLE1BQU0sQ0FBQyxZQUFZLHFEQUFxRDtRQUM3RSxJQUFJLENBQUNBLE1BQU0sQ0FBQyx1QkFBdUI7UUFDbkMsSUFBSSxDQUFDQSxNQUFNLENBQ1YscUJBQ0EsOEZBQ0E7SUFFRjtBQUNEIn0=
@@ -77,5 +77,3 @@ const BUILT_IN_MODULES = [
77
77
  "worker_threads",
78
78
  "zlib"
79
79
  ];
80
-
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9jb25zdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1dDX0NPTkZJRyA9IFwiLnN3Y3JjXCI7XG5leHBvcnQgY29uc3QgTk9ERV9NT0RVTEVTID0gXCJub2RlX21vZHVsZXNcIjtcbmV4cG9ydCBjb25zdCBCVUlMVF9JTl9NT0RVTEVTID0gW1xuXHRcImFzc2VydFwiLFxuXHRcImFzc2VydC9zdHJpY3RcIixcblx0XCJhc3luY19ob29rc1wiLFxuXHRcImJ1ZmZlclwiLFxuXHRcImNoaWxkX3Byb2Nlc3NcIixcblx0XCJjbHVzdGVyXCIsXG5cdFwiY29uc29sZVwiLFxuXHRcImNvbnN0YW50c1wiLFxuXHRcImNyeXB0b1wiLFxuXHRcImRncmFtXCIsXG5cdFwiZGlhZ25vc3RpY3NfY2hhbm5lbFwiLFxuXHRcImRuc1wiLFxuXHRcImRucy9wcm9taXNlc1wiLFxuXHRcImRvbWFpblwiLFxuXHRcImV2ZW50c1wiLFxuXHRcImZzXCIsXG5cdFwiZnMvcHJvbWlzZXNcIixcblx0XCJodHRwXCIsXG5cdFwiaHR0cDJcIixcblx0XCJodHRwc1wiLFxuXHRcImluc3BlY3RvclwiLFxuXHRcImluc3BlY3Rvci9wcm9taXNlc1wiLFxuXHRcIm1vZHVsZVwiLFxuXHRcIm5ldFwiLFxuXHRcIm9zXCIsXG5cdFwicGF0aFwiLFxuXHRcInBhdGgvcG9zaXhcIixcblx0XCJwYXRoL3dpbjMyXCIsXG5cdFwicGVyZl9ob29rc1wiLFxuXHRcInByb2Nlc3NcIixcblx0XCJwdW55Y29kZVwiLFxuXHRcInF1ZXJ5c3RyaW5nXCIsXG5cdFwicmVhZGxpbmVcIixcblx0XCJyZWFkbGluZS9wcm9taXNlc1wiLFxuXHRcInJlcGxcIixcblx0XCJzdHJlYW1cIixcblx0XCJzdHJlYW0vY29uc3VtZXJzXCIsXG5cdFwic3RyZWFtL3Byb21pc2VzXCIsXG5cdFwic3RyZWFtL3dlYlwiLFxuXHRcInN0cmluZ19kZWNvZGVyXCIsXG5cdFwic3lzXCIsXG5cdFwidGltZXJzXCIsXG5cdFwidGltZXJzL3Byb21pc2VzXCIsXG5cdFwidGxzXCIsXG5cdFwidHJhY2VfZXZlbnRzXCIsXG5cdFwidHR5XCIsXG5cdFwidXJsXCIsXG5cdFwidXRpbFwiLFxuXHRcInV0aWwvdHlwZXNcIixcblx0XCJ2OFwiLFxuXHRcInZtXCIsXG5cdFwid2FzaVwiLFxuXHRcIndvcmtlcl90aHJlYWRzXCIsXG5cdFwiemxpYlwiLFxuXTtcbiJdLCJuYW1lcyI6WyJCVUlMVF9JTl9NT0RVTEVTIiwiTk9ERV9NT0RVTEVTIiwiU1dDX0NPTkZJRyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFFYUE7ZUFBQUE7O1FBREFDO2VBQUFBOztRQURBQztlQUFBQTs7O0FBQU4sTUFBTUEsYUFBYTtBQUNuQixNQUFNRCxlQUFlO0FBQ3JCLE1BQU1ELG1CQUFtQjtJQUMvQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDQSJ9
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createWorkspace", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createWorkspace;
9
+ }
10
+ });
11
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
+ const _workspace = require("@decohere/workspace");
13
+ const _workspaceconfig = require("./workspace.config.js");
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ async function createWorkspace(options = {}) {
20
+ const rootDir = options.rootDir ?? _workspaceconfig.WorkspaceDefaults.rootDir ?? "./";
21
+ const configFile = options.configFile ?? (rootDir === _workspaceconfig.WorkspaceDefaults.rootDir ? undefined : _nodepath.default.join(rootDir, _workspace.WORKSPACE_CONFIG));
22
+ // `projects` is dropped too: forge's defaults set it to undefined, which would override the
23
+ // user's per-project settings (docker, ui) in the merge.
24
+ const { configurations: _, projects: __, ...forgeDefaults } = _workspaceconfig.WorkspaceDefaults;
25
+ const userConfig = await _workspace.UserConfigFactory.getUserConfig(configFile);
26
+ // Only apply forge default configurations when user config doesn't provide any.
27
+ // This ensures user-defined configurations take priority while still providing
28
+ // sensible defaults (debug + release) when no config file is present.
29
+ const configurations = userConfig.configurations?.length ? undefined : _workspaceconfig.DefaultConfigurations;
30
+ return _workspace.WorkspaceFactory.create({
31
+ ...forgeDefaults,
32
+ ...configurations ? {
33
+ configurations
34
+ } : {},
35
+ configFile,
36
+ rootDir
37
+ });
38
+ }
@@ -13,13 +13,13 @@ _export(exports, {
13
13
  return ForgeError;
14
14
  },
15
15
  get WorkspaceConfigurationError () {
16
- return _mesh.WorkspaceConfigurationError;
16
+ return _workspace.WorkspaceConfigurationError;
17
17
  },
18
18
  get formatUnknownError () {
19
19
  return formatUnknownError;
20
20
  }
21
21
  });
22
- const _mesh = require("@decohere/mesh");
22
+ const _workspace = require("@decohere/workspace");
23
23
  class ForgeError extends Error {
24
24
  }
25
25
  function formatUnknownError(reason) {
@@ -35,5 +35,3 @@ function formatUnknownError(reason) {
35
35
  return "Unknown error";
36
36
  }
37
37
  }
38
-
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgV29ya3NwYWNlQ29uZmlndXJhdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5leHBvcnQgY2xhc3MgRm9yZ2VFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRVbmtub3duRXJyb3IocmVhc29uOiB1bmtub3duKTogc3RyaW5nIHtcblx0aWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdFx0cmV0dXJuIHJlYXNvbi5tZXNzYWdlO1xuXHR9XG5cblx0aWYgKHR5cGVvZiByZWFzb24gPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gcmVhc29uO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVhc29uKTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIFwiVW5rbm93biBlcnJvclwiO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiRm9yZ2VFcnJvciIsIldvcmtzcGFjZUNvbmZpZ3VyYXRpb25FcnJvciIsImZvcm1hdFVua25vd25FcnJvciIsIkVycm9yIiwicmVhc29uIiwibWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBQ2FBO2VBQUFBOztRQURKQztlQUFBQSxpQ0FBMkI7O1FBR3BCQztlQUFBQTs7O3NCQUg0QjtBQUNyQyxNQUFNRixtQkFBbUJHO0FBQU87QUFFaEMsU0FBU0QsbUJBQW1CRSxNQUFlO0lBQ2pELElBQUlBLGtCQUFrQkQsT0FBTztRQUM1QixPQUFPQyxPQUFPQyxPQUFPO0lBQ3RCO0lBRUEsSUFBSSxPQUFPRCxXQUFXLFVBQVU7UUFDL0IsT0FBT0E7SUFDUjtJQUVBLElBQUk7UUFDSCxPQUFPRSxLQUFLQyxTQUFTLENBQUNIO0lBQ3ZCLEVBQUUsT0FBTTtRQUNQLE9BQU87SUFDUjtBQUNEIn0=
@@ -10,10 +10,10 @@ Object.defineProperty(exports, "ProjectExtensions", {
10
10
  });
11
11
  const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
12
12
  const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
13
- const _mesh = require("@decohere/mesh");
14
- const _caching = require("@decohere/nexus/caching");
15
- const _extensibility = require("@decohere/nexus/extensibility");
16
- const _io = require("@decohere/nexus/io");
13
+ const _workspace = require("@decohere/workspace");
14
+ const _caching = require("@decohere/core/caching");
15
+ const _extensibility = require("@decohere/core/extensibility");
16
+ const _io = require("@decohere/core/io");
17
17
  const _const = require("../const.js");
18
18
  const _swcconfigtype = require("../types/swc-config.type.js");
19
19
  function _interop_require_default(obj) {
@@ -52,7 +52,7 @@ class ProjectExtensions {
52
52
  }
53
53
  static swcConfigPaths(project) {
54
54
  return [
55
- _nodepath.default.join(project.projectDirectory, _const.SWC_CONFIG),
55
+ _nodepath.default.join(project.projectRoot, _const.SWC_CONFIG),
56
56
  _nodepath.default.join(project.rootDir, _const.SWC_CONFIG)
57
57
  ];
58
58
  }
@@ -65,30 +65,28 @@ class ProjectExtensions {
65
65
  }
66
66
  }
67
67
  _ts_decorate([
68
- (0, _extensibility.extension)(_mesh.Project),
68
+ (0, _extensibility.extension)(_workspace.Project),
69
69
  _ts_metadata("design:type", Function),
70
70
  _ts_metadata("design:paramtypes", [
71
- typeof _mesh.Project === "undefined" ? Object : _mesh.Project
71
+ typeof _workspace.Project === "undefined" ? Object : _workspace.Project
72
72
  ]),
73
73
  _ts_metadata("design:returntype", typeof ForgeConfiguration === "undefined" ? Object : ForgeConfiguration)
74
74
  ], ProjectExtensions, "getForgeConfiguration", null);
75
75
  _ts_decorate([
76
- (0, _extensibility.extension)(_mesh.Project),
76
+ (0, _extensibility.extension)(_workspace.Project),
77
77
  (0, _caching.memoize)(),
78
78
  _ts_metadata("design:type", Function),
79
79
  _ts_metadata("design:paramtypes", [
80
- typeof _mesh.Project === "undefined" ? Object : _mesh.Project
80
+ typeof _workspace.Project === "undefined" ? Object : _workspace.Project
81
81
  ]),
82
82
  _ts_metadata("design:returntype", Promise)
83
83
  ], ProjectExtensions, "getSwcConfig", null);
84
84
  _ts_decorate([
85
- (0, _extensibility.extension)(_mesh.Project),
85
+ (0, _extensibility.extension)(_workspace.Project),
86
86
  (0, _caching.memoize)(),
87
87
  _ts_metadata("design:type", Function),
88
88
  _ts_metadata("design:paramtypes", [
89
- typeof _mesh.Project === "undefined" ? Object : _mesh.Project
89
+ typeof _workspace.Project === "undefined" ? Object : _workspace.Project
90
90
  ]),
91
91
  _ts_metadata("design:returntype", typeof _swcconfigtype.SwcConfig === "undefined" ? Object : _swcconfigtype.SwcConfig)
92
92
  ], ProjectExtensions, "getSwcConfigSync", null);
93
-
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9leHRlbnNpb25zL3Byb2plY3QuZXh0ZW5zaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NhY2hpbmdcIjtcbmltcG9ydCB7IGV4dGVuc2lvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZXh0ZW5zaWJpbGl0eVwiO1xuaW1wb3J0IHsgaW8gfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBTV0NfQ09ORklHIH0gZnJvbSBcIi4uL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEZvcmdlQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGUuanNcIjtcbmltcG9ydCB7IFN3Y0NvbmZpZyB9IGZyb20gXCIuLi90eXBlcy9zd2MtY29uZmlnLnR5cGUuanNcIjtcblxuZGVjbGFyZSBtb2R1bGUgXCJAZGVjb2hlcmUvbWVzaFwiIHtcblx0aW50ZXJmYWNlIFByb2plY3Qge1xuXHRcdGdldEZvcmdlQ29uZmlndXJhdGlvbigpOiBGb3JnZUNvbmZpZ3VyYXRpb247XG5cdFx0Z2V0U3djQ29uZmlnKCk6IFByb21pc2U8U3djQ29uZmlnPjtcblx0XHRnZXRTd2NDb25maWdTeW5jKCk6IFN3Y0NvbmZpZztcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUHJvamVjdEV4dGVuc2lvbnMge1xuXHRAZXh0ZW5zaW9uKFByb2plY3QpXG5cdHB1YmxpYyBzdGF0aWMgZ2V0Rm9yZ2VDb25maWd1cmF0aW9uKHByb2plY3Q6IFByb2plY3QpOiBGb3JnZUNvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiBwcm9qZWN0LmNvbmZpZ3VyYXRpb24gYXMgRm9yZ2VDb25maWd1cmF0aW9uO1xuXHR9XG5cblx0QGV4dGVuc2lvbihQcm9qZWN0KVxuXHRAbWVtb2l6ZSgpXG5cdHB1YmxpYyBzdGF0aWMgYXN5bmMgZ2V0U3djQ29uZmlnKHByb2plY3Q6IFByb2plY3QpOiBQcm9taXNlPFN3Y0NvbmZpZz4ge1xuXHRcdGZvciAoY29uc3QgY29uZmlnUGF0aCBvZiBQcm9qZWN0RXh0ZW5zaW9ucy5zd2NDb25maWdQYXRocyhwcm9qZWN0KSkge1xuXHRcdFx0aWYgKGF3YWl0IGlvLmZpbGVFeGlzdHMoY29uZmlnUGF0aCkpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBTd2NDb25maWcoYXdhaXQgaW8ucmVhZEpzb25GaWxlKGNvbmZpZ1BhdGgpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBTd2NDb25maWcoKTtcblx0fVxuXG5cdEBleHRlbnNpb24oUHJvamVjdClcblx0QG1lbW9pemUoKVxuXHRwdWJsaWMgc3RhdGljIGdldFN3Y0NvbmZpZ1N5bmMocHJvamVjdDogUHJvamVjdCk6IFN3Y0NvbmZpZyB7XG5cdFx0Zm9yIChjb25zdCBjb25maWdQYXRoIG9mIFByb2plY3RFeHRlbnNpb25zLnN3Y0NvbmZpZ1BhdGhzKHByb2plY3QpKSB7XG5cdFx0XHRpZiAoUHJvamVjdEV4dGVuc2lvbnMuZmlsZUV4aXN0c1N5bmMoY29uZmlnUGF0aCkpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBTd2NDb25maWcoSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgXCJ1dGY4XCIpKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgU3djQ29uZmlnKCk7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBzd2NDb25maWdQYXRocyhwcm9qZWN0OiBQcm9qZWN0KTogc3RyaW5nW10ge1xuXHRcdHJldHVybiBbXG5cdFx0XHRwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0RGlyZWN0b3J5LCBTV0NfQ09ORklHKSxcblx0XHRcdHBhdGguam9pbihwcm9qZWN0LnJvb3REaXIsIFNXQ19DT05GSUcpLFxuXHRcdF07XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBmaWxlRXhpc3RzU3luYyhmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBmcy5zdGF0U3luYyhmaWxlUGF0aCkuaXNGaWxlKCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG4iXSwibmFtZXMiOlsiUHJvamVjdEV4dGVuc2lvbnMiLCJnZXRGb3JnZUNvbmZpZ3VyYXRpb24iLCJwcm9qZWN0IiwiY29uZmlndXJhdGlvbiIsImdldFN3Y0NvbmZpZyIsImNvbmZpZ1BhdGgiLCJzd2NDb25maWdQYXRocyIsImlvIiwiZmlsZUV4aXN0cyIsIlN3Y0NvbmZpZyIsInJlYWRKc29uRmlsZSIsImdldFN3Y0NvbmZpZ1N5bmMiLCJmaWxlRXhpc3RzU3luYyIsIkpTT04iLCJwYXJzZSIsImZzIiwicmVhZEZpbGVTeW5jIiwicGF0aCIsImpvaW4iLCJwcm9qZWN0RGlyZWN0b3J5IiwiU1dDX0NPTkZJRyIsInJvb3REaXIiLCJmaWxlUGF0aCIsInN0YXRTeW5jIiwiaXNGaWxlIl0sIm1hcHBpbmdzIjoiOzs7OytCQWtCYUE7OztlQUFBQTs7OytEQWxCRTtpRUFDRTtzQkFDTzt5QkFDQTsrQkFDRTtvQkFDUDt1QkFDUTsrQkFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBVW5CLE1BQU1BO0lBQ1osT0FDY0Msc0JBQXNCQyxPQUFnQixFQUFzQjtRQUN6RSxPQUFPQSxRQUFRQyxhQUFhO0lBQzdCO0lBRUEsYUFFb0JDLGFBQWFGLE9BQWdCLEVBQXNCO1FBQ3RFLEtBQUssTUFBTUcsY0FBY0wsa0JBQWtCTSxjQUFjLENBQUNKLFNBQVU7WUFDbkUsSUFBSSxNQUFNSyxNQUFFLENBQUNDLFVBQVUsQ0FBQ0gsYUFBYTtnQkFDcEMsT0FBTyxJQUFJSSx3QkFBUyxDQUFDLE1BQU1GLE1BQUUsQ0FBQ0csWUFBWSxDQUFDTDtZQUM1QztRQUNEO1FBQ0EsT0FBTyxJQUFJSSx3QkFBUztJQUNyQjtJQUVBLE9BRWNFLGlCQUFpQlQsT0FBZ0IsRUFBYTtRQUMzRCxLQUFLLE1BQU1HLGNBQWNMLGtCQUFrQk0sY0FBYyxDQUFDSixTQUFVO1lBQ25FLElBQUlGLGtCQUFrQlksY0FBYyxDQUFDUCxhQUFhO2dCQUNqRCxPQUFPLElBQUlJLHdCQUFTLENBQUNJLEtBQUtDLEtBQUssQ0FBQ0MsZUFBRSxDQUFDQyxZQUFZLENBQUNYLFlBQVk7WUFDN0Q7UUFDRDtRQUNBLE9BQU8sSUFBSUksd0JBQVM7SUFDckI7SUFFQSxPQUFlSCxlQUFlSixPQUFnQixFQUFZO1FBQ3pELE9BQU87WUFDTmUsaUJBQUksQ0FBQ0MsSUFBSSxDQUFDaEIsUUFBUWlCLGdCQUFnQixFQUFFQyxpQkFBVTtZQUM5Q0gsaUJBQUksQ0FBQ0MsSUFBSSxDQUFDaEIsUUFBUW1CLE9BQU8sRUFBRUQsaUJBQVU7U0FDckM7SUFDRjtJQUVBLE9BQWVSLGVBQWVVLFFBQWdCLEVBQVc7UUFDeEQsSUFBSTtZQUNILE9BQU9QLGVBQUUsQ0FBQ1EsUUFBUSxDQUFDRCxVQUFVRSxNQUFNO1FBQ3BDLEVBQUUsT0FBTTtZQUNQLE9BQU87UUFDUjtJQUNEO0FBQ0QifQ==
@@ -9,8 +9,9 @@ Object.defineProperty(exports, "SwcConfigFactory", {
9
9
  }
10
10
  });
11
11
  const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
- const _diagnostics = require("@decohere/nexus/diagnostics");
13
- const _objects = require("@decohere/nexus/objects");
12
+ const _workspace = require("@decohere/workspace");
13
+ const _diagnostics = require("@decohere/devkit/diagnostics");
14
+ const _objects = require("@decohere/core/objects");
14
15
  const _errors = require("../errors.js");
15
16
  function _interop_require_default(obj) {
16
17
  return obj && obj.__esModule ? obj : {
@@ -47,10 +48,15 @@ class SwcConfigFactory {
47
48
  * Creates a base config for a project+target combination, without a filename.
48
49
  * Call once per (project, target) and then use createFileConfig() per file.
49
50
  */ createBaseConfig(buildTarget, configOptions) {
50
- const { userConfig, tsConfig, aliasPaths } = configOptions;
51
+ const { userConfig, tsConfig, aliasPaths, sourceMaps, workspace, projects } = configOptions;
51
52
  const { compilerOptions } = tsConfig ?? {};
52
- const paths = aliasPaths ? compilerOptions?.paths : undefined;
53
- const baseUrl = SwcConfigFactory.getBaseUrl(tsConfig) ?? (paths != null ? _nodepath.default.resolve(".") : undefined);
53
+ const aliases = aliasPaths ? workspace != null ? workspace.getPackageAliases(projects?.[0]?.configuration.name ?? "debug") : projects != null && projects.length > 0 ? _workspace.packageAliases.build(projects, {
54
+ baseUrl: SwcConfigFactory.getBaseUrl(tsConfig) ?? _nodepath.default.resolve(projects[0].rootDir),
55
+ tsconfigPaths: compilerOptions?.paths
56
+ }) : undefined : undefined;
57
+ const tsconfigOnlyPaths = aliasPaths && aliases == null ? compilerOptions?.paths : undefined;
58
+ const paths = SwcConfigFactory.nonemptyPaths(aliases?.paths ?? tsconfigOnlyPaths);
59
+ const baseUrl = aliases?.baseUrl ?? SwcConfigFactory.getBaseUrl(tsConfig) ?? (workspace != null ? _nodepath.default.resolve(workspace.rootDir) : undefined) ?? (paths != null ? _nodepath.default.resolve(".") : undefined);
54
60
  const options = {
55
61
  jsc: {
56
62
  baseUrl,
@@ -58,20 +64,36 @@ class SwcConfigFactory {
58
64
  },
59
65
  module: {
60
66
  type: buildTarget
61
- }
67
+ },
68
+ ...sourceMaps === false ? {
69
+ sourceMaps: false
70
+ } : {}
62
71
  };
63
72
  return _objects.merge.withOptions({
64
73
  mergeArrays: false
65
74
  }, defaultOptions, options, userConfig ?? {});
66
75
  }
67
- /** Stamps a per-file filename onto a pre-built base config. */ createFileConfig(file, baseConfig) {
76
+ /** Stamps a per-file filename onto a pre-built base config; `.tsx` also turns on JSX. */ createFileConfig(file, baseConfig) {
77
+ const tsx = file.fullPath.endsWith(".tsx");
78
+ const jsc = tsx && baseConfig.jsc?.parser?.syntax === "typescript" ? {
79
+ ...baseConfig.jsc,
80
+ parser: {
81
+ ...baseConfig.jsc.parser,
82
+ tsx: true
83
+ }
84
+ } : baseConfig.jsc;
68
85
  const config = {
69
86
  ...baseConfig,
87
+ jsc,
70
88
  filename: file.fullPath
71
89
  };
72
90
  this.validate(config);
73
91
  return config;
74
92
  }
93
+ static nonemptyPaths(paths) {
94
+ if (paths == null || Object.keys(paths).length === 0) return undefined;
95
+ return paths;
96
+ }
75
97
  /**
76
98
  * Validates SWC options against known causes of Rust/NAPI process crashes.
77
99
  * Throws a ForgeError with a descriptive message instead of letting the
@@ -94,5 +116,3 @@ class SwcConfigFactory {
94
116
  SwcConfigFactory = _ts_decorate([
95
117
  _diagnostics.Trace
96
118
  ], SwcConfigFactory);
97
-
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mYWN0b3JpZXMvc3djLWNvbmZpZy5mYWN0b3J5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgVHNjb25maWcgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9kaWFnbm9zdGljc1wiO1xuaW1wb3J0IHR5cGUgeyBGaWxlRXggfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2lvXCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvb2JqZWN0c1wiO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIH0gZnJvbSBcIkBzd2MvY29yZVwiO1xuaW1wb3J0IHsgRm9yZ2VFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcbmltcG9ydCB0eXBlIHsgVHJhbnNwaWxlVGFyZ2V0IH0gZnJvbSBcIi4uL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFN3Y0NvbmZpZ09wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXMvc3djLWNvbmZpZy50eXBlLmpzXCI7XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuXHRqc2M6IHtcblx0XHRwYXJzZXI6IHtcblx0XHRcdHN5bnRheDogXCJ0eXBlc2NyaXB0XCIsXG5cdFx0XHRkZWNvcmF0b3JzOiB0cnVlLFxuXHRcdH0sXG5cdFx0dGFyZ2V0OiBcImVzbmV4dFwiLFxuXHRcdHRyYW5zZm9ybToge1xuXHRcdFx0ZGVjb3JhdG9yTWV0YWRhdGE6IHRydWUsXG5cdFx0fSxcblx0XHRleHBlcmltZW50YWw6IHsga2VlcEltcG9ydEF0dHJpYnV0ZXM6IHRydWUgfSxcblx0fSxcblx0bW9kdWxlOiB7XG5cdFx0cmVzb2x2ZUZ1bGx5OiB0cnVlLFxuXHR9LFxuXHRzb3VyY2VNYXBzOiBcImlubGluZVwiLFxufTtcblxuQFRyYWNlXG5leHBvcnQgY2xhc3MgU3djQ29uZmlnRmFjdG9yeSB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgYmFzZSBjb25maWcgZm9yIGEgcHJvamVjdCt0YXJnZXQgY29tYmluYXRpb24sIHdpdGhvdXQgYSBmaWxlbmFtZS5cblx0ICogQ2FsbCBvbmNlIHBlciAocHJvamVjdCwgdGFyZ2V0KSBhbmQgdGhlbiB1c2UgY3JlYXRlRmlsZUNvbmZpZygpIHBlciBmaWxlLlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZUJhc2VDb25maWcoXG5cdFx0YnVpbGRUYXJnZXQ6IFRyYW5zcGlsZVRhcmdldCxcblx0XHRjb25maWdPcHRpb25zOiBTd2NDb25maWdPcHRpb25zLFxuXHQpOiBPcHRpb25zIHtcblx0XHRjb25zdCB7IHVzZXJDb25maWcsIHRzQ29uZmlnLCBhbGlhc1BhdGhzIH0gPSBjb25maWdPcHRpb25zO1xuXHRcdGNvbnN0IHsgY29tcGlsZXJPcHRpb25zIH0gPSB0c0NvbmZpZyA/PyB7fTtcblx0XHRjb25zdCBwYXRocyA9IGFsaWFzUGF0aHMgPyBjb21waWxlck9wdGlvbnM/LnBhdGhzIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGJhc2VVcmwgPVxuXHRcdFx0U3djQ29uZmlnRmFjdG9yeS5nZXRCYXNlVXJsKHRzQ29uZmlnKSA/PyAocGF0aHMgIT0gbnVsbCA/IHBhdGgucmVzb2x2ZShcIi5cIikgOiB1bmRlZmluZWQpO1xuXG5cdFx0Y29uc3Qgb3B0aW9uczogT3B0aW9ucyA9IHtcblx0XHRcdGpzYzoge1xuXHRcdFx0XHRiYXNlVXJsLFxuXHRcdFx0XHRwYXRocyxcblx0XHRcdH0sXG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0dHlwZTogYnVpbGRUYXJnZXQsXG5cdFx0XHR9LFxuXHRcdH07XG5cblx0XHRyZXR1cm4gbWVyZ2Uud2l0aE9wdGlvbnM8T3B0aW9ucz4oXG5cdFx0XHR7IG1lcmdlQXJyYXlzOiBmYWxzZSB9LFxuXHRcdFx0ZGVmYXVsdE9wdGlvbnMsXG5cdFx0XHRvcHRpb25zLFxuXHRcdFx0dXNlckNvbmZpZyA/PyB7fSxcblx0XHQpO1xuXHR9XG5cblx0LyoqIFN0YW1wcyBhIHBlci1maWxlIGZpbGVuYW1lIG9udG8gYSBwcmUtYnVpbHQgYmFzZSBjb25maWcuICovXG5cdHB1YmxpYyBjcmVhdGVGaWxlQ29uZmlnKGZpbGU6IEZpbGVFeCwgYmFzZUNvbmZpZzogT3B0aW9ucyk6IE9wdGlvbnMge1xuXHRcdGNvbnN0IGNvbmZpZyA9IHsgLi4uYmFzZUNvbmZpZywgZmlsZW5hbWU6IGZpbGUuZnVsbFBhdGggfTtcblx0XHR0aGlzLnZhbGlkYXRlKGNvbmZpZyk7XG5cdFx0cmV0dXJuIGNvbmZpZztcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgU1dDIG9wdGlvbnMgYWdhaW5zdCBrbm93biBjYXVzZXMgb2YgUnVzdC9OQVBJIHByb2Nlc3MgY3Jhc2hlcy5cblx0ICogVGhyb3dzIGEgRm9yZ2VFcnJvciB3aXRoIGEgZGVzY3JpcHRpdmUgbWVzc2FnZSBpbnN0ZWFkIG9mIGxldHRpbmcgdGhlXG5cdCAqIE5BUEkgbGF5ZXIgYWJvcnQgdGhlIHByb2Nlc3MuXG5cdCAqXG5cdCAqIEtub3duIGNyYXNoIGNhdXNlczpcblx0ICogLSBganNjLmJhc2VVcmxgIHNldCB0byBhIHJlbGF0aXZlIHBhdGggKFNXQyByZXF1aXJlcyBhbiBhYnNvbHV0ZSBwYXRoKVxuXHQgKi9cblx0cHVibGljIHZhbGlkYXRlKG9wdGlvbnM6IE9wdGlvbnMpOiB2b2lkIHtcblx0XHRjb25zdCBiYXNlVXJsID0gb3B0aW9ucy5qc2M/LmJhc2VVcmw7XG5cdFx0aWYgKGJhc2VVcmwgIT0gbnVsbCAmJiAhcGF0aC5pc0Fic29sdXRlKGJhc2VVcmwpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihcblx0XHRcdFx0YFNXQyBjb25maWc6IGpzYy5iYXNlVXJsIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCB0byBhdm9pZCBhIHByb2Nlc3MgY3Jhc2gsIGdvdDogXCIke2Jhc2VVcmx9XCIuIFVzZSBwYXRoLnJlc29sdmUoKSB0byBjb252ZXJ0IGl0LmAsXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBSZXNvbHZlcyB0c2NvbmZpZyBiYXNlVXJsIHRvIGFuIGFic29sdXRlIHBhdGguIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vdCBzZXQuICovXG5cdHByaXZhdGUgc3RhdGljIGdldEJhc2VVcmwodHNDb25maWc6IFRzY29uZmlnIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBiYXNlVXJsID0gdHNDb25maWc/LmNvbXBpbGVyT3B0aW9ucz8uYmFzZVVybDtcblx0XHRpZiAoYmFzZVVybCA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRcdHJldHVybiBwYXRoLnJlc29sdmUoYmFzZVVybCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJTd2NDb25maWdGYWN0b3J5IiwiZGVmYXVsdE9wdGlvbnMiLCJqc2MiLCJwYXJzZXIiLCJzeW50YXgiLCJkZWNvcmF0b3JzIiwidGFyZ2V0IiwidHJhbnNmb3JtIiwiZGVjb3JhdG9yTWV0YWRhdGEiLCJleHBlcmltZW50YWwiLCJrZWVwSW1wb3J0QXR0cmlidXRlcyIsIm1vZHVsZSIsInJlc29sdmVGdWxseSIsInNvdXJjZU1hcHMiLCJjcmVhdGVCYXNlQ29uZmlnIiwiYnVpbGRUYXJnZXQiLCJjb25maWdPcHRpb25zIiwidXNlckNvbmZpZyIsInRzQ29uZmlnIiwiYWxpYXNQYXRocyIsImNvbXBpbGVyT3B0aW9ucyIsInBhdGhzIiwidW5kZWZpbmVkIiwiYmFzZVVybCIsImdldEJhc2VVcmwiLCJwYXRoIiwicmVzb2x2ZSIsIm9wdGlvbnMiLCJ0eXBlIiwibWVyZ2UiLCJ3aXRoT3B0aW9ucyIsIm1lcmdlQXJyYXlzIiwiY3JlYXRlRmlsZUNvbmZpZyIsImZpbGUiLCJiYXNlQ29uZmlnIiwiY29uZmlnIiwiZmlsZW5hbWUiLCJmdWxsUGF0aCIsInZhbGlkYXRlIiwiaXNBYnNvbHV0ZSIsIkZvcmdlRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7K0JBNkJhQTs7O2VBQUFBOzs7aUVBN0JJOzZCQUVLO3lCQUVBO3dCQUVLOzs7Ozs7Ozs7Ozs7QUFJM0IsTUFBTUMsaUJBQWlCO0lBQ3RCQyxLQUFLO1FBQ0pDLFFBQVE7WUFDUEMsUUFBUTtZQUNSQyxZQUFZO1FBQ2I7UUFDQUMsUUFBUTtRQUNSQyxXQUFXO1lBQ1ZDLG1CQUFtQjtRQUNwQjtRQUNBQyxjQUFjO1lBQUVDLHNCQUFzQjtRQUFLO0lBQzVDO0lBQ0FDLFFBQVE7UUFDUEMsY0FBYztJQUNmO0lBQ0FDLFlBQVk7QUFDYjtBQUdPLE1BQU1iO0lBQ1o7OztFQUdDLEdBQ0QsQUFBT2MsaUJBQ05DLFdBQTRCLEVBQzVCQyxhQUErQixFQUNyQjtRQUNWLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxRQUFRLEVBQUVDLFVBQVUsRUFBRSxHQUFHSDtRQUM3QyxNQUFNLEVBQUVJLGVBQWUsRUFBRSxHQUFHRixZQUFZLENBQUM7UUFDekMsTUFBTUcsUUFBUUYsYUFBYUMsaUJBQWlCQyxRQUFRQztRQUNwRCxNQUFNQyxVQUNMdkIsaUJBQWlCd0IsVUFBVSxDQUFDTixhQUFjRyxDQUFBQSxTQUFTLE9BQU9JLGlCQUFJLENBQUNDLE9BQU8sQ0FBQyxPQUFPSixTQUFRO1FBRXZGLE1BQU1LLFVBQW1CO1lBQ3hCekIsS0FBSztnQkFDSnFCO2dCQUNBRjtZQUNEO1lBQ0FWLFFBQVE7Z0JBQ1BpQixNQUFNYjtZQUNQO1FBQ0Q7UUFFQSxPQUFPYyxjQUFLLENBQUNDLFdBQVcsQ0FDdkI7WUFBRUMsYUFBYTtRQUFNLEdBQ3JCOUIsZ0JBQ0EwQixTQUNBVixjQUFjLENBQUM7SUFFakI7SUFFQSw2REFBNkQsR0FDN0QsQUFBT2UsaUJBQWlCQyxJQUFZLEVBQUVDLFVBQW1CLEVBQVc7UUFDbkUsTUFBTUMsU0FBUztZQUFFLEdBQUdELFVBQVU7WUFBRUUsVUFBVUgsS0FBS0ksUUFBUTtRQUFDO1FBQ3hELElBQUksQ0FBQ0MsUUFBUSxDQUFDSDtRQUNkLE9BQU9BO0lBQ1I7SUFFQTs7Ozs7OztFQU9DLEdBQ0QsQUFBT0csU0FBU1gsT0FBZ0IsRUFBUTtRQUN2QyxNQUFNSixVQUFVSSxRQUFRekIsR0FBRyxFQUFFcUI7UUFDN0IsSUFBSUEsV0FBVyxRQUFRLENBQUNFLGlCQUFJLENBQUNjLFVBQVUsQ0FBQ2hCLFVBQVU7WUFDakQsTUFBTSxJQUFJaUIsa0JBQVUsQ0FDbkIsQ0FBQyxpRkFBaUYsRUFBRWpCLFFBQVEsb0NBQW9DLENBQUM7UUFFbkk7SUFDRDtJQUVBLGlGQUFpRixHQUNqRixPQUFlQyxXQUFXTixRQUE4QixFQUFzQjtRQUM3RSxNQUFNSyxVQUFVTCxVQUFVRSxpQkFBaUJHO1FBQzNDLElBQUlBLFdBQVcsTUFBTSxPQUFPRDtRQUM1QixPQUFPRyxpQkFBSSxDQUFDQyxPQUFPLENBQUNIO0lBQ3JCO0FBQ0QifQ==
@@ -8,16 +8,17 @@ Object.defineProperty(exports, "ForgeModule", {
8
8
  return ForgeModule;
9
9
  }
10
10
  });
11
- const _mesh = require("@decohere/mesh");
12
- const _cli = require("@decohere/nexus/cli");
11
+ const _cli = require("@decohere/devkit/cli");
13
12
  const _index = /*#__PURE__*/ _interop_require_wildcard(require("./actions/index.js"));
14
13
  const _index1 = /*#__PURE__*/ _interop_require_wildcard(require("./commands/index.js"));
14
+ const _createworkspace = require("./create-workspace.js");
15
+ const _dependencypinnerservice = require("./packaging/dependency-pinner.service.js");
16
+ const _importgraphservice = require("./packaging/import-graph.service.js");
15
17
  const _dependencyresolverservice = require("./services/dependency-resolver.service.js");
16
18
  const _filewriterservice = require("./services/file-writer.service.js");
17
19
  const _swctranspiler = require("./services/swc-transpiler.js");
18
20
  const _typeemitter = require("./services/type-emitter.js");
19
21
  const _transformertype = require("./types/transformer.type.js");
20
- const _workspaceconfig = require("./workspace.config.js");
21
22
  function _getRequireWildcardCache(nodeInterop) {
22
23
  if (typeof WeakMap !== "function") return null;
23
24
  var cacheBabelInterop = new WeakMap();
@@ -66,6 +67,7 @@ class ForgeModule extends _cli.ModuleManifest {
66
67
  clean: _index.Clean,
67
68
  copy: _index.Copy,
68
69
  docker: _index.Docker,
70
+ package: _index.PackageDeployable,
69
71
  build: _index.Build,
70
72
  watch: _index.Watch,
71
73
  publish: _index.Publish,
@@ -74,6 +76,8 @@ class ForgeModule extends _cli.ModuleManifest {
74
76
  reportDependencies: _index.ReportDependencies,
75
77
  version: _index.Version,
76
78
  tag: _index.Tag,
79
+ paths: _index.Paths,
80
+ typecheck: _index.TypeCheck,
77
81
  commitFiles: _index.CommitFiles,
78
82
  link: _index.Link,
79
83
  unlink: _index.Unlink
@@ -83,33 +87,24 @@ class ForgeModule extends _cli.ModuleManifest {
83
87
  publish: _index1.PublishCommand,
84
88
  dependencies: _index1.DependencyCommand,
85
89
  docker: _index1.DockerCommand,
90
+ package: _index1.PackageCommand,
86
91
  version: _index1.VersionCommand,
87
92
  tag: _index1.TagCommand,
93
+ paths: _index1.PathsCommand,
94
+ typecheck: _index1.TypeCheckCommand,
88
95
  link: _index1.LinkCommand,
89
96
  unlink: _index1.UnlinkCommand
90
97
  };
91
98
  registerServices(builder) {
99
+ builder.registerSingleton(_typeemitter.TypeEmitter);
92
100
  builder.registerSingleton(_transformertype.TransformerKey, _swctranspiler.SwcTranspiler);
93
101
  builder.registerSingleton(_transformertype.TransformerKey, _typeemitter.TypeEmitter);
94
102
  builder.registerSingleton(_dependencyresolverservice.DependencyResolver);
103
+ builder.registerSingleton(_importgraphservice.ImportGraph);
104
+ builder.registerSingleton(_dependencypinnerservice.DependencyPinner);
95
105
  builder.registerSingleton(_filewriterservice.FileWriterService);
96
106
  }
97
- async createWorkspace(options) {
98
- const { configurations: _, ...forgeDefaults } = _workspaceconfig.WorkspaceDefaults;
99
- const userConfig = await _mesh.UserConfigFactory.getUserConfig(options.configFile);
100
- // Only apply forge default configurations when user config doesn't provide any.
101
- // This ensures user-defined configurations take priority while still providing
102
- // sensible defaults (debug + release) when no config file is present.
103
- const configurations = userConfig.configurations?.length ? undefined : _workspaceconfig.DefaultConfigurations;
104
- return _mesh.WorkspaceFactory.create({
105
- ...forgeDefaults,
106
- ...configurations ? {
107
- configurations
108
- } : {},
109
- configFile: options.configFile,
110
- rootDir: options.rootDir ?? _workspaceconfig.WorkspaceDefaults.rootDir
111
- });
107
+ createWorkspace(options) {
108
+ return (0, _createworkspace.createWorkspace)(options);
112
109
  }
113
110
  }
114
-
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9mb3JnZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckNvbmZpZ0ZhY3RvcnksIFdvcmtzcGFjZUZhY3RvcnkgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHsgTW9kdWxlTWFuaWZlc3QgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2NsaVwiO1xuaW1wb3J0IHR5cGUgeyBDb250YWluZXJCdWlsZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jb21wb3NpdGlvblwiO1xuaW1wb3J0ICogYXMgQWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBDb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVJlc29sdmVyIH0gZnJvbSBcIi4vc2VydmljZXMvZGVwZW5kZW5jeS1yZXNvbHZlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBGaWxlV3JpdGVyU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbGUtd3JpdGVyLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuaW1wb3J0IHsgVHlwZUVtaXR0ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy90eXBlLWVtaXR0ZXIuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybWVyS2V5IH0gZnJvbSBcIi4vdHlwZXMvdHJhbnNmb3JtZXIudHlwZS5qc1wiO1xuaW1wb3J0IHsgRGVmYXVsdENvbmZpZ3VyYXRpb25zLCBXb3Jrc3BhY2VEZWZhdWx0cyB9IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcmdlTW9kdWxlIGV4dGVuZHMgTW9kdWxlTWFuaWZlc3Qge1xuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBcImZvcmdlXCI7XG5cdHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gQ29tbWFuZHMuRm9yZ2VDb21tYW5kO1xuXHRwdWJsaWMgcmVhZG9ubHkgYWN0aW9ucyA9IHtcblx0XHRjbGVhbjogQWN0aW9ucy5DbGVhbixcblx0XHRjb3B5OiBBY3Rpb25zLkNvcHksXG5cdFx0ZG9ja2VyOiBBY3Rpb25zLkRvY2tlcixcblx0XHRidWlsZDogQWN0aW9ucy5CdWlsZCxcblx0XHR3YXRjaDogQWN0aW9ucy5XYXRjaCxcblx0XHRwdWJsaXNoOiBBY3Rpb25zLlB1Ymxpc2gsXG5cdFx0c3luY0RlcGVuZGVuY2llczogQWN0aW9ucy5TeW5jRGVwZW5kZW5jaWVzLFxuXHRcdHN5bmNMb2NrRmlsZTogQWN0aW9ucy5TeW5jTG9ja0ZpbGUsXG5cdFx0cmVwb3J0RGVwZW5kZW5jaWVzOiBBY3Rpb25zLlJlcG9ydERlcGVuZGVuY2llcyxcblx0XHR2ZXJzaW9uOiBBY3Rpb25zLlZlcnNpb24sXG5cdFx0dGFnOiBBY3Rpb25zLlRhZyxcblx0XHRjb21taXRGaWxlczogQWN0aW9ucy5Db21taXRGaWxlcyxcblx0XHRsaW5rOiBBY3Rpb25zLkxpbmssXG5cdFx0dW5saW5rOiBBY3Rpb25zLlVubGluayxcblx0fTtcblx0cHVibGljIHJlYWRvbmx5IGNvbW1hbmRzID0ge1xuXHRcdGJ1aWxkOiBDb21tYW5kcy5CdWlsZENvbW1hbmQsXG5cdFx0cHVibGlzaDogQ29tbWFuZHMuUHVibGlzaENvbW1hbmQsXG5cdFx0ZGVwZW5kZW5jaWVzOiBDb21tYW5kcy5EZXBlbmRlbmN5Q29tbWFuZCxcblx0XHRkb2NrZXI6IENvbW1hbmRzLkRvY2tlckNvbW1hbmQsXG5cdFx0dmVyc2lvbjogQ29tbWFuZHMuVmVyc2lvbkNvbW1hbmQsXG5cdFx0dGFnOiBDb21tYW5kcy5UYWdDb21tYW5kLFxuXHRcdGxpbms6IENvbW1hbmRzLkxpbmtDb21tYW5kLFxuXHRcdHVubGluazogQ29tbWFuZHMuVW5saW5rQ29tbWFuZCxcblx0fTtcblxuXHRwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlcyhidWlsZGVyOiBDb250YWluZXJCdWlsZGVyKSB7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgU3djVHJhbnNwaWxlcik7XG5cdFx0YnVpbGRlci5yZWdpc3RlclNpbmdsZXRvbihUcmFuc2Zvcm1lcktleSwgVHlwZUVtaXR0ZXIpO1xuXHRcdGJ1aWxkZXIucmVnaXN0ZXJTaW5nbGV0b24oRGVwZW5kZW5jeVJlc29sdmVyKTtcblx0XHRidWlsZGVyLnJlZ2lzdGVyU2luZ2xldG9uKEZpbGVXcml0ZXJTZXJ2aWNlKTtcblx0fVxuXG5cdHB1YmxpYyBvdmVycmlkZSBhc3luYyBjcmVhdGVXb3Jrc3BhY2Uob3B0aW9uczogV29ya3NwYWNlRmFjdG9yeU9wdGlvbnMpIHtcblx0XHRjb25zdCB7IGNvbmZpZ3VyYXRpb25zOiBfLCAuLi5mb3JnZURlZmF1bHRzIH0gPSBXb3Jrc3BhY2VEZWZhdWx0cztcblx0XHRjb25zdCB1c2VyQ29uZmlnID0gYXdhaXQgVXNlckNvbmZpZ0ZhY3RvcnkuZ2V0VXNlckNvbmZpZyhvcHRpb25zLmNvbmZpZ0ZpbGUpO1xuXHRcdC8vIE9ubHkgYXBwbHkgZm9yZ2UgZGVmYXVsdCBjb25maWd1cmF0aW9ucyB3aGVuIHVzZXIgY29uZmlnIGRvZXNuJ3QgcHJvdmlkZSBhbnkuXG5cdFx0Ly8gVGhpcyBlbnN1cmVzIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9ucyB0YWtlIHByaW9yaXR5IHdoaWxlIHN0aWxsIHByb3ZpZGluZ1xuXHRcdC8vIHNlbnNpYmxlIGRlZmF1bHRzIChkZWJ1ZyArIHJlbGVhc2UpIHdoZW4gbm8gY29uZmlnIGZpbGUgaXMgcHJlc2VudC5cblx0XHRjb25zdCBjb25maWd1cmF0aW9ucyA9IHVzZXJDb25maWcuY29uZmlndXJhdGlvbnM/Lmxlbmd0aFxuXHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdDogRGVmYXVsdENvbmZpZ3VyYXRpb25zO1xuXHRcdHJldHVybiBXb3Jrc3BhY2VGYWN0b3J5LmNyZWF0ZSh7XG5cdFx0XHQuLi5mb3JnZURlZmF1bHRzLFxuXHRcdFx0Li4uKGNvbmZpZ3VyYXRpb25zID8geyBjb25maWd1cmF0aW9ucyB9IDoge30pLFxuXHRcdFx0Y29uZmlnRmlsZTogb3B0aW9ucy5jb25maWdGaWxlLFxuXHRcdFx0cm9vdERpcjogb3B0aW9ucy5yb290RGlyID8/IFdvcmtzcGFjZURlZmF1bHRzLnJvb3REaXIsXG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJGb3JnZU1vZHVsZSIsIk1vZHVsZU1hbmlmZXN0IiwiaWQiLCJjb21tYW5kIiwiQ29tbWFuZHMiLCJGb3JnZUNvbW1hbmQiLCJhY3Rpb25zIiwiY2xlYW4iLCJBY3Rpb25zIiwiQ2xlYW4iLCJjb3B5IiwiQ29weSIsImRvY2tlciIsIkRvY2tlciIsImJ1aWxkIiwiQnVpbGQiLCJ3YXRjaCIsIldhdGNoIiwicHVibGlzaCIsIlB1Ymxpc2giLCJzeW5jRGVwZW5kZW5jaWVzIiwiU3luY0RlcGVuZGVuY2llcyIsInN5bmNMb2NrRmlsZSIsIlN5bmNMb2NrRmlsZSIsInJlcG9ydERlcGVuZGVuY2llcyIsIlJlcG9ydERlcGVuZGVuY2llcyIsInZlcnNpb24iLCJWZXJzaW9uIiwidGFnIiwiVGFnIiwiY29tbWl0RmlsZXMiLCJDb21taXRGaWxlcyIsImxpbmsiLCJMaW5rIiwidW5saW5rIiwiVW5saW5rIiwiY29tbWFuZHMiLCJCdWlsZENvbW1hbmQiLCJQdWJsaXNoQ29tbWFuZCIsImRlcGVuZGVuY2llcyIsIkRlcGVuZGVuY3lDb21tYW5kIiwiRG9ja2VyQ29tbWFuZCIsIlZlcnNpb25Db21tYW5kIiwiVGFnQ29tbWFuZCIsIkxpbmtDb21tYW5kIiwiVW5saW5rQ29tbWFuZCIsInJlZ2lzdGVyU2VydmljZXMiLCJidWlsZGVyIiwicmVnaXN0ZXJTaW5nbGV0b24iLCJUcmFuc2Zvcm1lcktleSIsIlN3Y1RyYW5zcGlsZXIiLCJUeXBlRW1pdHRlciIsIkRlcGVuZGVuY3lSZXNvbHZlciIsIkZpbGVXcml0ZXJTZXJ2aWNlIiwiY3JlYXRlV29ya3NwYWNlIiwib3B0aW9ucyIsImNvbmZpZ3VyYXRpb25zIiwiXyIsImZvcmdlRGVmYXVsdHMiLCJXb3Jrc3BhY2VEZWZhdWx0cyIsInVzZXJDb25maWciLCJVc2VyQ29uZmlnRmFjdG9yeSIsImdldFVzZXJDb25maWciLCJjb25maWdGaWxlIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiRGVmYXVsdENvbmZpZ3VyYXRpb25zIiwiV29ya3NwYWNlRmFjdG9yeSIsImNyZWF0ZSIsInJvb3REaXIiXSwibWFwcGluZ3MiOiI7Ozs7K0JBYWFBOzs7ZUFBQUE7OztzQkFidUM7cUJBRXJCOytEQUVOO2dFQUNDOzJDQUNTO21DQUNEOytCQUNKOzZCQUNGO2lDQUNHO2lDQUMwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxELE1BQU1BLG9CQUFvQkMsbUJBQWM7SUFDOUJDLEtBQUssUUFBUTtJQUNiQyxVQUFVQyxRQUFTQyxZQUFZLENBQUM7SUFDaENDLFVBQVU7UUFDekJDLE9BQU9DLE9BQVFDLEtBQUs7UUFDcEJDLE1BQU1GLE9BQVFHLElBQUk7UUFDbEJDLFFBQVFKLE9BQVFLLE1BQU07UUFDdEJDLE9BQU9OLE9BQVFPLEtBQUs7UUFDcEJDLE9BQU9SLE9BQVFTLEtBQUs7UUFDcEJDLFNBQVNWLE9BQVFXLE9BQU87UUFDeEJDLGtCQUFrQlosT0FBUWEsZ0JBQWdCO1FBQzFDQyxjQUFjZCxPQUFRZSxZQUFZO1FBQ2xDQyxvQkFBb0JoQixPQUFRaUIsa0JBQWtCO1FBQzlDQyxTQUFTbEIsT0FBUW1CLE9BQU87UUFDeEJDLEtBQUtwQixPQUFRcUIsR0FBRztRQUNoQkMsYUFBYXRCLE9BQVF1QixXQUFXO1FBQ2hDQyxNQUFNeEIsT0FBUXlCLElBQUk7UUFDbEJDLFFBQVExQixPQUFRMkIsTUFBTTtJQUN2QixFQUFFO0lBQ2NDLFdBQVc7UUFDMUJ0QixPQUFPVixRQUFTaUMsWUFBWTtRQUM1Qm5CLFNBQVNkLFFBQVNrQyxjQUFjO1FBQ2hDQyxjQUFjbkMsUUFBU29DLGlCQUFpQjtRQUN4QzVCLFFBQVFSLFFBQVNxQyxhQUFhO1FBQzlCZixTQUFTdEIsUUFBU3NDLGNBQWM7UUFDaENkLEtBQUt4QixRQUFTdUMsVUFBVTtRQUN4QlgsTUFBTTVCLFFBQVN3QyxXQUFXO1FBQzFCVixRQUFROUIsUUFBU3lDLGFBQWE7SUFDL0IsRUFBRTtJQUVLQyxpQkFBaUJDLE9BQXlCLEVBQUU7UUFDbERBLFFBQVFDLGlCQUFpQixDQUFDQywrQkFBYyxFQUFFQyw0QkFBYTtRQUN2REgsUUFBUUMsaUJBQWlCLENBQUNDLCtCQUFjLEVBQUVFLHdCQUFXO1FBQ3JESixRQUFRQyxpQkFBaUIsQ0FBQ0ksNkNBQWtCO1FBQzVDTCxRQUFRQyxpQkFBaUIsQ0FBQ0ssb0NBQWlCO0lBQzVDO0lBRUEsTUFBc0JDLGdCQUFnQkMsT0FBZ0MsRUFBRTtRQUN2RSxNQUFNLEVBQUVDLGdCQUFnQkMsQ0FBQyxFQUFFLEdBQUdDLGVBQWUsR0FBR0Msa0NBQWlCO1FBQ2pFLE1BQU1DLGFBQWEsTUFBTUMsdUJBQWlCLENBQUNDLGFBQWEsQ0FBQ1AsUUFBUVEsVUFBVTtRQUMzRSxnRkFBZ0Y7UUFDaEYsK0VBQStFO1FBQy9FLHNFQUFzRTtRQUN0RSxNQUFNUCxpQkFBaUJJLFdBQVdKLGNBQWMsRUFBRVEsU0FDL0NDLFlBQ0FDLHNDQUFxQjtRQUN4QixPQUFPQyxzQkFBZ0IsQ0FBQ0MsTUFBTSxDQUFDO1lBQzlCLEdBQUdWLGFBQWE7WUFDaEIsR0FBSUYsaUJBQWlCO2dCQUFFQTtZQUFlLElBQUksQ0FBQyxDQUFDO1lBQzVDTyxZQUFZUixRQUFRUSxVQUFVO1lBQzlCTSxTQUFTZCxRQUFRYyxPQUFPLElBQUlWLGtDQUFpQixDQUFDVSxPQUFPO1FBQ3REO0lBQ0Q7QUFDRCJ9
@@ -35,12 +35,18 @@ _export(exports, {
35
35
  },
36
36
  get WorkspaceDefaults () {
37
37
  return _workspaceconfig.WorkspaceDefaults;
38
+ },
39
+ get createWorkspace () {
40
+ return _createworkspace.createWorkspace;
41
+ },
42
+ get transpileCache () {
43
+ return _transpilecache.transpileCache;
38
44
  }
39
45
  });
46
+ const _createworkspace = require("./create-workspace.js");
40
47
  const _errors = require("./errors.js");
41
48
  const _forgemodule = require("./forge.module.js");
42
49
  const _swctranspiler = require("./services/swc-transpiler.js");
50
+ const _transpilecache = require("./services/transpile-cache.js");
43
51
  const _buildtargettype = require("./types/build-target.type.js");
44
52
  const _workspaceconfig = require("./workspace.config.js");
45
-
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGb3JnZUVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5leHBvcnQgeyBGb3JnZU1vZHVsZSB9IGZyb20gXCIuL2ZvcmdlLm1vZHVsZS5qc1wiO1xuZXhwb3J0IHR5cGUgeyBUcmFuc3BpbGVPcHRpb25zIH0gZnJvbSBcIi4vc2VydmljZXMvc3djLXRyYW5zcGlsZXIuanNcIjtcbmV4cG9ydCB7IFN3Y1RyYW5zcGlsZXIgfSBmcm9tIFwiLi9zZXJ2aWNlcy9zd2MtdHJhbnNwaWxlci5qc1wiO1xuZXhwb3J0IHR5cGUgeyBCdWlsZFRhcmdldCwgVHJhbnNwaWxlVGFyZ2V0IH0gZnJvbSBcIi4vdHlwZXMvYnVpbGQtdGFyZ2V0LnR5cGUuanNcIjtcbmV4cG9ydCB7IEJ1aWxkVGFyZ2V0cyB9IGZyb20gXCIuL3R5cGVzL2J1aWxkLXRhcmdldC50eXBlLmpzXCI7XG5leHBvcnQgdHlwZSB7IEZvcmdlQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZS5qc1wiO1xuZXhwb3J0IHR5cGUgeyBXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXMvd29ya3NwYWNlLWNvbmZpZy50eXBlLmpzXCI7XG5leHBvcnQge1xuXHREZWJ1ZyBhcyBEZWJ1Z0NvbmZpZ3VyYXRpb24sXG5cdERlZmF1bHRDb25maWd1cmF0aW9ucyxcblx0TGluayBhcyBMaW5rQ29uZmlndXJhdGlvbixcblx0UmVsZWFzZSBhcyBSZWxlYXNlQ29uZmlndXJhdGlvbixcblx0V29ya3NwYWNlRGVmYXVsdHMsXG59IGZyb20gXCIuL3dvcmtzcGFjZS5jb25maWcuanNcIjtcbiJdLCJuYW1lcyI6WyJCdWlsZFRhcmdldHMiLCJEZWJ1Z0NvbmZpZ3VyYXRpb24iLCJEZWJ1ZyIsIkRlZmF1bHRDb25maWd1cmF0aW9ucyIsIkZvcmdlRXJyb3IiLCJGb3JnZU1vZHVsZSIsIkxpbmtDb25maWd1cmF0aW9uIiwiTGluayIsIlJlbGVhc2VDb25maWd1cmF0aW9uIiwiUmVsZWFzZSIsIlN3Y1RyYW5zcGlsZXIiLCJXb3Jrc3BhY2VEZWZhdWx0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUFLU0E7ZUFBQUEsNkJBQVk7O1FBSVhDO2VBQVRDLHNCQUFLOztRQUNMQztlQUFBQSxzQ0FBcUI7O1FBVmJDO2VBQUFBLGtCQUFVOztRQUNWQztlQUFBQSx3QkFBVzs7UUFVWEM7ZUFBUkMscUJBQUk7O1FBQ09DO2VBQVhDLHdCQUFPOztRQVRDQztlQUFBQSw0QkFBYTs7UUFVckJDO2VBQUFBLGtDQUFpQjs7O3dCQWJTOzZCQUNDOytCQUVFO2lDQUVEO2lDQVN0QiJ9
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "DependencyPinner", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DependencyPinner;
9
+ }
10
+ });
11
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
+ const _decorators = require("@decohere/crucible/decorators");
13
+ const _io = require("@decohere/core/io");
14
+ const _errors = require("../errors.js");
15
+ function _interop_require_default(obj) {
16
+ return obj && obj.__esModule ? obj : {
17
+ default: obj
18
+ };
19
+ }
20
+ function _ts_decorate(decorators, target, key, desc) {
21
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
23
+ 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;
24
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
25
+ }
26
+ class DependencyPinner {
27
+ async pin(imported, shipped, projects, workspaceRoot) {
28
+ const scopes = [
29
+ ...shipped.map((project)=>({
30
+ name: project.name,
31
+ dir: project.projectRoot,
32
+ pkg: project.pkg
33
+ })),
34
+ {
35
+ name: "the workspace root",
36
+ dir: workspaceRoot.dir,
37
+ pkg: workspaceRoot.pkg
38
+ }
39
+ ];
40
+ const declaredBy = new Map();
41
+ for (const scope of scopes){
42
+ for (const name of Object.keys(scope.pkg.dependencies ?? {})){
43
+ if (projects.has(name)) {
44
+ continue; // a workspace library, copied from its build, never installed
45
+ }
46
+ declaredBy.set(name, [
47
+ ...declaredBy.get(name) ?? [],
48
+ scope
49
+ ]);
50
+ }
51
+ }
52
+ this.assertImportsAreShipped(imported, declaredBy, scopes);
53
+ const pinned = {};
54
+ for (const name of [
55
+ ...declaredBy.keys()
56
+ ].sort()){
57
+ pinned[name] = await this.installedVersion(name, declaredBy.get(name) ?? [], workspaceRoot.dir);
58
+ }
59
+ return pinned;
60
+ }
61
+ assertImportsAreShipped(imported, declaredBy, scopes) {
62
+ for (const name of [
63
+ ...imported.keys()
64
+ ].sort()){
65
+ if (declaredBy.has(name)) {
66
+ continue;
67
+ }
68
+ const importers = [
69
+ ...imported.get(name) ?? []
70
+ ].sort().join(", ");
71
+ const devOnly = scopes.find((scope)=>scope.pkg.devDependencies?.[name] != null);
72
+ if (devOnly != null) {
73
+ throw new _errors.ForgeError(`${name} is imported at run time by ${importers}, but it is only a devDependency ` + `(of ${devOnly.name}). Move it to "dependencies".`);
74
+ }
75
+ throw new _errors.ForgeError(`${name} is imported at run time by ${importers}, but is not in "dependencies" of the ` + "deployable, any library it uses, or the workspace root package.json. Add it there.");
76
+ }
77
+ }
78
+ async installedVersion(name, declarers, workspaceRootDir) {
79
+ const versions = new Map();
80
+ for (const scope of declarers){
81
+ const version = await findInstalledVersion(name, scope.dir) ?? await findInstalledVersion(name, workspaceRootDir);
82
+ if (version == null) {
83
+ throw new _errors.ForgeError(`${name} is declared by ${scope.name} but is not installed. ` + "Run the package manager install first.");
84
+ }
85
+ versions.set(scope.name, version);
86
+ }
87
+ const distinct = new Set(versions.values());
88
+ if (distinct.size > 1) {
89
+ const detail = [
90
+ ...versions
91
+ ].map(([owner, version])=>`${owner}: ${version}`).join(", ");
92
+ throw new _errors.ForgeError(`${name} is installed at different versions for the packages that declare it (${detail}). ` + "One packaged app can only ship one version; align them.");
93
+ }
94
+ const [version] = distinct;
95
+ if (version == null) {
96
+ throw new _errors.ForgeError(`${name} is not installed. Run the package manager install first.`);
97
+ }
98
+ return version;
99
+ }
100
+ }
101
+ DependencyPinner = _ts_decorate([
102
+ (0, _decorators.injectable)()
103
+ ], DependencyPinner);
104
+ /** Looks for `node_modules/<name>` in `fromDir` and each folder above it, as Node does. */ async function findInstalledVersion(name, fromDir) {
105
+ let dir = _nodepath.default.resolve(fromDir);
106
+ for(;;){
107
+ const manifest = _nodepath.default.join(dir, "node_modules", name, "package.json");
108
+ if (await _io.io.fileExists(manifest)) {
109
+ const { version } = await _io.io.readJsonFile(manifest);
110
+ return version;
111
+ }
112
+ const parent = _nodepath.default.dirname(dir);
113
+ if (parent === dir) {
114
+ return undefined;
115
+ }
116
+ dir = parent;
117
+ }
118
+ }