@jakubmazanec/carson 3.0.6-next.fa06a28e → 3.0.6-unstable.0b259717

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 (157) hide show
  1. package/README.md +2 -2
  2. package/build/commands/create-project/CreateProject.js +0 -1
  3. package/build/commands/create-project/CreateProject.js.map +1 -1
  4. package/build/commands/create-project/CreateProjectInput.js +0 -1
  5. package/build/commands/create-project/CreateProjectInput.js.map +1 -1
  6. package/build/commands/create-project/createProjectCommand.js +0 -1
  7. package/build/commands/create-project/createProjectCommand.js.map +1 -1
  8. package/build/commands/create-project/runCreateProject.js +0 -1
  9. package/build/commands/create-project/runCreateProject.js.map +1 -1
  10. package/build/commands/create-project.js +0 -1
  11. package/build/commands/create-project.js.map +1 -1
  12. package/build/commands/create-workspace/CreateWorkspace.js +0 -1
  13. package/build/commands/create-workspace/CreateWorkspace.js.map +1 -1
  14. package/build/commands/create-workspace/CreateWorkspaceInput.js +0 -1
  15. package/build/commands/create-workspace/CreateWorkspaceInput.js.map +1 -1
  16. package/build/commands/create-workspace/createWorkspaceCommand.js +0 -1
  17. package/build/commands/create-workspace/createWorkspaceCommand.js.map +1 -1
  18. package/build/commands/create-workspace/runCreateWorkspace.js +0 -1
  19. package/build/commands/create-workspace/runCreateWorkspace.js.map +1 -1
  20. package/build/commands/create-workspace.js +0 -1
  21. package/build/commands/create-workspace.js.map +1 -1
  22. package/build/commands/internals/CommandStatus.js +0 -1
  23. package/build/commands/internals/packageNameToDirectory.js +0 -1
  24. package/build/commands/internals/packageNameToDirectory.js.map +1 -1
  25. package/build/commands/internals.js +0 -1
  26. package/build/commands/internals.js.map +1 -1
  27. package/build/commands/update-workspace/UpdateWorkspace.js +0 -1
  28. package/build/commands/update-workspace/UpdateWorkspace.js.map +1 -1
  29. package/build/commands/update-workspace/runUpdateWorkspace.js +0 -1
  30. package/build/commands/update-workspace/runUpdateWorkspace.js.map +1 -1
  31. package/build/commands/update-workspace/updateWorkspaceCommand.js +0 -1
  32. package/build/commands/update-workspace/updateWorkspaceCommand.js.map +1 -1
  33. package/build/commands/update-workspace.js +0 -1
  34. package/build/commands/update-workspace.js.map +1 -1
  35. package/build/commands.js +0 -1
  36. package/build/commands.js.map +1 -1
  37. package/build/constants.js +0 -1
  38. package/build/constants.js.map +1 -1
  39. package/build/main.js +0 -1
  40. package/build/main.js.map +1 -1
  41. package/build/modules.d.js +0 -1
  42. package/build/run.js +0 -1
  43. package/build/run.js.map +1 -1
  44. package/build/template/CarsonTemplate.js +0 -1
  45. package/build/template/CarsonTemplateConfig.js +0 -1
  46. package/build/template/CarsonTemplateConfig.js.map +1 -1
  47. package/build/template/CarsonTemplateError.js +0 -1
  48. package/build/template/CarsonTemplateError.js.map +1 -1
  49. package/build/template/TemplateAttributes.js +0 -1
  50. package/build/template/TemplateAttributes.js.map +1 -1
  51. package/build/template/TemplateData.js +0 -1
  52. package/build/template/TemplateData.js.map +1 -1
  53. package/build/template/TemplateRender.js +0 -1
  54. package/build/template/TemplateRenders.js +0 -1
  55. package/build/template/applyTemplateRenders.js +0 -1
  56. package/build/template/applyTemplateRenders.js.map +1 -1
  57. package/build/template/internals/TemplateRenderSnapshot.js +0 -1
  58. package/build/template/internals/TemplateRenderSnapshot.js.map +1 -1
  59. package/build/template/internals/TemplateRenderSnapshots.js +0 -1
  60. package/build/template/internals/TemplateRenderSnapshots.js.map +1 -1
  61. package/build/template/internals/createUsingTemplateRender.js +0 -1
  62. package/build/template/internals/createUsingTemplateRender.js.map +1 -1
  63. package/build/template/internals/deleteUsingTemplateRenderSnapshot.js +0 -1
  64. package/build/template/internals/deleteUsingTemplateRenderSnapshot.js.map +1 -1
  65. package/build/template/internals/importCarsonTemplate.js +0 -1
  66. package/build/template/internals/importCarsonTemplate.js.map +1 -1
  67. package/build/template/internals/insertUsingTemplateRender.js +0 -1
  68. package/build/template/internals/insertUsingTemplateRender.js.map +1 -1
  69. package/build/template/internals/loadTemplateRenderSnapshots.js +0 -1
  70. package/build/template/internals/loadTemplateRenderSnapshots.js.map +1 -1
  71. package/build/template/internals/merge.js +0 -1
  72. package/build/template/internals/merge.js.map +1 -1
  73. package/build/template/internals/mergeUsingTemplateRender.js +0 -1
  74. package/build/template/internals/mergeUsingTemplateRender.js.map +1 -1
  75. package/build/template/internals/overwriteUsingTemplateRender.js +0 -1
  76. package/build/template/internals/overwriteUsingTemplateRender.js.map +1 -1
  77. package/build/template/internals/parseCarsonTemplateId.js +0 -1
  78. package/build/template/internals/parseCarsonTemplateId.js.map +1 -1
  79. package/build/template/internals/prettify.js +0 -1
  80. package/build/template/internals/prettify.js.map +1 -1
  81. package/build/template/internals/readCarsonTemplate.js +0 -1
  82. package/build/template/internals/readCarsonTemplate.js.map +1 -1
  83. package/build/template/internals/resolveModule.js +0 -1
  84. package/build/template/internals/resolveModule.js.map +1 -1
  85. package/build/template/internals/saveTemplateRenderSnapshots.js +0 -1
  86. package/build/template/internals/saveTemplateRenderSnapshots.js.map +1 -1
  87. package/build/template/internals/simplify.js +0 -1
  88. package/build/template/internals/simplify.js.map +1 -1
  89. package/build/template/internals/uninsertUsingTemplateRenderSnapshot.js +0 -1
  90. package/build/template/internals/uninsertUsingTemplateRenderSnapshot.js.map +1 -1
  91. package/build/template/internals/unmerge.js +0 -1
  92. package/build/template/internals/unmerge.js.map +1 -1
  93. package/build/template/internals/unmergeUsingTemplateRenderSnapshot.js +0 -1
  94. package/build/template/internals/unmergeUsingTemplateRenderSnapshot.js.map +1 -1
  95. package/build/template/internals.js +0 -1
  96. package/build/template/internals.js.map +1 -1
  97. package/build/template/renderCarsonTemplate.js +0 -1
  98. package/build/template/renderCarsonTemplate.js.map +1 -1
  99. package/build/template.js +0 -1
  100. package/build/template.js.map +1 -1
  101. package/build/workspace/Project.js +0 -1
  102. package/build/workspace/Project.js.map +1 -1
  103. package/build/workspace/ProjectConfig.js +0 -1
  104. package/build/workspace/ProjectConfig.js.map +1 -1
  105. package/build/workspace/ProjectCreateOptions.js +0 -1
  106. package/build/workspace/ProjectError.js +0 -1
  107. package/build/workspace/ProjectError.js.map +1 -1
  108. package/build/workspace/ProjectOptions.js +0 -1
  109. package/build/workspace/ProjectUpdateOptions.js +0 -1
  110. package/build/workspace/Workspace.js +0 -1
  111. package/build/workspace/Workspace.js.map +2 -2
  112. package/build/workspace/WorkspaceConfig.js +0 -1
  113. package/build/workspace/WorkspaceConfig.js.map +1 -1
  114. package/build/workspace/WorkspaceCreateOptions.js +0 -1
  115. package/build/workspace/WorkspaceCreateProjectOptions.js +0 -1
  116. package/build/workspace/WorkspaceDependencies.js +0 -1
  117. package/build/workspace/WorkspaceDependencies.js.map +1 -1
  118. package/build/workspace/WorkspaceDependenciesFromWorkspaceOptions.js +0 -1
  119. package/build/workspace/WorkspaceDependenciesGetVersionsOptions.js +0 -1
  120. package/build/workspace/WorkspaceDependency.js +0 -1
  121. package/build/workspace/WorkspaceDependencyProject.js +0 -1
  122. package/build/workspace/WorkspaceError.js +0 -1
  123. package/build/workspace/WorkspaceError.js.map +1 -1
  124. package/build/workspace/WorkspaceFindAndReadOptions.js +0 -1
  125. package/build/workspace/WorkspaceOptions.js +0 -1
  126. package/build/workspace/WorkspaceOptionsProject.js +0 -1
  127. package/build/workspace/WorkspacePackageJson.js +0 -1
  128. package/build/workspace/WorkspaceProjectGlobs.js +0 -1
  129. package/build/workspace/WorkspaceProjects.js +0 -1
  130. package/build/workspace/WorkspaceRepository.js +0 -1
  131. package/build/workspace/WorkspaceUpdateOptions.js +0 -1
  132. package/build/workspace/internals/compareProjectPath.js +0 -1
  133. package/build/workspace/internals/compareProjectPath.js.map +1 -1
  134. package/build/workspace/internals/compareSemver.js +0 -1
  135. package/build/workspace/internals/compareSemver.js.map +1 -1
  136. package/build/workspace/internals/compareWorkspaceDependencyProjectName.js +0 -1
  137. package/build/workspace/internals/compareWorkspaceDependencyProjectName.js.map +1 -1
  138. package/build/workspace/internals/containsProject.js +0 -1
  139. package/build/workspace/internals/containsProject.js.map +1 -1
  140. package/build/workspace/internals/containsWorkspace.js +0 -1
  141. package/build/workspace/internals/containsWorkspace.js.map +1 -1
  142. package/build/workspace/internals/getPackageJsonWorkspaces.js +0 -1
  143. package/build/workspace/internals/getPackageJsonWorkspaces.js.map +1 -1
  144. package/build/workspace/internals/getRepositoryBranches.js +0 -1
  145. package/build/workspace/internals/getRepositoryBranches.js.map +1 -1
  146. package/build/workspace/internals/getRepositoryUrl.js +0 -1
  147. package/build/workspace/internals/getRepositoryUrl.js.map +1 -1
  148. package/build/workspace/internals.js +0 -1
  149. package/build/workspace/internals.js.map +1 -1
  150. package/build/workspace/saveProjectConfig.js +0 -1
  151. package/build/workspace/saveProjectConfig.js.map +1 -1
  152. package/build/workspace/saveWorkspaceConfig.js +0 -1
  153. package/build/workspace/saveWorkspaceConfig.js.map +1 -1
  154. package/build/workspace.js +0 -1
  155. package/build/workspace.js.map +1 -1
  156. package/package.json +27 -27
  157. package/source/workspace/Workspace.ts +4 -3
package/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  # @jakubmazanec/carson
5
5
 
6
6
  Tool for managing workspace and project configuration.
7
-
8
7
  </div>
9
8
  <!-- header -->
10
9
 
@@ -38,7 +37,8 @@ npm install @jakubmazanec/carson @jakubmazanec/carson-templates -g
38
37
  #### Prerequisites
39
38
 
40
39
  - Node.js 24 or later
41
- - TypeScript 5 or later
40
+ - TypeScript 6 or later
41
+
42
42
  <!-- prerequisites -->
43
43
 
44
44
  ## Usage
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { jsx, jsxs } from "react/jsx-runtime";
3
2
  import { colors, Header, icons, useProgram } from "@jakubmazanec/cli";
4
3
  import chalk from "chalk";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-project/CreateProject.tsx"],
4
4
  "sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport path from 'node:path';\nimport {useEffect, useState} from 'react';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type CommandStatus, packageNameToDirectory} from '../internals.js';\nimport {type createProjectCommand} from './createProjectCommand.js';\nimport {CreateProjectInput, type CreateProjectInputResult} from './CreateProjectInput.js';\nimport {runCreateProject} from './runCreateProject.js';\n\nconst ONLY_ONE_STAR_REGEXP = /^(?!(.*?\\*){2,}|.*? |\\*$).*?\\*.*$/;\n\nexport type CreateProjectProps = {\n args: CommandArguments<typeof createProjectCommand>;\n workspace: Workspace | Workspace<false>;\n};\n\nexport function CreateProject({args, workspace}: CreateProjectProps) {\n let [status, setStatus] = useState<CommandStatus>('not-started');\n let [subscription, setSubscription] = useState<ZenObservable.Subscription | null>(null);\n let [jobs, setJobs] = useState<string[]>([]);\n let [createProjectInputResult, setCreateProjectInputResult] = useState<CreateProjectInputResult>(\n () => ({\n projectName: {value: args.options.name ?? '', isComplete: !!args.options.name},\n projectPath: {value: '', isComplete: false},\n templateId: {value: args.options.template ?? '', isComplete: !!args.options.template},\n }),\n );\n let {exit} = useProgram();\n\n useEffect(() => {\n if (Object.entries(createProjectInputResult).every(([, result]) => result.isComplete)) {\n setStatus('in-progress');\n }\n }, [createProjectInputResult]);\n\n useEffect(() => {\n if (status === 'in-progress' && !subscription) {\n let newSubscription = runCreateProject({\n projectPath: createProjectInputResult.projectPath.value,\n templateId: createProjectInputResult.templateId.value,\n projectName: createProjectInputResult.projectName.value,\n workspace,\n args,\n }).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n newSubscription.unsubscribe();\n setStatus('finished');\n },\n });\n setSubscription(newSubscription);\n }\n\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n }, [args, createProjectInputResult, exit, status, subscription, workspace]);\n\n let possiblePaths: Array<{value: string; label: string}> = [];\n\n if (createProjectInputResult.projectName.value) {\n let destinationDirectory = packageNameToDirectory(createProjectInputResult.projectName.value);\n\n if (workspace.projectGlobs) {\n possiblePaths = workspace.projectGlobs\n .filter((projectGlob) => ONLY_ONE_STAR_REGEXP.test(projectGlob))\n .map((projectGlob) => projectGlob.replace(/\\*/, destinationDirectory))\n .map((projectGlob) => path.join(workspace.path, projectGlob))\n .map((projectPath) => ({\n value: projectPath,\n label: path.relative(workspace.path, projectPath).replace('\\\\', '/'),\n }));\n\n if (!possiblePaths.length) {\n possiblePaths = workspace.projectGlobs\n .filter((projectGlob) => !ONLY_ONE_STAR_REGEXP.test(projectGlob))\n .map((projectGlob) => path.join(workspace.path, projectGlob))\n .map((projectPath) => ({\n value: projectPath,\n label: path.relative(workspace.path, projectPath).replace('\\\\', '/'),\n }));\n }\n\n if (!possiblePaths.length) {\n possiblePaths = [\n {\n value: workspace.path,\n label: workspace.path,\n },\n ];\n }\n } else {\n possiblePaths = [\n {\n value: workspace.path,\n label: workspace.path,\n },\n ];\n }\n }\n\n return (\n <Box flexDirection=\"column\">\n <Text color={colors.body}>\n {`Creating project in the workspace at ${chalk[colors.info](workspace.path)}.`}\n </Text>\n\n <CreateProjectInput\n rows={{\n projectPath: {\n choices: possiblePaths,\n },\n }}\n marginTop={1}\n values={createProjectInputResult}\n onChange={setCreateProjectInputResult}\n onComplete={setCreateProjectInputResult}\n />\n\n {status === 'in-progress' || status === 'finished' ?\n <Box flexDirection=\"column\" marginTop={1}>\n <Header icon={icons.success} marginBottom={1} showSpinner={status === 'in-progress'}>\n <Text>Creating project...</Text>\n </Header>\n\n {jobs.map((job) => (\n <Text key={job}>{`${icons.info} ${job}`}</Text>\n ))}\n </Box>\n : null}\n\n {status === 'finished' ?\n <Header icon={icons.success} marginTop={1}>\n <Text>Done.</Text>\n </Header>\n : null}\n </Box>\n );\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { createForm } from "@jakubmazanec/cli";
3
2
  const TEMPLATE_ID_REGEXP = /^.+:.+$/;
4
3
  const PROJECT_NAME_ID_REGEXP = /^[\d./@a-z-]+$/;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-project/CreateProjectInput.ts"],
4
4
  "sourcesContent": ["import {createForm, type FormResult} from '@jakubmazanec/cli';\n\nconst TEMPLATE_ID_REGEXP = /^.+:.+$/;\nconst PROJECT_NAME_ID_REGEXP = /^[\\d./@a-z-]+$/;\n\nexport const CreateProjectInput = createForm({\n rows: {\n templateId: {\n type: 'text',\n label: 'What template do you want to use?',\n validate: (value: string) => {\n if (!TEMPLATE_ID_REGEXP.test(value)) {\n throw new Error(\n 'Template ID must consist of a module ID and a template name separated by a colon.',\n );\n }\n },\n },\n projectName: {\n type: 'text',\n label: 'What is the project name?',\n validate: (value: string) => {\n if (!PROJECT_NAME_ID_REGEXP.test(value)) {\n throw new Error(\n 'Project name can contain only lowercase letters, numbers, hyphen, @, dot or /.',\n );\n }\n },\n },\n projectPath: {\n type: 'select',\n label: 'What is the project location?',\n },\n },\n});\n\nexport type CreateProjectInputResult = FormResult<typeof CreateProjectInput>;\n"],
5
- "mappings": ";AAAA,SAAQ,kBAAkC;AAE1C,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB;AAExB,aAAM,qBAAqB,WAAW;AAAA,EAC3C,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,UAAkB;AAC3B,YAAI,CAAC,mBAAmB,KAAK,KAAK,GAAG;AACnC,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,UAAkB;AAC3B,YAAI,CAAC,uBAAuB,KAAK,KAAK,GAAG;AACvC,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC;",
5
+ "mappings": "AAAA,SAAQ,kBAAkC;AAE1C,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB;AAExB,aAAM,qBAAqB,WAAW;AAAA,EAC3C,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,UAAkB;AAC3B,YAAI,CAAC,mBAAmB,KAAK,KAAK,GAAG;AACnC,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,UAAkB;AAC3B,YAAI,CAAC,uBAAuB,KAAK,KAAK,GAAG;AACvC,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { jsx } from "react/jsx-runtime";
3
2
  import { Command } from "@jakubmazanec/cli";
4
3
  import path from "node:path";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-project/createProjectCommand.tsx"],
4
4
  "sourcesContent": ["import {Command} from '@jakubmazanec/cli';\nimport path from 'node:path';\n\nimport {Workspace} from '../../workspace.js';\nimport {CreateProject} from './CreateProject.js';\n\nexport const createProjectCommand = new Command(\n 'create project',\n async (args, program) => {\n let targetPath = path.resolve(process.cwd(), args.options.path ?? '');\n let workspace = await Workspace.findAndRead(targetPath, {throwIfNotFound: true});\n\n if (workspace.errors[0]) {\n throw workspace.errors[0];\n }\n\n for (let project of workspace.projects) {\n if (project.errors[0]) {\n throw project.errors[0];\n }\n }\n\n await program.renderElement(<CreateProject args={args} workspace={workspace} />);\n },\n {\n description: 'Creates a new project in an existing workspace.',\n options: {\n path: {\n type: 'string',\n },\n template: {\n type: 'string',\n },\n name: {\n type: 'string',\n },\n },\n },\n);\n"],
5
- "mappings": ";AAsBgC;AAtBhC,SAAQ,eAAc;AACtB,OAAO,UAAU;AAEjB,SAAQ,iBAAgB;AACxB,SAAQ,qBAAoB;AAErB,aAAM,uBAAuB,IAAI;AAAA,EACtC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,QAAI,aAAa,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AACpE,QAAI,YAAY,MAAM,UAAU,YAAY,YAAY,EAAC,iBAAiB,KAAI,CAAC;AAE/E,QAAI,UAAU,OAAO,CAAC,GAAG;AACvB,YAAM,UAAU,OAAO,CAAC;AAAA,IAC1B;AAEA,aAAS,WAAW,UAAU,UAAU;AACtC,UAAI,QAAQ,OAAO,CAAC,GAAG;AACrB,cAAM,QAAQ,OAAO,CAAC;AAAA,MACxB;AAAA,IACF;AAEA,UAAM,QAAQ,cAAc,oBAAC,iBAAc,MAAY,WAAsB,CAAE;AAAA,EACjF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
5
+ "mappings": "AAsBgC;AAtBhC,SAAQ,eAAc;AACtB,OAAO,UAAU;AAEjB,SAAQ,iBAAgB;AACxB,SAAQ,qBAAoB;AAErB,aAAM,uBAAuB,IAAI;AAAA,EACtC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,QAAI,aAAa,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AACpE,QAAI,YAAY,MAAM,UAAU,YAAY,YAAY,EAAC,iBAAiB,KAAI,CAAC;AAE/E,QAAI,UAAU,OAAO,CAAC,GAAG;AACvB,YAAM,UAAU,OAAO,CAAC;AAAA,IAC1B;AAEA,aAAS,WAAW,UAAU,UAAU;AACtC,UAAI,QAAQ,OAAO,CAAC,GAAG;AACrB,cAAM,QAAQ,OAAO,CAAC;AAAA,MACxB;AAAA,IACF;AAEA,UAAM,QAAQ,cAAc,oBAAC,iBAAc,MAAY,WAAsB,CAAE;AAAA,EACjF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import Observable from "zen-observable";
3
2
  export function runCreateProject({
4
3
  projectPath,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-project/runCreateProject.ts"],
4
4
  "sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type createProjectCommand} from './createProjectCommand.js';\n\nexport type CreateProjectOptions = {\n projectPath: string;\n projectName: string;\n templateId: string;\n workspace: Workspace | Workspace<false>;\n args: CommandArguments<typeof createProjectCommand>;\n};\n\nexport type CreateProjectStatus = string;\n\nexport function runCreateProject({\n projectPath,\n templateId,\n projectName,\n workspace,\n args,\n}: CreateProjectOptions) {\n return new Observable<CreateProjectStatus>((observer) => {\n (async () => {\n observer.next('Creating files');\n\n let project = await workspace.createProject({\n projectPath,\n projectName,\n templateId,\n args,\n });\n\n observer.next('Updating the new project');\n\n // if the project doesn't have config with a template ID, it's on purpose, but it's still needed for the next update, so we'll add it manually\n project.config.template ??= templateId;\n\n await project.update({args});\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error: unknown) => {\n observer.error(error);\n });\n });\n}\n"],
5
- "mappings": ";AACA,OAAO,gBAAgB;AAehB,gBAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,SAAO,IAAI,WAAgC,CAAC,aAAa;AACvD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,UAAU,MAAM,UAAU,cAAc;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,eAAS,KAAK,0BAA0B;AAGxC,cAAQ,OAAO,aAAa;AAE5B,YAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,IAC7B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
5
+ "mappings": "AACA,OAAO,gBAAgB;AAehB,gBAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,SAAO,IAAI,WAAgC,CAAC,aAAa;AACvD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,UAAU,MAAM,UAAU,cAAc;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,eAAS,KAAK,0BAA0B;AAGxC,cAAQ,OAAO,aAAa;AAE5B,YAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,IAC7B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export * from "./create-project/CreateProject.js";
3
2
  export * from "./create-project/createProjectCommand.js";
4
3
  export * from "./create-project/CreateProjectInput.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/commands/create-project.ts"],
4
4
  "sourcesContent": ["export * from './create-project/CreateProject.js';\nexport * from './create-project/createProjectCommand.js';\nexport * from './create-project/CreateProjectInput.js';\nexport * from './create-project/runCreateProject.js';\n"],
5
- "mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { jsx, jsxs } from "react/jsx-runtime";
3
2
  import { colors, Header, icons, useProgram } from "@jakubmazanec/cli";
4
3
  import chalk from "chalk";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-workspace/CreateWorkspace.tsx"],
4
4
  "sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport path from 'node:path';\nimport {useEffect, useState} from 'react';\n\nimport {type CommandStatus} from '../internals.js';\nimport {type createWorkspaceCommand} from './createWorkspaceCommand.js';\nimport {CreateWorkspaceInput, type CreateWorkspaceInputResult} from './CreateWorkspaceInput.js';\nimport {runCreateWorkspace} from './runCreateWorkspace.js';\n\nexport type CreateWorkspaceProps = {\n args: CommandArguments<typeof createWorkspaceCommand>;\n};\n\nexport function CreateWorkspace({args}: CreateWorkspaceProps) {\n let [status, setStatus] = useState<CommandStatus>('not-started');\n let [subscription, setSubscription] = useState<ZenObservable.Subscription | null>(null);\n let [jobs, setJobs] = useState<string[]>([]);\n let [createWorkspaceInputResult, setCreateWorkspaceInputResult] =\n useState<CreateWorkspaceInputResult>(() => ({\n templateId: {value: args.options.template ?? '', isComplete: !!args.options.template},\n }));\n let {exit} = useProgram();\n let workspacePath = path.resolve(process.cwd(), args.options.path ?? '');\n\n useEffect(() => {\n if (Object.entries(createWorkspaceInputResult).every(([, result]) => result.isComplete)) {\n setStatus('in-progress');\n }\n }, [createWorkspaceInputResult]);\n\n useEffect(() => {\n if (status === 'in-progress' && !subscription) {\n let newSubscription = runCreateWorkspace({\n workspacePath,\n templateId: createWorkspaceInputResult.templateId.value,\n args,\n }).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n newSubscription.unsubscribe();\n setStatus('finished');\n },\n });\n\n setSubscription(newSubscription);\n }\n\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n }, [createWorkspaceInputResult, status, subscription, args, exit, workspacePath]);\n\n return (\n <Box flexDirection=\"column\">\n <Text>{`Creating workspace at ${chalk[colors.info](workspacePath)}.`}</Text>\n\n <CreateWorkspaceInput\n marginTop={1}\n values={createWorkspaceInputResult}\n onChange={setCreateWorkspaceInputResult}\n onComplete={setCreateWorkspaceInputResult}\n />\n\n {status === 'in-progress' || status === 'finished' ?\n <Box flexDirection=\"column\" marginTop={1}>\n <Header icon={icons.success} marginBottom={1} showSpinner={status === 'in-progress'}>\n <Text>Creating workspace...</Text>\n </Header>\n\n {jobs.map((job) => (\n <Text key={job}>{`${icons.info} ${job}`}</Text>\n ))}\n </Box>\n : null}\n\n {status === 'finished' ?\n <Header icon={icons.success} marginTop={1}>\n <Text>Done.</Text>\n </Header>\n : null}\n </Box>\n );\n}\n"],
5
- "mappings": ";AA+DM,cAUE,YAVF;AA/DN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,OAAO,UAAU;AACjB,SAAQ,WAAW,gBAAe;AAIlC,SAAQ,4BAA4D;AACpE,SAAQ,0BAAyB;AAM1B,gBAAS,gBAAgB,EAAC,KAAI,GAAyB;AAC5D,MAAI,CAAC,QAAQ,SAAS,IAAI,SAAwB,aAAa;AAC/D,MAAI,CAAC,cAAc,eAAe,IAAI,SAA4C,IAAI;AACtF,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,CAAC,4BAA4B,6BAA6B,IAC5D,SAAqC,OAAO;AAAA,IAC1C,YAAY,EAAC,OAAO,KAAK,QAAQ,YAAY,IAAI,YAAY,CAAC,CAAC,KAAK,QAAQ,SAAQ;AAAA,EACtF,EAAE;AACJ,MAAI,EAAC,KAAI,IAAI,WAAW;AACxB,MAAI,gBAAgB,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AAEvE,YAAU,MAAM;AACd,QAAI,OAAO,QAAQ,0BAA0B,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,MAAM,OAAO,UAAU,GAAG;AACvF,gBAAU,aAAa;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,0BAA0B,CAAC;AAE/B,YAAU,MAAM;AACd,QAAI,WAAW,iBAAiB,CAAC,cAAc;AAC7C,UAAI,kBAAkB,mBAAmB;AAAA,QACvC;AAAA,QACA,YAAY,2BAA2B,WAAW;AAAA,QAClD;AAAA,MACF,CAAC,EAAE,UAAU;AAAA,QACX,KAAK,OAAO;AACV,kBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,QACpD;AAAA,QACA,MAAM,OAAO;AACX,eAAK,KAAK;AAAA,QACZ;AAAA,QACA,WAAW;AACT,0BAAgB,YAAY;AAC5B,oBAAU,UAAU;AAAA,QACtB;AAAA,MACF,CAAC;AAED,sBAAgB,eAAe;AAAA,IACjC;AAEA,WAAO,MAAM;AACX,UAAI,cAAc;AAChB,qBAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,4BAA4B,QAAQ,cAAc,MAAM,MAAM,aAAa,CAAC;AAEhF,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,aAAa,CAAC,KAAI;AAAA,IAErE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA;AAAA,IACd;AAAA,IAEC,WAAW,iBAAiB,WAAW,aACtC,qBAAC,OAAI,eAAc,UAAS,WAAW,GACrC;AAAA,0BAAC,UAAO,MAAM,MAAM,SAAS,cAAc,GAAG,aAAa,WAAW,eACpE,8BAAC,QAAK,mCAAqB,GAC7B;AAAA,MAEC,KAAK,IAAI,CAAC,QACT,oBAAC,QAAgB,aAAG,MAAM,IAAI,IAAI,GAAG,MAA1B,GAA6B,CACzC;AAAA,OACH,IACA;AAAA,IAED,WAAW,aACV,oBAAC,UAAO,MAAM,MAAM,SAAS,WAAW,GACtC,8BAAC,QAAK,mBAAK,GACb,IACA;AAAA,KACJ;AAEJ;",
5
+ "mappings": "AA+DM,cAUE,YAVF;AA/DN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,OAAO,UAAU;AACjB,SAAQ,WAAW,gBAAe;AAIlC,SAAQ,4BAA4D;AACpE,SAAQ,0BAAyB;AAM1B,gBAAS,gBAAgB,EAAC,KAAI,GAAyB;AAC5D,MAAI,CAAC,QAAQ,SAAS,IAAI,SAAwB,aAAa;AAC/D,MAAI,CAAC,cAAc,eAAe,IAAI,SAA4C,IAAI;AACtF,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,CAAC,4BAA4B,6BAA6B,IAC5D,SAAqC,OAAO;AAAA,IAC1C,YAAY,EAAC,OAAO,KAAK,QAAQ,YAAY,IAAI,YAAY,CAAC,CAAC,KAAK,QAAQ,SAAQ;AAAA,EACtF,EAAE;AACJ,MAAI,EAAC,KAAI,IAAI,WAAW;AACxB,MAAI,gBAAgB,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AAEvE,YAAU,MAAM;AACd,QAAI,OAAO,QAAQ,0BAA0B,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,MAAM,OAAO,UAAU,GAAG;AACvF,gBAAU,aAAa;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,0BAA0B,CAAC;AAE/B,YAAU,MAAM;AACd,QAAI,WAAW,iBAAiB,CAAC,cAAc;AAC7C,UAAI,kBAAkB,mBAAmB;AAAA,QACvC;AAAA,QACA,YAAY,2BAA2B,WAAW;AAAA,QAClD;AAAA,MACF,CAAC,EAAE,UAAU;AAAA,QACX,KAAK,OAAO;AACV,kBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,QACpD;AAAA,QACA,MAAM,OAAO;AACX,eAAK,KAAK;AAAA,QACZ;AAAA,QACA,WAAW;AACT,0BAAgB,YAAY;AAC5B,oBAAU,UAAU;AAAA,QACtB;AAAA,MACF,CAAC;AAED,sBAAgB,eAAe;AAAA,IACjC;AAEA,WAAO,MAAM;AACX,UAAI,cAAc;AAChB,qBAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,4BAA4B,QAAQ,cAAc,MAAM,MAAM,aAAa,CAAC;AAEhF,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,aAAa,CAAC,KAAI;AAAA,IAErE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA;AAAA,IACd;AAAA,IAEC,WAAW,iBAAiB,WAAW,aACtC,qBAAC,OAAI,eAAc,UAAS,WAAW,GACrC;AAAA,0BAAC,UAAO,MAAM,MAAM,SAAS,cAAc,GAAG,aAAa,WAAW,eACpE,8BAAC,QAAK,mCAAqB,GAC7B;AAAA,MAEC,KAAK,IAAI,CAAC,QACT,oBAAC,QAAgB,aAAG,MAAM,IAAI,IAAI,GAAG,MAA1B,GAA6B,CACzC;AAAA,OACH,IACA;AAAA,IAED,WAAW,aACV,oBAAC,UAAO,MAAM,MAAM,SAAS,WAAW,GACtC,8BAAC,QAAK,mBAAK,GACb,IACA;AAAA,KACJ;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { createForm } from "@jakubmazanec/cli";
3
2
  const TEMPLATE_ID_REGEXP = /^.+:.+$/;
4
3
  export const CreateWorkspaceInput = createForm({
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-workspace/CreateWorkspaceInput.ts"],
4
4
  "sourcesContent": ["import {createForm, type FormResult} from '@jakubmazanec/cli';\n\nconst TEMPLATE_ID_REGEXP = /^.+:.+$/;\n\nexport const CreateWorkspaceInput = createForm({\n rows: {\n templateId: {\n type: 'text',\n label: 'Enter template ID:',\n validate: (value: string) => {\n if (!TEMPLATE_ID_REGEXP.test(value)) {\n throw new Error(\n 'Template ID must consist of a module ID and a template name separated by a colon.',\n );\n }\n },\n },\n },\n});\n\nexport type CreateWorkspaceInputResult = FormResult<typeof CreateWorkspaceInput>;\n"],
5
- "mappings": ";AAAA,SAAQ,kBAAkC;AAE1C,MAAM,qBAAqB;AAEpB,aAAM,uBAAuB,WAAW;AAAA,EAC7C,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,UAAkB;AAC3B,YAAI,CAAC,mBAAmB,KAAK,KAAK,GAAG;AACnC,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
5
+ "mappings": "AAAA,SAAQ,kBAAkC;AAE1C,MAAM,qBAAqB;AAEpB,aAAM,uBAAuB,WAAW;AAAA,EAC7C,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU,CAAC,UAAkB;AAC3B,YAAI,CAAC,mBAAmB,KAAK,KAAK,GAAG;AACnC,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { jsx } from "react/jsx-runtime";
3
2
  import { Command } from "@jakubmazanec/cli";
4
3
  import { CreateWorkspace } from "./CreateWorkspace.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-workspace/createWorkspaceCommand.tsx"],
4
4
  "sourcesContent": ["import {Command} from '@jakubmazanec/cli';\n\nimport {CreateWorkspace} from './CreateWorkspace.js';\n\nexport const createWorkspaceCommand = new Command(\n 'create workspace',\n async (args, program) => {\n await program.renderElement(<CreateWorkspace args={args} />);\n },\n {\n description: 'Creates a new workspacee.',\n options: {\n path: {\n type: 'string',\n },\n template: {\n type: 'string',\n },\n },\n },\n);\n"],
5
- "mappings": ";AAOgC;AAPhC,SAAQ,eAAc;AAEtB,SAAQ,uBAAsB;AAEvB,aAAM,yBAAyB,IAAI;AAAA,EACxC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,UAAM,QAAQ,cAAc,oBAAC,mBAAgB,MAAY,CAAE;AAAA,EAC7D;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
5
+ "mappings": "AAOgC;AAPhC,SAAQ,eAAc;AAEtB,SAAQ,uBAAsB;AAEvB,aAAM,yBAAyB,IAAI;AAAA,EACxC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,UAAM,QAAQ,cAAc,oBAAC,mBAAgB,MAAY,CAAE;AAAA,EAC7D;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import Observable from "zen-observable";
3
2
  import { Workspace } from "../../workspace.js";
4
3
  export function runCreateWorkspace({ workspacePath, templateId, args }) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/create-workspace/runCreateWorkspace.ts"],
4
4
  "sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {Workspace} from '../../workspace.js';\nimport {type createWorkspaceCommand} from './createWorkspaceCommand.js';\n\nexport type CreateWorkspaceOptions = {\n workspacePath: string;\n templateId: string;\n args: CommandArguments<typeof createWorkspaceCommand>;\n};\n\nexport type CreateWorkspaceStatus = string;\n\nexport function runCreateWorkspace({workspacePath, templateId, args}: CreateWorkspaceOptions) {\n return new Observable<CreateWorkspaceStatus>((observer) => {\n (async () => {\n observer.next('Creating files');\n\n let workspace = await Workspace.create({\n args,\n path: workspacePath,\n templateId,\n });\n\n observer.next('Updating the new workspace');\n\n // if the workspace doesn't have config with a template ID, it's on purpose, but it's still needed for the next update, so we'll add it manually\n workspace.config.template ??= templateId;\n\n await workspace.update({args});\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error: unknown) => {\n observer.error(error);\n });\n });\n}\n"],
5
- "mappings": ";AACA,OAAO,gBAAgB;AAEvB,SAAQ,iBAAgB;AAWjB,gBAAS,mBAAmB,EAAC,eAAe,YAAY,KAAI,GAA2B;AAC5F,SAAO,IAAI,WAAkC,CAAC,aAAa;AACzD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,YAAY,MAAM,UAAU,OAAO;AAAA,QACrC;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAED,eAAS,KAAK,4BAA4B;AAG1C,gBAAU,OAAO,aAAa;AAE9B,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAAA,IAC/B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
5
+ "mappings": "AACA,OAAO,gBAAgB;AAEvB,SAAQ,iBAAgB;AAWjB,gBAAS,mBAAmB,EAAC,eAAe,YAAY,KAAI,GAA2B;AAC5F,SAAO,IAAI,WAAkC,CAAC,aAAa;AACzD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,YAAY,MAAM,UAAU,OAAO;AAAA,QACrC;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAED,eAAS,KAAK,4BAA4B;AAG1C,gBAAU,OAAO,aAAa;AAE9B,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAAA,IAC/B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export * from "./create-workspace/CreateWorkspace.js";
3
2
  export * from "./create-workspace/createWorkspaceCommand.js";
4
3
  export * from "./create-workspace/CreateWorkspaceInput.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/commands/create-workspace.ts"],
4
4
  "sourcesContent": ["export * from './create-workspace/CreateWorkspace.js';\nexport * from './create-workspace/createWorkspaceCommand.js';\nexport * from './create-workspace/CreateWorkspaceInput.js';\nexport * from './create-workspace/runCreateWorkspace.js';\n"],
5
- "mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1 @@
1
- "use strict";
2
1
  //# sourceMappingURL=CommandStatus.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export function packageNameToDirectory(packageName) {
3
2
  const packageNameParts = packageName.split("/");
4
3
  if (packageNameParts.length === 1) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/internals/packageNameToDirectory.ts"],
4
4
  "sourcesContent": ["export function packageNameToDirectory(packageName: string): string {\n const packageNameParts = packageName.split('/');\n\n if (packageNameParts.length === 1) {\n return packageNameParts[0] as string;\n }\n\n if (packageNameParts.length > 1 && packageName[0] !== '@') {\n return packageNameParts[0] as string;\n }\n\n return packageNameParts[1] as string;\n}\n"],
5
- "mappings": ";AAAO,gBAAS,uBAAuB,aAA6B;AAClE,QAAM,mBAAmB,YAAY,MAAM,GAAG;AAE9C,MAAI,iBAAiB,WAAW,GAAG;AACjC,WAAO,iBAAiB,CAAC;AAAA,EAC3B;AAEA,MAAI,iBAAiB,SAAS,KAAK,YAAY,CAAC,MAAM,KAAK;AACzD,WAAO,iBAAiB,CAAC;AAAA,EAC3B;AAEA,SAAO,iBAAiB,CAAC;AAC3B;",
5
+ "mappings": "AAAO,gBAAS,uBAAuB,aAA6B;AAClE,QAAM,mBAAmB,YAAY,MAAM,GAAG;AAE9C,MAAI,iBAAiB,WAAW,GAAG;AACjC,WAAO,iBAAiB,CAAC;AAAA,EAC3B;AAEA,MAAI,iBAAiB,SAAS,KAAK,YAAY,CAAC,MAAM,KAAK;AACzD,WAAO,iBAAiB,CAAC;AAAA,EAC3B;AAEA,SAAO,iBAAiB,CAAC;AAC3B;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,2 @@
1
- "use strict";
2
1
  export * from "./internals/packageNameToDirectory.js";
3
2
  //# sourceMappingURL=internals.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/commands/internals.ts"],
4
4
  "sourcesContent": ["export type * from './internals/CommandStatus.js';\nexport * from './internals/packageNameToDirectory.js';\n"],
5
- "mappings": ";AACA,cAAc;",
5
+ "mappings": "AACA,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { jsx, jsxs } from "react/jsx-runtime";
3
2
  import { colors, Header, icons, useProgram } from "@jakubmazanec/cli";
4
3
  import chalk from "chalk";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/update-workspace/UpdateWorkspace.tsx"],
4
4
  "sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport {useEffect, useState} from 'react';\n\nimport {type Workspace} from '../../workspace.js';\nimport {runUpdateWorkspace} from './runUpdateWorkspace.js';\nimport {type updateWorkspaceCommand} from './updateWorkspaceCommand.js';\n\nexport type UpdateWorkspaceProps = {\n args: CommandArguments<typeof updateWorkspaceCommand>;\n workspace: Workspace | Workspace<false>;\n};\n\nexport function UpdateWorkspace({workspace, args}: UpdateWorkspaceProps) {\n let [isFinished, setIsFinished] = useState(false);\n let [jobs, setJobs] = useState<string[]>([]);\n let {exit} = useProgram();\n\n useEffect(() => {\n let subscription = runUpdateWorkspace({workspace, args}).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n setIsFinished(true);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [args, exit, workspace]);\n\n return (\n <Box flexDirection=\"column\">\n <Text>{`Updating workspace at ${chalk[colors.info](workspace.path)}.`}</Text>\n\n <Box flexDirection=\"column\" marginTop={1}>\n <Header icon={icons.success} marginBottom={1} showSpinner={!isFinished}>\n <Text>Updating workspace and projects...</Text>\n </Header>\n\n {jobs.map((job) => (\n <Text key={job}>{`${icons.info} ${job}`}</Text>\n ))}\n </Box>\n\n {isFinished ?\n <Header icon={icons.success} marginTop={1}>\n <Text>Done.</Text>\n </Header>\n : null}\n </Box>\n );\n}\n"],
5
- "mappings": ";AAuCM,cAEA,YAFA;AAvCN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,SAAQ,WAAW,gBAAe;AAGlC,SAAQ,0BAAyB;AAQ1B,gBAAS,gBAAgB,EAAC,WAAW,KAAI,GAAyB;AACvE,MAAI,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAChD,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,EAAC,KAAI,IAAI,WAAW;AAExB,YAAU,MAAM;AACd,QAAI,eAAe,mBAAmB,EAAC,WAAW,KAAI,CAAC,EAAE,UAAU;AAAA,MACjE,KAAK,OAAO;AACV,gBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,MACpD;AAAA,MACA,MAAM,OAAO;AACX,aAAK,KAAK;AAAA,MACZ;AAAA,MACA,WAAW;AACT,sBAAc,IAAI;AAAA,MACpB;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,MAAM,MAAM,SAAS,CAAC;AAE1B,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,UAAU,IAAI,CAAC,KAAI;AAAA,IAEtE,qBAAC,OAAI,eAAc,UAAS,WAAW,GACrC;AAAA,0BAAC,UAAO,MAAM,MAAM,SAAS,cAAc,GAAG,aAAa,CAAC,YAC1D,8BAAC,QAAK,gDAAkC,GAC1C;AAAA,MAEC,KAAK,IAAI,CAAC,QACT,oBAAC,QAAgB,aAAG,MAAM,IAAI,IAAI,GAAG,MAA1B,GAA6B,CACzC;AAAA,OACH;AAAA,IAEC,aACC,oBAAC,UAAO,MAAM,MAAM,SAAS,WAAW,GACtC,8BAAC,QAAK,mBAAK,GACb,IACA;AAAA,KACJ;AAEJ;",
5
+ "mappings": "AAuCM,cAEA,YAFA;AAvCN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,SAAQ,WAAW,gBAAe;AAGlC,SAAQ,0BAAyB;AAQ1B,gBAAS,gBAAgB,EAAC,WAAW,KAAI,GAAyB;AACvE,MAAI,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAChD,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,EAAC,KAAI,IAAI,WAAW;AAExB,YAAU,MAAM;AACd,QAAI,eAAe,mBAAmB,EAAC,WAAW,KAAI,CAAC,EAAE,UAAU;AAAA,MACjE,KAAK,OAAO;AACV,gBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,MACpD;AAAA,MACA,MAAM,OAAO;AACX,aAAK,KAAK;AAAA,MACZ;AAAA,MACA,WAAW;AACT,sBAAc,IAAI;AAAA,MACpB;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,MAAM,MAAM,SAAS,CAAC;AAE1B,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,UAAU,IAAI,CAAC,KAAI;AAAA,IAEtE,qBAAC,OAAI,eAAc,UAAS,WAAW,GACrC;AAAA,0BAAC,UAAO,MAAM,MAAM,SAAS,cAAc,GAAG,aAAa,CAAC,YAC1D,8BAAC,QAAK,gDAAkC,GAC1C;AAAA,MAEC,KAAK,IAAI,CAAC,QACT,oBAAC,QAAgB,aAAG,MAAM,IAAI,IAAI,GAAG,MAA1B,GAA6B,CACzC;AAAA,OACH;AAAA,IAEC,aACC,oBAAC,UAAO,MAAM,MAAM,SAAS,WAAW,GACtC,8BAAC,QAAK,mBAAK,GACb,IACA;AAAA,KACJ;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import Observable from "zen-observable";
3
2
  export function runUpdateWorkspace({ workspace, args }) {
4
3
  return new Observable((observer) => {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/update-workspace/runUpdateWorkspace.ts"],
4
4
  "sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type updateWorkspaceCommand} from './updateWorkspaceCommand.js';\n\nexport type UpdateWorkspaceAndProjectsOptions = {\n workspace: Workspace | Workspace<false>;\n args: CommandArguments<typeof updateWorkspaceCommand>;\n};\n\nexport type UpdateWorkspaceAndProjectsStatus = string;\n\nexport function runUpdateWorkspace({workspace, args}: UpdateWorkspaceAndProjectsOptions) {\n return new Observable<UpdateWorkspaceAndProjectsStatus>((observer) => {\n (async () => {\n // update workspace\n observer.next('Updating workspace');\n\n await workspace.update({args});\n\n // update projects\n for (let project of workspace.projects) {\n observer.next(`Updating project ${project.name ?? '?'}`);\n\n await project.update({args});\n }\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error: unknown) => {\n observer.error(error);\n });\n });\n}\n"],
5
- "mappings": ";AACA,OAAO,gBAAgB;AAYhB,gBAAS,mBAAmB,EAAC,WAAW,KAAI,GAAsC;AACvF,SAAO,IAAI,WAA6C,CAAC,aAAa;AACpE,KAAC,YAAY;AAEX,eAAS,KAAK,oBAAoB;AAElC,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAG7B,eAAS,WAAW,UAAU,UAAU;AACtC,iBAAS,KAAK,oBAAoB,QAAQ,QAAQ,GAAG,EAAE;AAEvD,cAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,MAC7B;AAAA,IACF,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
5
+ "mappings": "AACA,OAAO,gBAAgB;AAYhB,gBAAS,mBAAmB,EAAC,WAAW,KAAI,GAAsC;AACvF,SAAO,IAAI,WAA6C,CAAC,aAAa;AACpE,KAAC,YAAY;AAEX,eAAS,KAAK,oBAAoB;AAElC,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAG7B,eAAS,WAAW,UAAU,UAAU;AACtC,iBAAS,KAAK,oBAAoB,QAAQ,QAAQ,GAAG,EAAE;AAEvD,cAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,MAC7B;AAAA,IACF,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { jsx } from "react/jsx-runtime";
3
2
  import { Command } from "@jakubmazanec/cli";
4
3
  import path from "node:path";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/commands/update-workspace/updateWorkspaceCommand.tsx"],
4
4
  "sourcesContent": ["import {Command} from '@jakubmazanec/cli';\nimport path from 'node:path';\n\nimport {Workspace} from '../../workspace.js';\nimport {UpdateWorkspace} from './UpdateWorkspace.js';\n\nexport const updateWorkspaceCommand = new Command(\n 'update workspace',\n async (args, program) => {\n let resolvedPath = path.resolve(process.cwd(), args.options.path ?? '');\n let workspace = await Workspace.findAndRead(resolvedPath, {throwIfNotFound: true});\n\n if (workspace.errors[0]) {\n throw workspace.errors[0];\n }\n\n for (let project of workspace.projects) {\n if (project.errors[0]) {\n throw project.errors[0];\n }\n }\n\n await program.renderElement(<UpdateWorkspace args={args} workspace={workspace} />);\n },\n {\n description: 'Updates files in a workspace.',\n options: {\n path: {\n type: 'string',\n },\n },\n },\n);\n"],
5
- "mappings": ";AAsBgC;AAtBhC,SAAQ,eAAc;AACtB,OAAO,UAAU;AAEjB,SAAQ,iBAAgB;AACxB,SAAQ,uBAAsB;AAEvB,aAAM,yBAAyB,IAAI;AAAA,EACxC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,QAAI,eAAe,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AACtE,QAAI,YAAY,MAAM,UAAU,YAAY,cAAc,EAAC,iBAAiB,KAAI,CAAC;AAEjF,QAAI,UAAU,OAAO,CAAC,GAAG;AACvB,YAAM,UAAU,OAAO,CAAC;AAAA,IAC1B;AAEA,aAAS,WAAW,UAAU,UAAU;AACtC,UAAI,QAAQ,OAAO,CAAC,GAAG;AACrB,cAAM,QAAQ,OAAO,CAAC;AAAA,MACxB;AAAA,IACF;AAEA,UAAM,QAAQ,cAAc,oBAAC,mBAAgB,MAAY,WAAsB,CAAE;AAAA,EACnF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
5
+ "mappings": "AAsBgC;AAtBhC,SAAQ,eAAc;AACtB,OAAO,UAAU;AAEjB,SAAQ,iBAAgB;AACxB,SAAQ,uBAAsB;AAEvB,aAAM,yBAAyB,IAAI;AAAA,EACxC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,QAAI,eAAe,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AACtE,QAAI,YAAY,MAAM,UAAU,YAAY,cAAc,EAAC,iBAAiB,KAAI,CAAC;AAEjF,QAAI,UAAU,OAAO,CAAC,GAAG;AACvB,YAAM,UAAU,OAAO,CAAC;AAAA,IAC1B;AAEA,aAAS,WAAW,UAAU,UAAU;AACtC,UAAI,QAAQ,OAAO,CAAC,GAAG;AACrB,cAAM,QAAQ,OAAO,CAAC;AAAA,MACxB;AAAA,IACF;AAEA,UAAM,QAAQ,cAAc,oBAAC,mBAAgB,MAAY,WAAsB,CAAE;AAAA,EACnF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export * from "./update-workspace/runUpdateWorkspace.js";
3
2
  export * from "./update-workspace/UpdateWorkspace.js";
4
3
  export * from "./update-workspace/updateWorkspaceCommand.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/commands/update-workspace.ts"],
4
4
  "sourcesContent": ["export * from './update-workspace/runUpdateWorkspace.js';\nexport * from './update-workspace/UpdateWorkspace.js';\nexport * from './update-workspace/updateWorkspaceCommand.js';\n"],
5
- "mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
package/build/commands.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export * from "./commands/create-project.js";
3
2
  export * from "./commands/create-workspace.js";
4
3
  export * from "./commands/update-workspace.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/commands.ts"],
4
4
  "sourcesContent": ["export * from './commands/create-project.js';\nexport * from './commands/create-workspace.js';\nexport * from './commands/update-workspace.js';\n"],
5
- "mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import path from "node:path";
3
2
  let directory = import.meta.dirname;
4
3
  export const PACKAGE_PATH = path.resolve(directory, "..");
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/constants.ts"],
4
4
  "sourcesContent": ["import path from 'node:path';\n\nlet directory = import.meta.dirname;\n\nexport const PACKAGE_PATH = path.resolve(directory, '..');\n\nexport const CARSON_CONFIG_DIRECTORY = '.carson';\nexport const PROJECT_CONFIG_FILENAME = 'project.json';\nexport const WORKSPACE_CONFIG_FILENAME = 'workspace.json';\nexport const PROJECT_SNAPSHOT_FILENAME = 'project.snapshot';\nexport const WORKSPACE_SNAPSHOT_FILENAME = 'workspace.snapshot';\nexport const TEMPLATES_PATH = 'templates';\nexport const TEMPLATE_CONFIG_FILENAME = 'config.json';\nexport const PACKAGE_JSON_FILENAME = 'package.json';\n"],
5
- "mappings": ";AAAA,OAAO,UAAU;AAEjB,IAAI,YAAY,YAAY;AAErB,aAAM,eAAe,KAAK,QAAQ,WAAW,IAAI;AAEjD,aAAM,0BAA0B;AAChC,aAAM,0BAA0B;AAChC,aAAM,4BAA4B;AAClC,aAAM,4BAA4B;AAClC,aAAM,8BAA8B;AACpC,aAAM,iBAAiB;AACvB,aAAM,2BAA2B;AACjC,aAAM,wBAAwB;",
5
+ "mappings": "AAAA,OAAO,UAAU;AAEjB,IAAI,YAAY,YAAY;AAErB,aAAM,eAAe,KAAK,QAAQ,WAAW,IAAI;AAEjD,aAAM,0BAA0B;AAChC,aAAM,0BAA0B;AAChC,aAAM,4BAA4B;AAClC,aAAM,4BAA4B;AAClC,aAAM,8BAA8B;AACpC,aAAM,iBAAiB;AACvB,aAAM,2BAA2B;AACjC,aAAM,wBAAwB;",
6
6
  "names": []
7
7
  }
package/build/main.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export * from "./commands.js";
3
2
  export * from "./template.js";
4
3
  export * from "./workspace.js";
package/build/main.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/main.ts"],
4
4
  "sourcesContent": ["export * from './commands.js';\nexport * from './template.js';\nexport * from './workspace.js';\n"],
5
- "mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1 @@
1
- "use strict";
2
1
  //# sourceMappingURL=modules.d.js.map
package/build/run.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { getProgramDetail, Program } from "@jakubmazanec/cli";
3
2
  import { readPackageJson } from "@jakubmazanec/zod-utils";
4
3
  import path from "node:path";
package/build/run.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/run.ts"],
4
4
  "sourcesContent": ["import {getProgramDetail, Program} from '@jakubmazanec/cli';\nimport {readPackageJson} from '@jakubmazanec/zod-utils';\nimport path from 'node:path';\n\nimport {createProjectCommand, createWorkspaceCommand, updateWorkspaceCommand} from './commands.js';\nimport {PACKAGE_PATH} from './constants.js';\n\nlet programDetail = getProgramDetail(\n await readPackageJson(path.join(PACKAGE_PATH, 'package.json'), {throwOnZodError: true}),\n);\n\nlet program = await Program.create({\n ...programDetail,\n displayName: 'Carson',\n checkForUpdate: true,\n});\n\nprogram.addCommand(createWorkspaceCommand);\nprogram.addCommand(createProjectCommand);\nprogram.addCommand(updateWorkspaceCommand);\n\nawait program.run(process.argv.slice(2));\n"],
5
- "mappings": ";AAAA,SAAQ,kBAAkB,eAAc;AACxC,SAAQ,uBAAsB;AAC9B,OAAO,UAAU;AAEjB,SAAQ,sBAAsB,wBAAwB,8BAA6B;AACnF,SAAQ,oBAAmB;AAE3B,IAAI,gBAAgB;AAAA,EAClB,MAAM,gBAAgB,KAAK,KAAK,cAAc,cAAc,GAAG,EAAC,iBAAiB,KAAI,CAAC;AACxF;AAEA,IAAI,UAAU,MAAM,QAAQ,OAAO;AAAA,EACjC,GAAG;AAAA,EACH,aAAa;AAAA,EACb,gBAAgB;AAClB,CAAC;AAED,QAAQ,WAAW,sBAAsB;AACzC,QAAQ,WAAW,oBAAoB;AACvC,QAAQ,WAAW,sBAAsB;AAEzC,MAAM,QAAQ,IAAI,QAAQ,KAAK,MAAM,CAAC,CAAC;",
5
+ "mappings": "AAAA,SAAQ,kBAAkB,eAAc;AACxC,SAAQ,uBAAsB;AAC9B,OAAO,UAAU;AAEjB,SAAQ,sBAAsB,wBAAwB,8BAA6B;AACnF,SAAQ,oBAAmB;AAE3B,IAAI,gBAAgB;AAAA,EAClB,MAAM,gBAAgB,KAAK,KAAK,cAAc,cAAc,GAAG,EAAC,iBAAiB,KAAI,CAAC;AACxF;AAEA,IAAI,UAAU,MAAM,QAAQ,OAAO;AAAA,EACjC,GAAG;AAAA,EACH,aAAa;AAAA,EACb,gBAAgB;AAClB,CAAC;AAED,QAAQ,WAAW,sBAAsB;AACzC,QAAQ,WAAW,oBAAoB;AACvC,QAAQ,WAAW,sBAAsB;AAEzC,MAAM,QAAQ,IAAI,QAAQ,KAAK,MAAM,CAAC,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1 @@
1
- "use strict";
2
1
  //# sourceMappingURL=CarsonTemplate.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { z } from "zod";
3
2
  export const carsonTemplateConfigSchema = z.object({
4
3
  // disallowMultiProjectWorkspace: z.boolean().optional(),
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/template/CarsonTemplateConfig.ts"],
4
4
  "sourcesContent": ["import {z} from 'zod';\n\nexport const carsonTemplateConfigSchema = z\n .object({\n // disallowMultiProjectWorkspace: z.boolean().optional(),\n // disallowSingleProjectWorkspace: z.boolean().optional(),\n\n autoEject: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Carson template config.\n */\nexport type CarsonTemplateConfig = z.infer<typeof carsonTemplateConfigSchema>;\n"],
5
- "mappings": ";AAAA,SAAQ,SAAQ;AAET,aAAM,6BAA6B,EACvC,OAAO;AAAA;AAAA;AAAA,EAIN,WAAW,EAAE,QAAQ,EAAE,SAAS;AAClC,CAAC,EACA,OAAO;",
5
+ "mappings": "AAAA,SAAQ,SAAQ;AAET,aAAM,6BAA6B,EACvC,OAAO;AAAA;AAAA;AAAA,EAIN,WAAW,EAAE,QAAQ,EAAE,SAAS;AAClC,CAAC,EACA,OAAO;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { createCustomErrorWithData } from "@jakubmazanec/error";
3
2
  export const CarsonTemplateError = createCustomErrorWithData(
4
3
  "CarsonTemplateError",
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/template/CarsonTemplateError.ts"],
4
4
  "sourcesContent": ["import {createCustomErrorWithData} from '@jakubmazanec/error';\n\n/**\n * A subclass of `Error` that indicates a Carson template failure.\n */\nexport const CarsonTemplateError = createCustomErrorWithData(\n 'CarsonTemplateError',\n {\n INVALID_CARSON_TEMPLATE_ID:\n 'Invalid Carson template ID \"{0}\". Carson template ID must consist of a module ID and a template name separated by a colon.',\n CARSON_TEMPLATE_NOT_FOUND: 'Carson template \"{0}\" was not found in module \"{1}\".',\n STRATEGY_UNSUPPORTED_EXTENSION:\n 'Strategy \"{0}\" in the template file \"{1}\" doesn\\'t support extension \"{2}\".',\n STRATEGY_MISSING_FILE: 'Strategy \"{0}\" in the template file \"{1}\" is missing file \"{2}\".',\n INVALID_SNAPSHOT: 'Invalid Carson template render snapshot.',\n FAILED_RENDER: 'Template \"{0}\" rendering has failed.',\n },\n class CarsonTemplateErrorData {\n path?: string;\n },\n);\n"],
5
- "mappings": ";AAAA,SAAQ,iCAAgC;AAKjC,aAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,4BACE;AAAA,IACF,2BAA2B;AAAA,IAC3B,gCACE;AAAA,IACF,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB,eAAe;AAAA,EACjB;AAAA,EACA,MAAM,wBAAwB;AAAA,IAC5B;AAAA,EACF;AACF;",
5
+ "mappings": "AAAA,SAAQ,iCAAgC;AAKjC,aAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,4BACE;AAAA,IACF,2BAA2B;AAAA,IAC3B,gCACE;AAAA,IACF,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB,eAAe;AAAA,EACjB;AAAA,EACA,MAAM,wBAAwB;AAAA,IAC5B;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { z } from "zod";
3
2
  let strategyTemplateAttributeSchema = z.union([
4
3
  z.literal("create"),
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/template/TemplateAttributes.ts"],
4
4
  "sourcesContent": ["import {z} from 'zod';\n\n// TODO: add strategy 'none' so when you using template A that extends template B, you can overwrite template files to no-op\nlet strategyTemplateAttributeSchema = z.union([\n z.literal('create'),\n z.literal('ensure'),\n z.literal('overwrite'),\n z.literal('merge'),\n z.literal('check'),\n z.tuple([z.literal('insert'), z.string()]),\n]);\n\nexport const templateAttributesSchema = z\n .object({\n strategy: strategyTemplateAttributeSchema,\n })\n .strict();\n\nexport type TemplateAttributes = z.infer<typeof templateAttributesSchema>;\n"],
5
- "mappings": ";AAAA,SAAQ,SAAQ;AAGhB,IAAI,kCAAkC,EAAE,MAAM;AAAA,EAC5C,EAAE,QAAQ,QAAQ;AAAA,EAClB,EAAE,QAAQ,QAAQ;AAAA,EAClB,EAAE,QAAQ,WAAW;AAAA,EACrB,EAAE,QAAQ,OAAO;AAAA,EACjB,EAAE,QAAQ,OAAO;AAAA,EACjB,EAAE,MAAM,CAAC,EAAE,QAAQ,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAEM,aAAM,2BAA2B,EACrC,OAAO;AAAA,EACN,UAAU;AACZ,CAAC,EACA,OAAO;",
5
+ "mappings": "AAAA,SAAQ,SAAQ;AAGhB,IAAI,kCAAkC,EAAE,MAAM;AAAA,EAC5C,EAAE,QAAQ,QAAQ;AAAA,EAClB,EAAE,QAAQ,QAAQ;AAAA,EAClB,EAAE,QAAQ,WAAW;AAAA,EACrB,EAAE,QAAQ,OAAO;AAAA,EACjB,EAAE,QAAQ,OAAO;AAAA,EACjB,EAAE,MAAM,CAAC,EAAE,QAAQ,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAEM,aAAM,2BAA2B,EACrC,OAAO;AAAA,EACN,UAAU;AACZ,CAAC,EACA,OAAO;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { z } from "zod";
3
2
  import { Project } from "../workspace/Project.js";
4
3
  import { Workspace } from "../workspace/Workspace.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/template/TemplateData.ts"],
4
4
  "sourcesContent": ["import {z} from 'zod';\n\nimport {Project} from '../workspace/Project.js';\nimport {Workspace} from '../workspace/Workspace.js';\n\n// TODO: what about template data for workspace and template data for project, so we can get rid of the `.optional()`?\nexport const templateDataSchema = z\n .object({\n workspace: z.instanceof(Workspace).optional(),\n project: z.instanceof(Project).optional(),\n args: z.record(z.string(), z.unknown()).optional(),\n })\n .strict();\n\nexport type TemplateData = z.infer<typeof templateDataSchema>;\n"],
5
- "mappings": ";AAAA,SAAQ,SAAQ;AAEhB,SAAQ,eAAc;AACtB,SAAQ,iBAAgB;AAGjB,aAAM,qBAAqB,EAC/B,OAAO;AAAA,EACN,WAAW,EAAE,WAAW,SAAS,EAAE,SAAS;AAAA,EAC5C,SAAS,EAAE,WAAW,OAAO,EAAE,SAAS;AAAA,EACxC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AACnD,CAAC,EACA,OAAO;",
5
+ "mappings": "AAAA,SAAQ,SAAQ;AAEhB,SAAQ,eAAc;AACtB,SAAQ,iBAAgB;AAGjB,aAAM,qBAAqB,EAC/B,OAAO;AAAA,EACN,WAAW,EAAE,WAAW,SAAS,EAAE,SAAS;AAAA,EAC5C,SAAS,EAAE,WAAW,OAAO,EAAE,SAAS;AAAA,EACxC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AACnD,CAAC,EACA,OAAO;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1 @@
1
- "use strict";
2
1
  //# sourceMappingURL=TemplateRender.js.map
@@ -1,2 +1 @@
1
- "use strict";
2
1
  //# sourceMappingURL=TemplateRenders.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import fs from "fs-extra";
3
2
  import path from "node:path";
4
3
  import prettier from "prettier";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../source/template/applyTemplateRenders.ts"],
4
4
  "sourcesContent": ["import fs from 'fs-extra';\nimport path from 'node:path';\nimport prettier from 'prettier';\n\nimport {CARSON_CONFIG_DIRECTORY} from '../constants.js';\nimport {CarsonTemplateError} from './CarsonTemplateError.js';\nimport {\n createUsingTemplateRender,\n deleteUsingTemplateRenderSnapshot,\n insertUsingTemplateRender,\n loadTemplateRenderSnapshots,\n mergeUsingTemplateRender,\n overwriteUsingTemplateRender,\n saveTemplateRenderSnapshots,\n uninsertUsingTemplateRenderSnapshot,\n unmergeUsingTemplateRenderSnapshot,\n} from './internals.js';\nimport {type TemplateRenders} from './TemplateRenders.js';\n\nexport type ApplyTemplateRendersOptions = {\n templateRenders: TemplateRenders;\n targetPath: string;\n snapshotPath?: string | undefined;\n ignoreStrategies: string[];\n};\n\n/**\n * Applies rendered Carson template to a specified path, i.e. creates and updates files based on the result of rendering each Carson template file.\n */\nexport async function applyTemplateRenders({\n templateRenders,\n targetPath,\n snapshotPath,\n ignoreStrategies,\n}: ApplyTemplateRendersOptions) {\n // we need to clear Prettier cache, because we are changing file system\n await prettier.clearConfigCache();\n\n // first, we read the existing snapshots and use them to undo previous changes\n if (snapshotPath && (await fs.pathExists(snapshotPath))) {\n let templateRenderSnapshots = await loadTemplateRenderSnapshots(snapshotPath);\n\n for (let templateRenderSnapshot of templateRenderSnapshots) {\n let strategy =\n typeof templateRenderSnapshot.attributes.strategy === 'string' ?\n templateRenderSnapshot.attributes.strategy\n : templateRenderSnapshot.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'ensure') {\n await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath, {\n onlyDeleteWhenContentsMatch: true,\n });\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'overwrite') {\n await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'merge') {\n await unmergeUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);\n }\n\n if (templateRenderSnapshot.attributes.strategy[0] === 'insert') {\n await uninsertUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);\n }\n }\n }\n\n // second, we apply strategies that create files\n for (let templateRender of templateRenders) {\n let strategy =\n typeof templateRender.attributes.strategy === 'string' ?\n templateRender.attributes.strategy\n : templateRender.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRender.attributes.strategy === 'create') {\n await createUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'ensure') {\n let to = path.join(targetPath, templateRender.attributes.to);\n let doesToExist = await fs.pathExists(to);\n\n if (!doesToExist) {\n await createUsingTemplateRender(templateRender, targetPath);\n }\n }\n }\n\n // third, we apply strategies that change files\n for (let templateRender of templateRenders) {\n let strategy =\n typeof templateRender.attributes.strategy === 'string' ?\n templateRender.attributes.strategy\n : templateRender.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRender.attributes.strategy === 'overwrite') {\n await overwriteUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'merge') {\n await mergeUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy[0] === 'insert') {\n await insertUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'check') {\n let to = path.join(targetPath, templateRender.attributes.to);\n let doesToExist = await fs.pathExists(to);\n\n if (!doesToExist) {\n throw new CarsonTemplateError('STRATEGY_MISSING_FILE', {\n messageParameters: [templateRender.attributes.strategy, templateRender.template.path, to],\n data: {\n path: to,\n },\n });\n }\n }\n }\n\n if (snapshotPath) {\n await fs.ensureDir(path.join(targetPath, CARSON_CONFIG_DIRECTORY));\n\n await saveTemplateRenderSnapshots(templateRenders, snapshotPath);\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { templateAttributesSchema as baseTemplateAttributesSchema } from "@jakubmazanec/template";
3
2
  import { z } from "zod";
4
3
  import { templateAttributesSchema } from "../TemplateAttributes.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/template/internals/TemplateRenderSnapshot.ts"],
4
4
  "sourcesContent": ["import {templateAttributesSchema as baseTemplateAttributesSchema} from '@jakubmazanec/template';\nimport {z} from 'zod';\n\nimport {templateAttributesSchema} from '../TemplateAttributes.js';\n\nexport const templateRenderSnapshotSchema = z.object({\n attributes: baseTemplateAttributesSchema.pick({to: true}).merge(templateAttributesSchema),\n content: z.string().optional(),\n});\n\nexport type TemplateRenderSnapshot = z.infer<typeof templateRenderSnapshotSchema>;\n"],
5
- "mappings": ";AAAA,SAAQ,4BAA4B,oCAAmC;AACvE,SAAQ,SAAQ;AAEhB,SAAQ,gCAA+B;AAEhC,aAAM,+BAA+B,EAAE,OAAO;AAAA,EACnD,YAAY,6BAA6B,KAAK,EAAC,IAAI,KAAI,CAAC,EAAE,MAAM,wBAAwB;AAAA,EACxF,SAAS,EAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;",
5
+ "mappings": "AAAA,SAAQ,4BAA4B,oCAAmC;AACvE,SAAQ,SAAQ;AAEhB,SAAQ,gCAA+B;AAEhC,aAAM,+BAA+B,EAAE,OAAO;AAAA,EACnD,YAAY,6BAA6B,KAAK,EAAC,IAAI,KAAI,CAAC,EAAE,MAAM,wBAAwB;AAAA,EACxF,SAAS,EAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { templateRenderSnapshotSchema } from "./TemplateRenderSnapshot.js";
3
2
  export const templateRenderSnapshotsSchema = templateRenderSnapshotSchema.array();
4
3
  //# sourceMappingURL=TemplateRenderSnapshots.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../source/template/internals/TemplateRenderSnapshots.ts"],
4
4
  "sourcesContent": ["import {type z} from 'zod';\n\nimport {templateRenderSnapshotSchema} from './TemplateRenderSnapshot.js';\n\nexport const templateRenderSnapshotsSchema = templateRenderSnapshotSchema.array();\n\nexport type TemplateRenderSnapshots = z.infer<typeof templateRenderSnapshotsSchema>;\n"],
5
- "mappings": ";AAEA,SAAQ,oCAAmC;AAEpC,aAAM,gCAAgC,6BAA6B,MAAM;",
5
+ "mappings": "AAEA,SAAQ,oCAAmC;AAEpC,aAAM,gCAAgC,6BAA6B,MAAM;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import fs from "fs-extra";
3
2
  import json from "json5";
4
3
  import path from "node:path";