create-typescript-app 1.76.0 → 1.77.1

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 (285) hide show
  1. package/README.md +1 -1
  2. package/lib/bin/promptForMode.js +2 -1
  3. package/lib/bin/promptForMode.js.map +1 -1
  4. package/lib/create/createWithOptions.d.ts +3 -4
  5. package/lib/create/createWithOptions.js +19 -12
  6. package/lib/create/createWithOptions.js.map +1 -1
  7. package/lib/index.d.ts +45 -0
  8. package/lib/index.js +5 -0
  9. package/lib/index.js.map +1 -1
  10. package/lib/initialize/initializeWithOptions.d.ts +3 -4
  11. package/lib/initialize/initializeWithOptions.js +4 -4
  12. package/lib/initialize/initializeWithOptions.js.map +1 -1
  13. package/lib/migrate/migrateWithOptions.d.ts +3 -4
  14. package/lib/migrate/migrateWithOptions.js +8 -5
  15. package/lib/migrate/migrateWithOptions.js.map +1 -1
  16. package/lib/next/base.d.ts +101 -0
  17. package/lib/next/base.js +144 -0
  18. package/lib/next/base.js.map +1 -0
  19. package/lib/next/blocks/blockAllContributors.d.ts +48 -0
  20. package/lib/next/blocks/blockAllContributors.js +60 -0
  21. package/lib/next/blocks/blockAllContributors.js.map +1 -0
  22. package/lib/next/blocks/blockAreTheTypesWrong.d.ts +48 -0
  23. package/lib/next/blocks/blockAreTheTypesWrong.js +29 -0
  24. package/lib/next/blocks/blockAreTheTypesWrong.js.map +1 -0
  25. package/lib/next/blocks/blockCSpell.d.ts +51 -0
  26. package/lib/next/blocks/blockCSpell.js +72 -0
  27. package/lib/next/blocks/blockCSpell.js.map +1 -0
  28. package/lib/next/blocks/blockContributingDocs.d.ts +48 -0
  29. package/lib/next/blocks/blockContributingDocs.js +127 -0
  30. package/lib/next/blocks/blockContributingDocs.js.map +1 -0
  31. package/lib/next/blocks/blockContributorCovenant.d.ts +48 -0
  32. package/lib/next/blocks/blockContributorCovenant.js +162 -0
  33. package/lib/next/blocks/blockContributorCovenant.js.map +1 -0
  34. package/lib/next/blocks/blockDevelopmentDocs.d.ts +62 -0
  35. package/lib/next/blocks/blockDevelopmentDocs.js +92 -0
  36. package/lib/next/blocks/blockDevelopmentDocs.js.map +1 -0
  37. package/lib/next/blocks/blockESLint.d.ts +73 -0
  38. package/lib/next/blocks/blockESLint.js +242 -0
  39. package/lib/next/blocks/blockESLint.js.map +1 -0
  40. package/lib/next/blocks/blockESLintComments.d.ts +48 -0
  41. package/lib/next/blocks/blockESLintComments.js +26 -0
  42. package/lib/next/blocks/blockESLintComments.js.map +1 -0
  43. package/lib/next/blocks/blockESLintJSDoc.d.ts +48 -0
  44. package/lib/next/blocks/blockESLintJSDoc.js +25 -0
  45. package/lib/next/blocks/blockESLintJSDoc.js.map +1 -0
  46. package/lib/next/blocks/blockESLintJSONC.d.ts +48 -0
  47. package/lib/next/blocks/blockESLintJSONC.js +21 -0
  48. package/lib/next/blocks/blockESLintJSONC.js.map +1 -0
  49. package/lib/next/blocks/blockESLintMarkdown.d.ts +48 -0
  50. package/lib/next/blocks/blockESLintMarkdown.js +27 -0
  51. package/lib/next/blocks/blockESLintMarkdown.js.map +1 -0
  52. package/lib/next/blocks/blockESLintMoreStyling.d.ts +48 -0
  53. package/lib/next/blocks/blockESLintMoreStyling.js +34 -0
  54. package/lib/next/blocks/blockESLintMoreStyling.js.map +1 -0
  55. package/lib/next/blocks/blockESLintNode.d.ts +48 -0
  56. package/lib/next/blocks/blockESLintNode.js +33 -0
  57. package/lib/next/blocks/blockESLintNode.js.map +1 -0
  58. package/lib/next/blocks/blockESLintPackageJson.d.ts +48 -0
  59. package/lib/next/blocks/blockESLintPackageJson.js +26 -0
  60. package/lib/next/blocks/blockESLintPackageJson.js.map +1 -0
  61. package/lib/next/blocks/blockESLintPerfectionist.d.ts +48 -0
  62. package/lib/next/blocks/blockESLintPerfectionist.js +32 -0
  63. package/lib/next/blocks/blockESLintPerfectionist.js.map +1 -0
  64. package/lib/next/blocks/blockESLintRegexp.d.ts +48 -0
  65. package/lib/next/blocks/blockESLintRegexp.js +23 -0
  66. package/lib/next/blocks/blockESLintRegexp.js.map +1 -0
  67. package/lib/next/blocks/blockESLintYML.d.ts +48 -0
  68. package/lib/next/blocks/blockESLintYML.js +46 -0
  69. package/lib/next/blocks/blockESLintYML.js.map +1 -0
  70. package/lib/next/blocks/blockExampleFiles.d.ts +50 -0
  71. package/lib/next/blocks/blockExampleFiles.js +25 -0
  72. package/lib/next/blocks/blockExampleFiles.js.map +1 -0
  73. package/lib/next/blocks/blockFunding.d.ts +48 -0
  74. package/lib/next/blocks/blockFunding.js +20 -0
  75. package/lib/next/blocks/blockFunding.js.map +1 -0
  76. package/lib/next/blocks/blockGitHubActionsCI.d.ts +60 -0
  77. package/lib/next/blocks/blockGitHubActionsCI.js +133 -0
  78. package/lib/next/blocks/blockGitHubActionsCI.js.map +1 -0
  79. package/lib/next/blocks/blockGitHubIssueTemplates.d.ts +48 -0
  80. package/lib/next/blocks/blockGitHubIssueTemplates.js +217 -0
  81. package/lib/next/blocks/blockGitHubIssueTemplates.js.map +1 -0
  82. package/lib/next/blocks/blockGitHubPRTemplate.d.ts +48 -0
  83. package/lib/next/blocks/blockGitHubPRTemplate.js +32 -0
  84. package/lib/next/blocks/blockGitHubPRTemplate.js.map +1 -0
  85. package/lib/next/blocks/blockGitignore.d.ts +50 -0
  86. package/lib/next/blocks/blockGitignore.js +23 -0
  87. package/lib/next/blocks/blockGitignore.js.map +1 -0
  88. package/lib/next/blocks/blockKnip.d.ts +48 -0
  89. package/lib/next/blocks/blockKnip.js +58 -0
  90. package/lib/next/blocks/blockKnip.js.map +1 -0
  91. package/lib/next/blocks/blockMITLicense.d.ts +48 -0
  92. package/lib/next/blocks/blockMITLicense.js +46 -0
  93. package/lib/next/blocks/blockMITLicense.js.map +1 -0
  94. package/lib/next/blocks/blockMarkdownlint.d.ts +50 -0
  95. package/lib/next/blocks/blockMarkdownlint.js +77 -0
  96. package/lib/next/blocks/blockMarkdownlint.js.map +1 -0
  97. package/lib/next/blocks/blockNvmrc.d.ts +48 -0
  98. package/lib/next/blocks/blockNvmrc.js +26 -0
  99. package/lib/next/blocks/blockNvmrc.js.map +1 -0
  100. package/lib/next/blocks/blockPRCompliance.d.ts +48 -0
  101. package/lib/next/blocks/blockPRCompliance.js +48 -0
  102. package/lib/next/blocks/blockPRCompliance.js.map +1 -0
  103. package/lib/next/blocks/blockPackageJson.d.ts +57 -0
  104. package/lib/next/blocks/blockPackageJson.js +92 -0
  105. package/lib/next/blocks/blockPackageJson.js.map +1 -0
  106. package/lib/next/blocks/blockPnpmDedupe.d.ts +48 -0
  107. package/lib/next/blocks/blockPnpmDedupe.js +46 -0
  108. package/lib/next/blocks/blockPnpmDedupe.js.map +1 -0
  109. package/lib/next/blocks/blockPrettier.d.ts +57 -0
  110. package/lib/next/blocks/blockPrettier.js +114 -0
  111. package/lib/next/blocks/blockPrettier.js.map +1 -0
  112. package/lib/next/blocks/blockPrettierPluginCurly.d.ts +48 -0
  113. package/lib/next/blocks/blockPrettierPluginCurly.js +20 -0
  114. package/lib/next/blocks/blockPrettierPluginCurly.js.map +1 -0
  115. package/lib/next/blocks/blockPrettierPluginPackageJson.d.ts +48 -0
  116. package/lib/next/blocks/blockPrettierPluginPackageJson.js +20 -0
  117. package/lib/next/blocks/blockPrettierPluginPackageJson.js.map +1 -0
  118. package/lib/next/blocks/blockPrettierPluginSh.d.ts +48 -0
  119. package/lib/next/blocks/blockPrettierPluginSh.js +20 -0
  120. package/lib/next/blocks/blockPrettierPluginSh.js.map +1 -0
  121. package/lib/next/blocks/blockREADME.d.ts +50 -0
  122. package/lib/next/blocks/blockREADME.js +63 -0
  123. package/lib/next/blocks/blockREADME.js.map +1 -0
  124. package/lib/next/blocks/blockReleaseIt.d.ts +48 -0
  125. package/lib/next/blocks/blockReleaseIt.js +131 -0
  126. package/lib/next/blocks/blockReleaseIt.js.map +1 -0
  127. package/lib/next/blocks/blockRenovate.d.ts +48 -0
  128. package/lib/next/blocks/blockRenovate.js +34 -0
  129. package/lib/next/blocks/blockRenovate.js.map +1 -0
  130. package/lib/next/blocks/blockRepositoryBranchProtection.d.ts +50 -0
  131. package/lib/next/blocks/blockRepositoryBranchProtection.js +49 -0
  132. package/lib/next/blocks/blockRepositoryBranchProtection.js.map +1 -0
  133. package/lib/next/blocks/blockRepositoryLabels.d.ts +48 -0
  134. package/lib/next/blocks/blockRepositoryLabels.js +18 -0
  135. package/lib/next/blocks/blockRepositoryLabels.js.map +1 -0
  136. package/lib/next/blocks/blockRepositorySettings.d.ts +48 -0
  137. package/lib/next/blocks/blockRepositorySettings.js +42 -0
  138. package/lib/next/blocks/blockRepositorySettings.js.map +1 -0
  139. package/lib/next/blocks/blockSecurityDocs.d.ts +48 -0
  140. package/lib/next/blocks/blockSecurityDocs.js +28 -0
  141. package/lib/next/blocks/blockSecurityDocs.js.map +1 -0
  142. package/lib/next/blocks/blockTSup.d.ts +50 -0
  143. package/lib/next/blocks/blockTSup.js +95 -0
  144. package/lib/next/blocks/blockTSup.js.map +1 -0
  145. package/lib/next/blocks/blockTemplatedBy.d.ts +48 -0
  146. package/lib/next/blocks/blockTemplatedBy.js +30 -0
  147. package/lib/next/blocks/blockTemplatedBy.js.map +1 -0
  148. package/lib/next/blocks/blockTypeScript.d.ts +48 -0
  149. package/lib/next/blocks/blockTypeScript.js +137 -0
  150. package/lib/next/blocks/blockTypeScript.js.map +1 -0
  151. package/lib/next/blocks/blockVSCode.d.ts +57 -0
  152. package/lib/next/blocks/blockVSCode.js +91 -0
  153. package/lib/next/blocks/blockVSCode.js.map +1 -0
  154. package/lib/next/blocks/blockVitest.d.ts +55 -0
  155. package/lib/next/blocks/blockVitest.js +217 -0
  156. package/lib/next/blocks/blockVitest.js.map +1 -0
  157. package/lib/next/blocks/index.d.ts +43 -0
  158. package/lib/next/blocks/index.js +43 -0
  159. package/lib/next/blocks/index.js.map +1 -0
  160. package/lib/next/blocks/options.fakes.d.ts +13 -0
  161. package/lib/next/blocks/options.fakes.js +15 -0
  162. package/lib/next/blocks/options.fakes.js.map +1 -0
  163. package/lib/next/blocks/packageData.d.ts +5 -0
  164. package/lib/next/blocks/packageData.js +25 -0
  165. package/lib/next/blocks/packageData.js.map +1 -0
  166. package/lib/next/blocks/phases.d.ts +9 -0
  167. package/lib/next/blocks/phases.js +11 -0
  168. package/lib/next/blocks/phases.js.map +1 -0
  169. package/lib/next/presetCommon.d.ts +99 -0
  170. package/lib/next/presetCommon.js +21 -0
  171. package/lib/next/presetCommon.js.map +1 -0
  172. package/lib/next/presetEverything.d.ts +99 -0
  173. package/lib/next/presetEverything.js +59 -0
  174. package/lib/next/presetEverything.js.map +1 -0
  175. package/lib/next/presetMinimal.d.ts +99 -0
  176. package/lib/next/presetMinimal.js +53 -0
  177. package/lib/next/presetMinimal.js.map +1 -0
  178. package/lib/next/runCreateEnginePreset.d.ts +7 -0
  179. package/lib/next/runCreateEnginePreset.js +20 -0
  180. package/lib/next/runCreateEnginePreset.js.map +1 -0
  181. package/lib/next/template.d.ts +99 -0
  182. package/lib/next/template.js +21 -0
  183. package/lib/next/template.js.map +1 -0
  184. package/lib/next/utils/sortObject.d.ts +5 -0
  185. package/lib/next/utils/sortObject.js +9 -0
  186. package/lib/next/utils/sortObject.js.map +1 -0
  187. package/lib/next/utils/swallowError.d.ts +3 -0
  188. package/lib/next/utils/swallowError.js +7 -0
  189. package/lib/next/utils/swallowError.js.map +1 -0
  190. package/lib/shared/isUsingCreateEngine.d.ts +3 -0
  191. package/lib/shared/isUsingCreateEngine.js +7 -0
  192. package/lib/shared/isUsingCreateEngine.js.map +1 -0
  193. package/lib/shared/options/createOptionDefaults/index.d.ts +2 -4
  194. package/lib/shared/options/createOptionDefaults/index.js +4 -13
  195. package/lib/shared/options/createOptionDefaults/index.js.map +1 -1
  196. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js +4 -1
  197. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js.map +1 -1
  198. package/lib/shared/options/createOptionDefaults/readEmails.d.ts +11 -0
  199. package/lib/shared/options/createOptionDefaults/readEmails.js +14 -0
  200. package/lib/shared/options/createOptionDefaults/readEmails.js.map +1 -0
  201. package/lib/shared/options/createOptionDefaults/readFunding.d.ts +3 -0
  202. package/lib/shared/options/createOptionDefaults/readFunding.js +11 -0
  203. package/lib/shared/options/createOptionDefaults/readFunding.js.map +1 -0
  204. package/lib/shared/options/createOptionDefaults/readGuide.d.ts +6 -0
  205. package/lib/shared/options/createOptionDefaults/readGuide.js +18 -0
  206. package/lib/shared/options/createOptionDefaults/readGuide.js.map +1 -0
  207. package/lib/shared/options/ensureRepositoryExists.d.ts +3 -4
  208. package/lib/shared/options/ensureRepositoryExists.js +9 -8
  209. package/lib/shared/options/ensureRepositoryExists.js.map +1 -1
  210. package/lib/shared/options/readOptions.d.ts +5 -6
  211. package/lib/shared/options/readOptions.js +7 -4
  212. package/lib/shared/options/readOptions.js.map +1 -1
  213. package/lib/shared/types.d.ts +7 -0
  214. package/lib/steps/addOwnerAsAllContributor.js.map +1 -1
  215. package/lib/steps/clearUnnecessaryFiles.js +0 -1
  216. package/lib/steps/clearUnnecessaryFiles.js.map +1 -1
  217. package/lib/steps/finalizeDependencies.js +5 -7
  218. package/lib/steps/finalizeDependencies.js.map +1 -1
  219. package/lib/steps/initializeGitHubRepository/index.js +7 -2
  220. package/lib/steps/initializeGitHubRepository/index.js.map +1 -1
  221. package/lib/steps/initializeGitHubRepository/outcomeLabels.d.ts +13 -0
  222. package/lib/steps/initializeGitHubRepository/{labels/outcomeLabels.js → outcomeLabels.js} +4 -1
  223. package/lib/steps/initializeGitHubRepository/outcomeLabels.js.map +1 -0
  224. package/lib/steps/removeSetupScripts.js +9 -3
  225. package/lib/steps/removeSetupScripts.js.map +1 -1
  226. package/lib/steps/uninstallPackages.js +14 -5
  227. package/lib/steps/uninstallPackages.js.map +1 -1
  228. package/lib/steps/writing/creation/createCSpellConfig.d.ts +7 -0
  229. package/lib/steps/writing/creation/createCSpellConfig.js +27 -0
  230. package/lib/steps/writing/creation/createCSpellConfig.js.map +1 -0
  231. package/lib/steps/writing/creation/createDotGitignore.js +7 -5
  232. package/lib/steps/writing/creation/createDotGitignore.js.map +1 -1
  233. package/lib/steps/writing/creation/createESLintConfig.js +1 -3
  234. package/lib/steps/writing/creation/createESLintConfig.js.map +1 -1
  235. package/lib/steps/writing/creation/createTsupConfig.js +10 -10
  236. package/lib/steps/writing/creation/createTsupConfig.js.map +1 -1
  237. package/lib/steps/writing/creation/dotGitHub/createDevelopment/index.js +31 -16
  238. package/lib/steps/writing/creation/dotGitHub/createDevelopment/index.js.map +1 -1
  239. package/lib/steps/writing/creation/dotGitHub/createDevelopment/splitIntoSections.js +1 -1
  240. package/lib/steps/writing/creation/dotGitHub/createDevelopment/splitIntoSections.js.map +1 -1
  241. package/lib/steps/writing/creation/dotGitHub/createDotGitHubFiles.js +5 -5
  242. package/lib/steps/writing/creation/dotGitHub/createDotGitHubFiles.js.map +1 -1
  243. package/lib/steps/writing/creation/dotGitHub/createMultiWorkflowFile.d.ts +3 -1
  244. package/lib/steps/writing/creation/dotGitHub/createMultiWorkflowFile.js.map +1 -1
  245. package/lib/steps/writing/creation/dotGitHub/createWorkflows.js +5 -1
  246. package/lib/steps/writing/creation/dotGitHub/createWorkflows.js.map +1 -1
  247. package/lib/steps/writing/creation/formatters/formatIgnoreFile.d.ts +1 -1
  248. package/lib/steps/writing/creation/formatters/formatIgnoreFile.js +1 -1
  249. package/lib/steps/writing/creation/formatters/formatIgnoreFile.js.map +1 -1
  250. package/lib/steps/writing/creation/formatters/formatTypeScript.js +1 -1
  251. package/lib/steps/writing/creation/formatters/formatTypeScript.js.map +1 -1
  252. package/lib/steps/writing/creation/formatters/formatYaml.js +3 -1
  253. package/lib/steps/writing/creation/formatters/formatYaml.js.map +1 -1
  254. package/lib/steps/writing/creation/index.d.ts +1 -1
  255. package/lib/steps/writing/creation/index.js +48 -1
  256. package/lib/steps/writing/creation/index.js.map +1 -1
  257. package/lib/steps/writing/creation/rootFiles.js +4 -14
  258. package/lib/steps/writing/creation/rootFiles.js.map +1 -1
  259. package/lib/steps/writing/creation/writeAllContributorsRC.js +1 -9
  260. package/lib/steps/writing/creation/writeAllContributorsRC.js.map +1 -1
  261. package/lib/steps/writing/creation/writePackageJson.js +69 -62
  262. package/lib/steps/writing/creation/writePackageJson.js.map +1 -1
  263. package/lib/steps/writing/types.d.ts +1 -1
  264. package/lib/steps/writing/writeStructure.js +9 -1
  265. package/lib/steps/writing/writeStructure.js.map +1 -1
  266. package/lib/steps/writing/writeStructureWorker.js +1 -1
  267. package/lib/steps/writing/writeStructureWorker.js.map +1 -1
  268. package/package.json +35 -28
  269. package/lib/shared/options/createOptionDefaults/readDefaultsFromDevelopment.d.ts +0 -8
  270. package/lib/shared/options/createOptionDefaults/readDefaultsFromDevelopment.js +0 -22
  271. package/lib/shared/options/createOptionDefaults/readDefaultsFromDevelopment.js.map +0 -1
  272. package/lib/shared/options/getGitHub.d.ts +0 -9
  273. package/lib/shared/options/getGitHub.js +0 -17
  274. package/lib/shared/options/getGitHub.js.map +0 -1
  275. package/lib/steps/detectExistingContributors.d.ts +0 -7
  276. package/lib/steps/detectExistingContributors.js +0 -19
  277. package/lib/steps/detectExistingContributors.js.map +0 -1
  278. package/lib/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.d.ts +0 -8
  279. package/lib/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.js +0 -14
  280. package/lib/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.js.map +0 -1
  281. package/lib/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.d.ts +0 -8
  282. package/lib/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.js +0 -63
  283. package/lib/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.js.map +0 -1
  284. package/lib/steps/initializeGitHubRepository/labels/outcomeLabels.d.ts +0 -7
  285. package/lib/steps/initializeGitHubRepository/labels/outcomeLabels.js.map +0 -1
@@ -6,18 +6,10 @@ async function writeAllContributorsRC(options) {
6
6
  );
7
7
  return await formatJson({
8
8
  badgeTemplate: ' <a href="#contributors" target="_blank"><img alt="\u{1F46A} All Contributors: <%= contributors.length %>" src="https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-<%= contributors.length %>-21bb42.svg" /></a>',
9
- commit: false,
10
- commitConvention: "angular",
11
- commitType: "docs",
12
9
  contributors: existing?.contributors ?? [],
13
- contributorsPerLine: 7,
14
10
  contributorsSortAlphabetically: true,
15
- files: ["README.md"],
16
- imageSize: 100,
17
11
  projectName: options.repository,
18
- projectOwner: options.owner,
19
- repoHost: "https://github.com",
20
- repoType: "github"
12
+ projectOwner: options.owner
21
13
  });
22
14
  }
23
15
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/steps/writing/creation/writeAllContributorsRC.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { AllContributorsData, Options } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nexport async function writeAllContributorsRC(options: Options) {\n\tconst existing = (await readFileSafeAsJson(\n\t\t\".all-contributorsrc\",\n\t)) as AllContributorsData | null;\n\n\treturn await formatJson({\n\t\tbadgeTemplate:\n\t\t\t'\t<a href=\"#contributors\" target=\"_blank\"><img alt=\"👪 All Contributors: <%= contributors.length %>\" src=\"https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-<%= contributors.length %>-21bb42.svg\" /></a>',\n\t\tcommit: false,\n\t\tcommitConvention: \"angular\",\n\t\tcommitType: \"docs\",\n\t\tcontributors: existing?.contributors ?? [],\n\t\tcontributorsPerLine: 7,\n\t\tcontributorsSortAlphabetically: true,\n\t\tfiles: [\"README.md\"],\n\t\timageSize: 100,\n\t\tprojectName: options.repository,\n\t\tprojectOwner: options.owner,\n\t\trepoHost: \"https://github.com\",\n\t\trepoType: \"github\",\n\t});\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,eAAsB,uBAAuB,SAAkB;AAC9D,QAAM,WAAY,MAAM;AAAA,IACvB;AAAA,EACD;AAEA,SAAO,MAAM,WAAW;AAAA,IACvB,eACC;AAAA,IACD,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,cAAc,UAAU,gBAAgB,CAAC;AAAA,IACzC,qBAAqB;AAAA,IACrB,gCAAgC;AAAA,IAChC,OAAO,CAAC,WAAW;AAAA,IACnB,WAAW;AAAA,IACX,aAAa,QAAQ;AAAA,IACrB,cAAc,QAAQ;AAAA,IACtB,UAAU;AAAA,IACV,UAAU;AAAA,EACX,CAAC;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/steps/writing/creation/writeAllContributorsRC.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { AllContributorsData, Options } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nexport async function writeAllContributorsRC(options: Options) {\n\tconst existing = (await readFileSafeAsJson(\n\t\t\".all-contributorsrc\",\n\t)) as AllContributorsData | null;\n\n\treturn await formatJson({\n\t\tbadgeTemplate:\n\t\t\t'\t<a href=\"#contributors\" target=\"_blank\"><img alt=\"👪 All Contributors: <%= contributors.length %>\" src=\"https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-<%= contributors.length %>-21bb42.svg\" /></a>',\n\t\tcontributors: existing?.contributors ?? [],\n\t\tcontributorsSortAlphabetically: true,\n\t\tprojectName: options.repository,\n\t\tprojectOwner: options.owner,\n\t});\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,eAAsB,uBAAuB,SAAkB;AAC9D,QAAM,WAAY,MAAM;AAAA,IACvB;AAAA,EACD;AAEA,SAAO,MAAM,WAAW;AAAA,IACvB,eACC;AAAA,IACD,cAAc,UAAU,gBAAgB,CAAC;AAAA,IACzC,gCAAgC;AAAA,IAChC,aAAa,QAAQ;AAAA,IACrB,cAAc,QAAQ;AAAA,EACvB,CAAC;AACF;","names":[]}
@@ -1,3 +1,4 @@
1
+ import { sortPackageJson } from "sort-package-json";
1
2
  import { readFileSafeAsJson } from "../../../shared/readFileSafeAsJson.js";
2
3
  import { formatJson } from "./formatters/formatJson.js";
3
4
  const devDependenciesToRemove = [
@@ -30,73 +31,79 @@ async function writePackageJson(options) {
30
31
  const existingPackageJson = await readFileSafeAsJson(
31
32
  "./package.json"
32
33
  ) ?? {};
33
- return await formatJson({
34
- // If we didn't already have a version, set it to 0.0.0
35
- version: "0.0.0",
36
- // To start, copy over all existing package fields (e.g. "dependencies")
37
- ...existingPackageJson,
38
- author: { email: options.email.npm, name: options.author },
39
- bin: options.bin,
40
- description: options.description,
41
- keywords: options.keywords?.length ? options.keywords.flatMap((keyword) => keyword.split(/ /)) : void 0,
42
- // We copy all existing dev dependencies except those we know are not used anymore
43
- devDependencies: copyDevDependencies(existingPackageJson),
44
- // Remove fields we know we don't want, such as old or redundant configs
45
- eslintConfig: void 0,
46
- husky: void 0,
47
- jest: void 0,
48
- mocha: void 0,
49
- prettierConfig: void 0,
50
- types: void 0,
51
- // The rest of the fields are ones we know from our template
52
- engines: {
53
- node: ">=18.3.0"
54
- },
55
- files: [
56
- options.bin?.replace(/^\.\//, ""),
57
- "lib/",
58
- "package.json",
59
- "LICENSE.md",
60
- "README.md"
61
- ].filter(Boolean),
62
- license: "MIT",
63
- "lint-staged": {
64
- "*": "prettier --ignore-unknown --write"
65
- },
66
- main: "./lib/index.js",
67
- name: options.repository,
68
- publishConfig: {
69
- provenance: true
70
- },
71
- repository: {
72
- type: "git",
73
- url: `https://github.com/${options.owner}/${options.repository}`
74
- },
75
- scripts: {
76
- ...existingPackageJson.scripts,
77
- ...!options.excludeBuild && {
78
- build: "tsup"
34
+ return sortPackageJson(
35
+ await formatJson({
36
+ // If we didn't already have a version, set it to 0.0.0
37
+ version: "0.0.0",
38
+ // To start, copy over all existing package fields (e.g. "dependencies")
39
+ ...existingPackageJson,
40
+ author: { email: options.email.npm, name: options.author },
41
+ bin: options.bin,
42
+ description: options.description,
43
+ keywords: options.keywords?.length ? options.keywords.flatMap((keyword) => keyword.split(/ /)) : void 0,
44
+ // We copy all existing dev dependencies except those we know are not used anymore
45
+ devDependencies: {
46
+ ...copyDevDependencies(existingPackageJson),
47
+ // prettier is a special case of being switched to a devDependency
48
+ prettier: existingPackageJson.dependencies?.prettier
79
49
  },
80
- format: "prettier .",
81
- lint: "eslint . --max-warnings 0",
82
- ...!options.excludeLintKnip && {
83
- "lint:knip": "knip"
50
+ // Remove fields we know we don't want, such as old or redundant configs
51
+ eslintConfig: void 0,
52
+ husky: void 0,
53
+ jest: void 0,
54
+ mocha: void 0,
55
+ prettierConfig: void 0,
56
+ types: void 0,
57
+ // The rest of the fields are ones we know from our template
58
+ engines: {
59
+ node: ">=18.3.0"
84
60
  },
85
- ...!options.excludeLintMd && {
86
- "lint:md": 'markdownlint "**/*.md" ".github/**/*.md" --rules sentences-per-line'
61
+ files: [
62
+ options.bin?.replace(/^\.\//, ""),
63
+ "lib/",
64
+ "package.json",
65
+ "LICENSE.md",
66
+ "README.md"
67
+ ].filter(Boolean).sort(),
68
+ license: "MIT",
69
+ "lint-staged": {
70
+ "*": "prettier --ignore-unknown --write"
87
71
  },
88
- ...!options.excludeLintPackages && {
89
- "lint:packages": "pnpm dedupe --check"
72
+ main: "./lib/index.js",
73
+ name: options.repository,
74
+ publishConfig: {
75
+ provenance: true
90
76
  },
91
- ...!options.excludeLintSpelling && {
92
- "lint:spelling": 'cspell "**" ".github/**/*"'
77
+ repository: {
78
+ type: "git",
79
+ url: `https://github.com/${options.owner}/${options.repository}`
93
80
  },
94
- prepare: "husky",
95
- ...!options.excludeReleases && { test: "vitest" },
96
- tsc: "tsc"
97
- },
98
- type: "module"
99
- });
81
+ scripts: {
82
+ ...existingPackageJson.scripts,
83
+ ...!options.excludeBuild && {
84
+ build: "tsup"
85
+ },
86
+ format: "prettier .",
87
+ lint: "eslint . --max-warnings 0",
88
+ ...!options.excludeLintKnip && {
89
+ "lint:knip": "knip"
90
+ },
91
+ ...!options.excludeLintMd && {
92
+ "lint:md": 'markdownlint "**/*.md" ".github/**/*.md" --rules sentences-per-line'
93
+ },
94
+ ...!options.excludeLintPackages && {
95
+ "lint:packages": "pnpm dedupe --check"
96
+ },
97
+ ...!options.excludeLintSpelling && {
98
+ "lint:spelling": 'cspell "**" ".github/**/*"'
99
+ },
100
+ prepare: "husky",
101
+ ...!options.excludeTests && { test: "vitest" },
102
+ tsc: "tsc"
103
+ },
104
+ type: "module"
105
+ })
106
+ );
100
107
  }
101
108
  function copyDevDependencies(existingPackageJson) {
102
109
  const devDependencies = "devDependencies" in existingPackageJson ? existingPackageJson.devDependencies : {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/steps/writing/creation/writePackageJson.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { Options, PartialPackageData } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nconst devDependenciesToRemove = [\n\t\"@babel/core\",\n\t\"@babel/preset-env\",\n\t\"@babel/preset-react\",\n\t\"@babel/preset-typescript\",\n\t\"@swc/jest\",\n\t\"@vitest/coverage-istanbul\",\n\t\"ava\",\n\t\"babel-jest\",\n\t\"commitlint\",\n\t\"cson-parser\",\n\t\"esbuild\",\n\t\"eslint-config-prettier\",\n\t\"eslint-plugin-import\",\n\t\"eslint-plugin-jest\",\n\t\"eslint-plugin-prettier\",\n\t\"eslint-plugin-simple-import-sort\",\n\t\"eslint-plugin-typescript-sort-keys\",\n\t\"jasmine\",\n\t\"jest\",\n\t\"mocha\",\n\t\"npm-run-all\",\n\t\"pnpm-deduplicate\",\n\t\"pretty-quick\",\n\t\"ts-jest\",\n];\n\nexport async function writePackageJson(options: Options) {\n\tconst existingPackageJson =\n\t\t((await readFileSafeAsJson(\n\t\t\t\"./package.json\",\n\t\t)) as null | PartialPackageData) ?? {};\n\n\treturn await formatJson({\n\t\t// If we didn't already have a version, set it to 0.0.0\n\t\tversion: \"0.0.0\",\n\n\t\t// To start, copy over all existing package fields (e.g. \"dependencies\")\n\t\t...existingPackageJson,\n\n\t\tauthor: { email: options.email.npm, name: options.author },\n\t\tbin: options.bin,\n\t\tdescription: options.description,\n\t\tkeywords: options.keywords?.length\n\t\t\t? options.keywords.flatMap((keyword) => keyword.split(/ /))\n\t\t\t: undefined,\n\n\t\t// We copy all existing dev dependencies except those we know are not used anymore\n\t\tdevDependencies: copyDevDependencies(existingPackageJson),\n\n\t\t// Remove fields we know we don't want, such as old or redundant configs\n\t\teslintConfig: undefined,\n\t\thusky: undefined,\n\t\tjest: undefined,\n\t\tmocha: undefined,\n\t\tprettierConfig: undefined,\n\t\ttypes: undefined,\n\n\t\t// The rest of the fields are ones we know from our template\n\t\tengines: {\n\t\t\tnode: \">=18.3.0\",\n\t\t},\n\t\tfiles: [\n\t\t\toptions.bin?.replace(/^\\.\\//, \"\"),\n\t\t\t\"lib/\",\n\t\t\t\"package.json\",\n\t\t\t\"LICENSE.md\",\n\t\t\t\"README.md\",\n\t\t].filter(Boolean),\n\t\tlicense: \"MIT\",\n\t\t\"lint-staged\": {\n\t\t\t\"*\": \"prettier --ignore-unknown --write\",\n\t\t},\n\t\tmain: \"./lib/index.js\",\n\t\tname: options.repository,\n\t\tpublishConfig: {\n\t\t\tprovenance: true,\n\t\t},\n\t\trepository: {\n\t\t\ttype: \"git\",\n\t\t\turl: `https://github.com/${options.owner}/${options.repository}`,\n\t\t},\n\t\tscripts: {\n\t\t\t...existingPackageJson.scripts,\n\t\t\t...(!options.excludeBuild && {\n\t\t\t\tbuild: \"tsup\",\n\t\t\t}),\n\t\t\tformat: \"prettier .\",\n\t\t\tlint: \"eslint . --max-warnings 0\",\n\t\t\t...(!options.excludeLintKnip && {\n\t\t\t\t\"lint:knip\": \"knip\",\n\t\t\t}),\n\t\t\t...(!options.excludeLintMd && {\n\t\t\t\t\"lint:md\":\n\t\t\t\t\t'markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line',\n\t\t\t}),\n\t\t\t...(!options.excludeLintPackages && {\n\t\t\t\t\"lint:packages\": \"pnpm dedupe --check\",\n\t\t\t}),\n\t\t\t...(!options.excludeLintSpelling && {\n\t\t\t\t\"lint:spelling\": 'cspell \"**\" \".github/**/*\"',\n\t\t\t}),\n\t\t\tprepare: \"husky\",\n\t\t\t...(!options.excludeReleases && { test: \"vitest\" }),\n\t\t\ttsc: \"tsc\",\n\t\t},\n\t\ttype: \"module\",\n\t});\n}\n\nfunction copyDevDependencies(existingPackageJson: object) {\n\tconst devDependencies =\n\t\t\"devDependencies\" in existingPackageJson\n\t\t\t? (existingPackageJson.devDependencies as Record<string, string>)\n\t\t\t: {};\n\n\tfor (const devDependencyToRemove of devDependenciesToRemove) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete devDependencies[devDependencyToRemove];\n\t}\n\n\treturn devDependencies;\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,MAAM,0BAA0B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,eAAsB,iBAAiB,SAAkB;AACxD,QAAM,sBACH,MAAM;AAAA,IACP;AAAA,EACD,KAAoC,CAAC;AAEtC,SAAO,MAAM,WAAW;AAAA;AAAA,IAEvB,SAAS;AAAA;AAAA,IAGT,GAAG;AAAA,IAEH,QAAQ,EAAE,OAAO,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO;AAAA,IACzD,KAAK,QAAQ;AAAA,IACb,aAAa,QAAQ;AAAA,IACrB,UAAU,QAAQ,UAAU,SACzB,QAAQ,SAAS,QAAQ,CAAC,YAAY,QAAQ,MAAM,GAAG,CAAC,IACxD;AAAA;AAAA,IAGH,iBAAiB,oBAAoB,mBAAmB;AAAA;AAAA,IAGxD,cAAc;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA,IAGP,SAAS;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,OAAO;AAAA,MACN,QAAQ,KAAK,QAAQ,SAAS,EAAE;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAE,OAAO,OAAO;AAAA,IAChB,SAAS;AAAA,IACT,eAAe;AAAA,MACd,KAAK;AAAA,IACN;AAAA,IACA,MAAM;AAAA,IACN,MAAM,QAAQ;AAAA,IACd,eAAe;AAAA,MACd,YAAY;AAAA,IACb;AAAA,IACA,YAAY;AAAA,MACX,MAAM;AAAA,MACN,KAAK,sBAAsB,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,IAC/D;AAAA,IACA,SAAS;AAAA,MACR,GAAG,oBAAoB;AAAA,MACvB,GAAI,CAAC,QAAQ,gBAAgB;AAAA,QAC5B,OAAO;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,GAAI,CAAC,QAAQ,mBAAmB;AAAA,QAC/B,aAAa;AAAA,MACd;AAAA,MACA,GAAI,CAAC,QAAQ,iBAAiB;AAAA,QAC7B,WACC;AAAA,MACF;AAAA,MACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,QACnC,iBAAiB;AAAA,MAClB;AAAA,MACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,QACnC,iBAAiB;AAAA,MAClB;AAAA,MACA,SAAS;AAAA,MACT,GAAI,CAAC,QAAQ,mBAAmB,EAAE,MAAM,SAAS;AAAA,MACjD,KAAK;AAAA,IACN;AAAA,IACA,MAAM;AAAA,EACP,CAAC;AACF;AAEA,SAAS,oBAAoB,qBAA6B;AACzD,QAAM,kBACL,qBAAqB,sBACjB,oBAAoB,kBACrB,CAAC;AAEL,aAAW,yBAAyB,yBAAyB;AAE5D,WAAO,gBAAgB,qBAAqB;AAAA,EAC7C;AAEA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../../src/steps/writing/creation/writePackageJson.ts"],"sourcesContent":["import { sortPackageJson } from \"sort-package-json\";\n\nimport { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { Options, PartialPackageData } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nconst devDependenciesToRemove = [\n\t\"@babel/core\",\n\t\"@babel/preset-env\",\n\t\"@babel/preset-react\",\n\t\"@babel/preset-typescript\",\n\t\"@swc/jest\",\n\t\"@vitest/coverage-istanbul\",\n\t\"ava\",\n\t\"babel-jest\",\n\t\"commitlint\",\n\t\"cson-parser\",\n\t\"esbuild\",\n\t\"eslint-config-prettier\",\n\t\"eslint-plugin-import\",\n\t\"eslint-plugin-jest\",\n\t\"eslint-plugin-prettier\",\n\t\"eslint-plugin-simple-import-sort\",\n\t\"eslint-plugin-typescript-sort-keys\",\n\t\"jasmine\",\n\t\"jest\",\n\t\"mocha\",\n\t\"npm-run-all\",\n\t\"pnpm-deduplicate\",\n\t\"pretty-quick\",\n\t\"ts-jest\",\n];\n\nexport async function writePackageJson(options: Options) {\n\tconst existingPackageJson =\n\t\t((await readFileSafeAsJson(\n\t\t\t\"./package.json\",\n\t\t)) as null | PartialPackageData) ?? {};\n\n\treturn sortPackageJson(\n\t\tawait formatJson({\n\t\t\t// If we didn't already have a version, set it to 0.0.0\n\t\t\tversion: \"0.0.0\",\n\n\t\t\t// To start, copy over all existing package fields (e.g. \"dependencies\")\n\t\t\t...existingPackageJson,\n\n\t\t\tauthor: { email: options.email.npm, name: options.author },\n\t\t\tbin: options.bin,\n\t\t\tdescription: options.description,\n\t\t\tkeywords: options.keywords?.length\n\t\t\t\t? options.keywords.flatMap((keyword) => keyword.split(/ /))\n\t\t\t\t: undefined,\n\n\t\t\t// We copy all existing dev dependencies except those we know are not used anymore\n\t\t\tdevDependencies: {\n\t\t\t\t...copyDevDependencies(existingPackageJson),\n\t\t\t\t// prettier is a special case of being switched to a devDependency\n\t\t\t\tprettier: existingPackageJson.dependencies?.prettier,\n\t\t\t},\n\n\t\t\t// Remove fields we know we don't want, such as old or redundant configs\n\t\t\teslintConfig: undefined,\n\t\t\thusky: undefined,\n\t\t\tjest: undefined,\n\t\t\tmocha: undefined,\n\t\t\tprettierConfig: undefined,\n\t\t\ttypes: undefined,\n\n\t\t\t// The rest of the fields are ones we know from our template\n\t\t\tengines: {\n\t\t\t\tnode: \">=18.3.0\",\n\t\t\t},\n\t\t\tfiles: [\n\t\t\t\toptions.bin?.replace(/^\\.\\//, \"\"),\n\t\t\t\t\"lib/\",\n\t\t\t\t\"package.json\",\n\t\t\t\t\"LICENSE.md\",\n\t\t\t\t\"README.md\",\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.sort(),\n\t\t\tlicense: \"MIT\",\n\t\t\t\"lint-staged\": {\n\t\t\t\t\"*\": \"prettier --ignore-unknown --write\",\n\t\t\t},\n\t\t\tmain: \"./lib/index.js\",\n\t\t\tname: options.repository,\n\t\t\tpublishConfig: {\n\t\t\t\tprovenance: true,\n\t\t\t},\n\t\t\trepository: {\n\t\t\t\ttype: \"git\",\n\t\t\t\turl: `https://github.com/${options.owner}/${options.repository}`,\n\t\t\t},\n\t\t\tscripts: {\n\t\t\t\t...existingPackageJson.scripts,\n\t\t\t\t...(!options.excludeBuild && {\n\t\t\t\t\tbuild: \"tsup\",\n\t\t\t\t}),\n\t\t\t\tformat: \"prettier .\",\n\t\t\t\tlint: \"eslint . --max-warnings 0\",\n\t\t\t\t...(!options.excludeLintKnip && {\n\t\t\t\t\t\"lint:knip\": \"knip\",\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintMd && {\n\t\t\t\t\t\"lint:md\":\n\t\t\t\t\t\t'markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line',\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintPackages && {\n\t\t\t\t\t\"lint:packages\": \"pnpm dedupe --check\",\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintSpelling && {\n\t\t\t\t\t\"lint:spelling\": 'cspell \"**\" \".github/**/*\"',\n\t\t\t\t}),\n\t\t\t\tprepare: \"husky\",\n\t\t\t\t...(!options.excludeTests && { test: \"vitest\" }),\n\t\t\t\ttsc: \"tsc\",\n\t\t\t},\n\t\t\ttype: \"module\",\n\t\t}),\n\t);\n}\n\nfunction copyDevDependencies(existingPackageJson: object) {\n\tconst devDependencies =\n\t\t\"devDependencies\" in existingPackageJson\n\t\t\t? (existingPackageJson.devDependencies as Record<string, string>)\n\t\t\t: {};\n\n\tfor (const devDependencyToRemove of devDependenciesToRemove) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete devDependencies[devDependencyToRemove];\n\t}\n\n\treturn devDependencies;\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAEhC,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,MAAM,0BAA0B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,eAAsB,iBAAiB,SAAkB;AACxD,QAAM,sBACH,MAAM;AAAA,IACP;AAAA,EACD,KAAoC,CAAC;AAEtC,SAAO;AAAA,IACN,MAAM,WAAW;AAAA;AAAA,MAEhB,SAAS;AAAA;AAAA,MAGT,GAAG;AAAA,MAEH,QAAQ,EAAE,OAAO,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO;AAAA,MACzD,KAAK,QAAQ;AAAA,MACb,aAAa,QAAQ;AAAA,MACrB,UAAU,QAAQ,UAAU,SACzB,QAAQ,SAAS,QAAQ,CAAC,YAAY,QAAQ,MAAM,GAAG,CAAC,IACxD;AAAA;AAAA,MAGH,iBAAiB;AAAA,QAChB,GAAG,oBAAoB,mBAAmB;AAAA;AAAA,QAE1C,UAAU,oBAAoB,cAAc;AAAA,MAC7C;AAAA;AAAA,MAGA,cAAc;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,OAAO;AAAA;AAAA,MAGP,SAAS;AAAA,QACR,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,QAAQ,KAAK,QAAQ,SAAS,EAAE;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,EACE,OAAO,OAAO,EACd,KAAK;AAAA,MACP,SAAS;AAAA,MACT,eAAe;AAAA,QACd,KAAK;AAAA,MACN;AAAA,MACA,MAAM;AAAA,MACN,MAAM,QAAQ;AAAA,MACd,eAAe;AAAA,QACd,YAAY;AAAA,MACb;AAAA,MACA,YAAY;AAAA,QACX,MAAM;AAAA,QACN,KAAK,sBAAsB,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,MAC/D;AAAA,MACA,SAAS;AAAA,QACR,GAAG,oBAAoB;AAAA,QACvB,GAAI,CAAC,QAAQ,gBAAgB;AAAA,UAC5B,OAAO;AAAA,QACR;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,GAAI,CAAC,QAAQ,mBAAmB;AAAA,UAC/B,aAAa;AAAA,QACd;AAAA,QACA,GAAI,CAAC,QAAQ,iBAAiB;AAAA,UAC7B,WACC;AAAA,QACF;AAAA,QACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,UACnC,iBAAiB;AAAA,QAClB;AAAA,QACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,UACnC,iBAAiB;AAAA,QAClB;AAAA,QACA,SAAS;AAAA,QACT,GAAI,CAAC,QAAQ,gBAAgB,EAAE,MAAM,SAAS;AAAA,QAC9C,KAAK;AAAA,MACN;AAAA,MACA,MAAM;AAAA,IACP,CAAC;AAAA,EACF;AACD;AAEA,SAAS,oBAAoB,qBAA6B;AACzD,QAAM,kBACL,qBAAqB,sBACjB,oBAAoB,kBACrB,CAAC;AAEL,aAAW,yBAAyB,yBAAyB;AAE5D,WAAO,gBAAgB,qBAAqB;AAAA,EAC7C;AAEA,SAAO;AACR;","names":[]}
@@ -1,5 +1,5 @@
1
1
  interface Structure {
2
- [i: string]: string | Structure;
2
+ [i: string]: false | string | Structure | undefined;
3
3
  }
4
4
 
5
5
  export type { Structure };
@@ -1,8 +1,16 @@
1
+ import { applyFilesToSystem, createWritingFileSystem } from "create";
1
2
  import { $ } from "execa";
3
+ import { isUsingCreateEngine } from "../../shared/isUsingCreateEngine.js";
2
4
  import { createStructure } from "./creation/index.js";
3
5
  import { writeStructureWorker } from "./writeStructureWorker.js";
4
6
  async function writeStructure(options) {
5
- await writeStructureWorker(await createStructure(options), ".");
7
+ const usingCreateEngine = isUsingCreateEngine();
8
+ const structure = await createStructure(options, usingCreateEngine);
9
+ if (usingCreateEngine) {
10
+ await applyFilesToSystem(structure, createWritingFileSystem(), ".");
11
+ return;
12
+ }
13
+ await writeStructureWorker(structure, ".");
6
14
  try {
7
15
  await $`chmod ug+x .husky/pre-commit`;
8
16
  } catch {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/steps/writing/writeStructure.ts"],"sourcesContent":["import { $ } from \"execa\";\n\nimport { Options } from \"../../shared/types.js\";\nimport { createStructure } from \"./creation/index.js\";\nimport { writeStructureWorker } from \"./writeStructureWorker.js\";\n\nexport async function writeStructure(options: Options) {\n\tawait writeStructureWorker(await createStructure(options), \".\");\n\n\ttry {\n\t\t// https://github.com/JoshuaKGoldberg/create-typescript-app/issues/718\n\t\tawait $`chmod ug+x .husky/pre-commit`;\n\t} catch {\n\t\t// https://github.com/JoshuaKGoldberg/create-typescript-app/issues/1195\n\t}\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAGlB,SAAS,uBAAuB;AAChC,SAAS,4BAA4B;AAErC,eAAsB,eAAe,SAAkB;AACtD,QAAM,qBAAqB,MAAM,gBAAgB,OAAO,GAAG,GAAG;AAE9D,MAAI;AAEH,UAAM;AAAA,EACP,QAAQ;AAAA,EAER;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/steps/writing/writeStructure.ts"],"sourcesContent":["import { applyFilesToSystem, createWritingFileSystem } from \"create\";\nimport { $ } from \"execa\";\n\nimport { isUsingCreateEngine } from \"../../shared/isUsingCreateEngine.js\";\nimport { Options } from \"../../shared/types.js\";\nimport { createStructure } from \"./creation/index.js\";\nimport { writeStructureWorker } from \"./writeStructureWorker.js\";\n\nexport async function writeStructure(options: Options) {\n\tconst usingCreateEngine = isUsingCreateEngine();\n\tconst structure = await createStructure(options, usingCreateEngine);\n\n\tif (usingCreateEngine) {\n\t\tawait applyFilesToSystem(structure, createWritingFileSystem(), \".\");\n\t\treturn;\n\t}\n\n\tawait writeStructureWorker(structure, \".\");\n\n\ttry {\n\t\t// https://github.com/JoshuaKGoldberg/create-typescript-app/issues/718\n\t\tawait $`chmod ug+x .husky/pre-commit`;\n\t} catch {\n\t\t// https://github.com/JoshuaKGoldberg/create-typescript-app/issues/1195\n\t}\n}\n"],"mappings":"AAAA,SAAS,oBAAoB,+BAA+B;AAC5D,SAAS,SAAS;AAElB,SAAS,2BAA2B;AAEpC,SAAS,uBAAuB;AAChC,SAAS,4BAA4B;AAErC,eAAsB,eAAe,SAAkB;AACtD,QAAM,oBAAoB,oBAAoB;AAC9C,QAAM,YAAY,MAAM,gBAAgB,SAAS,iBAAiB;AAElE,MAAI,mBAAmB;AACtB,UAAM,mBAAmB,WAAW,wBAAwB,GAAG,GAAG;AAClE;AAAA,EACD;AAEA,QAAM,qBAAqB,WAAW,GAAG;AAEzC,MAAI;AAEH,UAAM;AAAA,EACP,QAAQ;AAAA,EAER;AACD;","names":[]}
@@ -9,7 +9,7 @@ async function writeStructureWorker(structure, basePath) {
9
9
  path.join(basePath, fileName),
10
10
  await format(fileName, contents)
11
11
  );
12
- } else {
12
+ } else if (contents) {
13
13
  await writeStructureWorker(contents, path.join(basePath, fileName));
14
14
  }
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/steps/writing/writeStructureWorker.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"path\";\nimport prettier from \"prettier\";\n\nimport { Structure } from \"./types.js\";\n\nexport async function writeStructureWorker(\n\tstructure: Structure,\n\tbasePath: string,\n) {\n\tawait fs.mkdir(basePath, { recursive: true });\n\n\tfor (const [fileName, contents] of Object.entries(structure)) {\n\t\tif (typeof contents === \"string\") {\n\t\t\tawait fs.writeFile(\n\t\t\t\tpath.join(basePath, fileName),\n\t\t\t\tawait format(fileName, contents),\n\t\t\t);\n\t\t} else {\n\t\t\tawait writeStructureWorker(contents, path.join(basePath, fileName));\n\t\t}\n\t}\n}\n\nasync function format(fileName: string, text: string) {\n\tconst parser = inferParser(fileName, text);\n\tif (!parser) {\n\t\treturn text;\n\t}\n\n\treturn await prettier.format(text, {\n\t\tparser,\n\t\tuseTabs: true,\n\t});\n}\n\nfunction inferParser(fileName: string, text: string) {\n\tif (text.startsWith(\"{\")) {\n\t\treturn \"json\";\n\t}\n\n\tswitch (fileName.split(\".\").at(-1)) {\n\t\tcase \"cjs\":\n\t\tcase \"js\":\n\t\t\treturn \"babel\";\n\t\tcase \"json\":\n\t\t\treturn \"json\";\n\t\tcase \"md\":\n\t\t\treturn \"markdown\";\n\t\tcase \"yml\":\n\t\t\treturn \"yaml\";\n\t}\n\n\treturn undefined;\n}\n"],"mappings":"AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,OAAO,cAAc;AAIrB,eAAsB,qBACrB,WACA,UACC;AACD,QAAM,GAAG,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAE5C,aAAW,CAAC,UAAU,QAAQ,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC7D,QAAI,OAAO,aAAa,UAAU;AACjC,YAAM,GAAG;AAAA,QACR,KAAK,KAAK,UAAU,QAAQ;AAAA,QAC5B,MAAM,OAAO,UAAU,QAAQ;AAAA,MAChC;AAAA,IACD,OAAO;AACN,YAAM,qBAAqB,UAAU,KAAK,KAAK,UAAU,QAAQ,CAAC;AAAA,IACnE;AAAA,EACD;AACD;AAEA,eAAe,OAAO,UAAkB,MAAc;AACrD,QAAM,SAAS,YAAY,UAAU,IAAI;AACzC,MAAI,CAAC,QAAQ;AACZ,WAAO;AAAA,EACR;AAEA,SAAO,MAAM,SAAS,OAAO,MAAM;AAAA,IAClC;AAAA,IACA,SAAS;AAAA,EACV,CAAC;AACF;AAEA,SAAS,YAAY,UAAkB,MAAc;AACpD,MAAI,KAAK,WAAW,GAAG,GAAG;AACzB,WAAO;AAAA,EACR;AAEA,UAAQ,SAAS,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG;AAAA,IACnC,KAAK;AAAA,IACL,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,EACT;AAEA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/steps/writing/writeStructureWorker.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"path\";\nimport prettier from \"prettier\";\n\nimport { Structure } from \"./types.js\";\n\nexport async function writeStructureWorker(\n\tstructure: Structure,\n\tbasePath: string,\n) {\n\tawait fs.mkdir(basePath, { recursive: true });\n\n\tfor (const [fileName, contents] of Object.entries(structure)) {\n\t\tif (typeof contents === \"string\") {\n\t\t\tawait fs.writeFile(\n\t\t\t\tpath.join(basePath, fileName),\n\t\t\t\tawait format(fileName, contents),\n\t\t\t);\n\t\t} else if (contents) {\n\t\t\tawait writeStructureWorker(contents, path.join(basePath, fileName));\n\t\t}\n\t}\n}\n\nasync function format(fileName: string, text: string) {\n\tconst parser = inferParser(fileName, text);\n\tif (!parser) {\n\t\treturn text;\n\t}\n\n\treturn await prettier.format(text, {\n\t\tparser,\n\t\tuseTabs: true,\n\t});\n}\n\nfunction inferParser(fileName: string, text: string) {\n\tif (text.startsWith(\"{\")) {\n\t\treturn \"json\";\n\t}\n\n\tswitch (fileName.split(\".\").at(-1)) {\n\t\tcase \"cjs\":\n\t\tcase \"js\":\n\t\t\treturn \"babel\";\n\t\tcase \"json\":\n\t\t\treturn \"json\";\n\t\tcase \"md\":\n\t\t\treturn \"markdown\";\n\t\tcase \"yml\":\n\t\t\treturn \"yaml\";\n\t}\n\n\treturn undefined;\n}\n"],"mappings":"AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,OAAO,cAAc;AAIrB,eAAsB,qBACrB,WACA,UACC;AACD,QAAM,GAAG,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAE5C,aAAW,CAAC,UAAU,QAAQ,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC7D,QAAI,OAAO,aAAa,UAAU;AACjC,YAAM,GAAG;AAAA,QACR,KAAK,KAAK,UAAU,QAAQ;AAAA,QAC5B,MAAM,OAAO,UAAU,QAAQ;AAAA,MAChC;AAAA,IACD,WAAW,UAAU;AACpB,YAAM,qBAAqB,UAAU,KAAK,KAAK,UAAU,QAAQ,CAAC;AAAA,IACnE;AAAA,EACD;AACD;AAEA,eAAe,OAAO,UAAkB,MAAc;AACrD,QAAM,SAAS,YAAY,UAAU,IAAI;AACzC,MAAI,CAAC,QAAQ;AACZ,WAAO;AAAA,EACR;AAEA,SAAO,MAAM,SAAS,OAAO,MAAM;AAAA,IAClC;AAAA,IACA,SAAS;AAAA,EACV,CAAC;AACF;AAEA,SAAS,YAAY,UAAkB,MAAc;AACpD,MAAI,KAAK,WAAW,GAAG,GAAG;AACzB,WAAO;AAAA,EACR;AAEA,UAAQ,SAAS,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG;AAAA,IACnC,KAAK;AAAA,IACL,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,EACT;AAEA,SAAO;AACR;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "create-typescript-app",
3
- "version": "1.76.0",
4
- "description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 💝",
3
+ "version": "1.77.1",
4
+ "description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️‍🔥",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/JoshuaKGoldberg/create-typescript-app"
@@ -15,11 +15,11 @@
15
15
  "main": "./lib/index.js",
16
16
  "bin": "./bin/index.js",
17
17
  "files": [
18
+ "LICENSE.md",
19
+ "README.md",
18
20
  "bin/index.js",
19
21
  "lib/",
20
- "package.json",
21
- "LICENSE.md",
22
- "README.md"
22
+ "package.json"
23
23
  ],
24
24
  "scripts": {
25
25
  "build": "tsup",
@@ -42,65 +42,72 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@clack/prompts": "^0.8.2",
45
- "all-contributors-for-repository": "^0.3.0",
45
+ "@prettier/sync": "^0.5.2",
46
46
  "chalk": "^5.3.0",
47
- "execa": "^9.5.1",
48
- "get-github-auth-token": "^0.1.0",
47
+ "create": "0.1.0-alpha.7",
48
+ "execa": "^9.5.2",
49
49
  "git-remote-origin-url": "^4.0.0",
50
50
  "git-url-parse": "^16.0.0",
51
+ "input-from-file": "0.1.0-alpha.2",
52
+ "input-from-file-json": "0.1.0-alpha.2",
51
53
  "js-yaml": "^4.1.0",
52
54
  "lazy-value": "^3.0.0",
53
55
  "npm-user": "^6.1.1",
54
56
  "octokit": "^4.0.2",
57
+ "octokit-from-auth": "^0.3.0",
55
58
  "parse-author": "^2.0.0",
56
- "prettier": "^3.4.1",
57
- "replace-in-file": "^8.2.0",
59
+ "parse-package-name": "^1.0.0",
60
+ "populate-all-contributors-for-repository": "^0.1.2",
61
+ "prettier": "^3.4.2",
62
+ "replace-in-file": "^8.3.0",
58
63
  "rimraf": "^6.0.1",
64
+ "set-github-repository-labels": "^0.1.0",
65
+ "sort-package-json": "^2.12.0",
59
66
  "title-case": "^4.3.2",
60
- "zod": "^3.23.8",
67
+ "zod": "^3.24.1",
61
68
  "zod-validation-error": "^3.4.0"
62
69
  },
63
70
  "devDependencies": {
64
71
  "@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
65
- "@eslint/js": "9.16.0",
72
+ "@eslint/js": "9.17.0",
66
73
  "@octokit/request-error": "6.1.5",
67
74
  "@release-it/conventional-changelog": "9.0.3",
68
75
  "@types/eslint-plugin-markdown": "2.0.2",
69
- "@types/eslint__js": "8.42.3",
70
76
  "@types/git-url-parse": "9.0.3",
71
77
  "@types/js-yaml": "4.0.9",
72
- "@types/node": "22.10.1",
78
+ "@types/node": "22.10.2",
73
79
  "@types/parse-author": "2.0.3",
74
80
  "@vitest/coverage-v8": "2.1.8",
75
- "@vitest/eslint-plugin": "1.1.14",
76
- "c8": "10.1.2",
81
+ "@vitest/eslint-plugin": "1.1.18",
82
+ "all-contributors-cli": "6.26.1",
83
+ "c8": "10.1.3",
77
84
  "console-fail-test": "0.5.0",
78
- "cspell": "8.16.1",
79
- "eslint": "9.16.0",
80
- "eslint-plugin-jsdoc": "50.6.0",
85
+ "create-testers": "0.1.0-alpha.7",
86
+ "cspell": "8.17.1",
87
+ "eslint": "9.17.0",
88
+ "eslint-plugin-jsdoc": "50.6.1",
81
89
  "eslint-plugin-jsonc": "2.18.2",
82
90
  "eslint-plugin-markdown": "5.1.0",
83
- "eslint-plugin-n": "17.14.0",
84
- "eslint-plugin-package-json": "0.17.0",
85
- "eslint-plugin-perfectionist": "4.2.0",
91
+ "eslint-plugin-n": "17.15.0",
92
+ "eslint-plugin-package-json": "0.18.0",
93
+ "eslint-plugin-perfectionist": "4.3.0",
86
94
  "eslint-plugin-regexp": "2.7.0",
87
95
  "eslint-plugin-yml": "1.16.0",
88
96
  "globby": "14.0.2",
89
97
  "husky": "9.1.7",
90
- "jsonc-eslint-parser": "2.4.0",
91
- "knip": "5.39.1",
92
- "lint-staged": "15.2.10",
93
- "markdownlint": "0.36.1",
98
+ "knip": "5.41.0",
99
+ "lint-staged": "15.2.11",
100
+ "markdownlint": "0.37.1",
94
101
  "markdownlint-cli": "0.43.0",
95
102
  "prettier-plugin-curly": "0.3.1",
96
103
  "prettier-plugin-packagejson": "2.5.6",
97
104
  "prettier-plugin-sh": "0.14.0",
98
105
  "release-it": "17.10.0",
99
- "sentences-per-line": "0.2.1",
106
+ "sentences-per-line": "0.3.0",
100
107
  "tsup": "8.3.5",
101
108
  "tsx": "4.19.2",
102
109
  "typescript": "5.7.2",
103
- "typescript-eslint": "8.17.0",
110
+ "typescript-eslint": "8.18.1",
104
111
  "vitest": "2.1.8"
105
112
  },
106
113
  "engines": {
@@ -1,8 +0,0 @@
1
- declare function readDefaultsFromDevelopment(): {
2
- guide: () => Promise<{
3
- href: string;
4
- title: string;
5
- } | undefined>;
6
- };
7
-
8
- export { readDefaultsFromDevelopment };
@@ -1,22 +0,0 @@
1
- import lazyValue from "lazy-value";
2
- import { readFileSafe } from "../../readFileSafe.js";
3
- function readDefaultsFromDevelopment() {
4
- return {
5
- guide: lazyValue(async () => {
6
- const tag = /> .*guided walkthrough, see \[((?!\[).+)\]\((.+)\)/i.exec(
7
- await readFileSafe(".github/DEVELOPMENT.md", "")
8
- );
9
- if (!tag) {
10
- return void 0;
11
- }
12
- return {
13
- href: tag[2],
14
- title: tag[1]
15
- };
16
- })
17
- };
18
- }
19
- export {
20
- readDefaultsFromDevelopment
21
- };
22
- //# sourceMappingURL=readDefaultsFromDevelopment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/readDefaultsFromDevelopment.ts"],"sourcesContent":["import lazyValue from \"lazy-value\";\n\nimport { readFileSafe } from \"../../readFileSafe.js\";\n\nexport function readDefaultsFromDevelopment() {\n\treturn {\n\t\tguide: lazyValue(async () => {\n\t\t\tconst tag = /> .*guided walkthrough, see \\[((?!\\[).+)\\]\\((.+)\\)/i.exec(\n\t\t\t\tawait readFileSafe(\".github/DEVELOPMENT.md\", \"\"),\n\t\t\t);\n\n\t\t\tif (!tag) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\thref: tag[2],\n\t\t\t\ttitle: tag[1],\n\t\t\t};\n\t\t}),\n\t};\n}\n"],"mappings":"AAAA,OAAO,eAAe;AAEtB,SAAS,oBAAoB;AAEtB,SAAS,8BAA8B;AAC7C,SAAO;AAAA,IACN,OAAO,UAAU,YAAY;AAC5B,YAAM,MAAM,sDAAsD;AAAA,QACjE,MAAM,aAAa,0BAA0B,EAAE;AAAA,MAChD;AAEA,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,QACN,MAAM,IAAI,CAAC;AAAA,QACX,OAAO,IAAI,CAAC;AAAA,MACb;AAAA,IACD,CAAC;AAAA,EACF;AACD;","names":[]}
@@ -1,9 +0,0 @@
1
- import { Octokit } from 'octokit';
2
-
3
- interface GitHub {
4
- auth: string;
5
- octokit: Octokit;
6
- }
7
- declare function getGitHub(): Promise<GitHub | undefined>;
8
-
9
- export { type GitHub, getGitHub };
@@ -1,17 +0,0 @@
1
- import { getGitHubAuthToken } from "get-github-auth-token";
2
- import { Octokit } from "octokit";
3
- async function getGitHub() {
4
- const auth = await getGitHubAuthToken();
5
- if (!auth.succeeded) {
6
- throw new Error(
7
- "Couldn't authenticate with GitHub. Either log in with `gh auth login` (https://cli.github.com) or set a GH_TOKEN environment variable.",
8
- { cause: auth.error }
9
- );
10
- }
11
- const octokit = new Octokit({ auth: auth.token });
12
- return { auth: auth.token, octokit };
13
- }
14
- export {
15
- getGitHub
16
- };
17
- //# sourceMappingURL=getGitHub.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/shared/options/getGitHub.ts"],"sourcesContent":["import { getGitHubAuthToken } from \"get-github-auth-token\";\nimport { Octokit } from \"octokit\";\n\nexport interface GitHub {\n\tauth: string;\n\toctokit: Octokit;\n}\n\nexport async function getGitHub(): Promise<GitHub | undefined> {\n\tconst auth = await getGitHubAuthToken();\n\n\tif (!auth.succeeded) {\n\t\tthrow new Error(\n\t\t\t\"Couldn't authenticate with GitHub. Either log in with `gh auth login` (https://cli.github.com) or set a GH_TOKEN environment variable.\",\n\t\t\t{ cause: auth.error },\n\t\t);\n\t}\n\n\tconst octokit = new Octokit({ auth: auth.token });\n\n\treturn { auth: auth.token, octokit };\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AACnC,SAAS,eAAe;AAOxB,eAAsB,YAAyC;AAC9D,QAAM,OAAO,MAAM,mBAAmB;AAEtC,MAAI,CAAC,KAAK,WAAW;AACpB,UAAM,IAAI;AAAA,MACT;AAAA,MACA,EAAE,OAAO,KAAK,MAAM;AAAA,IACrB;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhD,SAAO,EAAE,MAAM,KAAK,OAAO,QAAQ;AACpC;","names":[]}
@@ -1,7 +0,0 @@
1
- import { Options } from '../shared/types.js';
2
- import 'zod';
3
- import '../shared/codes.js';
4
-
5
- declare function detectExistingContributors(auth: string | undefined, options: Pick<Options, "owner" | "repository">): Promise<void>;
6
-
7
- export { detectExistingContributors };
@@ -1,19 +0,0 @@
1
- import { getAllContributorsForRepository } from "all-contributors-for-repository";
2
- import { $ } from "execa";
3
- async function detectExistingContributors(auth, options) {
4
- const contributors = await getAllContributorsForRepository({
5
- auth,
6
- owner: options.owner,
7
- repo: options.repository
8
- });
9
- for (const [contributor, contributions] of Object.entries(contributors)) {
10
- const contributionTypes = Object.keys(contributions).join(",");
11
- await $({
12
- env: { PRIVATE_TOKEN: auth }
13
- })`npx -y all-contributors-cli add ${contributor} ${contributionTypes}`;
14
- }
15
- }
16
- export {
17
- detectExistingContributors
18
- };
19
- //# sourceMappingURL=detectExistingContributors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/steps/detectExistingContributors.ts"],"sourcesContent":["import { getAllContributorsForRepository } from \"all-contributors-for-repository\";\nimport { $ } from \"execa\";\n\nimport { Options } from \"../shared/types.js\";\n\nexport async function detectExistingContributors(\n\tauth: string | undefined,\n\toptions: Pick<Options, \"owner\" | \"repository\">,\n) {\n\tconst contributors = await getAllContributorsForRepository({\n\t\tauth,\n\t\towner: options.owner,\n\t\trepo: options.repository,\n\t});\n\n\tfor (const [contributor, contributions] of Object.entries(contributors)) {\n\t\tconst contributionTypes = Object.keys(contributions).join(\",\");\n\t\tawait $({\n\t\t\tenv: { PRIVATE_TOKEN: auth },\n\t\t})`npx -y all-contributors-cli add ${contributor} ${contributionTypes}`;\n\t}\n}\n"],"mappings":"AAAA,SAAS,uCAAuC;AAChD,SAAS,SAAS;AAIlB,eAAsB,2BACrB,MACA,SACC;AACD,QAAM,eAAe,MAAM,gCAAgC;AAAA,IAC1D;AAAA,IACA,OAAO,QAAQ;AAAA,IACf,MAAM,QAAQ;AAAA,EACf,CAAC;AAED,aAAW,CAAC,aAAa,aAAa,KAAK,OAAO,QAAQ,YAAY,GAAG;AACxE,UAAM,oBAAoB,OAAO,KAAK,aAAa,EAAE,KAAK,GAAG;AAC7D,UAAM,EAAE;AAAA,MACP,KAAK,EAAE,eAAe,KAAK;AAAA,IAC5B,CAAC,oCAAoC,WAAW,IAAI,iBAAiB;AAAA,EACtE;AACD;","names":[]}
@@ -1,8 +0,0 @@
1
- interface GhLabelData {
2
- color: string;
3
- description: null | string;
4
- name: string;
5
- }
6
- declare function getExistingEquivalentLabels(existingLabels: GhLabelData[], outcomeLabelName: string): GhLabelData[];
7
-
8
- export { type GhLabelData, getExistingEquivalentLabels };
@@ -1,14 +0,0 @@
1
- const aliases = /* @__PURE__ */ new Map([
2
- ["enhancement", "type: feature"],
3
- ["help wanted", "status: accepting prs"]
4
- ]);
5
- function getExistingEquivalentLabels(existingLabels, outcomeLabelName) {
6
- const outcomeTrimmed = outcomeLabelName.replace(/\w+: (\w+)/, "$1");
7
- return existingLabels.filter(({ name: existingName }) => {
8
- return existingName === outcomeLabelName || existingName === outcomeTrimmed || aliases.get(existingName) === outcomeLabelName || existingName.replace(/\w+: (\w+)/, "$1") === outcomeLabelName;
9
- });
10
- }
11
- export {
12
- getExistingEquivalentLabels
13
- };
14
- //# sourceMappingURL=getExistingEquivalentLabels.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.ts"],"sourcesContent":["const aliases = new Map([\n\t[\"enhancement\", \"type: feature\"],\n\t[\"help wanted\", \"status: accepting prs\"],\n]);\n\nexport interface GhLabelData {\n\tcolor: string;\n\tdescription: null | string;\n\tname: string;\n}\n\nexport function getExistingEquivalentLabels(\n\texistingLabels: GhLabelData[],\n\toutcomeLabelName: string,\n) {\n\tconst outcomeTrimmed = outcomeLabelName.replace(/\\w+: (\\w+)/, \"$1\");\n\n\treturn existingLabels.filter(({ name: existingName }) => {\n\t\treturn (\n\t\t\texistingName === outcomeLabelName ||\n\t\t\texistingName === outcomeTrimmed ||\n\t\t\taliases.get(existingName) === outcomeLabelName ||\n\t\t\texistingName.replace(/\\w+: (\\w+)/, \"$1\") === outcomeLabelName\n\t\t);\n\t});\n}\n"],"mappings":"AAAA,MAAM,UAAU,oBAAI,IAAI;AAAA,EACvB,CAAC,eAAe,eAAe;AAAA,EAC/B,CAAC,eAAe,uBAAuB;AACxC,CAAC;AAQM,SAAS,4BACf,gBACA,kBACC;AACD,QAAM,iBAAiB,iBAAiB,QAAQ,cAAc,IAAI;AAElE,SAAO,eAAe,OAAO,CAAC,EAAE,MAAM,aAAa,MAAM;AACxD,WACC,iBAAiB,oBACjB,iBAAiB,kBACjB,QAAQ,IAAI,YAAY,MAAM,oBAC9B,aAAa,QAAQ,cAAc,IAAI,MAAM;AAAA,EAE/C,CAAC;AACF;","names":[]}
@@ -1,8 +0,0 @@
1
- import { Octokit } from 'octokit';
2
- import { Options } from '../../../shared/types.js';
3
- import 'zod';
4
- import '../../../shared/codes.js';
5
-
6
- declare function initializeRepositoryLabels(octokit: Octokit, options: Pick<Options, "owner" | "repository">): Promise<void>;
7
-
8
- export { initializeRepositoryLabels };
@@ -1,63 +0,0 @@
1
- import { getExistingEquivalentLabels } from "./getExistingEquivalentLabels.js";
2
- import { outcomeLabels } from "./outcomeLabels.js";
3
- async function initializeRepositoryLabels(octokit, options) {
4
- const { data: existingLabels } = await octokit.request(
5
- "GET /repos/{owner}/{repo}/labels",
6
- {
7
- headers: {
8
- "X-GitHub-Api-Version": "2022-11-28"
9
- },
10
- owner: options.owner,
11
- repo: options.repository
12
- }
13
- );
14
- for (const outcome of outcomeLabels) {
15
- const existingEquivalents = getExistingEquivalentLabels(
16
- existingLabels,
17
- outcome.name
18
- );
19
- if (!existingEquivalents.length) {
20
- await octokit.request("POST /repos/{owner}/{repo}/labels", {
21
- color: outcome.color.replace("#", ""),
22
- description: outcome.description,
23
- headers: {
24
- "X-GitHub-Api-Version": "2022-11-28"
25
- },
26
- name: outcome.name,
27
- owner: options.owner,
28
- repo: options.repository
29
- });
30
- continue;
31
- }
32
- for (const existingEquivalent of existingEquivalents) {
33
- if (existingEquivalent.name !== outcome.name && existingLabels.some((existing) => existing.name === outcome.name)) {
34
- await octokit.request("DELETE /repos/{owner}/{repo}/labels/{name}", {
35
- headers: {
36
- "X-GitHub-Api-Version": "2022-11-28"
37
- },
38
- name: existingEquivalent.name,
39
- owner: options.owner,
40
- repo: options.repository
41
- });
42
- continue;
43
- }
44
- if (outcome.color !== existingEquivalent.color || outcome.description !== existingEquivalent.description || outcome.name !== existingEquivalent.name) {
45
- await octokit.request("PATCH /repos/{owner}/{repo}/labels/{name}", {
46
- color: outcome.color.replace("#", ""),
47
- description: outcome.description,
48
- headers: {
49
- "X-GitHub-Api-Version": "2022-11-28"
50
- },
51
- name: existingEquivalent.name,
52
- new_name: outcome.name,
53
- owner: options.owner,
54
- repo: options.repository
55
- });
56
- }
57
- }
58
- }
59
- }
60
- export {
61
- initializeRepositoryLabels
62
- };
63
- //# sourceMappingURL=initializeRepositoryLabels.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.ts"],"sourcesContent":["import { Octokit } from \"octokit\";\n\nimport { Options } from \"../../../shared/types.js\";\nimport { getExistingEquivalentLabels } from \"./getExistingEquivalentLabels.js\";\nimport { outcomeLabels } from \"./outcomeLabels.js\";\n\nexport async function initializeRepositoryLabels(\n\toctokit: Octokit,\n\toptions: Pick<Options, \"owner\" | \"repository\">,\n) {\n\tconst { data: existingLabels } = await octokit.request(\n\t\t\"GET /repos/{owner}/{repo}/labels\",\n\t\t{\n\t\t\theaders: {\n\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t},\n\t\t\towner: options.owner,\n\t\t\trepo: options.repository,\n\t\t},\n\t);\n\n\tfor (const outcome of outcomeLabels) {\n\t\tconst existingEquivalents = getExistingEquivalentLabels(\n\t\t\texistingLabels,\n\t\t\toutcome.name,\n\t\t);\n\n\t\t// Case: the repo has neither of the two label types\n\t\tif (!existingEquivalents.length) {\n\t\t\tawait octokit.request(\"POST /repos/{owner}/{repo}/labels\", {\n\t\t\t\tcolor: outcome.color.replace(\"#\", \"\"),\n\t\t\t\tdescription: outcome.description,\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t\t},\n\t\t\t\tname: outcome.name,\n\t\t\t\towner: options.owner,\n\t\t\t\trepo: options.repository,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const existingEquivalent of existingEquivalents) {\n\t\t\t// Case: the repo already has both prefixed and non-prefixed label name types\n\t\t\t// E.g. both \"area: documentation\" and \"documentation\"\n\t\t\tif (\n\t\t\t\texistingEquivalent.name !== outcome.name &&\n\t\t\t\texistingLabels.some((existing) => existing.name === outcome.name)\n\t\t\t) {\n\t\t\t\tawait octokit.request(\"DELETE /repos/{owner}/{repo}/labels/{name}\", {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t\t\t},\n\t\t\t\t\tname: existingEquivalent.name,\n\t\t\t\t\towner: options.owner,\n\t\t\t\t\trepo: options.repository,\n\t\t\t\t});\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Case: the repo has one of the two label types, with >=1 different property\n\t\t\t// E.g. \"documentation\" and the same color and description\n\t\t\t// E.g. \"area: documentation\" but with a different color\n\t\t\tif (\n\t\t\t\toutcome.color !== existingEquivalent.color ||\n\t\t\t\toutcome.description !== existingEquivalent.description ||\n\t\t\t\toutcome.name !== existingEquivalent.name\n\t\t\t) {\n\t\t\t\tawait octokit.request(\"PATCH /repos/{owner}/{repo}/labels/{name}\", {\n\t\t\t\t\tcolor: outcome.color.replace(\"#\", \"\"),\n\t\t\t\t\tdescription: outcome.description,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t\t\t},\n\t\t\t\t\tname: existingEquivalent.name,\n\t\t\t\t\tnew_name: outcome.name,\n\t\t\t\t\towner: options.owner,\n\t\t\t\t\trepo: options.repository,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"AAGA,SAAS,mCAAmC;AAC5C,SAAS,qBAAqB;AAE9B,eAAsB,2BACrB,SACA,SACC;AACD,QAAM,EAAE,MAAM,eAAe,IAAI,MAAM,QAAQ;AAAA,IAC9C;AAAA,IACA;AAAA,MACC,SAAS;AAAA,QACR,wBAAwB;AAAA,MACzB;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,IACf;AAAA,EACD;AAEA,aAAW,WAAW,eAAe;AACpC,UAAM,sBAAsB;AAAA,MAC3B;AAAA,MACA,QAAQ;AAAA,IACT;AAGA,QAAI,CAAC,oBAAoB,QAAQ;AAChC,YAAM,QAAQ,QAAQ,qCAAqC;AAAA,QAC1D,OAAO,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAAA,QACpC,aAAa,QAAQ;AAAA,QACrB,SAAS;AAAA,UACR,wBAAwB;AAAA,QACzB;AAAA,QACA,MAAM,QAAQ;AAAA,QACd,OAAO,QAAQ;AAAA,QACf,MAAM,QAAQ;AAAA,MACf,CAAC;AACD;AAAA,IACD;AAEA,eAAW,sBAAsB,qBAAqB;AAGrD,UACC,mBAAmB,SAAS,QAAQ,QACpC,eAAe,KAAK,CAAC,aAAa,SAAS,SAAS,QAAQ,IAAI,GAC/D;AACD,cAAM,QAAQ,QAAQ,8CAA8C;AAAA,UACnE,SAAS;AAAA,YACR,wBAAwB;AAAA,UACzB;AAAA,UACA,MAAM,mBAAmB;AAAA,UACzB,OAAO,QAAQ;AAAA,UACf,MAAM,QAAQ;AAAA,QACf,CAAC;AAED;AAAA,MACD;AAKA,UACC,QAAQ,UAAU,mBAAmB,SACrC,QAAQ,gBAAgB,mBAAmB,eAC3C,QAAQ,SAAS,mBAAmB,MACnC;AACD,cAAM,QAAQ,QAAQ,6CAA6C;AAAA,UAClE,OAAO,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAAA,UACpC,aAAa,QAAQ;AAAA,UACrB,SAAS;AAAA,YACR,wBAAwB;AAAA,UACzB;AAAA,UACA,MAAM,mBAAmB;AAAA,UACzB,UAAU,QAAQ;AAAA,UAClB,OAAO,QAAQ;AAAA,UACf,MAAM,QAAQ;AAAA,QACf,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;","names":[]}