@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 @@
1
+ {"version":3,"sources":["../../src/workspace/Workspace.ts"],"sourcesContent":["import {ensureEmptyDirectory, findExistingDirectory, isRootPath} from '@jakubmazanec/fs-utils';\nimport {readFile, packageJsonSchema, type PackageJson} from '@jakubmazanec/zod-utils';\nimport glob from 'fast-glob';\nimport fs from 'fs-extra';\nimport json5 from 'json5';\nimport path from 'node:path';\nimport {z} from 'zod';\n\nimport {getPackageJsonWorkspaces, getRepositoryBranches, getRepositoryUrl} from './internals.js';\nimport {Project} from './Project.js';\nimport {saveWorkspaceConfig} from './saveWorkspaceConfig.js';\nimport {workspaceConfigSchema} from './WorkspaceConfig.js';\nimport {type WorkspaceConfig} from './WorkspaceConfig.js';\nimport {type WorkspaceCreateOptions} from './WorkspaceCreateOptions.js';\nimport {type WorkspaceCreateProjectOptions} from './WorkspaceCreateProjectOptions.js';\nimport {WorkspaceDependencies} from './WorkspaceDependencies.js';\nimport {WorkspaceError} from './WorkspaceError.js';\nimport type {WorkspaceOptions} from './WorkspaceOptions.js';\nimport {type WorkspacePackageJson} from './WorkspacePackageJson.js';\nimport type {WorkspaceProjectGlobs} from './WorkspaceProjectGlobs.js';\nimport {type WorkspaceProjects} from './WorkspaceProjects.js';\nimport {type WorkspaceRepository} from './WorkspaceRepository.js';\nimport {type WorkspaceUpdateOptions} from './WorkspaceUpdateOptions.js';\nimport {CARSON_CONFIG_DIRECTORY, WORKSPACE_CONFIG_FILENAME} from '../constants.js';\nimport {applyTemplateRenders} from '../template/applyTemplateRenders.js';\nimport {renderTemplate} from '../template/renderTemplate.js';\n\n/**\n * Workspace represent a directory, usually a git repository, that contains {@linkcode Project} instances.\n *\n * @typeParam M If true, the workspace is multi-project workspace (so-called \"monorepo\").\n */\nexport class Workspace<M extends boolean = true> {\n /** Workspace path. */\n readonly path: string;\n\n /** Does the workspace contain a multiple projects? */\n readonly isMultiProject: M;\n\n /** Globs used to find projects. */\n projectGlobs: WorkspaceProjectGlobs<M>;\n\n /** Workspace projects. */\n projects: WorkspaceProjects<M>;\n\n /** Workspace configuration; if it's not found, the default is an empty object. */\n config: WorkspaceConfig;\n\n /** Parsed workspace `package.json` file (if the workspace contains multiple projects); if it's not found, the default is an empty object. */\n packageJson: WorkspacePackageJson<M>;\n\n /** Workspace git repository. */\n repository?: WorkspaceRepository;\n\n /** Dependencies of all projects. */\n dependencies: WorkspaceDependencies<M> = [] as unknown as WorkspaceDependencies<M>;\n\n /** Development dependencies of all projects. */\n devDependencies: WorkspaceDependencies<M> = [] as unknown as WorkspaceDependencies<M>;\n\n /** All dependencies of all projects and workspace dependencies. */\n allDependencies: WorkspaceDependencies<M> = [] as unknown as WorkspaceDependencies<M>;\n\n /** Versions of each dependency. */\n dependencyVersions: Record<string, string[]> = {};\n\n /** Errors found during reading from the file system. */\n errors: Array<InstanceType<typeof WorkspaceError>> = [];\n\n constructor(options: WorkspaceOptions<M>) {\n this.path = options.path;\n\n if (typeof options.isMultiProject === 'undefined' || options.isMultiProject) {\n this.isMultiProject = true as M;\n\n let projectGlobOption = (options as WorkspaceOptions<true>).projectGlobs;\n\n if (projectGlobOption) {\n this.projectGlobs = projectGlobOption as WorkspaceProjectGlobs<M>;\n } else {\n this.projectGlobs = [] as string[] as WorkspaceProjectGlobs<M>;\n }\n\n let {projects} = options as WorkspaceOptions<true>;\n\n if (projects) {\n this.projects = projects.map(\n (project) => new Project({...project, workspace: this}),\n ) as WorkspaceProjects<M>;\n } else {\n this.projects = [] as Array<Project<M>> as WorkspaceProjects<M>;\n }\n\n let packageJsonOption = (options as WorkspaceOptions<true>).packageJson;\n\n if (packageJsonOption) {\n this.packageJson = packageJsonOption as M extends true ? PackageJson : null;\n } else {\n let emptyPackageJson: PackageJson = {};\n\n this.packageJson = emptyPackageJson as M extends true ? PackageJson : null;\n }\n } else {\n this.isMultiProject = false as M;\n this.projectGlobs = null as M extends true ? string[] : null;\n this.packageJson = null as M extends true ? PackageJson : null;\n\n let {projects} = options as WorkspaceOptions<false>;\n\n if (projects) {\n this.projects = projects.map(\n (project) => new Project({...project, workspace: this}),\n ) as WorkspaceProjects<M>;\n\n if ((this.projects[0] as Project<false>).path !== this.path) {\n throw new WorkspaceError('PATH_MISMATCH');\n }\n } else {\n this.projects = [] as Array<Project<M>> as WorkspaceProjects<M>;\n }\n }\n\n let configOption = options.config;\n\n if (configOption) {\n this.config = configOption;\n } else {\n let emptyWorkspaceConfig: WorkspaceConfig = {};\n\n this.config = emptyWorkspaceConfig;\n }\n\n if (options.repository) {\n this.repository = options.repository;\n }\n\n if (options.errors) {\n this.errors = options.errors;\n }\n\n // add missing project globs\n if (this.isMultiProject && !(this.projectGlobs as string[]).length) {\n let packageJsonWorkspaces = getPackageJsonWorkspaces(this.packageJson as PackageJson);\n\n if (packageJsonWorkspaces) {\n this.projectGlobs = [...packageJsonWorkspaces] as M extends true ? string[] : null;\n }\n }\n\n this.updateDependencies();\n }\n\n /**\n * Creates new workspace within the file system.\n *\n * @param options Options.\n * @returns The new workspace\n */\n static async create({args, path: workspacePath, templateId}: WorkspaceCreateOptions) {\n // 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()\n let workspace = new this({\n path: workspacePath,\n config: {\n template: templateId,\n },\n });\n\n await ensureEmptyDirectory(workspace.path);\n await saveWorkspaceConfig({\n workspacePath: workspace.path,\n workspaceConfig: {template: templateId},\n });\n\n let templateRenders = await renderTemplate({\n templateId,\n templateData: {\n workspace,\n args,\n },\n });\n\n await applyTemplateRenders({\n templateRenders,\n path: workspace.path,\n ignoreCreateStrategies: false,\n ignoreCheckStrategies: true,\n });\n\n return Workspace.read(workspace.path);\n }\n\n static async read(workspacePath: string): Promise<Workspace | Workspace<false>> {\n let resolvedWorkspacePath = path.resolve(workspacePath);\n\n if (!(await fs.pathExists(resolvedWorkspacePath))) {\n throw new WorkspaceError('NO_SUCH_WORKSPACE_PATH', {\n messageParameters: [resolvedWorkspacePath],\n data: {\n path: resolvedWorkspacePath,\n },\n });\n }\n\n // load root package.json\n let rootPackageJsonPath = path.join(resolvedWorkspacePath, 'package.json');\n let doesRootPackageJsonExist = await fs.pathExists(rootPackageJsonPath);\n let rootPackageJson: PackageJson | z.ZodError;\n\n if (doesRootPackageJsonExist) {\n rootPackageJson = await readFile(rootPackageJsonPath, packageJsonSchema, {\n parser: (rawString: string) => json5.parse<unknown>(rawString),\n });\n } else {\n rootPackageJson = {};\n }\n\n if (rootPackageJson instanceof z.ZodError) {\n rootPackageJson = {};\n }\n\n // add projects\n let projectGlobs = getPackageJsonWorkspaces(rootPackageJson);\n\n // we're dealing with single-project workspace\n if (!projectGlobs) {\n let workspace = new this({\n path: resolvedWorkspacePath,\n isMultiProject: false,\n });\n\n await workspace.read();\n await workspace.readProjects();\n\n return workspace;\n }\n\n // assemble workspace options\n let workspace = new this({\n path: resolvedWorkspacePath,\n isMultiProject: true,\n projectGlobs,\n packageJson: rootPackageJson,\n });\n\n await workspace.read();\n await workspace.readProjects();\n\n return workspace;\n }\n\n /**\n * Traverses file system up from the search path and tries to find a directory that is a root of a workspace.\n */\n static async find(searchPath: string): Promise<string | undefined> {\n let startingPath = await findExistingDirectory(path.resolve(searchPath));\n let currentPath = startingPath;\n let singlePackageWorkspacePath: string | undefined;\n let multiPackageWorkspacePath: string | undefined;\n\n while (\n !(isRootPath(currentPath) || (singlePackageWorkspacePath && multiPackageWorkspacePath))\n ) {\n let packageJsonPath = path.join(currentPath, 'package.json');\n let doesPackageJsonExist = await fs.pathExists(packageJsonPath);\n\n if (doesPackageJsonExist) {\n let packageJson = await readFile(packageJsonPath, packageJsonSchema, {\n parser: (rawString: string) => json5.parse<unknown>(rawString),\n });\n\n if (!(packageJson instanceof Error)) {\n let projectGlobs = getPackageJsonWorkspaces(packageJson);\n\n if (projectGlobs?.length) {\n multiPackageWorkspacePath ??= currentPath;\n } else {\n singlePackageWorkspacePath ??= currentPath;\n }\n }\n }\n\n currentPath = path.dirname(currentPath);\n }\n\n if (multiPackageWorkspacePath) {\n return multiPackageWorkspacePath;\n } else if (singlePackageWorkspacePath) {\n return singlePackageWorkspacePath;\n }\n\n return undefined;\n }\n\n /**\n * Traverses file system up from the search path and tries to find and read a workspace.\n */\n static async findAndRead(searchPath: string): Promise<Workspace | Workspace<false> | undefined> {\n let workspacePath = await Workspace.find(searchPath);\n\n if (workspacePath) {\n return Workspace.read(workspacePath);\n }\n\n return undefined;\n }\n\n async read(): Promise<this> {\n if (!(await fs.pathExists(this.path))) {\n throw new WorkspaceError('NO_SUCH_WORKSPACE_PATH', {\n messageParameters: [this.path],\n data: {\n path: this.path,\n },\n });\n }\n\n let errors: Array<InstanceType<typeof WorkspaceError>> = [];\n let repositoryUrl = await getRepositoryUrl(this.path);\n let repositoryBranches = await getRepositoryBranches(this.path);\n\n // load workspace config\n let workspaceConfigPath = path.join(\n this.path,\n CARSON_CONFIG_DIRECTORY,\n WORKSPACE_CONFIG_FILENAME,\n );\n let doesWorkspaceConfigExist = await fs.pathExists(workspaceConfigPath);\n let workspaceConfig: WorkspaceConfig | z.ZodError;\n\n if (doesWorkspaceConfigExist) {\n workspaceConfig = await readFile(workspaceConfigPath, workspaceConfigSchema, {\n parser: (rawString: string) => json5.parse<unknown>(rawString),\n });\n } else {\n workspaceConfig = {};\n }\n\n if (workspaceConfig instanceof z.ZodError) {\n let zodError = workspaceConfig;\n let workspaceError = new WorkspaceError('INVALID_WORKSPACE_CONFIG', {\n messageParameters: [workspaceConfigPath],\n data: {\n path: workspaceConfigPath,\n zodIssues: zodError.issues,\n },\n });\n\n errors.push(workspaceError);\n\n workspaceConfig = {};\n }\n\n if (this.isMultiProject) {\n // load root package.json\n let rootPackageJsonPath = path.join(this.path, 'package.json');\n let doesRootPackageJsonExist = await fs.pathExists(rootPackageJsonPath);\n let rootPackageJson: PackageJson | z.ZodError;\n\n if (doesRootPackageJsonExist) {\n rootPackageJson = await readFile(rootPackageJsonPath, packageJsonSchema, {\n parser: (rawString: string) => json5.parse<unknown>(rawString),\n });\n } else {\n rootPackageJson = {};\n }\n\n if (rootPackageJson instanceof z.ZodError) {\n let zodError = rootPackageJson;\n let workspaceError = new WorkspaceError('INVALID_PACKAGE_JSON', {\n messageParameters: [rootPackageJsonPath],\n data: {\n path: rootPackageJsonPath,\n zodIssues: zodError.issues,\n },\n });\n\n errors.push(workspaceError);\n\n rootPackageJson = {};\n }\n\n let projectGlobs = getPackageJsonWorkspaces(rootPackageJson);\n\n this.projectGlobs = (projectGlobs ?? []) as WorkspaceProjectGlobs<M>;\n this.packageJson = rootPackageJson as WorkspacePackageJson<M>;\n this.config = workspaceConfig;\n this.errors = errors;\n\n if (repositoryUrl) {\n this.repository = {\n url: repositoryUrl,\n branches: repositoryBranches ?? [],\n };\n }\n\n await this.readProjects();\n\n return this;\n }\n\n // we're dealing with single-project workspace\n this.config = workspaceConfig;\n this.errors = errors;\n\n if (repositoryUrl) {\n this.repository = {\n url: repositoryUrl,\n branches: repositoryBranches ?? [],\n };\n }\n\n await this.readProjects();\n\n return this;\n }\n\n async update({args}: WorkspaceUpdateOptions): Promise<this> {\n if (!this.config.template) {\n throw new Error('Templat ID is missing in the workspace config!');\n }\n\n let templateRenders = await renderTemplate({\n templateId: this.config.template,\n templateData: {\n workspace: this,\n args,\n },\n });\n\n await applyTemplateRenders({\n templateRenders,\n path: this.path,\n ignoreCreateStrategies: true,\n ignoreCheckStrategies: false,\n });\n\n await this.read();\n\n return this;\n }\n\n getProject(projectName: Project<M> | string): Project<M> | undefined {\n for (let project of this.projects) {\n if (project.name === projectName || project === projectName) {\n return project;\n }\n }\n\n return undefined;\n }\n\n async createProject({\n templateId,\n projectPath,\n projectName,\n args,\n }: WorkspaceCreateProjectOptions): Promise<Project<M>> {\n if (this.projects.some((project) => projectPath === project.path)) {\n throw new Error('Project with same path already exists!');\n }\n\n if (this.projects.some((project) => projectName === project.name)) {\n throw new Error('Project with same name already exists!');\n }\n\n if (!this.isMultiProject && this.projects.length >= 1) {\n throw new Error('Only multi-project Workspace can have more than 1 project!');\n }\n\n let newProject = await Project.create({\n templateId,\n projectPath,\n projectName,\n args,\n workspace: this,\n });\n\n this.addProject(newProject);\n\n return newProject;\n }\n\n addProject(newProject: Project<M>): Project<M> {\n if (this.projects.some((project) => newProject.path === project.path)) {\n throw new Error('Project with same path already exists!');\n }\n\n if (this.projects.some((project) => newProject.name === project.name)) {\n throw new Error('Project with same name already exists!');\n }\n\n if (!this.isMultiProject && this.projects.length >= 1) {\n throw new Error('Only multi-project Workspace can have more than 1 project!');\n }\n\n this.projects.push(newProject);\n this.sortProjects();\n this.updateDependencies();\n\n return newProject;\n }\n\n async readProjects(): Promise<Array<Project<M>>> {\n if (this.projectGlobs) {\n let projects: Array<Project<M>> = [];\n let packagePaths = await glob(this.projectGlobs, {\n cwd: this.path,\n onlyDirectories: true,\n });\n\n for (let packagePath of packagePaths) {\n let project = await Project.read(path.join(this.path, packagePath), this);\n\n projects.push(project);\n }\n\n this.projects = projects;\n } else {\n this.projects = [await Project.read(this.path, this)];\n }\n\n this.sortProjects();\n this.updateDependencies();\n\n return this.projects;\n }\n\n private sortProjects(): void {\n this.projects.sort((projectA, projectB) => {\n if (projectA.path < projectB.path) {\n return -1;\n } else if (projectA.path > projectB.path) {\n return 1;\n }\n\n return 0;\n });\n }\n\n private updateDependencies(): void {\n this.dependencies = WorkspaceDependencies.fromWorkspace(this);\n this.devDependencies = WorkspaceDependencies.fromWorkspace(this, {\n includeOnlyDevDependencies: true,\n });\n this.allDependencies = WorkspaceDependencies.fromWorkspace(this, {\n includeDevDependencies: true,\n includeWorkspaceDependencies: true,\n });\n this.dependencyVersions = this.allDependencies.getVersions({\n useExactVersions: true,\n });\n }\n}\n"],"names":["ensureEmptyDirectory","findExistingDirectory","isRootPath","readFile","packageJsonSchema","glob","fs","json5","path","z","getPackageJsonWorkspaces","getRepositoryBranches","getRepositoryUrl","Project","saveWorkspaceConfig","workspaceConfigSchema","WorkspaceDependencies","WorkspaceError","CARSON_CONFIG_DIRECTORY","WORKSPACE_CONFIG_FILENAME","applyTemplateRenders","renderTemplate","Workspace","isMultiProject","projectGlobs","projects","config","packageJson","repository","dependencies","devDependencies","allDependencies","dependencyVersions","errors","constructor","options","projectGlobOption","map","project","workspace","packageJsonOption","emptyPackageJson","configOption","emptyWorkspaceConfig","length","packageJsonWorkspaces","updateDependencies","create","args","workspacePath","templateId","template","workspaceConfig","templateRenders","templateData","ignoreCreateStrategies","ignoreCheckStrategies","read","resolvedWorkspacePath","resolve","pathExists","messageParameters","data","rootPackageJsonPath","join","doesRootPackageJsonExist","rootPackageJson","parser","rawString","parse","ZodError","readProjects","find","searchPath","startingPath","currentPath","singlePackageWorkspacePath","multiPackageWorkspacePath","packageJsonPath","doesPackageJsonExist","Error","dirname","undefined","findAndRead","repositoryUrl","repositoryBranches","workspaceConfigPath","doesWorkspaceConfigExist","zodError","workspaceError","zodIssues","issues","push","url","branches","update","getProject","projectName","name","createProject","projectPath","some","newProject","addProject","sortProjects","packagePaths","cwd","onlyDirectories","packagePath","sort","projectA","projectB","fromWorkspace","includeOnlyDevDependencies","includeDevDependencies","includeWorkspaceDependencies","getVersions","useExactVersions"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ export declare const workspaceConfigSchema: 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 WorkspaceConfig = z.infer<typeof workspaceConfigSchema>;
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ export const workspaceConfigSchema = z.object({
3
+ template: z.string().optional()
4
+ }).catchall(z.unknown());
5
+
6
+ //# sourceMappingURL=WorkspaceConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceConfig.ts"],"sourcesContent":["import {z} from 'zod';\n\nexport const workspaceConfigSchema = z\n .object({\n template: z.string().optional(),\n })\n .catchall(z.unknown());\n\nexport type WorkspaceConfig = z.infer<typeof workspaceConfigSchema>;\n"],"names":["z","workspaceConfigSchema","object","template","string","optional","catchall","unknown"],"mappings":"AAAA,SAAQA,CAAC,QAAO,MAAM;AAEtB,OAAO,MAAMC,wBAAwBD,EAClCE,OAAO;IACNC,UAAUH,EAAEI,SAASC;AACvB,GACCC,SAASN,EAAEO,WAAW"}
@@ -0,0 +1,5 @@
1
+ export type WorkspaceCreateOptions = {
2
+ path: string;
3
+ templateId: string;
4
+ args: Record<string, unknown>;
5
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspaceCreateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceCreateOptions.ts"],"sourcesContent":["export type WorkspaceCreateOptions = {\n path: string;\n templateId: string;\n args: Record<string, unknown>;\n};\n"],"names":[],"mappings":"AAAA,WAIE"}
@@ -0,0 +1,6 @@
1
+ export type WorkspaceCreateProjectOptions = {
2
+ templateId: string;
3
+ projectPath: string;
4
+ projectName: string;
5
+ args: Record<string, unknown>;
6
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspaceCreateProjectOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceCreateProjectOptions.ts"],"sourcesContent":["export type WorkspaceCreateProjectOptions = {\n templateId: string;\n projectPath: string;\n projectName: string;\n args: Record<string, unknown>;\n};\n"],"names":[],"mappings":"AAAA,WAKE"}
@@ -0,0 +1,30 @@
1
+ import { type Project } from './Project.js';
2
+ import { type Workspace } from './Workspace.js';
3
+ export interface WorkspaceDependencyProject {
4
+ name: string;
5
+ version: string;
6
+ exactVersion: string;
7
+ }
8
+ export interface WorkspaceDependency {
9
+ name: string;
10
+ versions: string[];
11
+ exactVersions: string[];
12
+ /** Associated project, if this dependency is actually a project in this workspace. */
13
+ project?: Project;
14
+ projects: WorkspaceDependencyProject[];
15
+ }
16
+ export interface WorkspaceDependenciesGetVersionsOptions {
17
+ useExactVersions?: boolean;
18
+ }
19
+ export interface WorkspaceDependenciesFromWorkspaceOptions {
20
+ includeDevDependencies?: boolean;
21
+ includeOnlyDevDependencies?: boolean;
22
+ includeWorkspaceDependencies?: boolean;
23
+ }
24
+ export declare class WorkspaceDependencies<M extends boolean = true> extends Array<WorkspaceDependency> {
25
+ workspace: Workspace<M>;
26
+ constructor(...args: [...WorkspaceDependency[], Workspace<M>]);
27
+ push(...newWorkspaceDependencies: WorkspaceDependency[]): number;
28
+ static fromWorkspace<M extends boolean = true>(workspace: Workspace<M>, options?: WorkspaceDependenciesFromWorkspaceOptions): WorkspaceDependencies<M>;
29
+ getVersions(options?: WorkspaceDependenciesGetVersionsOptions): Record<string, string[]>;
30
+ }
@@ -0,0 +1,126 @@
1
+ import _ from 'lodash';
2
+ import semver from 'semver';
3
+ import { compareSemver } from './internals.js';
4
+ export class WorkspaceDependencies extends Array {
5
+ workspace;
6
+ constructor(...args){
7
+ super();
8
+ if (args.length === 1) {
9
+ [this.workspace] = args;
10
+ } else {
11
+ let values = args.slice(0, -1);
12
+ let workspace = args.at(-1);
13
+ this.push(...values);
14
+ this.workspace = workspace;
15
+ }
16
+ }
17
+ push(...newWorkspaceDependencies) {
18
+ for (let newWorkspaceDependency of newWorkspaceDependencies){
19
+ let doesExist = false;
20
+ for (let workspaceDependency of this){
21
+ if (workspaceDependency.name === newWorkspaceDependency.name) {
22
+ doesExist = true;
23
+ workspaceDependency.versions = _.union(workspaceDependency.versions, newWorkspaceDependency.versions);
24
+ workspaceDependency.exactVersions = _.union(workspaceDependency.exactVersions, newWorkspaceDependency.exactVersions);
25
+ workspaceDependency.projects = _.unionWith(workspaceDependency.projects, newWorkspaceDependency.projects, (a, b)=>a.name === b.name);
26
+ workspaceDependency.versions.sort(compareSemver);
27
+ workspaceDependency.exactVersions.sort(compareSemver);
28
+ }
29
+ }
30
+ if (!doesExist) {
31
+ super.push(newWorkspaceDependency);
32
+ }
33
+ }
34
+ return this.length;
35
+ }
36
+ // TODO: fix
37
+ // eslint-disable-next-line complexity -- TODO
38
+ static fromWorkspace(workspace, options) {
39
+ let workspaceDependencies = [];
40
+ if (options === null || options === void 0 ? void 0 : options.includeWorkspaceDependencies) {
41
+ var _workspace_packageJson, _workspace_packageJson1;
42
+ for (let [dependencyName, dependencyVersion] of Object.entries({
43
+ ...(_workspace_packageJson = workspace.packageJson) === null || _workspace_packageJson === void 0 ? void 0 : _workspace_packageJson.dependencies,
44
+ ...(_workspace_packageJson1 = workspace.packageJson) === null || _workspace_packageJson1 === void 0 ? void 0 : _workspace_packageJson1.devDependencies
45
+ })){
46
+ var _semver_minVersion, _semver_coerce;
47
+ let exactDependencyVersion = semver.validRange(dependencyVersion) ? ((_semver_minVersion = semver.minVersion(dependencyVersion)) === null || _semver_minVersion === void 0 ? void 0 : _semver_minVersion.format()) ?? ((_semver_coerce = semver.coerce(dependencyVersion)) === null || _semver_coerce === void 0 ? void 0 : _semver_coerce.format()) ?? dependencyVersion.trim() : dependencyVersion.trim();
48
+ let workspaceDependency = {
49
+ name: dependencyName,
50
+ versions: [
51
+ dependencyVersion
52
+ ],
53
+ exactVersions: [
54
+ exactDependencyVersion
55
+ ],
56
+ projects: []
57
+ };
58
+ workspaceDependencies.push(workspaceDependency);
59
+ }
60
+ }
61
+ for (let project of workspace.projects){
62
+ if (!(options === null || options === void 0 ? void 0 : options.includeOnlyDevDependencies)) {
63
+ for (let [dependencyName, dependencyVersion] of Object.entries(project.packageJson.dependencies ?? {})){
64
+ var _semver_minVersion1, _semver_coerce1;
65
+ let exactDependencyVersion = semver.validRange(dependencyVersion) ? ((_semver_minVersion1 = semver.minVersion(dependencyVersion)) === null || _semver_minVersion1 === void 0 ? void 0 : _semver_minVersion1.format()) ?? ((_semver_coerce1 = semver.coerce(dependencyVersion)) === null || _semver_coerce1 === void 0 ? void 0 : _semver_coerce1.format()) ?? dependencyVersion.trim() : dependencyVersion.trim();
66
+ let workspaceDependency = {
67
+ name: dependencyName,
68
+ versions: [
69
+ dependencyVersion
70
+ ],
71
+ exactVersions: [
72
+ exactDependencyVersion
73
+ ],
74
+ projects: []
75
+ };
76
+ if (project.name) {
77
+ workspaceDependency.projects = [
78
+ {
79
+ name: project.name,
80
+ version: dependencyVersion,
81
+ exactVersion: exactDependencyVersion
82
+ }
83
+ ];
84
+ }
85
+ workspaceDependencies.push(workspaceDependency);
86
+ }
87
+ }
88
+ if ((options === null || options === void 0 ? void 0 : options.includeDevDependencies) || (options === null || options === void 0 ? void 0 : options.includeOnlyDevDependencies)) {
89
+ for (let [dependencyName, dependencyVersion] of Object.entries(project.packageJson.devDependencies ?? {})){
90
+ var _semver_minVersion2, _semver_coerce2;
91
+ let exactDependencyVersion = semver.validRange(dependencyVersion) ? ((_semver_minVersion2 = semver.minVersion(dependencyVersion)) === null || _semver_minVersion2 === void 0 ? void 0 : _semver_minVersion2.format()) ?? ((_semver_coerce2 = semver.coerce(dependencyVersion)) === null || _semver_coerce2 === void 0 ? void 0 : _semver_coerce2.format()) ?? dependencyVersion.trim() : dependencyVersion.trim();
92
+ let workspaceDependency = {
93
+ name: dependencyName,
94
+ versions: [
95
+ dependencyVersion
96
+ ],
97
+ exactVersions: [
98
+ exactDependencyVersion
99
+ ],
100
+ projects: []
101
+ };
102
+ if (project.name) {
103
+ workspaceDependency.projects = [
104
+ {
105
+ name: project.name,
106
+ version: dependencyVersion,
107
+ exactVersion: exactDependencyVersion
108
+ }
109
+ ];
110
+ }
111
+ workspaceDependencies.push(workspaceDependency);
112
+ }
113
+ }
114
+ }
115
+ return new this(...workspaceDependencies, workspace);
116
+ }
117
+ getVersions(options) {
118
+ let versions = {};
119
+ for (let dependency of this){
120
+ versions[dependency.name] = (options === null || options === void 0 ? void 0 : options.useExactVersions) ? dependency.exactVersions : dependency.versions;
121
+ }
122
+ return versions;
123
+ }
124
+ }
125
+
126
+ //# sourceMappingURL=WorkspaceDependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceDependencies.ts"],"sourcesContent":["import _ from 'lodash';\nimport semver from 'semver';\n\nimport {compareSemver} from './internals.js';\nimport {type Project} from './Project.js';\nimport {type Workspace} from './Workspace.js';\n\nexport interface WorkspaceDependencyProject {\n name: string;\n version: string;\n exactVersion: string;\n}\n\nexport interface WorkspaceDependency {\n name: string;\n versions: string[];\n exactVersions: string[];\n\n /** Associated project, if this dependency is actually a project in this workspace. */\n project?: Project; // TODO: implement this\n\n projects: WorkspaceDependencyProject[];\n}\n\nexport interface WorkspaceDependenciesGetVersionsOptions {\n useExactVersions?: boolean;\n}\n\nexport interface WorkspaceDependenciesFromWorkspaceOptions {\n includeDevDependencies?: boolean;\n includeOnlyDevDependencies?: boolean;\n includeWorkspaceDependencies?: boolean;\n}\n\nexport class WorkspaceDependencies<M extends boolean = true> extends Array<WorkspaceDependency> {\n workspace: Workspace<M>;\n\n constructor(...args: [...WorkspaceDependency[], Workspace<M>]) {\n super();\n\n if (args.length === 1) {\n [this.workspace] = args as [Workspace<M>];\n } else {\n let values = args.slice(0, -1) as WorkspaceDependency[];\n let workspace = args.at(-1) as Workspace<M>;\n\n this.push(...values);\n\n this.workspace = workspace;\n }\n }\n\n override push(...newWorkspaceDependencies: WorkspaceDependency[]): number {\n for (let newWorkspaceDependency of newWorkspaceDependencies) {\n let doesExist = false;\n\n for (let workspaceDependency of this) {\n if (workspaceDependency.name === newWorkspaceDependency.name) {\n doesExist = true;\n\n workspaceDependency.versions = _.union(\n workspaceDependency.versions,\n newWorkspaceDependency.versions,\n );\n workspaceDependency.exactVersions = _.union(\n workspaceDependency.exactVersions,\n newWorkspaceDependency.exactVersions,\n );\n workspaceDependency.projects = _.unionWith(\n workspaceDependency.projects,\n newWorkspaceDependency.projects,\n (a, b) => a.name === b.name,\n );\n\n workspaceDependency.versions.sort(compareSemver);\n workspaceDependency.exactVersions.sort(compareSemver);\n }\n }\n\n if (!doesExist) {\n super.push(newWorkspaceDependency);\n }\n }\n\n return this.length;\n }\n\n // TODO: fix\n // eslint-disable-next-line complexity -- TODO\n static fromWorkspace<M extends boolean = true>(\n workspace: Workspace<M>,\n options?: WorkspaceDependenciesFromWorkspaceOptions,\n ) {\n let workspaceDependencies: WorkspaceDependency[] = [];\n\n if (options?.includeWorkspaceDependencies) {\n for (let [dependencyName, dependencyVersion] of Object.entries({\n ...workspace.packageJson?.dependencies,\n ...workspace.packageJson?.devDependencies,\n })) {\n let exactDependencyVersion = semver.validRange(dependencyVersion)\n ? semver.minVersion(dependencyVersion)?.format() ??\n semver.coerce(dependencyVersion)?.format() ??\n dependencyVersion.trim()\n : dependencyVersion.trim();\n\n let workspaceDependency: WorkspaceDependency = {\n name: dependencyName,\n versions: [dependencyVersion],\n exactVersions: [exactDependencyVersion],\n projects: [],\n };\n\n workspaceDependencies.push(workspaceDependency);\n }\n }\n\n for (let project of workspace.projects) {\n if (!options?.includeOnlyDevDependencies) {\n for (let [dependencyName, dependencyVersion] of Object.entries(\n project.packageJson.dependencies ?? {},\n )) {\n let exactDependencyVersion = semver.validRange(dependencyVersion)\n ? semver.minVersion(dependencyVersion)?.format() ??\n semver.coerce(dependencyVersion)?.format() ??\n dependencyVersion.trim()\n : dependencyVersion.trim();\n\n let workspaceDependency: WorkspaceDependency = {\n name: dependencyName,\n versions: [dependencyVersion],\n exactVersions: [exactDependencyVersion],\n projects: [],\n };\n\n if (project.name) {\n workspaceDependency.projects = [\n {\n name: project.name,\n version: dependencyVersion,\n exactVersion: exactDependencyVersion,\n },\n ];\n }\n\n workspaceDependencies.push(workspaceDependency);\n }\n }\n\n if (options?.includeDevDependencies || options?.includeOnlyDevDependencies) {\n for (let [dependencyName, dependencyVersion] of Object.entries(\n project.packageJson.devDependencies ?? {},\n )) {\n let exactDependencyVersion = semver.validRange(dependencyVersion)\n ? semver.minVersion(dependencyVersion)?.format() ??\n semver.coerce(dependencyVersion)?.format() ??\n dependencyVersion.trim()\n : dependencyVersion.trim();\n\n let workspaceDependency: WorkspaceDependency = {\n name: dependencyName,\n versions: [dependencyVersion],\n exactVersions: [exactDependencyVersion],\n projects: [],\n };\n\n if (project.name) {\n workspaceDependency.projects = [\n {\n name: project.name,\n version: dependencyVersion,\n exactVersion: exactDependencyVersion,\n },\n ];\n }\n\n workspaceDependencies.push(workspaceDependency);\n }\n }\n }\n\n return new this(...workspaceDependencies, workspace);\n }\n\n getVersions(options?: WorkspaceDependenciesGetVersionsOptions) {\n let versions: Record<string, string[]> = {};\n\n for (let dependency of this) {\n versions[dependency.name] = options?.useExactVersions\n ? dependency.exactVersions\n : dependency.versions;\n }\n\n return versions;\n }\n}\n"],"names":["_","semver","compareSemver","WorkspaceDependencies","Array","workspace","constructor","args","length","values","slice","at","push","newWorkspaceDependencies","newWorkspaceDependency","doesExist","workspaceDependency","name","versions","union","exactVersions","projects","unionWith","a","b","sort","fromWorkspace","options","workspaceDependencies","includeWorkspaceDependencies","dependencyName","dependencyVersion","Object","entries","packageJson","dependencies","devDependencies","exactDependencyVersion","validRange","minVersion","format","coerce","trim","project","includeOnlyDevDependencies","version","exactVersion","includeDevDependencies","getVersions","dependency","useExactVersions"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type ZodIssue } from 'zod';
2
+ export declare const WorkspaceError: new (code: "INVALID_PACKAGE_JSON" | "INVALID_WORKSPACE_CONFIG" | "NO_SUCH_WORKSPACE_PATH" | "PATH_MISMATCH", options?: import("@jakubmazanec/error").CustomErrorWithDataOptions<{
3
+ path?: string;
4
+ zodIssues?: ZodIssue[];
5
+ }> | undefined) => import("@jakubmazanec/error").CustomErrorWithData<"INVALID_PACKAGE_JSON" | "UNKNOWN_ERROR" | "INVALID_WORKSPACE_CONFIG" | "NO_SUCH_WORKSPACE_PATH" | "PATH_MISMATCH", {
6
+ path?: string;
7
+ zodIssues?: ZodIssue[];
8
+ }>;
@@ -0,0 +1,13 @@
1
+ import { createCustomErrorWithData } from '@jakubmazanec/error';
2
+ export const WorkspaceError = createCustomErrorWithData('WorkspaceError', {
3
+ // MISSING_NAME_FIELD: 'No "name" field in file "{0}".',
4
+ INVALID_PACKAGE_JSON: 'Invalid package.json file "{0}".',
5
+ INVALID_WORKSPACE_CONFIG: 'Invalid workspace config file "{0}".',
6
+ NO_SUCH_WORKSPACE_PATH: 'Workspace path "{0}" doesn\'t exist.',
7
+ PATH_MISMATCH: 'In a single-project workspace, the workspace path must be the same as the project path.'
8
+ }, class WorkspaceErrorData {
9
+ path;
10
+ zodIssues;
11
+ });
12
+
13
+ //# sourceMappingURL=WorkspaceError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceError.ts"],"sourcesContent":["import {createCustomErrorWithData} from '@jakubmazanec/error';\nimport {type ZodIssue} from 'zod';\n\nexport const WorkspaceError = createCustomErrorWithData(\n 'WorkspaceError',\n {\n // MISSING_NAME_FIELD: 'No \"name\" field in file \"{0}\".',\n INVALID_PACKAGE_JSON: 'Invalid package.json file \"{0}\".',\n INVALID_WORKSPACE_CONFIG: 'Invalid workspace config file \"{0}\".',\n NO_SUCH_WORKSPACE_PATH: 'Workspace path \"{0}\" doesn\\'t exist.',\n PATH_MISMATCH:\n 'In a single-project workspace, the workspace path must be the same as the project path.',\n },\n class WorkspaceErrorData {\n path?: string;\n zodIssues?: ZodIssue[];\n },\n);\n"],"names":["createCustomErrorWithData","WorkspaceError","INVALID_PACKAGE_JSON","INVALID_WORKSPACE_CONFIG","NO_SUCH_WORKSPACE_PATH","PATH_MISMATCH","WorkspaceErrorData","path","zodIssues"],"mappings":"AAAA,SAAQA,yBAAyB,QAAO,sBAAsB;AAG9D,OAAO,MAAMC,iBAAiBD,0BAC5B,kBACA;IACE,wDAAwD;IACxDE,sBAAsB;IACtBC,0BAA0B;IAC1BC,wBAAwB;IACxBC,eACE;AACJ,GACA,MAAMC;IACJC,KAAc;IACdC,UAAuB;AACzB,GACA"}
@@ -0,0 +1,25 @@
1
+ import { type PackageJson } from '@jakubmazanec/zod-utils';
2
+ import { type WorkspaceConfig } from './WorkspaceConfig.js';
3
+ import { type WorkspaceError } from './WorkspaceError.js';
4
+ import { type WorkspaceOptionsProjectOptions } from './WorkspaceOptionsProjectOptions.js';
5
+ import { type WorkspaceRepository } from './WorkspaceRepository.js';
6
+ /**
7
+ * New workspace options.
8
+ */
9
+ export type WorkspaceOptions<M extends boolean> = M extends true ? {
10
+ path: string;
11
+ isMultiProject?: M;
12
+ projectGlobs?: string[];
13
+ projects?: WorkspaceOptionsProjectOptions[];
14
+ config?: WorkspaceConfig;
15
+ packageJson?: PackageJson;
16
+ repository?: WorkspaceRepository;
17
+ errors?: Array<InstanceType<typeof WorkspaceError>>;
18
+ } : {
19
+ path: string;
20
+ isMultiProject?: M;
21
+ projects?: [WorkspaceOptionsProjectOptions];
22
+ config?: WorkspaceConfig;
23
+ repository?: WorkspaceRepository;
24
+ errors?: Array<InstanceType<typeof WorkspaceError>>;
25
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspaceOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceOptions.ts"],"sourcesContent":["import {type PackageJson} from '@jakubmazanec/zod-utils';\n\nimport {type WorkspaceConfig} from './WorkspaceConfig.js';\nimport {type WorkspaceError} from './WorkspaceError.js';\nimport {type WorkspaceOptionsProjectOptions} from './WorkspaceOptionsProjectOptions.js';\nimport {type WorkspaceRepository} from './WorkspaceRepository.js';\n\n/**\n * New workspace options.\n */\nexport type WorkspaceOptions<M extends boolean> = M extends true\n ? {\n path: string;\n isMultiProject?: M;\n projectGlobs?: string[];\n projects?: WorkspaceOptionsProjectOptions[];\n config?: WorkspaceConfig;\n packageJson?: PackageJson;\n repository?: WorkspaceRepository;\n errors?: Array<InstanceType<typeof WorkspaceError>>;\n }\n : {\n path: string;\n isMultiProject?: M;\n projects?: [WorkspaceOptionsProjectOptions];\n config?: WorkspaceConfig;\n repository?: WorkspaceRepository;\n errors?: Array<InstanceType<typeof WorkspaceError>>;\n };\n"],"names":[],"mappings":"AAAA,WA4BM"}
@@ -0,0 +1,7 @@
1
+ import { type PackageJson } from '@jakubmazanec/zod-utils';
2
+ import { type ProjectConfig } from './ProjectConfig.js';
3
+ export type WorkspaceOptionsProjectOptions = {
4
+ path: string;
5
+ config?: ProjectConfig;
6
+ packageJson?: PackageJson;
7
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspaceOptionsProjectOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceOptionsProjectOptions.ts"],"sourcesContent":["import {type PackageJson} from '@jakubmazanec/zod-utils';\n\nimport {type ProjectConfig} from './ProjectConfig.js';\n\nexport type WorkspaceOptionsProjectOptions = {\n path: string;\n config?: ProjectConfig;\n packageJson?: PackageJson;\n};\n"],"names":[],"mappings":"AAAA,WAQE"}
@@ -0,0 +1,2 @@
1
+ import { type PackageJson } from '@jakubmazanec/zod-utils';
2
+ export type WorkspacePackageJson<M extends boolean> = M extends true ? PackageJson : null;
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspacePackageJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspacePackageJson.ts"],"sourcesContent":["import {type PackageJson} from '@jakubmazanec/zod-utils';\n\nexport type WorkspacePackageJson<M extends boolean> = M extends true ? PackageJson : null;\n"],"names":[],"mappings":"AAAA,WAE0F"}
@@ -0,0 +1 @@
1
+ export type WorkspaceProjectGlobs<M extends boolean> = M extends true ? string[] : null;
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspaceProjectGlobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceProjectGlobs.ts"],"sourcesContent":["export type WorkspaceProjectGlobs<M extends boolean> = M extends true ? string[] : null;\n"],"names":[],"mappings":"AAAA,WAAwF"}
@@ -0,0 +1,2 @@
1
+ import { type Project } from './Project.js';
2
+ export type WorkspaceProjects<M extends boolean> = Array<Project<M>>;
@@ -0,0 +1,3 @@
1
+ export { }; // TODO: should be `M extends true ? Array<Project<M>> : [Project<M>?]`; change when this is fixed: https://github.com/microsoft/TypeScript/issues/54302
2
+
3
+ //# sourceMappingURL=WorkspaceProjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceProjects.ts"],"sourcesContent":["import {type Project} from './Project.js';\n\nexport type WorkspaceProjects<M extends boolean> = Array<Project<M>>; // TODO: should be `M extends true ? Array<Project<M>> : [Project<M>?]`; change when this is fixed: https://github.com/microsoft/TypeScript/issues/54302\n"],"names":[],"mappings":"AAAA,WAEqE,CAAC,wJAAwJ"}
@@ -0,0 +1,4 @@
1
+ export type WorkspaceRepository = {
2
+ branches: string[];
3
+ url: string;
4
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspaceRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceRepository.ts"],"sourcesContent":["export type WorkspaceRepository = {\n branches: string[];\n url: string;\n};\n"],"names":[],"mappings":"AAAA,WAGE"}
@@ -0,0 +1,3 @@
1
+ export type WorkspaceUpdateOptions = {
2
+ args: Record<string, unknown>;
3
+ };
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=WorkspaceUpdateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workspace/WorkspaceUpdateOptions.ts"],"sourcesContent":["export type WorkspaceUpdateOptions = {\n args: Record<string, unknown>;\n};\n"],"names":[],"mappings":"AAAA,WAEE"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Defines sort order between two SemVer strings.
3
+ *
4
+ * @param a The first SemVer string.
5
+ * @param b The second SemvEr string.
6
+ * @returns Number whose positivity indicates the relative order of the two elements.
7
+ */
8
+ export declare function compareSemver(a: string, b: string): number;
@@ -0,0 +1,27 @@
1
+ import semver from 'semver';
2
+ /**
3
+ * Defines sort order between two SemVer strings.
4
+ *
5
+ * @param a The first SemVer string.
6
+ * @param b The second SemvEr string.
7
+ * @returns Number whose positivity indicates the relative order of the two elements.
8
+ */ export function compareSemver(a, b) {
9
+ var _semver_minVersion, _semver_coerce, _semver_minVersion1, _semver_coerce1;
10
+ let firstSemver = semver.validRange(a) ? ((_semver_minVersion = semver.minVersion(a)) === null || _semver_minVersion === void 0 ? void 0 : _semver_minVersion.format()) ?? ((_semver_coerce = semver.coerce(a)) === null || _semver_coerce === void 0 ? void 0 : _semver_coerce.format()) ?? '0.0.0' : '0.0.0';
11
+ let secondSemver = semver.validRange(b) ? ((_semver_minVersion1 = semver.minVersion(b)) === null || _semver_minVersion1 === void 0 ? void 0 : _semver_minVersion1.format()) ?? ((_semver_coerce1 = semver.coerce(b)) === null || _semver_coerce1 === void 0 ? void 0 : _semver_coerce1.format()) ?? '0.0.0' : '0.0.0';
12
+ let comparison = semver.compare(firstSemver, secondSemver);
13
+ if (comparison === 0 && (a !== firstSemver || b !== secondSemver)) {
14
+ if (a !== firstSemver && b !== secondSemver) {
15
+ return b.localeCompare(a);
16
+ }
17
+ if (a !== firstSemver) {
18
+ return 1;
19
+ }
20
+ if (b !== secondSemver) {
21
+ return -1;
22
+ }
23
+ }
24
+ return comparison;
25
+ }
26
+
27
+ //# sourceMappingURL=compareSemver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/workspace/internals/compareSemver.ts"],"sourcesContent":["import semver from 'semver';\n\n/**\n * Defines sort order between two SemVer strings.\n *\n * @param a The first SemVer string.\n * @param b The second SemvEr string.\n * @returns Number whose positivity indicates the relative order of the two elements.\n */\nexport function compareSemver(a: string, b: string) {\n let firstSemver = semver.validRange(a)\n ? semver.minVersion(a)?.format() ?? semver.coerce(a)?.format() ?? '0.0.0'\n : '0.0.0';\n let secondSemver = semver.validRange(b)\n ? semver.minVersion(b)?.format() ?? semver.coerce(b)?.format() ?? '0.0.0'\n : '0.0.0';\n\n let comparison = semver.compare(firstSemver, secondSemver);\n\n if (comparison === 0 && (a !== firstSemver || b !== secondSemver)) {\n if (a !== firstSemver && b !== secondSemver) {\n return b.localeCompare(a);\n }\n\n if (a !== firstSemver) {\n return 1;\n }\n\n if (b !== secondSemver) {\n return -1;\n }\n }\n\n return comparison;\n}\n"],"names":["semver","compareSemver","a","b","firstSemver","validRange","minVersion","format","coerce","secondSemver","comparison","compare","localeCompare"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAE5B;;;;;;CAMC,GACD,OAAO,SAASC,cAAcC,CAAS,EAAEC,CAAS;QAE5CH,oBAAkCA,gBAGlCA,qBAAkCA;IAJtC,IAAII,cAAcJ,OAAOK,WAAWH,KAChCF,CAAAA,CAAAA,qBAAAA,OAAOM,WAAWJ,gBAAlBF,gCAAAA,KAAAA,IAAAA,mBAAsBO,cAAYP,CAAAA,iBAAAA,OAAOQ,OAAON,gBAAdF,4BAAAA,KAAAA,IAAAA,eAAkBO,aAAY,UAChE;IACJ,IAAIE,eAAeT,OAAOK,WAAWF,KACjCH,CAAAA,CAAAA,sBAAAA,OAAOM,WAAWH,gBAAlBH,iCAAAA,KAAAA,IAAAA,oBAAsBO,cAAYP,CAAAA,kBAAAA,OAAOQ,OAAOL,gBAAdH,6BAAAA,KAAAA,IAAAA,gBAAkBO,aAAY,UAChE;IAEJ,IAAIG,aAAaV,OAAOW,QAAQP,aAAaK;IAE7C,IAAIC,eAAe,KAAMR,CAAAA,MAAME,eAAeD,MAAMM,YAAW,GAAI;QACjE,IAAIP,MAAME,eAAeD,MAAMM,cAAc;YAC3C,OAAON,EAAES,cAAcV;QACzB;QAEA,IAAIA,MAAME,aAAa;YACrB,OAAO;QACT;QAEA,IAAID,MAAMM,cAAc;YACtB,OAAO,CAAC;QACV;IACF;IAEA,OAAOC;AACT"}
@@ -0,0 +1,2 @@
1
+ import type { PackageJson } from '@jakubmazanec/zod-utils';
2
+ export declare function getPackageJsonWorkspaces(packageJson: PackageJson): string[] | undefined;
@@ -0,0 +1,11 @@
1
+ export function getPackageJsonWorkspaces(packageJson) {
2
+ var _packageJson_workspaces;
3
+ if (Array.isArray(packageJson.workspaces)) {
4
+ return packageJson.workspaces;
5
+ } else if ((_packageJson_workspaces = packageJson.workspaces) === null || _packageJson_workspaces === void 0 ? void 0 : _packageJson_workspaces.packages) {
6
+ return packageJson.workspaces.packages;
7
+ }
8
+ return undefined;
9
+ }
10
+
11
+ //# sourceMappingURL=getPackageJsonWorkspaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/workspace/internals/getPackageJsonWorkspaces.ts"],"sourcesContent":["import type {PackageJson} from '@jakubmazanec/zod-utils';\n\nexport function getPackageJsonWorkspaces(packageJson: PackageJson) {\n if (Array.isArray(packageJson.workspaces)) {\n return packageJson.workspaces;\n } else if (packageJson.workspaces?.packages) {\n return packageJson.workspaces.packages;\n }\n\n return undefined;\n}\n"],"names":["getPackageJsonWorkspaces","packageJson","Array","isArray","workspaces","packages","undefined"],"mappings":"AAEA,OAAO,SAASA,yBAAyBC,WAAwB;QAGpDA;IAFX,IAAIC,MAAMC,QAAQF,YAAYG,aAAa;QACzC,OAAOH,YAAYG;IACrB,OAAO,IAAIH,CAAAA,0BAAAA,YAAYG,wBAAZH,qCAAAA,KAAAA,IAAAA,wBAAwBI,UAAU;QAC3C,OAAOJ,YAAYG,WAAWC;IAChC;IAEA,OAAOC;AACT"}
@@ -0,0 +1 @@
1
+ export declare function getRepositoryBranches(repositoryPath: string): Promise<string[] | undefined>;
@@ -0,0 +1,21 @@
1
+ import { simpleGit } from 'simple-git';
2
+ const REMOTE_NAME_PREFIX_REGEXP = /^[^/]*\//iu;
3
+ export async function getRepositoryBranches(repositoryPath) {
4
+ let repositoryBranches;
5
+ try {
6
+ let git = simpleGit({
7
+ baseDir: repositoryPath,
8
+ binary: 'git',
9
+ maxConcurrentProcesses: 1
10
+ });
11
+ let branchSummary = await git.branch([
12
+ '-r'
13
+ ]);
14
+ repositoryBranches = branchSummary.all.map((branch)=>branch.replace(REMOTE_NAME_PREFIX_REGEXP, ''));
15
+ } catch (error) {
16
+ // no-op
17
+ }
18
+ return repositoryBranches;
19
+ }
20
+
21
+ //# sourceMappingURL=getRepositoryBranches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/workspace/internals/getRepositoryBranches.ts"],"sourcesContent":["import {simpleGit} from 'simple-git';\n\nconst REMOTE_NAME_PREFIX_REGEXP = /^[^/]*\\//iu;\n\nexport async function getRepositoryBranches(repositoryPath: string): Promise<string[] | undefined> {\n let repositoryBranches: string[] | undefined;\n\n try {\n let git = simpleGit({\n baseDir: repositoryPath,\n binary: 'git',\n maxConcurrentProcesses: 1,\n });\n\n let branchSummary = await git.branch(['-r']);\n\n repositoryBranches = branchSummary.all.map((branch) =>\n branch.replace(REMOTE_NAME_PREFIX_REGEXP, ''),\n );\n } catch (error) {\n // no-op\n }\n\n return repositoryBranches;\n}\n"],"names":["simpleGit","REMOTE_NAME_PREFIX_REGEXP","getRepositoryBranches","repositoryPath","repositoryBranches","git","baseDir","binary","maxConcurrentProcesses","branchSummary","branch","all","map","replace","error"],"mappings":"AAAA,SAAQA,SAAS,QAAO,aAAa;AAErC,MAAMC,4BAA4B;AAElC,OAAO,eAAeC,sBAAsBC,cAAsB;IAChE,IAAIC;IAEJ,IAAI;QACF,IAAIC,MAAML,UAAU;YAClBM,SAASH;YACTI,QAAQ;YACRC,wBAAwB;QAC1B;QAEA,IAAIC,gBAAgB,MAAMJ,IAAIK,OAAO;YAAC;SAAK;QAE3CN,qBAAqBK,cAAcE,IAAIC,IAAI,CAACF,SAC1CA,OAAOG,QAAQZ,2BAA2B;IAE9C,EAAE,OAAOa,OAAO;IACd,QAAQ;IACV;IAEA,OAAOV;AACT"}
@@ -0,0 +1 @@
1
+ export declare function getRepositoryUrl(repositoryPath: string): Promise<string | undefined>;
@@ -0,0 +1,21 @@
1
+ import { simpleGit } from 'simple-git';
2
+ export async function getRepositoryUrl(repositoryPath) {
3
+ let repositoryUrl;
4
+ try {
5
+ // load git repo
6
+ let git = simpleGit({
7
+ baseDir: repositoryPath,
8
+ binary: 'git',
9
+ maxConcurrentProcesses: 1
10
+ });
11
+ let { value } = await git.getConfig('remote.origin.url');
12
+ if (value) {
13
+ repositoryUrl = value;
14
+ }
15
+ } catch {
16
+ // no-op
17
+ }
18
+ return repositoryUrl;
19
+ }
20
+
21
+ //# sourceMappingURL=getRepositoryUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/workspace/internals/getRepositoryUrl.ts"],"sourcesContent":["import {simpleGit} from 'simple-git';\n\nexport async function getRepositoryUrl(repositoryPath: string): Promise<string | undefined> {\n let repositoryUrl: string | undefined;\n\n try {\n // load git repo\n let git = simpleGit({\n baseDir: repositoryPath,\n binary: 'git',\n maxConcurrentProcesses: 1,\n });\n let {value} = await git.getConfig('remote.origin.url');\n\n if (value) {\n repositoryUrl = value;\n }\n } catch {\n // no-op\n }\n\n return repositoryUrl;\n}\n"],"names":["simpleGit","getRepositoryUrl","repositoryPath","repositoryUrl","git","baseDir","binary","maxConcurrentProcesses","value","getConfig"],"mappings":"AAAA,SAAQA,SAAS,QAAO,aAAa;AAErC,OAAO,eAAeC,iBAAiBC,cAAsB;IAC3D,IAAIC;IAEJ,IAAI;QACF,gBAAgB;QAChB,IAAIC,MAAMJ,UAAU;YAClBK,SAASH;YACTI,QAAQ;YACRC,wBAAwB;QAC1B;QACA,IAAI,EAACC,MAAK,EAAC,GAAG,MAAMJ,IAAIK,UAAU;QAElC,IAAID,OAAO;YACTL,gBAAgBK;QAClB;IACF,EAAE,OAAM;IACN,QAAQ;IACV;IAEA,OAAOL;AACT"}
@@ -0,0 +1,4 @@
1
+ export * from './internals/compareSemver.js';
2
+ export * from './internals/getPackageJsonWorkspaces.js';
3
+ export * from './internals/getRepositoryBranches.js';
4
+ export * from './internals/getRepositoryUrl.js';
@@ -0,0 +1,6 @@
1
+ export * from './internals/compareSemver.js';
2
+ export * from './internals/getPackageJsonWorkspaces.js';
3
+ export * from './internals/getRepositoryBranches.js';
4
+ export * from './internals/getRepositoryUrl.js';
5
+
6
+ //# sourceMappingURL=internals.js.map