@jakubmazanec/carson 0.1.0-a500263

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 (307) hide show
  1. package/LICENSE.md +661 -0
  2. package/README.md +237 -0
  3. package/bin/carson.js +3 -0
  4. package/dist/commands/create-project/CreateProject.d.ts +8 -0
  5. package/dist/commands/create-project/CreateProject.js +138 -0
  6. package/dist/commands/create-project/CreateProject.js.map +1 -0
  7. package/dist/commands/create-project/CreateProjectInput.d.ts +20 -0
  8. package/dist/commands/create-project/CreateProjectInput.js +31 -0
  9. package/dist/commands/create-project/CreateProjectInput.js.map +1 -0
  10. package/dist/commands/create-project/createProjectCommand.d.ts +12 -0
  11. package/dist/commands/create-project/createProjectCommand.js +31 -0
  12. package/dist/commands/create-project/createProjectCommand.js.map +1 -0
  13. package/dist/commands/create-project/runCreateProject.d.ts +13 -0
  14. package/dist/commands/create-project/runCreateProject.js +34 -0
  15. package/dist/commands/create-project/runCreateProject.js.map +1 -0
  16. package/dist/commands/create-project.d.ts +4 -0
  17. package/dist/commands/create-project.js +6 -0
  18. package/dist/commands/create-project.js.map +1 -0
  19. package/dist/commands/create-workspace/CreateWorkspace.d.ts +7 -0
  20. package/dist/commands/create-workspace/CreateWorkspace.js +102 -0
  21. package/dist/commands/create-workspace/CreateWorkspace.js.map +1 -0
  22. package/dist/commands/create-workspace/CreateWorkspaceInput.d.ts +11 -0
  23. package/dist/commands/create-workspace/CreateWorkspaceInput.js +17 -0
  24. package/dist/commands/create-workspace/CreateWorkspaceInput.js.map +1 -0
  25. package/dist/commands/create-workspace/createWorkspaceCommand.d.ts +9 -0
  26. package/dist/commands/create-workspace/createWorkspaceCommand.js +30 -0
  27. package/dist/commands/create-workspace/createWorkspaceCommand.js.map +1 -0
  28. package/dist/commands/create-workspace/runCreateWorkspace.d.ts +10 -0
  29. package/dist/commands/create-workspace/runCreateWorkspace.js +33 -0
  30. package/dist/commands/create-workspace/runCreateWorkspace.js.map +1 -0
  31. package/dist/commands/create-workspace.d.ts +4 -0
  32. package/dist/commands/create-workspace.js +6 -0
  33. package/dist/commands/create-workspace.js.map +1 -0
  34. package/dist/commands/internals/packageNameToDirectory.d.ts +1 -0
  35. package/dist/commands/internals/packageNameToDirectory.js +12 -0
  36. package/dist/commands/internals/packageNameToDirectory.js.map +1 -0
  37. package/dist/commands/internals.d.ts +1 -0
  38. package/dist/commands/internals.js +3 -0
  39. package/dist/commands/internals.js.map +1 -0
  40. package/dist/commands/update-workspace/UpdateWorkspace.d.ts +8 -0
  41. package/dist/commands/update-workspace/UpdateWorkspace.js +71 -0
  42. package/dist/commands/update-workspace/UpdateWorkspace.js.map +1 -0
  43. package/dist/commands/update-workspace/runUpdateWorkspace.d.ts +10 -0
  44. package/dist/commands/update-workspace/runUpdateWorkspace.js +25 -0
  45. package/dist/commands/update-workspace/runUpdateWorkspace.js.map +1 -0
  46. package/dist/commands/update-workspace/updateWorkspaceCommand.d.ts +6 -0
  47. package/dist/commands/update-workspace/updateWorkspaceCommand.js +25 -0
  48. package/dist/commands/update-workspace/updateWorkspaceCommand.js.map +1 -0
  49. package/dist/commands/update-workspace.d.ts +3 -0
  50. package/dist/commands/update-workspace.js +5 -0
  51. package/dist/commands/update-workspace.js.map +1 -0
  52. package/dist/commands.d.ts +3 -0
  53. package/dist/commands.js +5 -0
  54. package/dist/commands.js.map +1 -0
  55. package/dist/constants.d.ts +7 -0
  56. package/dist/constants.js +16 -0
  57. package/dist/constants.js.map +1 -0
  58. package/dist/main.d.ts +3 -0
  59. package/dist/main.js +5 -0
  60. package/dist/main.js.map +1 -0
  61. package/dist/modules.d.js +2 -0
  62. package/dist/modules.d.js.map +1 -0
  63. package/dist/run.d.ts +1 -0
  64. package/dist/run.js +18 -0
  65. package/dist/run.js.map +1 -0
  66. package/dist/template/CarsonTemplate.d.ts +9 -0
  67. package/dist/template/CarsonTemplate.js +3 -0
  68. package/dist/template/CarsonTemplate.js.map +1 -0
  69. package/dist/template/CarsonTemplateConfig.d.ts +12 -0
  70. package/dist/template/CarsonTemplateConfig.js +7 -0
  71. package/dist/template/CarsonTemplateConfig.js.map +1 -0
  72. package/dist/template/TemplateAttributes.d.ts +9 -0
  73. package/dist/template/TemplateAttributes.js +16 -0
  74. package/dist/template/TemplateAttributes.js.map +1 -0
  75. package/dist/template/TemplateData.d.ts +35 -0
  76. package/dist/template/TemplateData.js +13 -0
  77. package/dist/template/TemplateData.js.map +1 -0
  78. package/dist/template/TemplateRender.d.ts +4 -0
  79. package/dist/template/TemplateRender.js +3 -0
  80. package/dist/template/TemplateRender.js.map +1 -0
  81. package/dist/template/TemplateRenderSnapshot.d.ts +27 -0
  82. package/dist/template/TemplateRenderSnapshot.js +11 -0
  83. package/dist/template/TemplateRenderSnapshot.js.map +1 -0
  84. package/dist/template/TemplateRenderSnapshots.d.ts +27 -0
  85. package/dist/template/TemplateRenderSnapshots.js +4 -0
  86. package/dist/template/TemplateRenderSnapshots.js.map +1 -0
  87. package/dist/template/TemplateRenders.d.ts +2 -0
  88. package/dist/template/TemplateRenders.js +3 -0
  89. package/dist/template/TemplateRenders.js.map +1 -0
  90. package/dist/template/applyTemplateRenders.d.ts +8 -0
  91. package/dist/template/applyTemplateRenders.js +60 -0
  92. package/dist/template/applyTemplateRenders.js.map +1 -0
  93. package/dist/template/createFileUsingTemplateRender.d.ts +2 -0
  94. package/dist/template/createFileUsingTemplateRender.js +12 -0
  95. package/dist/template/createFileUsingTemplateRender.js.map +1 -0
  96. package/dist/template/deleteFileUsingTemplateRender.d.ts +2 -0
  97. package/dist/template/deleteFileUsingTemplateRender.js +10 -0
  98. package/dist/template/deleteFileUsingTemplateRender.js.map +1 -0
  99. package/dist/template/importCarsonTemplate.d.ts +3 -0
  100. package/dist/template/importCarsonTemplate.js +8 -0
  101. package/dist/template/importCarsonTemplate.js.map +1 -0
  102. package/dist/template/insertUsingTemplateRender.d.ts +2 -0
  103. package/dist/template/insertUsingTemplateRender.js +29 -0
  104. package/dist/template/insertUsingTemplateRender.js.map +1 -0
  105. package/dist/template/internals/merge.d.ts +4 -0
  106. package/dist/template/internals/merge.js +30 -0
  107. package/dist/template/internals/merge.js.map +1 -0
  108. package/dist/template/internals/prettify.d.ts +1 -0
  109. package/dist/template/internals/prettify.js +25 -0
  110. package/dist/template/internals/prettify.js.map +1 -0
  111. package/dist/template/internals/unmerge.d.ts +4 -0
  112. package/dist/template/internals/unmerge.js +31 -0
  113. package/dist/template/internals/unmerge.js.map +1 -0
  114. package/dist/template/internals.d.ts +3 -0
  115. package/dist/template/internals.js +5 -0
  116. package/dist/template/internals.js.map +1 -0
  117. package/dist/template/loadTemplateRenderSnapshots.d.ts +7 -0
  118. package/dist/template/loadTemplateRenderSnapshots.js +14 -0
  119. package/dist/template/loadTemplateRenderSnapshots.js.map +1 -0
  120. package/dist/template/mergeFileUsingTemplateRender.d.ts +2 -0
  121. package/dist/template/mergeFileUsingTemplateRender.js +39 -0
  122. package/dist/template/mergeFileUsingTemplateRender.js.map +1 -0
  123. package/dist/template/overwriteFileUsingTemplateRender.d.ts +2 -0
  124. package/dist/template/overwriteFileUsingTemplateRender.js +12 -0
  125. package/dist/template/overwriteFileUsingTemplateRender.js.map +1 -0
  126. package/dist/template/parseTemplateId.d.ts +1 -0
  127. package/dist/template/parseTemplateId.js +12 -0
  128. package/dist/template/parseTemplateId.js.map +1 -0
  129. package/dist/template/readCarsonTemplate.d.ts +2 -0
  130. package/dist/template/readCarsonTemplate.js +39 -0
  131. package/dist/template/readCarsonTemplate.js.map +1 -0
  132. package/dist/template/renderTemplate.d.ts +7 -0
  133. package/dist/template/renderTemplate.js +19 -0
  134. package/dist/template/renderTemplate.js.map +1 -0
  135. package/dist/template/resolveTemplateModule.d.ts +1 -0
  136. package/dist/template/resolveTemplateModule.js +9 -0
  137. package/dist/template/resolveTemplateModule.js.map +1 -0
  138. package/dist/template/saveTemplateRenderSnapshots.d.ts +2 -0
  139. package/dist/template/saveTemplateRenderSnapshots.js +23 -0
  140. package/dist/template/saveTemplateRenderSnapshots.js.map +1 -0
  141. package/dist/template/uninsertUsingTemplateRender.d.ts +2 -0
  142. package/dist/template/uninsertUsingTemplateRender.js +29 -0
  143. package/dist/template/uninsertUsingTemplateRender.js.map +1 -0
  144. package/dist/template/unmergeFileUsingTemplateRender.d.ts +2 -0
  145. package/dist/template/unmergeFileUsingTemplateRender.js +39 -0
  146. package/dist/template/unmergeFileUsingTemplateRender.js.map +1 -0
  147. package/dist/template.d.ts +20 -0
  148. package/dist/template.js +22 -0
  149. package/dist/template.js.map +1 -0
  150. package/dist/workspace/Project.d.ts +33 -0
  151. package/dist/workspace/Project.js +184 -0
  152. package/dist/workspace/Project.js.map +1 -0
  153. package/dist/workspace/ProjectConfig.d.ts +9 -0
  154. package/dist/workspace/ProjectConfig.js +6 -0
  155. package/dist/workspace/ProjectConfig.js.map +1 -0
  156. package/dist/workspace/ProjectCreateOptions.d.ts +8 -0
  157. package/dist/workspace/ProjectCreateOptions.js +3 -0
  158. package/dist/workspace/ProjectCreateOptions.js.map +1 -0
  159. package/dist/workspace/ProjectError.d.ts +8 -0
  160. package/dist/workspace/ProjectError.js +11 -0
  161. package/dist/workspace/ProjectError.js.map +1 -0
  162. package/dist/workspace/ProjectOptions.d.ts +15 -0
  163. package/dist/workspace/ProjectOptions.js +3 -0
  164. package/dist/workspace/ProjectOptions.js.map +1 -0
  165. package/dist/workspace/ProjectUpdateOptions.d.ts +3 -0
  166. package/dist/workspace/ProjectUpdateOptions.js +3 -0
  167. package/dist/workspace/ProjectUpdateOptions.js.map +1 -0
  168. package/dist/workspace/Workspace.d.ts +68 -0
  169. package/dist/workspace/Workspace.js +426 -0
  170. package/dist/workspace/Workspace.js.map +1 -0
  171. package/dist/workspace/WorkspaceConfig.d.ts +9 -0
  172. package/dist/workspace/WorkspaceConfig.js +6 -0
  173. package/dist/workspace/WorkspaceConfig.js.map +1 -0
  174. package/dist/workspace/WorkspaceCreateOptions.d.ts +5 -0
  175. package/dist/workspace/WorkspaceCreateOptions.js +3 -0
  176. package/dist/workspace/WorkspaceCreateOptions.js.map +1 -0
  177. package/dist/workspace/WorkspaceCreateProjectOptions.d.ts +6 -0
  178. package/dist/workspace/WorkspaceCreateProjectOptions.js +3 -0
  179. package/dist/workspace/WorkspaceCreateProjectOptions.js.map +1 -0
  180. package/dist/workspace/WorkspaceDependencies.d.ts +30 -0
  181. package/dist/workspace/WorkspaceDependencies.js +126 -0
  182. package/dist/workspace/WorkspaceDependencies.js.map +1 -0
  183. package/dist/workspace/WorkspaceError.d.ts +8 -0
  184. package/dist/workspace/WorkspaceError.js +13 -0
  185. package/dist/workspace/WorkspaceError.js.map +1 -0
  186. package/dist/workspace/WorkspaceOptions.d.ts +25 -0
  187. package/dist/workspace/WorkspaceOptions.js +3 -0
  188. package/dist/workspace/WorkspaceOptions.js.map +1 -0
  189. package/dist/workspace/WorkspaceOptionsProjectOptions.d.ts +7 -0
  190. package/dist/workspace/WorkspaceOptionsProjectOptions.js +3 -0
  191. package/dist/workspace/WorkspaceOptionsProjectOptions.js.map +1 -0
  192. package/dist/workspace/WorkspacePackageJson.d.ts +2 -0
  193. package/dist/workspace/WorkspacePackageJson.js +3 -0
  194. package/dist/workspace/WorkspacePackageJson.js.map +1 -0
  195. package/dist/workspace/WorkspaceProjectGlobs.d.ts +1 -0
  196. package/dist/workspace/WorkspaceProjectGlobs.js +3 -0
  197. package/dist/workspace/WorkspaceProjectGlobs.js.map +1 -0
  198. package/dist/workspace/WorkspaceProjects.d.ts +2 -0
  199. package/dist/workspace/WorkspaceProjects.js +3 -0
  200. package/dist/workspace/WorkspaceProjects.js.map +1 -0
  201. package/dist/workspace/WorkspaceRepository.d.ts +4 -0
  202. package/dist/workspace/WorkspaceRepository.js +3 -0
  203. package/dist/workspace/WorkspaceRepository.js.map +1 -0
  204. package/dist/workspace/WorkspaceUpdateOptions.d.ts +3 -0
  205. package/dist/workspace/WorkspaceUpdateOptions.js +3 -0
  206. package/dist/workspace/WorkspaceUpdateOptions.js.map +1 -0
  207. package/dist/workspace/internals/compareSemver.d.ts +8 -0
  208. package/dist/workspace/internals/compareSemver.js +27 -0
  209. package/dist/workspace/internals/compareSemver.js.map +1 -0
  210. package/dist/workspace/internals/getPackageJsonWorkspaces.d.ts +2 -0
  211. package/dist/workspace/internals/getPackageJsonWorkspaces.js +11 -0
  212. package/dist/workspace/internals/getPackageJsonWorkspaces.js.map +1 -0
  213. package/dist/workspace/internals/getRepositoryBranches.d.ts +1 -0
  214. package/dist/workspace/internals/getRepositoryBranches.js +21 -0
  215. package/dist/workspace/internals/getRepositoryBranches.js.map +1 -0
  216. package/dist/workspace/internals/getRepositoryUrl.d.ts +1 -0
  217. package/dist/workspace/internals/getRepositoryUrl.js +21 -0
  218. package/dist/workspace/internals/getRepositoryUrl.js.map +1 -0
  219. package/dist/workspace/internals.d.ts +4 -0
  220. package/dist/workspace/internals.js +6 -0
  221. package/dist/workspace/internals.js.map +1 -0
  222. package/dist/workspace/saveProjectConfig.d.ts +6 -0
  223. package/dist/workspace/saveProjectConfig.js +13 -0
  224. package/dist/workspace/saveProjectConfig.js.map +1 -0
  225. package/dist/workspace/saveWorkspaceConfig.d.ts +6 -0
  226. package/dist/workspace/saveWorkspaceConfig.js +13 -0
  227. package/dist/workspace/saveWorkspaceConfig.js.map +1 -0
  228. package/dist/workspace.d.ts +10 -0
  229. package/dist/workspace.js +12 -0
  230. package/dist/workspace.js.map +1 -0
  231. package/package.json +84 -0
  232. package/src/commands/create-project/CreateProject.tsx +130 -0
  233. package/src/commands/create-project/CreateProjectInput.ts +37 -0
  234. package/src/commands/create-project/createProjectCommand.tsx +33 -0
  235. package/src/commands/create-project/runCreateProject.ts +59 -0
  236. package/src/commands/create-project.ts +4 -0
  237. package/src/commands/create-workspace/CreateWorkspace.tsx +90 -0
  238. package/src/commands/create-workspace/CreateWorkspaceInput.ts +21 -0
  239. package/src/commands/create-workspace/createWorkspaceCommand.tsx +34 -0
  240. package/src/commands/create-workspace/runCreateWorkspace.ts +49 -0
  241. package/src/commands/create-workspace.ts +4 -0
  242. package/src/commands/internals/packageNameToDirectory.ts +13 -0
  243. package/src/commands/internals.ts +1 -0
  244. package/src/commands/update-workspace/UpdateWorkspace.tsx +59 -0
  245. package/src/commands/update-workspace/runUpdateWorkspace.ts +36 -0
  246. package/src/commands/update-workspace/updateWorkspaceCommand.tsx +27 -0
  247. package/src/commands/update-workspace.ts +3 -0
  248. package/src/commands.ts +3 -0
  249. package/src/constants.ts +21 -0
  250. package/src/main.ts +3 -0
  251. package/src/modules.d.ts +1 -0
  252. package/src/run.ts +21 -0
  253. package/src/template/CarsonTemplate.ts +11 -0
  254. package/src/template/CarsonTemplateConfig.ts +12 -0
  255. package/src/template/TemplateAttributes.ts +16 -0
  256. package/src/template/TemplateData.ts +17 -0
  257. package/src/template/TemplateRender.ts +9 -0
  258. package/src/template/TemplateRenderSnapshot.ts +13 -0
  259. package/src/template/TemplateRenderSnapshots.ts +7 -0
  260. package/src/template/TemplateRenders.ts +3 -0
  261. package/src/template/applyTemplateRenders.ts +89 -0
  262. package/src/template/createFileUsingTemplateRender.ts +12 -0
  263. package/src/template/deleteFileUsingTemplateRender.ts +15 -0
  264. package/src/template/importCarsonTemplate.ts +13 -0
  265. package/src/template/insertUsingTemplateRender.ts +33 -0
  266. package/src/template/internals/merge.ts +44 -0
  267. package/src/template/internals/prettify.ts +24 -0
  268. package/src/template/internals/unmerge.ts +48 -0
  269. package/src/template/internals.ts +3 -0
  270. package/src/template/loadTemplateRenderSnapshots.ts +18 -0
  271. package/src/template/mergeFileUsingTemplateRender.ts +39 -0
  272. package/src/template/overwriteFileUsingTemplateRender.ts +12 -0
  273. package/src/template/parseTemplateId.ts +9 -0
  274. package/src/template/readCarsonTemplate.ts +46 -0
  275. package/src/template/renderTemplate.ts +30 -0
  276. package/src/template/resolveTemplateModule.ts +9 -0
  277. package/src/template/saveTemplateRenderSnapshots.ts +34 -0
  278. package/src/template/uninsertUsingTemplateRender.ts +36 -0
  279. package/src/template/unmergeFileUsingTemplateRender.ts +42 -0
  280. package/src/template.ts +20 -0
  281. package/src/workspace/Project.ts +246 -0
  282. package/src/workspace/ProjectConfig.ts +9 -0
  283. package/src/workspace/ProjectCreateOptions.ts +9 -0
  284. package/src/workspace/ProjectError.ts +15 -0
  285. package/src/workspace/ProjectOptions.ts +17 -0
  286. package/src/workspace/ProjectUpdateOptions.ts +3 -0
  287. package/src/workspace/Workspace.ts +553 -0
  288. package/src/workspace/WorkspaceConfig.ts +9 -0
  289. package/src/workspace/WorkspaceCreateOptions.ts +5 -0
  290. package/src/workspace/WorkspaceCreateProjectOptions.ts +6 -0
  291. package/src/workspace/WorkspaceDependencies.ts +196 -0
  292. package/src/workspace/WorkspaceError.ts +18 -0
  293. package/src/workspace/WorkspaceOptions.ts +29 -0
  294. package/src/workspace/WorkspaceOptionsProjectOptions.ts +9 -0
  295. package/src/workspace/WorkspacePackageJson.ts +3 -0
  296. package/src/workspace/WorkspaceProjectGlobs.ts +1 -0
  297. package/src/workspace/WorkspaceProjects.ts +3 -0
  298. package/src/workspace/WorkspaceRepository.ts +4 -0
  299. package/src/workspace/WorkspaceUpdateOptions.ts +3 -0
  300. package/src/workspace/internals/compareSemver.ts +35 -0
  301. package/src/workspace/internals/getPackageJsonWorkspaces.ts +11 -0
  302. package/src/workspace/internals/getRepositoryBranches.ts +25 -0
  303. package/src/workspace/internals/getRepositoryUrl.ts +23 -0
  304. package/src/workspace/internals.ts +4 -0
  305. package/src/workspace/saveProjectConfig.ts +23 -0
  306. package/src/workspace/saveWorkspaceConfig.ts +30 -0
  307. package/src/workspace.ts +10 -0
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ export declare const projectConfigSchema: z.ZodObject<{
3
+ template: z.ZodOptional<z.ZodString>;
4
+ }, "strip", z.ZodUnknown, z.objectOutputType<{
5
+ template: z.ZodOptional<z.ZodString>;
6
+ }, z.ZodUnknown, "strip">, z.objectInputType<{
7
+ template: z.ZodOptional<z.ZodString>;
8
+ }, z.ZodUnknown, "strip">>;
9
+ export type ProjectConfig = z.infer<typeof projectConfigSchema>;
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ export const projectConfigSchema = z.object({
3
+ template: z.string().optional()
4
+ }).catchall(z.unknown());
5
+
6
+ //# sourceMappingURL=ProjectConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/ProjectConfig.ts"],"sourcesContent":["import {z} from 'zod';\n\nexport const projectConfigSchema = z\n .object({\n template: z.string().optional(),\n })\n .catchall(z.unknown());\n\nexport type ProjectConfig = z.infer<typeof projectConfigSchema>;\n"],"names":["z","projectConfigSchema","object","template","string","optional","catchall","unknown"],"mappings":"AAAA,SAAQA,CAAC,QAAO,MAAM;AAEtB,OAAO,MAAMC,sBAAsBD,EAChCE,OAAO;IACNC,UAAUH,EAAEI,SAASC;AACvB,GACCC,SAASN,EAAEO,WAAW"}
@@ -0,0 +1,8 @@
1
+ import { type Workspace } from './Workspace.js';
2
+ export type ProjectCreateOptions<M extends boolean> = {
3
+ templateId: string;
4
+ workspace: Workspace<M>;
5
+ projectPath: string;
6
+ projectName: string;
7
+ args: Record<string, unknown>;
8
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=ProjectCreateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/ProjectCreateOptions.ts"],"sourcesContent":["import {type Workspace} from './Workspace.js';\n\nexport type ProjectCreateOptions<M extends boolean> = {\n templateId: string;\n workspace: Workspace<M>;\n projectPath: string;\n projectName: string;\n args: Record<string, unknown>;\n};\n"],"names":[],"mappings":"AAAA,WAQE"}
@@ -0,0 +1,8 @@
1
+ import { type ZodIssue } from 'zod';
2
+ export declare const ProjectError: new (code: "INVALID_PACKAGE_JSON" | "INVALID_PROJECT_CONFIG" | "NO_SUCH_PROJECT_PATH", options?: import("@jakubmazanec/error").CustomErrorWithDataOptions<{
3
+ path?: string;
4
+ zodIssues?: ZodIssue[];
5
+ }> | undefined) => import("@jakubmazanec/error").CustomErrorWithData<"INVALID_PACKAGE_JSON" | "INVALID_PROJECT_CONFIG" | "NO_SUCH_PROJECT_PATH" | "UNKNOWN_ERROR", {
6
+ path?: string;
7
+ zodIssues?: ZodIssue[];
8
+ }>;
@@ -0,0 +1,11 @@
1
+ import { createCustomErrorWithData } from '@jakubmazanec/error';
2
+ export const ProjectError = createCustomErrorWithData('ProjectError', {
3
+ INVALID_PACKAGE_JSON: 'Invalid package.json file "{0}".',
4
+ INVALID_PROJECT_CONFIG: 'Invalid project config file "{0}".',
5
+ NO_SUCH_PROJECT_PATH: 'Project path "{0}" doesn\'t exist.'
6
+ }, class ProjectErrorData {
7
+ path;
8
+ zodIssues;
9
+ });
10
+
11
+ //# sourceMappingURL=ProjectError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/ProjectError.ts"],"sourcesContent":["import {createCustomErrorWithData} from '@jakubmazanec/error';\nimport {type ZodIssue} from 'zod';\n\nexport const ProjectError = createCustomErrorWithData(\n 'ProjectError',\n {\n INVALID_PACKAGE_JSON: 'Invalid package.json file \"{0}\".',\n INVALID_PROJECT_CONFIG: 'Invalid project config file \"{0}\".',\n NO_SUCH_PROJECT_PATH: 'Project path \"{0}\" doesn\\'t exist.',\n },\n class ProjectErrorData {\n path?: string;\n zodIssues?: ZodIssue[];\n },\n);\n"],"names":["createCustomErrorWithData","ProjectError","INVALID_PACKAGE_JSON","INVALID_PROJECT_CONFIG","NO_SUCH_PROJECT_PATH","ProjectErrorData","path","zodIssues"],"mappings":"AAAA,SAAQA,yBAAyB,QAAO,sBAAsB;AAG9D,OAAO,MAAMC,eAAeD,0BAC1B,gBACA;IACEE,sBAAsB;IACtBC,wBAAwB;IACxBC,sBAAsB;AACxB,GACA,MAAMC;IACJC,KAAc;IACdC,UAAuB;AACzB,GACA"}
@@ -0,0 +1,15 @@
1
+ import { type PackageJson } from '@jakubmazanec/zod-utils';
2
+ import { type ProjectConfig } from './ProjectConfig.js';
3
+ import { type ProjectError } from './ProjectError.js';
4
+ import { type Workspace } from './Workspace.js';
5
+ /**
6
+ * New project options.
7
+ */
8
+ export type ProjectOptions<M extends boolean> = {
9
+ path: string;
10
+ name?: string;
11
+ config?: ProjectConfig;
12
+ packageJson?: PackageJson;
13
+ workspace: Workspace<M>;
14
+ errors?: Array<InstanceType<typeof ProjectError>>;
15
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=ProjectOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/ProjectOptions.ts"],"sourcesContent":["import {type PackageJson} from '@jakubmazanec/zod-utils';\n\nimport {type ProjectConfig} from './ProjectConfig.js';\nimport {type ProjectError} from './ProjectError.js';\nimport {type Workspace} from './Workspace.js';\n\n/**\n * New project options.\n */\nexport type ProjectOptions<M extends boolean> = {\n path: string;\n name?: string;\n config?: ProjectConfig;\n packageJson?: PackageJson;\n workspace: Workspace<M>;\n errors?: Array<InstanceType<typeof ProjectError>>;\n};\n"],"names":[],"mappings":"AAAA,WAgBE"}
@@ -0,0 +1,3 @@
1
+ export type ProjectUpdateOptions = {
2
+ args: Record<string, unknown>;
3
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=ProjectUpdateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/ProjectUpdateOptions.ts"],"sourcesContent":["export type ProjectUpdateOptions = {\n args: Record<string, unknown>;\n};\n"],"names":[],"mappings":"AAAA,WAEE"}
@@ -0,0 +1,68 @@
1
+ import { Project } from './Project.js';
2
+ import { type WorkspaceConfig } from './WorkspaceConfig.js';
3
+ import { type WorkspaceCreateOptions } from './WorkspaceCreateOptions.js';
4
+ import { type WorkspaceCreateProjectOptions } from './WorkspaceCreateProjectOptions.js';
5
+ import { WorkspaceDependencies } from './WorkspaceDependencies.js';
6
+ import { WorkspaceError } from './WorkspaceError.js';
7
+ import type { WorkspaceOptions } from './WorkspaceOptions.js';
8
+ import { type WorkspacePackageJson } from './WorkspacePackageJson.js';
9
+ import type { WorkspaceProjectGlobs } from './WorkspaceProjectGlobs.js';
10
+ import { type WorkspaceProjects } from './WorkspaceProjects.js';
11
+ import { type WorkspaceRepository } from './WorkspaceRepository.js';
12
+ import { type WorkspaceUpdateOptions } from './WorkspaceUpdateOptions.js';
13
+ /**
14
+ * Workspace represent a directory, usually a git repository, that contains {@linkcode Project} instances.
15
+ *
16
+ * @typeParam M If true, the workspace is multi-project workspace (so-called "monorepo").
17
+ */
18
+ export declare class Workspace<M extends boolean = true> {
19
+ /** Workspace path. */
20
+ readonly path: string;
21
+ /** Does the workspace contain a multiple projects? */
22
+ readonly isMultiProject: M;
23
+ /** Globs used to find projects. */
24
+ projectGlobs: WorkspaceProjectGlobs<M>;
25
+ /** Workspace projects. */
26
+ projects: WorkspaceProjects<M>;
27
+ /** Workspace configuration; if it's not found, the default is an empty object. */
28
+ config: WorkspaceConfig;
29
+ /** Parsed workspace `package.json` file (if the workspace contains multiple projects); if it's not found, the default is an empty object. */
30
+ packageJson: WorkspacePackageJson<M>;
31
+ /** Workspace git repository. */
32
+ repository?: WorkspaceRepository;
33
+ /** Dependencies of all projects. */
34
+ dependencies: WorkspaceDependencies<M>;
35
+ /** Development dependencies of all projects. */
36
+ devDependencies: WorkspaceDependencies<M>;
37
+ /** All dependencies of all projects and workspace dependencies. */
38
+ allDependencies: WorkspaceDependencies<M>;
39
+ /** Versions of each dependency. */
40
+ dependencyVersions: Record<string, string[]>;
41
+ /** Errors found during reading from the file system. */
42
+ errors: Array<InstanceType<typeof WorkspaceError>>;
43
+ constructor(options: WorkspaceOptions<M>);
44
+ /**
45
+ * Creates new workspace within the file system.
46
+ *
47
+ * @param options Options.
48
+ * @returns The new workspace
49
+ */
50
+ static create({ args, path: workspacePath, templateId }: WorkspaceCreateOptions): Promise<Workspace<true> | Workspace<false>>;
51
+ static read(workspacePath: string): Promise<Workspace | Workspace<false>>;
52
+ /**
53
+ * Traverses file system up from the search path and tries to find a directory that is a root of a workspace.
54
+ */
55
+ static find(searchPath: string): Promise<string | undefined>;
56
+ /**
57
+ * Traverses file system up from the search path and tries to find and read a workspace.
58
+ */
59
+ static findAndRead(searchPath: string): Promise<Workspace | Workspace<false> | undefined>;
60
+ read(): Promise<this>;
61
+ update({ args }: WorkspaceUpdateOptions): Promise<this>;
62
+ getProject(projectName: Project<M> | string): Project<M> | undefined;
63
+ createProject({ templateId, projectPath, projectName, args, }: WorkspaceCreateProjectOptions): Promise<Project<M>>;
64
+ addProject(newProject: Project<M>): Project<M>;
65
+ readProjects(): Promise<Array<Project<M>>>;
66
+ private sortProjects;
67
+ private updateDependencies;
68
+ }
@@ -0,0 +1,426 @@
1
+ import { ensureEmptyDirectory, findExistingDirectory, isRootPath } from '@jakubmazanec/fs-utils';
2
+ import { readFile, packageJsonSchema } from '@jakubmazanec/zod-utils';
3
+ import glob from 'fast-glob';
4
+ import fs from 'fs-extra';
5
+ import json5 from 'json5';
6
+ import path from 'node:path';
7
+ import { z } from 'zod';
8
+ import { getPackageJsonWorkspaces, getRepositoryBranches, getRepositoryUrl } from './internals.js';
9
+ import { Project } from './Project.js';
10
+ import { saveWorkspaceConfig } from './saveWorkspaceConfig.js';
11
+ import { workspaceConfigSchema } from './WorkspaceConfig.js';
12
+ import { WorkspaceDependencies } from './WorkspaceDependencies.js';
13
+ import { WorkspaceError } from './WorkspaceError.js';
14
+ import { CARSON_CONFIG_DIRECTORY, WORKSPACE_CONFIG_FILENAME } from '../constants.js';
15
+ import { applyTemplateRenders } from '../template/applyTemplateRenders.js';
16
+ import { renderTemplate } from '../template/renderTemplate.js';
17
+ /**
18
+ * Workspace represent a directory, usually a git repository, that contains {@linkcode Project} instances.
19
+ *
20
+ * @typeParam M If true, the workspace is multi-project workspace (so-called "monorepo").
21
+ */ export class Workspace {
22
+ /** Workspace path. */ path;
23
+ /** Does the workspace contain a multiple projects? */ isMultiProject;
24
+ /** Globs used to find projects. */ projectGlobs;
25
+ /** Workspace projects. */ projects;
26
+ /** Workspace configuration; if it's not found, the default is an empty object. */ config;
27
+ /** Parsed workspace `package.json` file (if the workspace contains multiple projects); if it's not found, the default is an empty object. */ packageJson;
28
+ /** Workspace git repository. */ repository;
29
+ /** Dependencies of all projects. */ dependencies = [];
30
+ /** Development dependencies of all projects. */ devDependencies = [];
31
+ /** All dependencies of all projects and workspace dependencies. */ allDependencies = [];
32
+ /** Versions of each dependency. */ dependencyVersions = {};
33
+ /** Errors found during reading from the file system. */ errors = [];
34
+ constructor(options){
35
+ this.path = options.path;
36
+ if (typeof options.isMultiProject === 'undefined' || options.isMultiProject) {
37
+ this.isMultiProject = true;
38
+ let projectGlobOption = options.projectGlobs;
39
+ if (projectGlobOption) {
40
+ this.projectGlobs = projectGlobOption;
41
+ } else {
42
+ this.projectGlobs = [];
43
+ }
44
+ let { projects } = options;
45
+ if (projects) {
46
+ this.projects = projects.map((project)=>new Project({
47
+ ...project,
48
+ workspace: this
49
+ }));
50
+ } else {
51
+ this.projects = [];
52
+ }
53
+ let packageJsonOption = options.packageJson;
54
+ if (packageJsonOption) {
55
+ this.packageJson = packageJsonOption;
56
+ } else {
57
+ let emptyPackageJson = {};
58
+ this.packageJson = emptyPackageJson;
59
+ }
60
+ } else {
61
+ this.isMultiProject = false;
62
+ this.projectGlobs = null;
63
+ this.packageJson = null;
64
+ let { projects } = options;
65
+ if (projects) {
66
+ this.projects = projects.map((project)=>new Project({
67
+ ...project,
68
+ workspace: this
69
+ }));
70
+ if (this.projects[0].path !== this.path) {
71
+ throw new WorkspaceError('PATH_MISMATCH');
72
+ }
73
+ } else {
74
+ this.projects = [];
75
+ }
76
+ }
77
+ let configOption = options.config;
78
+ if (configOption) {
79
+ this.config = configOption;
80
+ } else {
81
+ let emptyWorkspaceConfig = {};
82
+ this.config = emptyWorkspaceConfig;
83
+ }
84
+ if (options.repository) {
85
+ this.repository = options.repository;
86
+ }
87
+ if (options.errors) {
88
+ this.errors = options.errors;
89
+ }
90
+ // add missing project globs
91
+ if (this.isMultiProject && !this.projectGlobs.length) {
92
+ let packageJsonWorkspaces = getPackageJsonWorkspaces(this.packageJson);
93
+ if (packageJsonWorkspaces) {
94
+ this.projectGlobs = [
95
+ ...packageJsonWorkspaces
96
+ ];
97
+ }
98
+ }
99
+ this.updateDependencies();
100
+ }
101
+ /**
102
+ * Creates new workspace within the file system.
103
+ *
104
+ * @param options Options.
105
+ * @returns The new workspace
106
+ */ static async create({ args , path: workspacePath , templateId }) {
107
+ // TODO: test that workspace returned by this method has the same value of isMultiProject when the same workspace is after its creation re-read with .read()
108
+ let workspace = new this({
109
+ path: workspacePath,
110
+ config: {
111
+ template: templateId
112
+ }
113
+ });
114
+ await ensureEmptyDirectory(workspace.path);
115
+ await saveWorkspaceConfig({
116
+ workspacePath: workspace.path,
117
+ workspaceConfig: {
118
+ template: templateId
119
+ }
120
+ });
121
+ let templateRenders = await renderTemplate({
122
+ templateId,
123
+ templateData: {
124
+ workspace,
125
+ args
126
+ }
127
+ });
128
+ await applyTemplateRenders({
129
+ templateRenders,
130
+ path: workspace.path,
131
+ ignoreCreateStrategies: false,
132
+ ignoreCheckStrategies: true
133
+ });
134
+ return Workspace.read(workspace.path);
135
+ }
136
+ static async read(workspacePath) {
137
+ let resolvedWorkspacePath = path.resolve(workspacePath);
138
+ if (!await fs.pathExists(resolvedWorkspacePath)) {
139
+ throw new WorkspaceError('NO_SUCH_WORKSPACE_PATH', {
140
+ messageParameters: [
141
+ resolvedWorkspacePath
142
+ ],
143
+ data: {
144
+ path: resolvedWorkspacePath
145
+ }
146
+ });
147
+ }
148
+ // load root package.json
149
+ let rootPackageJsonPath = path.join(resolvedWorkspacePath, 'package.json');
150
+ let doesRootPackageJsonExist = await fs.pathExists(rootPackageJsonPath);
151
+ let rootPackageJson;
152
+ if (doesRootPackageJsonExist) {
153
+ rootPackageJson = await readFile(rootPackageJsonPath, packageJsonSchema, {
154
+ parser: (rawString)=>json5.parse(rawString)
155
+ });
156
+ } else {
157
+ rootPackageJson = {};
158
+ }
159
+ if (rootPackageJson instanceof z.ZodError) {
160
+ rootPackageJson = {};
161
+ }
162
+ // add projects
163
+ let projectGlobs = getPackageJsonWorkspaces(rootPackageJson);
164
+ // we're dealing with single-project workspace
165
+ if (!projectGlobs) {
166
+ let workspace = new this({
167
+ path: resolvedWorkspacePath,
168
+ isMultiProject: false
169
+ });
170
+ await workspace.read();
171
+ await workspace.readProjects();
172
+ return workspace;
173
+ }
174
+ // assemble workspace options
175
+ let workspace = new this({
176
+ path: resolvedWorkspacePath,
177
+ isMultiProject: true,
178
+ projectGlobs,
179
+ packageJson: rootPackageJson
180
+ });
181
+ await workspace.read();
182
+ await workspace.readProjects();
183
+ return workspace;
184
+ }
185
+ /**
186
+ * Traverses file system up from the search path and tries to find a directory that is a root of a workspace.
187
+ */ static async find(searchPath) {
188
+ let startingPath = await findExistingDirectory(path.resolve(searchPath));
189
+ let currentPath = startingPath;
190
+ let singlePackageWorkspacePath;
191
+ let multiPackageWorkspacePath;
192
+ while(!(isRootPath(currentPath) || singlePackageWorkspacePath && multiPackageWorkspacePath)){
193
+ let packageJsonPath = path.join(currentPath, 'package.json');
194
+ let doesPackageJsonExist = await fs.pathExists(packageJsonPath);
195
+ if (doesPackageJsonExist) {
196
+ let packageJson = await readFile(packageJsonPath, packageJsonSchema, {
197
+ parser: (rawString)=>json5.parse(rawString)
198
+ });
199
+ if (!(packageJson instanceof Error)) {
200
+ let projectGlobs = getPackageJsonWorkspaces(packageJson);
201
+ if (projectGlobs === null || projectGlobs === void 0 ? void 0 : projectGlobs.length) {
202
+ multiPackageWorkspacePath ??= currentPath;
203
+ } else {
204
+ singlePackageWorkspacePath ??= currentPath;
205
+ }
206
+ }
207
+ }
208
+ currentPath = path.dirname(currentPath);
209
+ }
210
+ if (multiPackageWorkspacePath) {
211
+ return multiPackageWorkspacePath;
212
+ } else if (singlePackageWorkspacePath) {
213
+ return singlePackageWorkspacePath;
214
+ }
215
+ return undefined;
216
+ }
217
+ /**
218
+ * Traverses file system up from the search path and tries to find and read a workspace.
219
+ */ static async findAndRead(searchPath) {
220
+ let workspacePath = await Workspace.find(searchPath);
221
+ if (workspacePath) {
222
+ return Workspace.read(workspacePath);
223
+ }
224
+ return undefined;
225
+ }
226
+ async read() {
227
+ if (!await fs.pathExists(this.path)) {
228
+ throw new WorkspaceError('NO_SUCH_WORKSPACE_PATH', {
229
+ messageParameters: [
230
+ this.path
231
+ ],
232
+ data: {
233
+ path: this.path
234
+ }
235
+ });
236
+ }
237
+ let errors = [];
238
+ let repositoryUrl = await getRepositoryUrl(this.path);
239
+ let repositoryBranches = await getRepositoryBranches(this.path);
240
+ // load workspace config
241
+ let workspaceConfigPath = path.join(this.path, CARSON_CONFIG_DIRECTORY, WORKSPACE_CONFIG_FILENAME);
242
+ let doesWorkspaceConfigExist = await fs.pathExists(workspaceConfigPath);
243
+ let workspaceConfig;
244
+ if (doesWorkspaceConfigExist) {
245
+ workspaceConfig = await readFile(workspaceConfigPath, workspaceConfigSchema, {
246
+ parser: (rawString)=>json5.parse(rawString)
247
+ });
248
+ } else {
249
+ workspaceConfig = {};
250
+ }
251
+ if (workspaceConfig instanceof z.ZodError) {
252
+ let zodError = workspaceConfig;
253
+ let workspaceError = new WorkspaceError('INVALID_WORKSPACE_CONFIG', {
254
+ messageParameters: [
255
+ workspaceConfigPath
256
+ ],
257
+ data: {
258
+ path: workspaceConfigPath,
259
+ zodIssues: zodError.issues
260
+ }
261
+ });
262
+ errors.push(workspaceError);
263
+ workspaceConfig = {};
264
+ }
265
+ if (this.isMultiProject) {
266
+ // load root package.json
267
+ let rootPackageJsonPath = path.join(this.path, 'package.json');
268
+ let doesRootPackageJsonExist = await fs.pathExists(rootPackageJsonPath);
269
+ let rootPackageJson;
270
+ if (doesRootPackageJsonExist) {
271
+ rootPackageJson = await readFile(rootPackageJsonPath, packageJsonSchema, {
272
+ parser: (rawString)=>json5.parse(rawString)
273
+ });
274
+ } else {
275
+ rootPackageJson = {};
276
+ }
277
+ if (rootPackageJson instanceof z.ZodError) {
278
+ let zodError = rootPackageJson;
279
+ let workspaceError = new WorkspaceError('INVALID_PACKAGE_JSON', {
280
+ messageParameters: [
281
+ rootPackageJsonPath
282
+ ],
283
+ data: {
284
+ path: rootPackageJsonPath,
285
+ zodIssues: zodError.issues
286
+ }
287
+ });
288
+ errors.push(workspaceError);
289
+ rootPackageJson = {};
290
+ }
291
+ let projectGlobs = getPackageJsonWorkspaces(rootPackageJson);
292
+ this.projectGlobs = projectGlobs ?? [];
293
+ this.packageJson = rootPackageJson;
294
+ this.config = workspaceConfig;
295
+ this.errors = errors;
296
+ if (repositoryUrl) {
297
+ this.repository = {
298
+ url: repositoryUrl,
299
+ branches: repositoryBranches ?? []
300
+ };
301
+ }
302
+ await this.readProjects();
303
+ return this;
304
+ }
305
+ // we're dealing with single-project workspace
306
+ this.config = workspaceConfig;
307
+ this.errors = errors;
308
+ if (repositoryUrl) {
309
+ this.repository = {
310
+ url: repositoryUrl,
311
+ branches: repositoryBranches ?? []
312
+ };
313
+ }
314
+ await this.readProjects();
315
+ return this;
316
+ }
317
+ async update({ args }) {
318
+ if (!this.config.template) {
319
+ throw new Error('Templat ID is missing in the workspace config!');
320
+ }
321
+ let templateRenders = await renderTemplate({
322
+ templateId: this.config.template,
323
+ templateData: {
324
+ workspace: this,
325
+ args
326
+ }
327
+ });
328
+ await applyTemplateRenders({
329
+ templateRenders,
330
+ path: this.path,
331
+ ignoreCreateStrategies: true,
332
+ ignoreCheckStrategies: false
333
+ });
334
+ await this.read();
335
+ return this;
336
+ }
337
+ getProject(projectName) {
338
+ for (let project of this.projects){
339
+ if (project.name === projectName || project === projectName) {
340
+ return project;
341
+ }
342
+ }
343
+ return undefined;
344
+ }
345
+ async createProject({ templateId , projectPath , projectName , args }) {
346
+ if (this.projects.some((project)=>projectPath === project.path)) {
347
+ throw new Error('Project with same path already exists!');
348
+ }
349
+ if (this.projects.some((project)=>projectName === project.name)) {
350
+ throw new Error('Project with same name already exists!');
351
+ }
352
+ if (!this.isMultiProject && this.projects.length >= 1) {
353
+ throw new Error('Only multi-project Workspace can have more than 1 project!');
354
+ }
355
+ let newProject = await Project.create({
356
+ templateId,
357
+ projectPath,
358
+ projectName,
359
+ args,
360
+ workspace: this
361
+ });
362
+ this.addProject(newProject);
363
+ return newProject;
364
+ }
365
+ addProject(newProject) {
366
+ if (this.projects.some((project)=>newProject.path === project.path)) {
367
+ throw new Error('Project with same path already exists!');
368
+ }
369
+ if (this.projects.some((project)=>newProject.name === project.name)) {
370
+ throw new Error('Project with same name already exists!');
371
+ }
372
+ if (!this.isMultiProject && this.projects.length >= 1) {
373
+ throw new Error('Only multi-project Workspace can have more than 1 project!');
374
+ }
375
+ this.projects.push(newProject);
376
+ this.sortProjects();
377
+ this.updateDependencies();
378
+ return newProject;
379
+ }
380
+ async readProjects() {
381
+ if (this.projectGlobs) {
382
+ let projects = [];
383
+ let packagePaths = await glob(this.projectGlobs, {
384
+ cwd: this.path,
385
+ onlyDirectories: true
386
+ });
387
+ for (let packagePath of packagePaths){
388
+ let project = await Project.read(path.join(this.path, packagePath), this);
389
+ projects.push(project);
390
+ }
391
+ this.projects = projects;
392
+ } else {
393
+ this.projects = [
394
+ await Project.read(this.path, this)
395
+ ];
396
+ }
397
+ this.sortProjects();
398
+ this.updateDependencies();
399
+ return this.projects;
400
+ }
401
+ sortProjects() {
402
+ this.projects.sort((projectA, projectB)=>{
403
+ if (projectA.path < projectB.path) {
404
+ return -1;
405
+ } else if (projectA.path > projectB.path) {
406
+ return 1;
407
+ }
408
+ return 0;
409
+ });
410
+ }
411
+ updateDependencies() {
412
+ this.dependencies = WorkspaceDependencies.fromWorkspace(this);
413
+ this.devDependencies = WorkspaceDependencies.fromWorkspace(this, {
414
+ includeOnlyDevDependencies: true
415
+ });
416
+ this.allDependencies = WorkspaceDependencies.fromWorkspace(this, {
417
+ includeDevDependencies: true,
418
+ includeWorkspaceDependencies: true
419
+ });
420
+ this.dependencyVersions = this.allDependencies.getVersions({
421
+ useExactVersions: true
422
+ });
423
+ }
424
+ }
425
+
426
+ //# sourceMappingURL=Workspace.js.map