create-typescript-app 1.78.0 → 1.80.0

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 (183) hide show
  1. package/README.md +49 -49
  2. package/lib/create/createAndEnterGitDirectory.d.ts +1 -1
  3. package/lib/create/createAndEnterGitDirectory.js +4 -3
  4. package/lib/create/createAndEnterGitDirectory.js.map +1 -1
  5. package/lib/create/createRerunDirectorySuggestion.d.ts +7 -0
  6. package/lib/create/createRerunDirectorySuggestion.js +8 -0
  7. package/lib/create/createRerunDirectorySuggestion.js.map +1 -0
  8. package/lib/create/createRerunSuggestion.js +3 -1
  9. package/lib/create/createRerunSuggestion.js.map +1 -1
  10. package/lib/create/createWithOptions.d.ts +1 -1
  11. package/lib/create/createWithOptions.js +7 -8
  12. package/lib/create/createWithOptions.js.map +1 -1
  13. package/lib/create/index.js +8 -2
  14. package/lib/create/index.js.map +1 -1
  15. package/lib/index.d.ts +3 -0
  16. package/lib/index.js +1 -0
  17. package/lib/index.js.map +1 -1
  18. package/lib/next/base.d.ts +7 -2
  19. package/lib/next/base.js +42 -29
  20. package/lib/next/base.js.map +1 -1
  21. package/lib/next/blocks/blockAllContributors.d.ts +3 -2
  22. package/lib/next/blocks/blockAllContributors.js +11 -2
  23. package/lib/next/blocks/blockAllContributors.js.map +1 -1
  24. package/lib/next/blocks/blockAreTheTypesWrong.d.ts +3 -2
  25. package/lib/next/blocks/blockCSpell.d.ts +3 -2
  26. package/lib/next/blocks/blockCSpell.js +16 -0
  27. package/lib/next/blocks/blockCSpell.js.map +1 -1
  28. package/lib/next/blocks/blockContributingDocs.d.ts +3 -2
  29. package/lib/next/blocks/blockContributorCovenant.d.ts +3 -2
  30. package/lib/next/blocks/blockDevelopmentDocs.d.ts +3 -2
  31. package/lib/next/blocks/blockESLint.d.ts +3 -2
  32. package/lib/next/blocks/blockESLintComments.d.ts +3 -2
  33. package/lib/next/blocks/blockESLintJSDoc.d.ts +3 -2
  34. package/lib/next/blocks/blockESLintJSONC.d.ts +3 -2
  35. package/lib/next/blocks/blockESLintMarkdown.d.ts +3 -2
  36. package/lib/next/blocks/blockESLintMoreStyling.d.ts +3 -2
  37. package/lib/next/blocks/blockESLintNode.d.ts +3 -2
  38. package/lib/next/blocks/blockESLintPackageJson.d.ts +3 -2
  39. package/lib/next/blocks/blockESLintPerfectionist.d.ts +3 -2
  40. package/lib/next/blocks/blockESLintRegexp.d.ts +3 -2
  41. package/lib/next/blocks/blockESLintYML.d.ts +3 -2
  42. package/lib/next/blocks/blockExampleFiles.d.ts +3 -2
  43. package/lib/next/blocks/blockFunding.d.ts +3 -2
  44. package/lib/next/blocks/blockGitHubActionsCI.d.ts +3 -2
  45. package/lib/next/blocks/blockGitHubApps.d.ts +54 -0
  46. package/lib/next/blocks/blockGitHubApps.js +34 -0
  47. package/lib/next/blocks/blockGitHubApps.js.map +1 -0
  48. package/lib/next/blocks/blockGitHubIssueTemplates.d.ts +3 -2
  49. package/lib/next/blocks/blockGitHubPRTemplate.d.ts +3 -2
  50. package/lib/next/blocks/blockGitignore.d.ts +3 -2
  51. package/lib/next/blocks/blockKnip.d.ts +3 -2
  52. package/lib/next/blocks/blockKnip.js +2 -2
  53. package/lib/next/blocks/blockKnip.js.map +1 -1
  54. package/lib/next/blocks/blockMITLicense.d.ts +3 -2
  55. package/lib/next/blocks/blockMarkdownlint.d.ts +3 -2
  56. package/lib/next/blocks/blockNvmrc.d.ts +3 -2
  57. package/lib/next/blocks/blockPRCompliance.d.ts +3 -2
  58. package/lib/next/blocks/blockPackageJson.d.ts +3 -2
  59. package/lib/next/blocks/blockPackageJson.js +46 -41
  60. package/lib/next/blocks/blockPackageJson.js.map +1 -1
  61. package/lib/next/blocks/blockPnpmDedupe.d.ts +3 -2
  62. package/lib/next/blocks/blockPrettier.d.ts +3 -2
  63. package/lib/next/blocks/blockPrettierPluginCurly.d.ts +3 -2
  64. package/lib/next/blocks/blockPrettierPluginPackageJson.d.ts +3 -2
  65. package/lib/next/blocks/blockPrettierPluginSh.d.ts +3 -2
  66. package/lib/next/blocks/blockREADME.d.ts +3 -2
  67. package/lib/next/blocks/blockREADME.js +5 -1
  68. package/lib/next/blocks/blockREADME.js.map +1 -1
  69. package/lib/next/blocks/blockReleaseIt.d.ts +3 -2
  70. package/lib/next/blocks/blockReleaseIt.js +13 -0
  71. package/lib/next/blocks/blockReleaseIt.js.map +1 -1
  72. package/lib/next/blocks/blockRenovate.d.ts +3 -2
  73. package/lib/next/blocks/blockRenovate.js +9 -0
  74. package/lib/next/blocks/blockRenovate.js.map +1 -1
  75. package/lib/next/blocks/blockRepositoryBranchRuleset.d.ts +3 -2
  76. package/lib/next/blocks/blockRepositoryBranchRuleset.js +9 -0
  77. package/lib/next/blocks/blockRepositoryBranchRuleset.js.map +1 -1
  78. package/lib/next/blocks/blockRepositoryLabels.d.ts +3 -2
  79. package/lib/next/blocks/blockRepositoryLabels.js +12 -2
  80. package/lib/next/blocks/blockRepositoryLabels.js.map +1 -1
  81. package/lib/next/blocks/blockRepositorySecrets.d.ts +54 -0
  82. package/lib/next/blocks/blockRepositorySecrets.js +34 -0
  83. package/lib/next/blocks/blockRepositorySecrets.js.map +1 -0
  84. package/lib/next/blocks/blockRepositorySettings.d.ts +3 -2
  85. package/lib/next/blocks/blockRepositorySettings.js +1 -1
  86. package/lib/next/blocks/blockRepositorySettings.js.map +1 -1
  87. package/lib/next/blocks/blockSecurityDocs.d.ts +3 -2
  88. package/lib/next/blocks/blockTSup.d.ts +3 -2
  89. package/lib/next/blocks/blockTemplatedBy.d.ts +3 -2
  90. package/lib/next/blocks/blockTypeScript.d.ts +3 -2
  91. package/lib/next/blocks/blockVSCode.d.ts +3 -2
  92. package/lib/next/blocks/blockVitest.d.ts +3 -2
  93. package/lib/next/blocks/blockVitest.js +26 -17
  94. package/lib/next/blocks/blockVitest.js.map +1 -1
  95. package/lib/next/blocks/options.fakes.d.ts +1 -0
  96. package/lib/next/blocks/options.fakes.js +1 -0
  97. package/lib/next/blocks/options.fakes.js.map +1 -1
  98. package/lib/next/blocks/packageData.d.ts +3 -2
  99. package/lib/next/blocks/packageData.js +22 -21
  100. package/lib/next/blocks/packageData.js.map +1 -1
  101. package/lib/next/blocks/sourcePackageJson.d.ts +162 -0
  102. package/lib/next/blocks/sourcePackageJson.js +10 -0
  103. package/lib/next/blocks/sourcePackageJson.js.map +1 -0
  104. package/lib/next/presets/index.d.ts +5 -0
  105. package/lib/next/presets/index.js +4 -0
  106. package/lib/next/presets/index.js.map +1 -0
  107. package/lib/next/{presetCommon.d.ts → presets/presetCommon.d.ts} +7 -2
  108. package/lib/next/{presetCommon.js → presets/presetCommon.js} +4 -4
  109. package/lib/next/presets/presetCommon.js.map +1 -0
  110. package/lib/next/{presetEverything.d.ts → presets/presetEverything.d.ts} +7 -2
  111. package/lib/next/presets/presetEverything.js +59 -0
  112. package/lib/next/presets/presetEverything.js.map +1 -0
  113. package/lib/next/{presetMinimal.d.ts → presets/presetMinimal.d.ts} +7 -2
  114. package/lib/next/presets/presetMinimal.js +57 -0
  115. package/lib/next/presets/presetMinimal.js.map +1 -0
  116. package/lib/next/readDescription.d.ts +7 -0
  117. package/lib/next/readDescription.js +10 -0
  118. package/lib/next/readDescription.js.map +1 -0
  119. package/lib/next/readDocumentation.d.ts +5 -0
  120. package/lib/next/readDocumentation.js +28 -0
  121. package/lib/next/readDocumentation.js.map +1 -0
  122. package/lib/next/runCreateEnginePreset.js +3 -3
  123. package/lib/next/runCreateEnginePreset.js.map +1 -1
  124. package/lib/next/template.d.ts +8 -3
  125. package/lib/next/template.js +5 -9
  126. package/lib/next/template.js.map +1 -1
  127. package/lib/next/utils/resolveBin.d.ts +3 -0
  128. package/lib/next/utils/resolveBin.js +7 -0
  129. package/lib/next/utils/resolveBin.js.map +1 -0
  130. package/lib/shared/getGitHubUserAsAllContributor.js +1 -1
  131. package/lib/shared/getGitHubUserAsAllContributor.js.map +1 -1
  132. package/lib/shared/options/args.d.ts +14 -2
  133. package/lib/shared/options/args.js +18 -2
  134. package/lib/shared/options/args.js.map +1 -1
  135. package/lib/shared/options/createOptionDefaults/index.d.ts +2 -0
  136. package/lib/shared/options/createOptionDefaults/index.js +2 -1
  137. package/lib/shared/options/createOptionDefaults/index.js.map +1 -1
  138. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.d.ts +2 -0
  139. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js +3 -1
  140. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js.map +1 -1
  141. package/lib/shared/options/exclusionKeys.js +3 -3
  142. package/lib/shared/options/exclusionKeys.js.map +1 -1
  143. package/lib/shared/options/logInferredOptions.js +6 -0
  144. package/lib/shared/options/logInferredOptions.js.map +1 -1
  145. package/lib/shared/options/optionsSchema.d.ts +4 -4
  146. package/lib/shared/options/optionsSchema.js +1 -1
  147. package/lib/shared/options/optionsSchema.js.map +1 -1
  148. package/lib/shared/options/readLogoSizing.d.ts +7 -0
  149. package/lib/shared/options/readLogoSizing.js +29 -0
  150. package/lib/shared/options/readLogoSizing.js.map +1 -0
  151. package/lib/shared/options/readOptions.js +4 -2
  152. package/lib/shared/options/readOptions.js.map +1 -1
  153. package/lib/shared/packages.js +1 -3
  154. package/lib/shared/packages.js.map +1 -1
  155. package/lib/shared/types.d.ts +3 -1
  156. package/lib/steps/addToolAllContributors.js +1 -1
  157. package/lib/steps/addToolAllContributors.js.map +1 -1
  158. package/lib/steps/finalizeDependencies.js +1 -1
  159. package/lib/steps/finalizeDependencies.js.map +1 -1
  160. package/lib/steps/initializeGitHubRepository/initializeBranchProtectionSettings.js +9 -0
  161. package/lib/steps/initializeGitHubRepository/initializeBranchProtectionSettings.js.map +1 -1
  162. package/lib/steps/uninstallPackages.js +5 -0
  163. package/lib/steps/uninstallPackages.js.map +1 -1
  164. package/lib/steps/updateAllContributorsTable.js +1 -1
  165. package/lib/steps/updateAllContributorsTable.js.map +1 -1
  166. package/lib/steps/updateReadme.js +1 -1
  167. package/lib/steps/updateReadme.js.map +1 -1
  168. package/lib/steps/writing/creation/createESLintConfig.js +2 -2
  169. package/lib/steps/writing/creation/createESLintConfig.js.map +1 -1
  170. package/lib/steps/writing/creation/createKnipConfig.d.ts +3 -0
  171. package/lib/steps/writing/creation/createKnipConfig.js +20 -0
  172. package/lib/steps/writing/creation/createKnipConfig.js.map +1 -0
  173. package/lib/steps/writing/creation/index.d.ts +2 -1
  174. package/lib/steps/writing/creation/index.js +24 -11
  175. package/lib/steps/writing/creation/index.js.map +1 -1
  176. package/lib/steps/writing/creation/rootFiles.js +2 -9
  177. package/lib/steps/writing/creation/rootFiles.js.map +1 -1
  178. package/package.json +18 -13
  179. package/lib/next/presetCommon.js.map +0 -1
  180. package/lib/next/presetEverything.js +0 -59
  181. package/lib/next/presetEverything.js.map +0 -1
  182. package/lib/next/presetMinimal.js +0 -53
  183. package/lib/next/presetMinimal.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ function resolveBin(bin) {
2
+ return import.meta.resolve(bin).replace(/^file:\/\//gu, "");
3
+ }
4
+ export {
5
+ resolveBin
6
+ };
7
+ //# sourceMappingURL=resolveBin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/next/utils/resolveBin.ts"],"sourcesContent":["export function resolveBin(bin: string) {\n\treturn import.meta.resolve(bin).replace(/^file:\\/\\//gu, \"\");\n}\n"],"mappings":"AAAO,SAAS,WAAW,KAAa;AACvC,SAAO,YAAY,QAAQ,GAAG,EAAE,QAAQ,gBAAgB,EAAE;AAC3D;","names":[]}
@@ -34,7 +34,7 @@ async function getGitHubUserAsAllContributor(octokit, options) {
34
34
  "projectManagement",
35
35
  "tool"
36
36
  ].join(",");
37
- await $`npx -y all-contributors-cli@6.25 add ${user} ${contributions}`;
37
+ await $`pnpx all-contributors-cli@6.25 add ${user} ${contributions}`;
38
38
  return user;
39
39
  }
40
40
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared/getGitHubUserAsAllContributor.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport { $ } from \"execa\";\nimport { Octokit } from \"octokit\";\n\nimport { Options } from \"./types.js\";\n\nexport async function getGitHubUserAsAllContributor(\n\toctokit: Octokit | undefined,\n\toptions: Pick<Options, \"offline\" | \"owner\">,\n) {\n\tif (options.offline) {\n\t\tconsole.warn(\n\t\t\tchalk.gray(\n\t\t\t\t`Skipping populating all-contributors contributions for ${options.owner} because in --offline mode.`,\n\t\t\t),\n\t\t);\n\t\treturn options.owner;\n\t}\n\n\tlet user: string;\n\n\tif (octokit) {\n\t\ttry {\n\t\t\tuser = (await octokit.rest.users.getAuthenticated()).data.login;\n\t\t} catch {\n\t\t\tconsole.warn(\n\t\t\t\tchalk.gray(\n\t\t\t\t\t`Couldn't authenticate GitHub user, falling back to the provided owner name '${options.owner}'.`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tuser = options.owner;\n\t\t}\n\t} else {\n\t\tuser = options.owner;\n\t}\n\n\tconst contributions = [\n\t\t\"code\",\n\t\t\"content\",\n\t\t\"doc\",\n\t\t\"ideas\",\n\t\t\"infra\",\n\t\t\"maintenance\",\n\t\t\"projectManagement\",\n\t\t\"tool\",\n\t].join(\",\");\n\tawait $`npx -y all-contributors-cli@6.25 add ${user} ${contributions}`;\n\n\treturn user;\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,SAAS;AAKlB,eAAsB,8BACrB,SACA,SACC;AACD,MAAI,QAAQ,SAAS;AACpB,YAAQ;AAAA,MACP,MAAM;AAAA,QACL,0DAA0D,QAAQ,KAAK;AAAA,MACxE;AAAA,IACD;AACA,WAAO,QAAQ;AAAA,EAChB;AAEA,MAAI;AAEJ,MAAI,SAAS;AACZ,QAAI;AACH,cAAQ,MAAM,QAAQ,KAAK,MAAM,iBAAiB,GAAG,KAAK;AAAA,IAC3D,QAAQ;AACP,cAAQ;AAAA,QACP,MAAM;AAAA,UACL,+EAA+E,QAAQ,KAAK;AAAA,QAC7F;AAAA,MACD;AACA,aAAO,QAAQ;AAAA,IAChB;AAAA,EACD,OAAO;AACN,WAAO,QAAQ;AAAA,EAChB;AAEA,QAAM,gBAAgB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,KAAK,GAAG;AACV,QAAM,yCAAyC,IAAI,IAAI,aAAa;AAEpE,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/shared/getGitHubUserAsAllContributor.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport { $ } from \"execa\";\nimport { Octokit } from \"octokit\";\n\nimport { Options } from \"./types.js\";\n\nexport async function getGitHubUserAsAllContributor(\n\toctokit: Octokit | undefined,\n\toptions: Pick<Options, \"offline\" | \"owner\">,\n) {\n\tif (options.offline) {\n\t\tconsole.warn(\n\t\t\tchalk.gray(\n\t\t\t\t`Skipping populating all-contributors contributions for ${options.owner} because in --offline mode.`,\n\t\t\t),\n\t\t);\n\t\treturn options.owner;\n\t}\n\n\tlet user: string;\n\n\tif (octokit) {\n\t\ttry {\n\t\t\tuser = (await octokit.rest.users.getAuthenticated()).data.login;\n\t\t} catch {\n\t\t\tconsole.warn(\n\t\t\t\tchalk.gray(\n\t\t\t\t\t`Couldn't authenticate GitHub user, falling back to the provided owner name '${options.owner}'.`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tuser = options.owner;\n\t\t}\n\t} else {\n\t\tuser = options.owner;\n\t}\n\n\tconst contributions = [\n\t\t\"code\",\n\t\t\"content\",\n\t\t\"doc\",\n\t\t\"ideas\",\n\t\t\"infra\",\n\t\t\"maintenance\",\n\t\t\"projectManagement\",\n\t\t\"tool\",\n\t].join(\",\");\n\tawait $`pnpx all-contributors-cli@6.25 add ${user} ${contributions}`;\n\n\treturn user;\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,SAAS;AAKlB,eAAsB,8BACrB,SACA,SACC;AACD,MAAI,QAAQ,SAAS;AACpB,YAAQ;AAAA,MACP,MAAM;AAAA,QACL,0DAA0D,QAAQ,KAAK;AAAA,MACxE;AAAA,IACD;AACA,WAAO,QAAQ;AAAA,EAChB;AAEA,MAAI;AAEJ,MAAI,SAAS;AACZ,QAAI;AACH,cAAQ,MAAM,QAAQ,KAAK,MAAM,iBAAiB,GAAG,KAAK;AAAA,IAC3D,QAAQ;AACP,cAAQ;AAAA,QACP,MAAM;AAAA,UACL,+EAA+E,QAAQ,KAAK;AAAA,QAC7F;AAAA,MACD;AACA,aAAO,QAAQ;AAAA,IAChB;AAAA,EACD,OAAO;AACN,WAAO,QAAQ;AAAA,EAChB;AAEA,QAAM,gBAAgB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,KAAK,GAAG;AACV,QAAM,uCAAuC,IAAI,IAAI,aAAa;AAElE,SAAO;AACR;","names":[]}
@@ -109,8 +109,8 @@ declare const allArgOptions: {
109
109
  readonly docsSection: "opt-out";
110
110
  readonly type: "boolean";
111
111
  };
112
- readonly "exclude-lint-regex": {
113
- readonly description: "Don't add eslint-plugin-regex to enforce good practices around \n regular expressions.";
112
+ readonly "exclude-lint-regexp": {
113
+ readonly description: "Don't add eslint-plugin-regexp to enforce good practices around \n regular expressions.";
114
114
  readonly docsSection: "opt-out";
115
115
  readonly type: "boolean";
116
116
  };
@@ -190,6 +190,18 @@ declare const allArgOptions: {
190
190
  readonly docsSection: "optional";
191
191
  readonly type: "string";
192
192
  };
193
+ readonly "logo-height": {
194
+ readonly description: `If ${string} is provided or detected from an existing README.md,
195
+ an explicit height style`;
196
+ readonly docsSection: "optional";
197
+ readonly type: "string";
198
+ };
199
+ readonly "logo-width": {
200
+ readonly description: `If ${string} is provided or detected from an existing README.md,
201
+ an explicit width style`;
202
+ readonly docsSection: "optional";
203
+ readonly type: "string";
204
+ };
193
205
  readonly mode: {
194
206
  readonly description: "Whether to:\n • create: a new repository in a child directory\n • initialize: a freshly repository in the current directory\n • migrate: an existing repository in the current directory";
195
207
  readonly docsSection: "core";
@@ -130,8 +130,8 @@ const allArgOptions = {
130
130
  docsSection: "opt-out",
131
131
  type: "boolean"
132
132
  },
133
- "exclude-lint-regex": {
134
- description: `Don't add eslint-plugin-regex to enforce good practices around
133
+ "exclude-lint-regexp": {
134
+ description: `Don't add eslint-plugin-regexp to enforce good practices around
135
135
  regular expressions.`,
136
136
  docsSection: "opt-out",
137
137
  type: "boolean"
@@ -230,6 +230,22 @@ const allArgOptions = {
230
230
  docsSection: "optional",
231
231
  type: "string"
232
232
  },
233
+ "logo-height": {
234
+ description: `If ${chalk.cyanBright(
235
+ "--logo"
236
+ )} is provided or detected from an existing README.md,
237
+ an explicit height style`,
238
+ docsSection: "optional",
239
+ type: "string"
240
+ },
241
+ "logo-width": {
242
+ description: `If ${chalk.cyanBright(
243
+ "--logo"
244
+ )} is provided or detected from an existing README.md,
245
+ an explicit width style`,
246
+ docsSection: "optional",
247
+ type: "string"
248
+ },
233
249
  mode: {
234
250
  description: `Whether to:
235
251
  \u2022 create: a new repository in a child directory
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/shared/options/args.ts"],"sourcesContent":["import chalk from \"chalk\";\n\nexport const allArgOptions = {\n\taccess: {\n\t\tdescription: `(${chalk.cyanBright(\n\t\t\t'\"public\" | \"restricted\"',\n\t\t)}): Which ${chalk.cyanBright(\"npm publish --access\")} to \n release npm packages with (by default, \"public\")`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tauthor: {\n\t\tdescription: `Username on npm to publish packages under (by \n default, an existing npm author, or the currently logged in npm user, or \n ${chalk.cyanBright(\"owner.toLowerCase()\")})`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tauto: {\n\t\tdescription: `Whether to infer all options from files on disk.`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"boolean\",\n\t},\n\tbase: {\n\t\tdescription: `Whether to scaffold the repository with:\n • everything: that comes with the template (${chalk.cyanBright.bold(\n\t\t\"recommended\",\n\t)})\n • common: additions to the minimal starters such as releases and tests\n • minimal: amounts of tooling, essentially opting out of everything\n • prompt: for which portions to exclude`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\tbin: {\n\t\tdescription: `package.json bin value to include for npx-style running.`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"create-repository\": {\n\t\tdescription: `Whether to create a corresponding repository on github.com \n (if it doesn't yet exist)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"boolean\",\n\t},\n\tdescription: {\n\t\tdescription: `Sentence case description of the repository \n (e.g. A quickstart-friendly TypeScript package with lots of great \n repository tooling. ✨)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\tdirectory: {\n\t\tdescription: `Directory to create the repository in (by default, the same \n name as the repository)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\temail: {\n\t\tdescription: `Email address to be listed as the point of contact in docs \n and packages (e.g. example@joshuakgoldberg.com)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"email-github\": {\n\t\tdescription: `Optionally, may be provided to use different emails in ${chalk.cyanBright(\n\t\t\t\".md\",\n\t\t)} \n files`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"email-npm\": {\n\t\tdescription: `Optionally, may be provided to use different emails in \n ${chalk.cyanBright(\"package.json\")}`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"exclude-all-contributors\": {\n\t\tdescription: `Don't add all-contributors to track contributions \n and display them in a README.md table.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-compliance\": {\n\t\tdescription: `Don't add a GitHub Actions workflow to verify that PRs match \n an expected format.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-jsdoc\": {\n\t\tdescription: `Don't use eslint-plugin-jsdoc to enforce good practices around \n JSDoc comments.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-json\": {\n\t\tdescription: `Don't apply linting and sorting to ${chalk.cyanBright(\n\t\t\t\"*.json\",\n\t\t)}, and \n ${chalk.cyanBright(\"*.jsonc\")} files.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-knip\": {\n\t\tdescription: `Don't add Knip to detect unused files, dependencies, and code \n exports.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-md\": {\n\t\tdescription: `Don't apply linting to ${chalk.cyanBright(\"*.md\")} files.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-package-json\": {\n\t\tdescription: `Don't add eslint-plugin-package-json to lint for \n package.json correctness.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-packages\": {\n\t\tdescription: `Don't add a pnpm dedupe workflow to ensure packages \n aren't duplicated unnecessarily.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-perfectionist\": {\n\t\tdescription: `Don't apply eslint-plugin-perfectionist to ensure \n imports, keys, and so on are in sorted order.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-regex\": {\n\t\tdescription: `Don't add eslint-plugin-regex to enforce good practices around \n regular expressions.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-spelling\": {\n\t\tdescription: `Don't add cspell to spell check against dictionaries \n of known words.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-strict\": {\n\t\tdescription: `Don't augment the recommended logical lint rules with \n typescript-eslint's strict config.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-stylistic\": {\n\t\tdescription: `Don't add stylistic rules such as typescript-eslint's \n stylistic config.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-yml\": {\n\t\tdescription: `Don't apply linting and sorting to ${chalk.cyanBright(\n\t\t\t\"*.yaml\",\n\t\t)} and ${chalk.cyanBright(\"*.yml\")} files.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-releases\": {\n\t\tdescription: `Don't add release-it to generate changelogs, package bumps, \n and publishes based on conventional commits.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-renovate\": {\n\t\tdescription: `Don't add a Renovate config to dependencies up-to-date with \n PRs.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-templated-by\": {\n\t\tdescription: `Don't add a _\"This package was templated with create-typescript-app\"_ notice at the end of the README.md.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-tests\": {\n\t\tdescription: `Don't add Vitest tooling for fast unit tests, configured \n with coverage tracking.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\tfunding: {\n\t\tdescription: `GitHub organization or username to mention in ${chalk.cyanBright(\n\t\t\t\"funding.yml\",\n\t\t)} \n (by default, owner)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tguide: {\n\t\tdescription: `Link to a contribution guide to place at the top of the \n development docs`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"guide-title\": {\n\t\tdescription: `If ${chalk.cyanBright(\n\t\t\t\"--guide\",\n\t\t)} is provided or detected from an existing \n DEVELOPMENT.md, the text title to place in the guide link`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tkeywords: {\n\t\tdescription: `Any number of keywords to include in ${chalk.cyanBright(\n\t\t\t\"package.json\",\n\t\t)} (by default, \n none). This can be specified any number of times, like \n ${chalk.cyanBright('--keywords apple --keywords \"banana cherry\"')}`,\n\t\tdocsSection: \"optional\",\n\t\tmultiple: true,\n\t\ttype: \"string\",\n\t},\n\tlogo: {\n\t\tdescription: `Local image file in the repository to display near the top of \n the README.md as a logo`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"logo-alt\": {\n\t\tdescription: `If ${chalk.cyanBright(\n\t\t\t\"--logo\",\n\t\t)} is provided or detected from an existing README.md, \n alt text that describes the image will be prompted for if not provided`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tmode: {\n\t\tdescription: `Whether to:\n • create: a new repository in a child directory\n • initialize: a freshly repository in the current directory\n • migrate: an existing repository in the current directory`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\toffline: {\n\t\tdescription: `You can run ${chalk.cyanBright(\n\t\t\t\"create-typescript-app\",\n\t\t)} in an \"offline\" mode. \n Doing so will:\n • Enable ${chalk.cyanBright(\n\t\t\"--exclude-all-contributors-api\",\n\t)} and ${chalk.cyanBright(\"--skip-github-api\")}\n • Skip network calls when setting up contributors\n • Run pnpm commands with pnpm's ${chalk.cyanBright(\"--offline\")} mode`,\n\t\tdocsSection: \"offline\",\n\t\ttype: \"boolean\",\n\t},\n\towner: {\n\t\tdescription: `GitHub organization or user the repository is underneath \n (e.g. JoshuaKGoldberg)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\t\"preserve-generated-from\": {\n\t\tdescription: `Whether to keep the GitHub repository generated from \n notice (by default, false)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"boolean\",\n\t},\n\trepository: {\n\t\tdescription: `The kebab-case name of the repository \n (e.g. create-typescript-app)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\t\"skip-all-contributors-api\": {\n\t\tdescription: `Skips network calls that fetch all-contributors data from\n GitHub. This flag does nothing if ${chalk.cyanBright(\n\t\t\"--exclude-all-contributors\",\n\t)} was specified.`,\n\t\tdocsSection: \"skip-net\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-github-api\": {\n\t\tdescription: `Skips calling to GitHub APIs.`,\n\t\tdocsSection: \"skip-net\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-install\": {\n\t\tdescription: `Skips installing all the new template packages with pnpm.`,\n\t\tdocsSection: \"skip-net\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-removal\": {\n\t\tdescription: `Skips removing setup docs and scripts, including this ${chalk.cyanBright(\n\t\t\t\"docs/\",\n\t\t)} \n directory`,\n\t\tdocsSection: \"skip-disk\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-restore\": {\n\t\tdescription: `Skips the prompt offering to restore the repository if an \n error occurs during setup`,\n\t\tdocsSection: \"skip-disk\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-uninstall\": {\n\t\tdescription: `Skips uninstalling packages only used for setup scripts`,\n\t\tdocsSection: \"skip-disk\",\n\t\ttype: \"boolean\",\n\t},\n\ttitle: {\n\t\tdescription: `Title Case title for the repository to be used in \n documentation (e.g. Create TypeScript App)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n} as const;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/shared/options/args.ts"],"sourcesContent":["import chalk from \"chalk\";\n\nexport const allArgOptions = {\n\taccess: {\n\t\tdescription: `(${chalk.cyanBright(\n\t\t\t'\"public\" | \"restricted\"',\n\t\t)}): Which ${chalk.cyanBright(\"npm publish --access\")} to \n release npm packages with (by default, \"public\")`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tauthor: {\n\t\tdescription: `Username on npm to publish packages under (by \n default, an existing npm author, or the currently logged in npm user, or \n ${chalk.cyanBright(\"owner.toLowerCase()\")})`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tauto: {\n\t\tdescription: `Whether to infer all options from files on disk.`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"boolean\",\n\t},\n\tbase: {\n\t\tdescription: `Whether to scaffold the repository with:\n • everything: that comes with the template (${chalk.cyanBright.bold(\n\t\t\"recommended\",\n\t)})\n • common: additions to the minimal starters such as releases and tests\n • minimal: amounts of tooling, essentially opting out of everything\n • prompt: for which portions to exclude`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\tbin: {\n\t\tdescription: `package.json bin value to include for npx-style running.`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"create-repository\": {\n\t\tdescription: `Whether to create a corresponding repository on github.com \n (if it doesn't yet exist)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"boolean\",\n\t},\n\tdescription: {\n\t\tdescription: `Sentence case description of the repository \n (e.g. A quickstart-friendly TypeScript package with lots of great \n repository tooling. ✨)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\tdirectory: {\n\t\tdescription: `Directory to create the repository in (by default, the same \n name as the repository)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\temail: {\n\t\tdescription: `Email address to be listed as the point of contact in docs \n and packages (e.g. example@joshuakgoldberg.com)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"email-github\": {\n\t\tdescription: `Optionally, may be provided to use different emails in ${chalk.cyanBright(\n\t\t\t\".md\",\n\t\t)} \n files`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"email-npm\": {\n\t\tdescription: `Optionally, may be provided to use different emails in \n ${chalk.cyanBright(\"package.json\")}`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"exclude-all-contributors\": {\n\t\tdescription: `Don't add all-contributors to track contributions \n and display them in a README.md table.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-compliance\": {\n\t\tdescription: `Don't add a GitHub Actions workflow to verify that PRs match \n an expected format.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-jsdoc\": {\n\t\tdescription: `Don't use eslint-plugin-jsdoc to enforce good practices around \n JSDoc comments.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-json\": {\n\t\tdescription: `Don't apply linting and sorting to ${chalk.cyanBright(\n\t\t\t\"*.json\",\n\t\t)}, and \n ${chalk.cyanBright(\"*.jsonc\")} files.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-knip\": {\n\t\tdescription: `Don't add Knip to detect unused files, dependencies, and code \n exports.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-md\": {\n\t\tdescription: `Don't apply linting to ${chalk.cyanBright(\"*.md\")} files.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-package-json\": {\n\t\tdescription: `Don't add eslint-plugin-package-json to lint for \n package.json correctness.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-packages\": {\n\t\tdescription: `Don't add a pnpm dedupe workflow to ensure packages \n aren't duplicated unnecessarily.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-perfectionist\": {\n\t\tdescription: `Don't apply eslint-plugin-perfectionist to ensure \n imports, keys, and so on are in sorted order.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-regexp\": {\n\t\tdescription: `Don't add eslint-plugin-regexp to enforce good practices around \n regular expressions.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-spelling\": {\n\t\tdescription: `Don't add cspell to spell check against dictionaries \n of known words.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-strict\": {\n\t\tdescription: `Don't augment the recommended logical lint rules with \n typescript-eslint's strict config.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-stylistic\": {\n\t\tdescription: `Don't add stylistic rules such as typescript-eslint's \n stylistic config.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-lint-yml\": {\n\t\tdescription: `Don't apply linting and sorting to ${chalk.cyanBright(\n\t\t\t\"*.yaml\",\n\t\t)} and ${chalk.cyanBright(\"*.yml\")} files.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-releases\": {\n\t\tdescription: `Don't add release-it to generate changelogs, package bumps, \n and publishes based on conventional commits.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-renovate\": {\n\t\tdescription: `Don't add a Renovate config to dependencies up-to-date with \n PRs.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-templated-by\": {\n\t\tdescription: `Don't add a _\"This package was templated with create-typescript-app\"_ notice at the end of the README.md.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\t\"exclude-tests\": {\n\t\tdescription: `Don't add Vitest tooling for fast unit tests, configured \n with coverage tracking.`,\n\t\tdocsSection: \"opt-out\",\n\t\ttype: \"boolean\",\n\t},\n\tfunding: {\n\t\tdescription: `GitHub organization or username to mention in ${chalk.cyanBright(\n\t\t\t\"funding.yml\",\n\t\t)} \n (by default, owner)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tguide: {\n\t\tdescription: `Link to a contribution guide to place at the top of the \n development docs`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"guide-title\": {\n\t\tdescription: `If ${chalk.cyanBright(\n\t\t\t\"--guide\",\n\t\t)} is provided or detected from an existing \n DEVELOPMENT.md, the text title to place in the guide link`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tkeywords: {\n\t\tdescription: `Any number of keywords to include in ${chalk.cyanBright(\n\t\t\t\"package.json\",\n\t\t)} (by default, \n none). This can be specified any number of times, like \n ${chalk.cyanBright('--keywords apple --keywords \"banana cherry\"')}`,\n\t\tdocsSection: \"optional\",\n\t\tmultiple: true,\n\t\ttype: \"string\",\n\t},\n\tlogo: {\n\t\tdescription: `Local image file in the repository to display near the top of \n the README.md as a logo`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"logo-alt\": {\n\t\tdescription: `If ${chalk.cyanBright(\n\t\t\t\"--logo\",\n\t\t)} is provided or detected from an existing README.md, \n alt text that describes the image will be prompted for if not provided`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"logo-height\": {\n\t\tdescription: `If ${chalk.cyanBright(\n\t\t\t\"--logo\",\n\t\t)} is provided or detected from an existing README.md, \n an explicit height style`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\t\"logo-width\": {\n\t\tdescription: `If ${chalk.cyanBright(\n\t\t\t\"--logo\",\n\t\t)} is provided or detected from an existing README.md, \n an explicit width style`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"string\",\n\t},\n\tmode: {\n\t\tdescription: `Whether to:\n • create: a new repository in a child directory\n • initialize: a freshly repository in the current directory\n • migrate: an existing repository in the current directory`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\toffline: {\n\t\tdescription: `You can run ${chalk.cyanBright(\n\t\t\t\"create-typescript-app\",\n\t\t)} in an \"offline\" mode. \n Doing so will:\n • Enable ${chalk.cyanBright(\n\t\t\"--exclude-all-contributors-api\",\n\t)} and ${chalk.cyanBright(\"--skip-github-api\")}\n • Skip network calls when setting up contributors\n • Run pnpm commands with pnpm's ${chalk.cyanBright(\"--offline\")} mode`,\n\t\tdocsSection: \"offline\",\n\t\ttype: \"boolean\",\n\t},\n\towner: {\n\t\tdescription: `GitHub organization or user the repository is underneath \n (e.g. JoshuaKGoldberg)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\t\"preserve-generated-from\": {\n\t\tdescription: `Whether to keep the GitHub repository generated from \n notice (by default, false)`,\n\t\tdocsSection: \"optional\",\n\t\ttype: \"boolean\",\n\t},\n\trepository: {\n\t\tdescription: `The kebab-case name of the repository \n (e.g. create-typescript-app)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n\t\"skip-all-contributors-api\": {\n\t\tdescription: `Skips network calls that fetch all-contributors data from\n GitHub. This flag does nothing if ${chalk.cyanBright(\n\t\t\"--exclude-all-contributors\",\n\t)} was specified.`,\n\t\tdocsSection: \"skip-net\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-github-api\": {\n\t\tdescription: `Skips calling to GitHub APIs.`,\n\t\tdocsSection: \"skip-net\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-install\": {\n\t\tdescription: `Skips installing all the new template packages with pnpm.`,\n\t\tdocsSection: \"skip-net\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-removal\": {\n\t\tdescription: `Skips removing setup docs and scripts, including this ${chalk.cyanBright(\n\t\t\t\"docs/\",\n\t\t)} \n directory`,\n\t\tdocsSection: \"skip-disk\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-restore\": {\n\t\tdescription: `Skips the prompt offering to restore the repository if an \n error occurs during setup`,\n\t\tdocsSection: \"skip-disk\",\n\t\ttype: \"boolean\",\n\t},\n\t\"skip-uninstall\": {\n\t\tdescription: `Skips uninstalling packages only used for setup scripts`,\n\t\tdocsSection: \"skip-disk\",\n\t\ttype: \"boolean\",\n\t},\n\ttitle: {\n\t\tdescription: `Title Case title for the repository to be used in \n documentation (e.g. Create TypeScript App)`,\n\t\tdocsSection: \"core\",\n\t\ttype: \"string\",\n\t},\n} as const;\n"],"mappings":"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","names":[]}
@@ -5,6 +5,8 @@ import '../../codes.js';
5
5
 
6
6
  declare function createOptionDefaults(promptedOptions?: PromptedOptions): {
7
7
  logo: () => Promise<{
8
+ height?: number;
9
+ width?: number;
8
10
  alt: string;
9
11
  src: string;
10
12
  } | undefined>;
@@ -4,6 +4,7 @@ import gitUrlParse from "git-url-parse";
4
4
  import lazyValue from "lazy-value";
5
5
  import * as fs from "node:fs/promises";
6
6
  import npmUser from "npm-user";
7
+ import { readDescription } from "../../../next/readDescription.js";
7
8
  import { readPackageData } from "../../packages.js";
8
9
  import { tryCatchAsync } from "../../tryCatchAsync.js";
9
10
  import { tryCatchLazyValueAsync } from "../../tryCatchLazyValueAsync.js";
@@ -26,7 +27,7 @@ function createOptionDefaults(promptedOptions) {
26
27
  return {
27
28
  author: async () => (await packageAuthor()).author ?? (await npmDefaults())?.name,
28
29
  bin: async () => (await packageData()).bin,
29
- description: async () => (await packageData()).description,
30
+ description: async () => await readDescription(packageData),
30
31
  email: async () => readEmails(npmDefaults, packageAuthor),
31
32
  funding: async () => await tryCatchAsync(
32
33
  async () => (await fs.readFile(".github/FUNDING.yml")).toString().split(":")[1]?.trim()
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/index.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport gitRemoteOriginUrl from \"git-remote-origin-url\";\nimport gitUrlParse from \"git-url-parse\";\nimport lazyValue from \"lazy-value\";\nimport * as fs from \"node:fs/promises\";\nimport npmUser from \"npm-user\";\n\nimport { readPackageData } from \"../../packages.js\";\nimport { tryCatchAsync } from \"../../tryCatchAsync.js\";\nimport { tryCatchLazyValueAsync } from \"../../tryCatchLazyValueAsync.js\";\nimport { PromptedOptions } from \"../../types.js\";\nimport { parsePackageAuthor } from \"./parsePackageAuthor.js\";\nimport { readDefaultsFromReadme } from \"./readDefaultsFromReadme.js\";\nimport { readEmails } from \"./readEmails.js\";\nimport { readGuide } from \"./readGuide.js\";\n\nexport function createOptionDefaults(promptedOptions?: PromptedOptions) {\n\tconst gitDefaults = tryCatchLazyValueAsync(async () =>\n\t\tgitUrlParse(await gitRemoteOriginUrl()),\n\t);\n\n\tconst npmDefaults = tryCatchLazyValueAsync(async () => {\n\t\tconst whoami = (await $`npm whoami`).stdout;\n\t\treturn whoami ? await npmUser(whoami) : undefined;\n\t});\n\n\tconst packageData = lazyValue(readPackageData);\n\tconst packageAuthor = lazyValue(async () =>\n\t\tparsePackageAuthor(await packageData()),\n\t);\n\n\treturn {\n\t\tauthor: async () =>\n\t\t\t(await packageAuthor()).author ?? (await npmDefaults())?.name,\n\t\tbin: async () => (await packageData()).bin,\n\t\tdescription: async () => (await packageData()).description,\n\t\temail: async () => readEmails(npmDefaults, packageAuthor),\n\t\tfunding: async () =>\n\t\t\tawait tryCatchAsync(async () =>\n\t\t\t\t(await fs.readFile(\".github/FUNDING.yml\"))\n\t\t\t\t\t.toString()\n\t\t\t\t\t.split(\":\")[1]\n\t\t\t\t\t?.trim(),\n\t\t\t),\n\t\tguide: readGuide,\n\t\towner: async () =>\n\t\t\t(await gitDefaults())?.organization ?? (await packageAuthor()).author,\n\t\trepository: async () =>\n\t\t\tpromptedOptions?.repository ??\n\t\t\t(await gitDefaults())?.name ??\n\t\t\t(await packageData()).name,\n\t\t...readDefaultsFromReadme(),\n\t};\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AACxB,OAAO,eAAe;AACtB,YAAY,QAAQ;AACpB,OAAO,aAAa;AAEpB,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AAEvC,SAAS,0BAA0B;AACnC,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAEnB,SAAS,qBAAqB,iBAAmC;AACvE,QAAM,cAAc;AAAA,IAAuB,YAC1C,YAAY,MAAM,mBAAmB,CAAC;AAAA,EACvC;AAEA,QAAM,cAAc,uBAAuB,YAAY;AACtD,UAAM,UAAU,MAAM,eAAe;AACrC,WAAO,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,EACzC,CAAC;AAED,QAAM,cAAc,UAAU,eAAe;AAC7C,QAAM,gBAAgB;AAAA,IAAU,YAC/B,mBAAmB,MAAM,YAAY,CAAC;AAAA,EACvC;AAEA,SAAO;AAAA,IACN,QAAQ,aACN,MAAM,cAAc,GAAG,WAAW,MAAM,YAAY,IAAI;AAAA,IAC1D,KAAK,aAAa,MAAM,YAAY,GAAG;AAAA,IACvC,aAAa,aAAa,MAAM,YAAY,GAAG;AAAA,IAC/C,OAAO,YAAY,WAAW,aAAa,aAAa;AAAA,IACxD,SAAS,YACR,MAAM;AAAA,MAAc,aAClB,MAAM,GAAG,SAAS,qBAAqB,GACtC,SAAS,EACT,MAAM,GAAG,EAAE,CAAC,GACX,KAAK;AAAA,IACT;AAAA,IACD,OAAO;AAAA,IACP,OAAO,aACL,MAAM,YAAY,IAAI,iBAAiB,MAAM,cAAc,GAAG;AAAA,IAChE,YAAY,YACX,iBAAiB,eAChB,MAAM,YAAY,IAAI,SACtB,MAAM,YAAY,GAAG;AAAA,IACvB,GAAG,uBAAuB;AAAA,EAC3B;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/index.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport gitRemoteOriginUrl from \"git-remote-origin-url\";\nimport gitUrlParse from \"git-url-parse\";\nimport lazyValue from \"lazy-value\";\nimport * as fs from \"node:fs/promises\";\nimport npmUser from \"npm-user\";\n\nimport { readDescription } from \"../../../next/readDescription.js\";\nimport { readPackageData } from \"../../packages.js\";\nimport { tryCatchAsync } from \"../../tryCatchAsync.js\";\nimport { tryCatchLazyValueAsync } from \"../../tryCatchLazyValueAsync.js\";\nimport { PromptedOptions } from \"../../types.js\";\nimport { parsePackageAuthor } from \"./parsePackageAuthor.js\";\nimport { readDefaultsFromReadme } from \"./readDefaultsFromReadme.js\";\nimport { readEmails } from \"./readEmails.js\";\nimport { readGuide } from \"./readGuide.js\";\n\nexport function createOptionDefaults(promptedOptions?: PromptedOptions) {\n\tconst gitDefaults = tryCatchLazyValueAsync(async () =>\n\t\tgitUrlParse(await gitRemoteOriginUrl()),\n\t);\n\n\tconst npmDefaults = tryCatchLazyValueAsync(async () => {\n\t\tconst whoami = (await $`npm whoami`).stdout;\n\t\treturn whoami ? await npmUser(whoami) : undefined;\n\t});\n\n\tconst packageData = lazyValue(readPackageData);\n\tconst packageAuthor = lazyValue(async () =>\n\t\tparsePackageAuthor(await packageData()),\n\t);\n\n\treturn {\n\t\tauthor: async () =>\n\t\t\t(await packageAuthor()).author ?? (await npmDefaults())?.name,\n\t\tbin: async () => (await packageData()).bin,\n\t\tdescription: async () => await readDescription(packageData),\n\t\temail: async () => readEmails(npmDefaults, packageAuthor),\n\t\tfunding: async () =>\n\t\t\tawait tryCatchAsync(async () =>\n\t\t\t\t(await fs.readFile(\".github/FUNDING.yml\"))\n\t\t\t\t\t.toString()\n\t\t\t\t\t.split(\":\")[1]\n\t\t\t\t\t?.trim(),\n\t\t\t),\n\t\tguide: readGuide,\n\t\towner: async () =>\n\t\t\t(await gitDefaults())?.organization ?? (await packageAuthor()).author,\n\t\trepository: async () =>\n\t\t\tpromptedOptions?.repository ??\n\t\t\t(await gitDefaults())?.name ??\n\t\t\t(await packageData()).name,\n\t\t...readDefaultsFromReadme(),\n\t};\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AACxB,OAAO,eAAe;AACtB,YAAY,QAAQ;AACpB,OAAO,aAAa;AAEpB,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AAEvC,SAAS,0BAA0B;AACnC,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAEnB,SAAS,qBAAqB,iBAAmC;AACvE,QAAM,cAAc;AAAA,IAAuB,YAC1C,YAAY,MAAM,mBAAmB,CAAC;AAAA,EACvC;AAEA,QAAM,cAAc,uBAAuB,YAAY;AACtD,UAAM,UAAU,MAAM,eAAe;AACrC,WAAO,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,EACzC,CAAC;AAED,QAAM,cAAc,UAAU,eAAe;AAC7C,QAAM,gBAAgB;AAAA,IAAU,YAC/B,mBAAmB,MAAM,YAAY,CAAC;AAAA,EACvC;AAEA,SAAO;AAAA,IACN,QAAQ,aACN,MAAM,cAAc,GAAG,WAAW,MAAM,YAAY,IAAI;AAAA,IAC1D,KAAK,aAAa,MAAM,YAAY,GAAG;AAAA,IACvC,aAAa,YAAY,MAAM,gBAAgB,WAAW;AAAA,IAC1D,OAAO,YAAY,WAAW,aAAa,aAAa;AAAA,IACxD,SAAS,YACR,MAAM;AAAA,MAAc,aAClB,MAAM,GAAG,SAAS,qBAAqB,GACtC,SAAS,EACT,MAAM,GAAG,EAAE,CAAC,GACX,KAAK;AAAA,IACT;AAAA,IACD,OAAO;AAAA,IACP,OAAO,aACL,MAAM,YAAY,IAAI,iBAAiB,MAAM,cAAc,GAAG;AAAA,IAChE,YAAY,YACX,iBAAiB,eAChB,MAAM,YAAY,IAAI,SACtB,MAAM,YAAY,GAAG;AAAA,IACvB,GAAG,uBAAuB;AAAA,EAC3B;AACD;","names":[]}
@@ -1,5 +1,7 @@
1
1
  declare function readDefaultsFromReadme(): {
2
2
  logo: () => Promise<{
3
+ height?: number;
4
+ width?: number;
3
5
  alt: string;
4
6
  src: string;
5
7
  } | undefined>;
@@ -1,5 +1,6 @@
1
1
  import lazyValue from "lazy-value";
2
2
  import { readFileSafe } from "../../readFileSafe.js";
3
+ import { readLogoSizing } from "../readLogoSizing.js";
3
4
  function readDefaultsFromReadme() {
4
5
  const readme = lazyValue(async () => await readFileSafe("README.md", ""));
5
6
  const imageTag = lazyValue(
@@ -17,7 +18,8 @@ function readDefaultsFromReadme() {
17
18
  }
18
19
  return {
19
20
  alt: /alt=['"](.+)['"]\s*src=/.exec(tag)?.[1] ?? "Project logo",
20
- src
21
+ src,
22
+ ...readLogoSizing(src)
21
23
  };
22
24
  },
23
25
  title: async () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/readDefaultsFromReadme.ts"],"sourcesContent":["import lazyValue from \"lazy-value\";\n\nimport { readFileSafe } from \"../../readFileSafe.js\";\n\nexport function readDefaultsFromReadme() {\n\tconst readme = lazyValue(async () => await readFileSafe(\"README.md\", \"\"));\n\n\tconst imageTag = lazyValue(\n\t\tasync () => /\\n<img.+src=.+>/.exec(await readme())?.[0],\n\t);\n\n\treturn {\n\t\tlogo: async () => {\n\t\t\tconst tag = await imageTag();\n\n\t\t\tif (!tag) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst src = /src\\s*=(.+)['\"/]>/\n\t\t\t\t.exec(tag)?.[1]\n\t\t\t\t?.replaceAll(/^['\"]|['\"]$/g, \"\");\n\n\t\t\tif (!src) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\talt: /alt=['\"](.+)['\"]\\s*src=/.exec(tag)?.[1] ?? \"Project logo\",\n\t\t\t\tsrc,\n\t\t\t};\n\t\t},\n\t\ttitle: async () => {\n\t\t\tconst text = await readme();\n\t\t\treturn (/^<h1\\s+align=\"center\">(.+)<\\/h1>/.exec(text) ??\n\t\t\t\t/^# (.+)/.exec(text))?.[1];\n\t\t},\n\t};\n}\n"],"mappings":"AAAA,OAAO,eAAe;AAEtB,SAAS,oBAAoB;AAEtB,SAAS,yBAAyB;AACxC,QAAM,SAAS,UAAU,YAAY,MAAM,aAAa,aAAa,EAAE,CAAC;AAExE,QAAM,WAAW;AAAA,IAChB,YAAY,kBAAkB,KAAK,MAAM,OAAO,CAAC,IAAI,CAAC;AAAA,EACvD;AAEA,SAAO;AAAA,IACN,MAAM,YAAY;AACjB,YAAM,MAAM,MAAM,SAAS;AAE3B,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,YAAM,MAAM,oBACV,KAAK,GAAG,IAAI,CAAC,GACZ,WAAW,gBAAgB,EAAE;AAEhC,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,QACN,KAAK,0BAA0B,KAAK,GAAG,IAAI,CAAC,KAAK;AAAA,QACjD;AAAA,MACD;AAAA,IACD;AAAA,IACA,OAAO,YAAY;AAClB,YAAM,OAAO,MAAM,OAAO;AAC1B,cAAQ,mCAAmC,KAAK,IAAI,KACnD,UAAU,KAAK,IAAI,KAAK,CAAC;AAAA,IAC3B;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/readDefaultsFromReadme.ts"],"sourcesContent":["import lazyValue from \"lazy-value\";\n\nimport { readFileSafe } from \"../../readFileSafe.js\";\nimport { readLogoSizing } from \"../readLogoSizing.js\";\n\nexport function readDefaultsFromReadme() {\n\tconst readme = lazyValue(async () => await readFileSafe(\"README.md\", \"\"));\n\n\tconst imageTag = lazyValue(\n\t\tasync () => /\\n<img.+src=.+>/.exec(await readme())?.[0],\n\t);\n\n\treturn {\n\t\tlogo: async () => {\n\t\t\tconst tag = await imageTag();\n\n\t\t\tif (!tag) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst src = /src\\s*=(.+)['\"/]>/\n\t\t\t\t.exec(tag)?.[1]\n\t\t\t\t?.replaceAll(/^['\"]|['\"]$/g, \"\");\n\n\t\t\tif (!src) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\talt: /alt=['\"](.+)['\"]\\s*src=/.exec(tag)?.[1] ?? \"Project logo\",\n\t\t\t\tsrc,\n\t\t\t\t...readLogoSizing(src),\n\t\t\t};\n\t\t},\n\t\ttitle: async () => {\n\t\t\tconst text = await readme();\n\t\t\treturn (/^<h1\\s+align=\"center\">(.+)<\\/h1>/.exec(text) ??\n\t\t\t\t/^# (.+)/.exec(text))?.[1];\n\t\t},\n\t};\n}\n"],"mappings":"AAAA,OAAO,eAAe;AAEtB,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAExB,SAAS,yBAAyB;AACxC,QAAM,SAAS,UAAU,YAAY,MAAM,aAAa,aAAa,EAAE,CAAC;AAExE,QAAM,WAAW;AAAA,IAChB,YAAY,kBAAkB,KAAK,MAAM,OAAO,CAAC,IAAI,CAAC;AAAA,EACvD;AAEA,SAAO;AAAA,IACN,MAAM,YAAY;AACjB,YAAM,MAAM,MAAM,SAAS;AAE3B,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,YAAM,MAAM,oBACV,KAAK,GAAG,IAAI,CAAC,GACZ,WAAW,gBAAgB,EAAE;AAEhC,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,QACN,KAAK,0BAA0B,KAAK,GAAG,IAAI,CAAC,KAAK;AAAA,QACjD;AAAA,QACA,GAAG,eAAe,GAAG;AAAA,MACtB;AAAA,IACD;AAAA,IACA,OAAO,YAAY;AAClB,YAAM,OAAO,MAAM,OAAO;AAC1B,cAAQ,mCAAmC,KAAK,IAAI,KACnD,UAAU,KAAK,IAAI,KAAK,CAAC;AAAA,IAC3B;AAAA,EACD;AACD;","names":[]}
@@ -52,9 +52,9 @@ const exclusionDescriptions = {
52
52
  label: "Apply eslint-plugin-perfectionist to ensure imports, keys, and so on are in sorted order.",
53
53
  level: "common"
54
54
  },
55
- excludeLintRegex: {
56
- hint: "--exclude-lint-regex",
57
- label: "Include eslint-plugin-regex to enforce good practices around regular expressions.",
55
+ excludeLintRegexp: {
56
+ hint: "--exclude-lint-regexp",
57
+ label: "Include eslint-plugin-regexp to enforce good practices around regular expressions.",
58
58
  level: "common"
59
59
  },
60
60
  excludeLintSpelling: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/shared/options/exclusionKeys.ts"],"sourcesContent":["import { Options, OptionsBase } from \"../types.js\";\n\nexport interface ExclusionDescription {\n\thint: string;\n\tlabel: string;\n\tlevel?: \"common\" | \"minimal\";\n}\n\nexport type ExclusionKey = `exclude${string}` & keyof Options;\n\nexport const exclusionDescriptions: Record<ExclusionKey, ExclusionDescription> =\n\t{\n\t\texcludeAllContributors: {\n\t\t\thint: \"--exclude-all-contributors\",\n\t\t\tlabel:\n\t\t\t\t\"Add all-contributors to track contributions and display them in a README.md table.\",\n\t\t},\n\t\texcludeBuild: {\n\t\t\thint: \"--exclude-build\",\n\t\t\tlabel: \"Add a tsup build step to generate built output files.\",\n\t\t\tlevel: \"minimal\",\n\t\t},\n\t\texcludeCompliance: {\n\t\t\thint: \"--exclude-compliance\",\n\t\t\tlabel:\n\t\t\t\t\"Add a GitHub Actions workflow to verify that PRs match an expected format.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintESLint: {\n\t\t\thint: \"--exclude-lint-eslint\",\n\t\t\tlabel:\n\t\t\t\t\"Include eslint-plugin-eslint-comment to enforce good practices around ESLint comment directives.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintJSDoc: {\n\t\t\thint: \"--exclude-lint-jsdoc\",\n\t\t\tlabel:\n\t\t\t\t\"Include eslint-plugin-jsdoc to enforce good practices around JSDoc comments.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintJson: {\n\t\t\thint: \"--exclude-lint-json\",\n\t\t\tlabel: \"Apply linting and sorting to *.json and *.jsonc files.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintKnip: {\n\t\t\thint: \"--exclude-lint-knip\",\n\t\t\tlabel: \"Add Knip to detect unused files, dependencies, and code exports.\",\n\t\t},\n\t\texcludeLintMd: {\n\t\t\thint: \"--exclude-lint-md\",\n\t\t\tlabel: \"Apply linting to *.md files.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintPackageJson: {\n\t\t\thint: \"--exclude-lint-package-json\",\n\t\t\tlabel:\n\t\t\t\t\"Add eslint-plugin-package-json to lint for package.json correctness.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintPackages: {\n\t\t\thint: \"--exclude-lint-packages\",\n\t\t\tlabel:\n\t\t\t\t\"Add a pnpm dedupe workflow to ensure packages aren't duplicated unnecessarily.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintPerfectionist: {\n\t\t\thint: \"--exclude-lint-perfectionist\",\n\t\t\tlabel:\n\t\t\t\t\"Apply eslint-plugin-perfectionist to ensure imports, keys, and so on are in sorted order.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintRegex: {\n\t\t\thint: \"--exclude-lint-regex\",\n\t\t\tlabel:\n\t\t\t\t\"Include eslint-plugin-regex to enforce good practices around regular expressions.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintSpelling: {\n\t\t\thint: \"--exclude-lint-spelling\",\n\t\t\tlabel: \"Add cspell to spell check against dictionaries of known words.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintStrict: {\n\t\t\thint: \"--exclude-lint-strict\",\n\t\t\tlabel:\n\t\t\t\t\"Include strict logical lint rules such as typescript-eslint's strict config. \",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintStylistic: {\n\t\t\thint: \"--exclude-lint-stylistic\",\n\t\t\tlabel:\n\t\t\t\t\"Include stylistic lint rules such as typescript-eslint's stylistic config.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintYml: {\n\t\t\thint: \"--exclude-lint-yml\",\n\t\t\tlabel: \"Apply linting and sorting to *.yaml and *.yml files.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeReleases: {\n\t\t\thint: \"--exclude-releases\",\n\t\t\tlabel:\n\t\t\t\t\"Add release-it to generate changelogs, package bumps, and publishes based on conventional commits.\",\n\t\t},\n\t\texcludeRenovate: {\n\t\t\thint: \"--exclude-renovate\",\n\t\t\tlabel: \"Add a Renovate config to keep dependencies up-to-date with PRs.\",\n\t\t},\n\t\texcludeTemplatedBy: {\n\t\t\thint: \"--exclude-templated-by\",\n\t\t\tlabel:\n\t\t\t\t'Add a _\"This package was templated with create-typescript-app\"_ notice at the end of the README.md.',\n\t\t\tlevel: \"minimal\",\n\t\t},\n\t\texcludeTests: {\n\t\t\thint: \"--exclude-tests\",\n\t\t\tlabel:\n\t\t\t\t\"Add Vitest tooling for fast unit tests, configured with coverage tracking.\",\n\t\t},\n\t};\n\nexport const exclusionKeys = Object.keys(\n\texclusionDescriptions,\n) as ExclusionKey[];\n\nexport function getExclusions(\n\toptions: Partial<Options>,\n\tbase?: OptionsBase,\n): Partial<Options> {\n\tswitch (base) {\n\t\tcase \"common\":\n\t\t\treturn {\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\texclusionKeys\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(exclusion) =>\n\t\t\t\t\t\t\t\texclusionDescriptions[exclusion].level === \"common\",\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((exclusion) => [exclusion, options[exclusion] ?? true]),\n\t\t\t\t),\n\t\t\t};\n\t\tcase \"minimal\":\n\t\t\treturn {\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\texclusionKeys\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(exclusion) =>\n\t\t\t\t\t\t\t\texclusionDescriptions[exclusion].level !== \"minimal\",\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((exclusion) => [exclusion, options[exclusion] ?? true]),\n\t\t\t\t),\n\t\t\t};\n\t\t// We only really care about exclusions on the common and minimal bases\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n"],"mappings":"AAUO,MAAM,wBACZ;AAAA,EACC,wBAAwB;AAAA,IACvB,MAAM;AAAA,IACN,OACC;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IAClB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IAClB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,kBAAkB;AAAA,IACjB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AAAA,EACA,eAAe;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,wBAAwB;AAAA,IACvB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,qBAAqB;AAAA,IACpB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,0BAA0B;AAAA,IACzB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,kBAAkB;AAAA,IACjB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,qBAAqB;AAAA,IACpB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IAClB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,sBAAsB;AAAA,IACrB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,gBAAgB;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OACC;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AAAA,EACA,oBAAoB;AAAA,IACnB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,cAAc;AAAA,IACb,MAAM;AAAA,IACN,OACC;AAAA,EACF;AACD;AAEM,MAAM,gBAAgB,OAAO;AAAA,EACnC;AACD;AAEO,SAAS,cACf,SACA,MACmB;AACnB,UAAQ,MAAM;AAAA,IACb,KAAK;AACJ,aAAO;AAAA,QACN,GAAG,OAAO;AAAA,UACT,cACE;AAAA,YACA,CAAC,cACA,sBAAsB,SAAS,EAAE,UAAU;AAAA,UAC7C,EACC,IAAI,CAAC,cAAc,CAAC,WAAW,QAAQ,SAAS,KAAK,IAAI,CAAC;AAAA,QAC7D;AAAA,MACD;AAAA,IACD,KAAK;AACJ,aAAO;AAAA,QACN,GAAG,OAAO;AAAA,UACT,cACE;AAAA,YACA,CAAC,cACA,sBAAsB,SAAS,EAAE,UAAU;AAAA,UAC7C,EACC,IAAI,CAAC,cAAc,CAAC,WAAW,QAAQ,SAAS,KAAK,IAAI,CAAC;AAAA,QAC7D;AAAA,MACD;AAAA;AAAA,IAED;AACC,aAAO,CAAC;AAAA,EACV;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/shared/options/exclusionKeys.ts"],"sourcesContent":["import { Options, OptionsBase } from \"../types.js\";\n\nexport interface ExclusionDescription {\n\thint: string;\n\tlabel: string;\n\tlevel?: \"common\" | \"minimal\";\n}\n\nexport type ExclusionKey = `exclude${string}` & keyof Options;\n\nexport const exclusionDescriptions: Record<ExclusionKey, ExclusionDescription> =\n\t{\n\t\texcludeAllContributors: {\n\t\t\thint: \"--exclude-all-contributors\",\n\t\t\tlabel:\n\t\t\t\t\"Add all-contributors to track contributions and display them in a README.md table.\",\n\t\t},\n\t\texcludeBuild: {\n\t\t\thint: \"--exclude-build\",\n\t\t\tlabel: \"Add a tsup build step to generate built output files.\",\n\t\t\tlevel: \"minimal\",\n\t\t},\n\t\texcludeCompliance: {\n\t\t\thint: \"--exclude-compliance\",\n\t\t\tlabel:\n\t\t\t\t\"Add a GitHub Actions workflow to verify that PRs match an expected format.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintESLint: {\n\t\t\thint: \"--exclude-lint-eslint\",\n\t\t\tlabel:\n\t\t\t\t\"Include eslint-plugin-eslint-comment to enforce good practices around ESLint comment directives.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintJSDoc: {\n\t\t\thint: \"--exclude-lint-jsdoc\",\n\t\t\tlabel:\n\t\t\t\t\"Include eslint-plugin-jsdoc to enforce good practices around JSDoc comments.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintJson: {\n\t\t\thint: \"--exclude-lint-json\",\n\t\t\tlabel: \"Apply linting and sorting to *.json and *.jsonc files.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintKnip: {\n\t\t\thint: \"--exclude-lint-knip\",\n\t\t\tlabel: \"Add Knip to detect unused files, dependencies, and code exports.\",\n\t\t},\n\t\texcludeLintMd: {\n\t\t\thint: \"--exclude-lint-md\",\n\t\t\tlabel: \"Apply linting to *.md files.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintPackageJson: {\n\t\t\thint: \"--exclude-lint-package-json\",\n\t\t\tlabel:\n\t\t\t\t\"Add eslint-plugin-package-json to lint for package.json correctness.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintPackages: {\n\t\t\thint: \"--exclude-lint-packages\",\n\t\t\tlabel:\n\t\t\t\t\"Add a pnpm dedupe workflow to ensure packages aren't duplicated unnecessarily.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintPerfectionist: {\n\t\t\thint: \"--exclude-lint-perfectionist\",\n\t\t\tlabel:\n\t\t\t\t\"Apply eslint-plugin-perfectionist to ensure imports, keys, and so on are in sorted order.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintRegexp: {\n\t\t\thint: \"--exclude-lint-regexp\",\n\t\t\tlabel:\n\t\t\t\t\"Include eslint-plugin-regexp to enforce good practices around regular expressions.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintSpelling: {\n\t\t\thint: \"--exclude-lint-spelling\",\n\t\t\tlabel: \"Add cspell to spell check against dictionaries of known words.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintStrict: {\n\t\t\thint: \"--exclude-lint-strict\",\n\t\t\tlabel:\n\t\t\t\t\"Include strict logical lint rules such as typescript-eslint's strict config. \",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintStylistic: {\n\t\t\thint: \"--exclude-lint-stylistic\",\n\t\t\tlabel:\n\t\t\t\t\"Include stylistic lint rules such as typescript-eslint's stylistic config.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeLintYml: {\n\t\t\thint: \"--exclude-lint-yml\",\n\t\t\tlabel: \"Apply linting and sorting to *.yaml and *.yml files.\",\n\t\t\tlevel: \"common\",\n\t\t},\n\t\texcludeReleases: {\n\t\t\thint: \"--exclude-releases\",\n\t\t\tlabel:\n\t\t\t\t\"Add release-it to generate changelogs, package bumps, and publishes based on conventional commits.\",\n\t\t},\n\t\texcludeRenovate: {\n\t\t\thint: \"--exclude-renovate\",\n\t\t\tlabel: \"Add a Renovate config to keep dependencies up-to-date with PRs.\",\n\t\t},\n\t\texcludeTemplatedBy: {\n\t\t\thint: \"--exclude-templated-by\",\n\t\t\tlabel:\n\t\t\t\t'Add a _\"This package was templated with create-typescript-app\"_ notice at the end of the README.md.',\n\t\t\tlevel: \"minimal\",\n\t\t},\n\t\texcludeTests: {\n\t\t\thint: \"--exclude-tests\",\n\t\t\tlabel:\n\t\t\t\t\"Add Vitest tooling for fast unit tests, configured with coverage tracking.\",\n\t\t},\n\t};\n\nexport const exclusionKeys = Object.keys(\n\texclusionDescriptions,\n) as ExclusionKey[];\n\nexport function getExclusions(\n\toptions: Partial<Options>,\n\tbase?: OptionsBase,\n): Partial<Options> {\n\tswitch (base) {\n\t\tcase \"common\":\n\t\t\treturn {\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\texclusionKeys\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(exclusion) =>\n\t\t\t\t\t\t\t\texclusionDescriptions[exclusion].level === \"common\",\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((exclusion) => [exclusion, options[exclusion] ?? true]),\n\t\t\t\t),\n\t\t\t};\n\t\tcase \"minimal\":\n\t\t\treturn {\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\texclusionKeys\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(exclusion) =>\n\t\t\t\t\t\t\t\texclusionDescriptions[exclusion].level !== \"minimal\",\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((exclusion) => [exclusion, options[exclusion] ?? true]),\n\t\t\t\t),\n\t\t\t};\n\t\t// We only really care about exclusions on the common and minimal bases\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n"],"mappings":"AAUO,MAAM,wBACZ;AAAA,EACC,wBAAwB;AAAA,IACvB,MAAM;AAAA,IACN,OACC;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IAClB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IAClB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,kBAAkB;AAAA,IACjB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AAAA,EACA,eAAe;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,wBAAwB;AAAA,IACvB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,qBAAqB;AAAA,IACpB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,0BAA0B;AAAA,IACzB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IAClB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,qBAAqB;AAAA,IACpB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,IAClB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,sBAAsB;AAAA,IACrB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,gBAAgB;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OACC;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AAAA,EACA,oBAAoB;AAAA,IACnB,MAAM;AAAA,IACN,OACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,cAAc;AAAA,IACb,MAAM;AAAA,IACN,OACC;AAAA,EACF;AACD;AAEM,MAAM,gBAAgB,OAAO;AAAA,EACnC;AACD;AAEO,SAAS,cACf,SACA,MACmB;AACnB,UAAQ,MAAM;AAAA,IACb,KAAK;AACJ,aAAO;AAAA,QACN,GAAG,OAAO;AAAA,UACT,cACE;AAAA,YACA,CAAC,cACA,sBAAsB,SAAS,EAAE,UAAU;AAAA,UAC7C,EACC,IAAI,CAAC,cAAc,CAAC,WAAW,QAAQ,SAAS,KAAK,IAAI,CAAC;AAAA,QAC7D;AAAA,MACD;AAAA,IACD,KAAK;AACJ,aAAO;AAAA,QACN,GAAG,OAAO;AAAA,UACT,cACE;AAAA,YACA,CAAC,cACA,sBAAsB,SAAS,EAAE,UAAU;AAAA,UAC7C,EACC,IAAI,CAAC,cAAc,CAAC,WAAW,QAAQ,SAAS,KAAK,IAAI,CAAC;AAAA,QAC7D;AAAA,MACD;AAAA;AAAA,IAED;AACC,aAAO,CAAC;AAAA,EACV;AACD;","names":[]}
@@ -13,6 +13,12 @@ function logInferredOptions(augmentedOptions) {
13
13
  if (augmentedOptions.logo) {
14
14
  logLine(chalk.gray(`- logo: ${augmentedOptions.logo.src}`));
15
15
  logLine(chalk.gray(`- logo-alt: ${augmentedOptions.logo.alt}`));
16
+ if (augmentedOptions.logo.height) {
17
+ logLine(chalk.gray(`- logo-height: ${augmentedOptions.logo.height}`));
18
+ }
19
+ if (augmentedOptions.logo.width) {
20
+ logLine(chalk.gray(`- logo-width: ${augmentedOptions.logo.width}`));
21
+ }
16
22
  }
17
23
  logLine(chalk.gray(`- owner: ${augmentedOptions.owner}`));
18
24
  logLine(chalk.gray(`- repository: ${augmentedOptions.repository}`));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/shared/options/logInferredOptions.ts"],"sourcesContent":["import chalk from \"chalk\";\n\nimport { logLine } from \"../cli/lines.js\";\nimport { Options } from \"../types.js\";\n\nexport type InferredOptions = Pick<\n\tOptions,\n\t\"description\" | \"email\" | \"guide\" | \"logo\" | \"owner\" | \"repository\" | \"title\"\n>;\n\nexport function logInferredOptions(augmentedOptions: InferredOptions) {\n\tlogLine();\n\tlogLine(chalk.gray(\"--auto inferred the following values:\"));\n\tlogLine(chalk.gray(`- description: ${augmentedOptions.description}`));\n\tlogLine(chalk.gray(`- email-github: ${augmentedOptions.email.github}`));\n\tlogLine(chalk.gray(`- email-npm: ${augmentedOptions.email.github}`));\n\n\tif (augmentedOptions.guide) {\n\t\tlogLine(chalk.gray(`- guide: ${augmentedOptions.guide.href}`));\n\t\tlogLine(chalk.gray(`- guide-title: ${augmentedOptions.guide.title}`));\n\t}\n\n\tif (augmentedOptions.logo) {\n\t\tlogLine(chalk.gray(`- logo: ${augmentedOptions.logo.src}`));\n\t\tlogLine(chalk.gray(`- logo-alt: ${augmentedOptions.logo.alt}`));\n\t}\n\n\tlogLine(chalk.gray(`- owner: ${augmentedOptions.owner}`));\n\tlogLine(chalk.gray(`- repository: ${augmentedOptions.repository}`));\n\tlogLine(chalk.gray(`- title: ${augmentedOptions.title}`));\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAElB,SAAS,eAAe;AAQjB,SAAS,mBAAmB,kBAAmC;AACrE,UAAQ;AACR,UAAQ,MAAM,KAAK,uCAAuC,CAAC;AAC3D,UAAQ,MAAM,KAAK,kBAAkB,iBAAiB,WAAW,EAAE,CAAC;AACpE,UAAQ,MAAM,KAAK,mBAAmB,iBAAiB,MAAM,MAAM,EAAE,CAAC;AACtE,UAAQ,MAAM,KAAK,gBAAgB,iBAAiB,MAAM,MAAM,EAAE,CAAC;AAEnE,MAAI,iBAAiB,OAAO;AAC3B,YAAQ,MAAM,KAAK,YAAY,iBAAiB,MAAM,IAAI,EAAE,CAAC;AAC7D,YAAQ,MAAM,KAAK,kBAAkB,iBAAiB,MAAM,KAAK,EAAE,CAAC;AAAA,EACrE;AAEA,MAAI,iBAAiB,MAAM;AAC1B,YAAQ,MAAM,KAAK,WAAW,iBAAiB,KAAK,GAAG,EAAE,CAAC;AAC1D,YAAQ,MAAM,KAAK,eAAe,iBAAiB,KAAK,GAAG,EAAE,CAAC;AAAA,EAC/D;AAEA,UAAQ,MAAM,KAAK,YAAY,iBAAiB,KAAK,EAAE,CAAC;AACxD,UAAQ,MAAM,KAAK,iBAAiB,iBAAiB,UAAU,EAAE,CAAC;AAClE,UAAQ,MAAM,KAAK,YAAY,iBAAiB,KAAK,EAAE,CAAC;AACzD;","names":[]}
1
+ {"version":3,"sources":["../../../src/shared/options/logInferredOptions.ts"],"sourcesContent":["import chalk from \"chalk\";\n\nimport { logLine } from \"../cli/lines.js\";\nimport { Options } from \"../types.js\";\n\nexport type InferredOptions = Pick<\n\tOptions,\n\t\"description\" | \"email\" | \"guide\" | \"logo\" | \"owner\" | \"repository\" | \"title\"\n>;\n\nexport function logInferredOptions(augmentedOptions: InferredOptions) {\n\tlogLine();\n\tlogLine(chalk.gray(\"--auto inferred the following values:\"));\n\tlogLine(chalk.gray(`- description: ${augmentedOptions.description}`));\n\tlogLine(chalk.gray(`- email-github: ${augmentedOptions.email.github}`));\n\tlogLine(chalk.gray(`- email-npm: ${augmentedOptions.email.github}`));\n\n\tif (augmentedOptions.guide) {\n\t\tlogLine(chalk.gray(`- guide: ${augmentedOptions.guide.href}`));\n\t\tlogLine(chalk.gray(`- guide-title: ${augmentedOptions.guide.title}`));\n\t}\n\n\tif (augmentedOptions.logo) {\n\t\tlogLine(chalk.gray(`- logo: ${augmentedOptions.logo.src}`));\n\t\tlogLine(chalk.gray(`- logo-alt: ${augmentedOptions.logo.alt}`));\n\n\t\tif (augmentedOptions.logo.height) {\n\t\t\tlogLine(chalk.gray(`- logo-height: ${augmentedOptions.logo.height}`));\n\t\t}\n\n\t\tif (augmentedOptions.logo.width) {\n\t\t\tlogLine(chalk.gray(`- logo-width: ${augmentedOptions.logo.width}`));\n\t\t}\n\t}\n\n\tlogLine(chalk.gray(`- owner: ${augmentedOptions.owner}`));\n\tlogLine(chalk.gray(`- repository: ${augmentedOptions.repository}`));\n\tlogLine(chalk.gray(`- title: ${augmentedOptions.title}`));\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAElB,SAAS,eAAe;AAQjB,SAAS,mBAAmB,kBAAmC;AACrE,UAAQ;AACR,UAAQ,MAAM,KAAK,uCAAuC,CAAC;AAC3D,UAAQ,MAAM,KAAK,kBAAkB,iBAAiB,WAAW,EAAE,CAAC;AACpE,UAAQ,MAAM,KAAK,mBAAmB,iBAAiB,MAAM,MAAM,EAAE,CAAC;AACtE,UAAQ,MAAM,KAAK,gBAAgB,iBAAiB,MAAM,MAAM,EAAE,CAAC;AAEnE,MAAI,iBAAiB,OAAO;AAC3B,YAAQ,MAAM,KAAK,YAAY,iBAAiB,MAAM,IAAI,EAAE,CAAC;AAC7D,YAAQ,MAAM,KAAK,kBAAkB,iBAAiB,MAAM,KAAK,EAAE,CAAC;AAAA,EACrE;AAEA,MAAI,iBAAiB,MAAM;AAC1B,YAAQ,MAAM,KAAK,WAAW,iBAAiB,KAAK,GAAG,EAAE,CAAC;AAC1D,YAAQ,MAAM,KAAK,eAAe,iBAAiB,KAAK,GAAG,EAAE,CAAC;AAE9D,QAAI,iBAAiB,KAAK,QAAQ;AACjC,cAAQ,MAAM,KAAK,kBAAkB,iBAAiB,KAAK,MAAM,EAAE,CAAC;AAAA,IACrE;AAEA,QAAI,iBAAiB,KAAK,OAAO;AAChC,cAAQ,MAAM,KAAK,iBAAiB,iBAAiB,KAAK,KAAK,EAAE,CAAC;AAAA,IACnE;AAAA,EACD;AAEA,UAAQ,MAAM,KAAK,YAAY,iBAAiB,KAAK,EAAE,CAAC;AACxD,UAAQ,MAAM,KAAK,iBAAiB,iBAAiB,UAAU,EAAE,CAAC;AAClE,UAAQ,MAAM,KAAK,YAAY,iBAAiB,KAAK,EAAE,CAAC;AACzD;","names":[]}
@@ -29,7 +29,7 @@ declare const optionsSchemaShape: {
29
29
  excludeLintPackageJson: z.ZodOptional<z.ZodBoolean>;
30
30
  excludeLintPackages: z.ZodOptional<z.ZodBoolean>;
31
31
  excludeLintPerfectionist: z.ZodOptional<z.ZodBoolean>;
32
- excludeLintRegex: z.ZodOptional<z.ZodBoolean>;
32
+ excludeLintRegexp: z.ZodOptional<z.ZodBoolean>;
33
33
  excludeLintSpelling: z.ZodOptional<z.ZodBoolean>;
34
34
  excludeLintStrict: z.ZodOptional<z.ZodBoolean>;
35
35
  excludeLintStylistic: z.ZodOptional<z.ZodBoolean>;
@@ -86,7 +86,7 @@ declare const optionsSchema: z.ZodObject<{
86
86
  excludeLintPackageJson: z.ZodOptional<z.ZodBoolean>;
87
87
  excludeLintPackages: z.ZodOptional<z.ZodBoolean>;
88
88
  excludeLintPerfectionist: z.ZodOptional<z.ZodBoolean>;
89
- excludeLintRegex: z.ZodOptional<z.ZodBoolean>;
89
+ excludeLintRegexp: z.ZodOptional<z.ZodBoolean>;
90
90
  excludeLintSpelling: z.ZodOptional<z.ZodBoolean>;
91
91
  excludeLintStrict: z.ZodOptional<z.ZodBoolean>;
92
92
  excludeLintStylistic: z.ZodOptional<z.ZodBoolean>;
@@ -145,7 +145,7 @@ declare const optionsSchema: z.ZodObject<{
145
145
  excludeLintPackageJson?: boolean | undefined;
146
146
  excludeLintPackages?: boolean | undefined;
147
147
  excludeLintPerfectionist?: boolean | undefined;
148
- excludeLintRegex?: boolean | undefined;
148
+ excludeLintRegexp?: boolean | undefined;
149
149
  excludeLintSpelling?: boolean | undefined;
150
150
  excludeLintStrict?: boolean | undefined;
151
151
  excludeLintStylistic?: boolean | undefined;
@@ -195,7 +195,7 @@ declare const optionsSchema: z.ZodObject<{
195
195
  excludeLintPackageJson?: boolean | undefined;
196
196
  excludeLintPackages?: boolean | undefined;
197
197
  excludeLintPerfectionist?: boolean | undefined;
198
- excludeLintRegex?: boolean | undefined;
198
+ excludeLintRegexp?: boolean | undefined;
199
199
  excludeLintSpelling?: boolean | undefined;
200
200
  excludeLintStrict?: boolean | undefined;
201
201
  excludeLintStylistic?: boolean | undefined;
@@ -27,7 +27,7 @@ const optionsSchemaShape = {
27
27
  excludeLintPackageJson: z.boolean().optional(),
28
28
  excludeLintPackages: z.boolean().optional(),
29
29
  excludeLintPerfectionist: z.boolean().optional(),
30
- excludeLintRegex: z.boolean().optional(),
30
+ excludeLintRegexp: z.boolean().optional(),
31
31
  excludeLintSpelling: z.boolean().optional(),
32
32
  excludeLintStrict: z.boolean().optional(),
33
33
  excludeLintStylistic: z.boolean().optional(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/shared/options/optionsSchema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const optionsSchemaShape = {\n\taccess: z.union([z.literal(\"public\"), z.literal(\"restricted\")]).optional(),\n\tauthor: z.string().optional(),\n\tauto: z.boolean().optional(),\n\tbase: z\n\t\t.union([\n\t\t\tz.literal(\"common\"),\n\t\t\tz.literal(\"everything\"),\n\t\t\tz.literal(\"minimal\"),\n\t\t\tz.literal(\"prompt\"),\n\t\t])\n\t\t.optional(),\n\tbin: z.string().optional(),\n\tdescription: z.string().optional(),\n\tdirectory: z.string().optional(),\n\temail: z\n\t\t.object({\n\t\t\tgithub: z.string().email(),\n\t\t\tnpm: z.string().email(),\n\t\t})\n\t\t.optional(),\n\texcludeAllContributors: z.boolean().optional(),\n\texcludeBuild: z.boolean().optional(),\n\texcludeCompliance: z.boolean().optional(),\n\texcludeLintESLint: z.boolean().optional(),\n\texcludeLintJSDoc: z.boolean().optional(),\n\texcludeLintJson: z.boolean().optional(),\n\texcludeLintKnip: z.boolean().optional(),\n\texcludeLintMd: z.boolean().optional(),\n\texcludeLintPackageJson: z.boolean().optional(),\n\texcludeLintPackages: z.boolean().optional(),\n\texcludeLintPerfectionist: z.boolean().optional(),\n\texcludeLintRegex: z.boolean().optional(),\n\texcludeLintSpelling: z.boolean().optional(),\n\texcludeLintStrict: z.boolean().optional(),\n\texcludeLintStylistic: z.boolean().optional(),\n\texcludeLintYml: z.boolean().optional(),\n\texcludeReleases: z.boolean().optional(),\n\texcludeRenovate: z.boolean().optional(),\n\texcludeTemplatedBy: z.boolean().optional(),\n\texcludeTests: z.boolean().optional(),\n\tfunding: z.string().optional(),\n\tguide: z.string().url().optional(),\n\tguideTitle: z.string().optional(),\n\tkeywords: z.array(z.string()).optional(),\n\tlogo: z.string().optional(),\n\tlogoAlt: z.string().optional(),\n\tmode: z\n\t\t.union([z.literal(\"create\"), z.literal(\"initialize\"), z.literal(\"migrate\")])\n\t\t.optional(),\n\toffline: z.boolean().optional(),\n\towner: z.string().optional(),\n\tpreserveGeneratedFrom: z.boolean().optional(),\n\trepository: z.string().optional(),\n\tskipAllContributorsApi: z.boolean().optional(),\n\tskipGitHubApi: z.boolean().optional(),\n\tskipInstall: z.boolean().optional(),\n\tskipRemoval: z.boolean().optional(),\n\tskipRestore: z.boolean().optional(),\n\tskipUninstall: z.boolean().optional(),\n\ttitle: z.string().optional(),\n};\n\nexport const optionsSchema = z.object(optionsSchemaShape);\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/shared/options/optionsSchema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const optionsSchemaShape = {\n\taccess: z.union([z.literal(\"public\"), z.literal(\"restricted\")]).optional(),\n\tauthor: z.string().optional(),\n\tauto: z.boolean().optional(),\n\tbase: z\n\t\t.union([\n\t\t\tz.literal(\"common\"),\n\t\t\tz.literal(\"everything\"),\n\t\t\tz.literal(\"minimal\"),\n\t\t\tz.literal(\"prompt\"),\n\t\t])\n\t\t.optional(),\n\tbin: z.string().optional(),\n\tdescription: z.string().optional(),\n\tdirectory: z.string().optional(),\n\temail: z\n\t\t.object({\n\t\t\tgithub: z.string().email(),\n\t\t\tnpm: z.string().email(),\n\t\t})\n\t\t.optional(),\n\texcludeAllContributors: z.boolean().optional(),\n\texcludeBuild: z.boolean().optional(),\n\texcludeCompliance: z.boolean().optional(),\n\texcludeLintESLint: z.boolean().optional(),\n\texcludeLintJSDoc: z.boolean().optional(),\n\texcludeLintJson: z.boolean().optional(),\n\texcludeLintKnip: z.boolean().optional(),\n\texcludeLintMd: z.boolean().optional(),\n\texcludeLintPackageJson: z.boolean().optional(),\n\texcludeLintPackages: z.boolean().optional(),\n\texcludeLintPerfectionist: z.boolean().optional(),\n\texcludeLintRegexp: z.boolean().optional(),\n\texcludeLintSpelling: z.boolean().optional(),\n\texcludeLintStrict: z.boolean().optional(),\n\texcludeLintStylistic: z.boolean().optional(),\n\texcludeLintYml: z.boolean().optional(),\n\texcludeReleases: z.boolean().optional(),\n\texcludeRenovate: z.boolean().optional(),\n\texcludeTemplatedBy: z.boolean().optional(),\n\texcludeTests: z.boolean().optional(),\n\tfunding: z.string().optional(),\n\tguide: z.string().url().optional(),\n\tguideTitle: z.string().optional(),\n\tkeywords: z.array(z.string()).optional(),\n\tlogo: z.string().optional(),\n\tlogoAlt: z.string().optional(),\n\tmode: z\n\t\t.union([z.literal(\"create\"), z.literal(\"initialize\"), z.literal(\"migrate\")])\n\t\t.optional(),\n\toffline: z.boolean().optional(),\n\towner: z.string().optional(),\n\tpreserveGeneratedFrom: z.boolean().optional(),\n\trepository: z.string().optional(),\n\tskipAllContributorsApi: z.boolean().optional(),\n\tskipGitHubApi: z.boolean().optional(),\n\tskipInstall: z.boolean().optional(),\n\tskipRemoval: z.boolean().optional(),\n\tskipRestore: z.boolean().optional(),\n\tskipUninstall: z.boolean().optional(),\n\ttitle: z.string().optional(),\n};\n\nexport const optionsSchema = z.object(optionsSchemaShape);\n"],"mappings":"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","names":[]}
@@ -0,0 +1,7 @@
1
+ interface OptionsLogoSizing {
2
+ height?: number;
3
+ width?: number;
4
+ }
5
+ declare function readLogoSizing(src: string | Uint8Array): OptionsLogoSizing | undefined;
6
+
7
+ export { type OptionsLogoSizing, readLogoSizing };
@@ -0,0 +1,29 @@
1
+ import { imageSize } from "image-size";
2
+ const maximum = 128;
3
+ function readLogoSizing(src) {
4
+ const size = imageSizeSafe(src);
5
+ if (!size) {
6
+ return void 0;
7
+ }
8
+ if (!size.height) {
9
+ return size.width ? { width: Math.min(size.width, maximum) } : void 0;
10
+ }
11
+ if (!size.width) {
12
+ return { height: Math.min(size.height, maximum) };
13
+ }
14
+ if (size.height <= maximum && size.width <= maximum) {
15
+ return size;
16
+ }
17
+ return size.height > size.width ? { height: maximum, width: size.width / size.height * maximum } : { height: size.height / size.width * maximum, width: maximum };
18
+ }
19
+ function imageSizeSafe(src) {
20
+ try {
21
+ return imageSize(src);
22
+ } catch {
23
+ return void 0;
24
+ }
25
+ }
26
+ export {
27
+ readLogoSizing
28
+ };
29
+ //# sourceMappingURL=readLogoSizing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/shared/options/readLogoSizing.ts"],"sourcesContent":["import { imageSize } from \"image-size\";\n\nconst maximum = 128;\n\nexport interface OptionsLogoSizing {\n\theight?: number;\n\twidth?: number;\n}\n\nexport function readLogoSizing(\n\tsrc: string | Uint8Array,\n): OptionsLogoSizing | undefined {\n\tconst size = imageSizeSafe(src);\n\tif (!size) {\n\t\treturn undefined;\n\t}\n\n\tif (!size.height) {\n\t\treturn size.width ? { width: Math.min(size.width, maximum) } : undefined;\n\t}\n\n\tif (!size.width) {\n\t\treturn { height: Math.min(size.height, maximum) };\n\t}\n\n\tif (size.height <= maximum && size.width <= maximum) {\n\t\treturn size;\n\t}\n\n\treturn size.height > size.width\n\t\t? { height: maximum, width: (size.width / size.height) * maximum }\n\t\t: { height: (size.height / size.width) * maximum, width: maximum };\n}\n\nfunction imageSizeSafe(src: string | Uint8Array) {\n\ttry {\n\t\treturn imageSize(src);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAE1B,MAAM,UAAU;AAOT,SAAS,eACf,KACgC;AAChC,QAAM,OAAO,cAAc,GAAG;AAC9B,MAAI,CAAC,MAAM;AACV,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,KAAK,QAAQ;AACjB,WAAO,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,KAAK,OAAO,OAAO,EAAE,IAAI;AAAA,EAChE;AAEA,MAAI,CAAC,KAAK,OAAO;AAChB,WAAO,EAAE,QAAQ,KAAK,IAAI,KAAK,QAAQ,OAAO,EAAE;AAAA,EACjD;AAEA,MAAI,KAAK,UAAU,WAAW,KAAK,SAAS,SAAS;AACpD,WAAO;AAAA,EACR;AAEA,SAAO,KAAK,SAAS,KAAK,QACvB,EAAE,QAAQ,SAAS,OAAQ,KAAK,QAAQ,KAAK,SAAU,QAAQ,IAC/D,EAAE,QAAS,KAAK,SAAS,KAAK,QAAS,SAAS,OAAO,QAAQ;AACnE;AAEA,SAAS,cAAc,KAA0B;AAChD,MAAI;AACH,WAAO,UAAU,GAAG;AAAA,EACrB,QAAQ;AACP,WAAO;AAAA,EACR;AACD;","names":[]}
@@ -11,6 +11,7 @@ import { getBase } from "./getBase.js";
11
11
  import { getPrefillOrPromptedOption } from "./getPrefillOrPromptedOption.js";
12
12
  import { logInferredOptions } from "./logInferredOptions.js";
13
13
  import { optionsSchema } from "./optionsSchema.js";
14
+ import { readLogoSizing } from "./readLogoSizing.js";
14
15
  async function readOptions(args, mode, promptedOptions = {}) {
15
16
  const defaults = createOptionDefaults(promptedOptions);
16
17
  const { values } = parseArgs({
@@ -44,7 +45,7 @@ async function readOptions(args, mode, promptedOptions = {}) {
44
45
  excludeLintPackageJson: values["exclude-lint-package-json"],
45
46
  excludeLintPackages: values["exclude-lint-packages"],
46
47
  excludeLintPerfectionist: values["exclude-lint-perfectionist"],
47
- excludeLintRegex: values["exclude-lint-regex"],
48
+ excludeLintRegexp: values["exclude-lint-regexp"],
48
49
  excludeLintSpelling: values["exclude-lint-spelling"],
49
50
  excludeLintStrict: values["exclude-lint-strict"],
50
51
  excludeLintYml: values["exclude-lint-yml"],
@@ -65,7 +66,7 @@ async function readOptions(args, mode, promptedOptions = {}) {
65
66
  skipGitHubApi: values["skip-github-api"] ?? values.offline,
66
67
  skipInstall: values["skip-install"],
67
68
  skipRemoval: values["skip-removal"],
68
- skipRestore: values["skip-restore"],
69
+ skipRestore: values["skip-restore"] ?? mode === "create",
69
70
  skipUninstall: values["skip-uninstall"],
70
71
  title: values.title
71
72
  };
@@ -183,6 +184,7 @@ async function readOptions(args, mode, promptedOptions = {}) {
183
184
  }
184
185
  logo = { alt: logoAltOption.value, src: options.logo };
185
186
  }
187
+ Object.assign(logo, readLogoSizing(logo.src));
186
188
  }
187
189
  let email = options.email ?? await defaults.email();
188
190
  if (!email) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/shared/options/readOptions.ts"],"sourcesContent":["import { parseArgs } from \"node:util\";\nimport { Octokit } from \"octokit\";\nimport { octokitFromAuth } from \"octokit-from-auth\";\nimport { titleCase } from \"title-case\";\nimport { z } from \"zod\";\n\nimport { withSpinner } from \"../cli/spinners.js\";\nimport { Mode, OptionsGuide, PromptedOptions } from \"../types.js\";\nimport { Options, OptionsLogo } from \"../types.js\";\nimport { allArgOptions } from \"./args.js\";\nimport { augmentOptionsWithExcludes } from \"./augmentOptionsWithExcludes.js\";\nimport { createOptionDefaults } from \"./createOptionDefaults/index.js\";\nimport { detectEmailRedundancy } from \"./detectEmailRedundancy.js\";\nimport { ensureRepositoryExists } from \"./ensureRepositoryExists.js\";\nimport { getBase } from \"./getBase.js\";\nimport { getPrefillOrPromptedOption } from \"./getPrefillOrPromptedOption.js\";\nimport { logInferredOptions } from \"./logInferredOptions.js\";\nimport { optionsSchema } from \"./optionsSchema.js\";\n\nexport interface OctokitAndOptions {\n\toctokit: Octokit | undefined;\n\toptions: Options;\n}\n\nexport interface OptionsParseCancelled {\n\tcancelled: true;\n\terror?: string | z.ZodError<object>;\n\toptions: object;\n}\n\nexport type OptionsParseResult = OptionsParseCancelled | OptionsParseSuccess;\n\nexport interface OptionsParseSuccess extends OctokitAndOptions {\n\tcancelled: false;\n}\n\nexport async function readOptions(\n\targs: string[],\n\tmode: Mode,\n\tpromptedOptions: PromptedOptions = {},\n): Promise<OptionsParseResult> {\n\tconst defaults = createOptionDefaults(promptedOptions);\n\tconst { values } = parseArgs({\n\t\targs,\n\t\toptions: allArgOptions,\n\t\tstrict: false,\n\t\ttokens: true,\n\t});\n\n\tif (mode === \"migrate\" && !values.base) {\n\t\tvalues.base = await getBase();\n\t}\n\n\tconst mappedOptions = {\n\t\taccess: values.access,\n\t\tauthor: values.author,\n\t\tauto: !!values.auto,\n\t\tbase: values.base,\n\t\tbin: values.bin,\n\t\tdescription: values.description,\n\t\tdirectory: values.directory,\n\t\temail:\n\t\t\t(values.email ?? values[\"email-github\"] ?? values[\"email-npm\"])\n\t\t\t\t? {\n\t\t\t\t\t\tgithub: values.email ?? values[\"email-github\"],\n\t\t\t\t\t\tnpm: values.email ?? values[\"email-npm\"],\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\texcludeAllContributors: values[\"exclude-all-contributors\"],\n\t\texcludeCompliance: values[\"exclude-compliance\"],\n\t\texcludeLintESLint: values[\"exclude-lint-eslint\"],\n\t\texcludeLintJSDoc: values[\"exclude-lint-jsdoc\"],\n\t\texcludeLintJson: values[\"exclude-lint-json\"],\n\t\texcludeLintKnip: values[\"exclude-lint-knip\"],\n\t\texcludeLintMd: values[\"exclude-lint-md\"],\n\t\texcludeLintPackageJson: values[\"exclude-lint-package-json\"],\n\t\texcludeLintPackages: values[\"exclude-lint-packages\"],\n\t\texcludeLintPerfectionist: values[\"exclude-lint-perfectionist\"],\n\t\texcludeLintRegex: values[\"exclude-lint-regex\"],\n\t\texcludeLintSpelling: values[\"exclude-lint-spelling\"],\n\t\texcludeLintStrict: values[\"exclude-lint-strict\"],\n\t\texcludeLintYml: values[\"exclude-lint-yml\"],\n\t\texcludeReleases: values[\"exclude-releases\"],\n\t\texcludeRenovate: values[\"exclude-renovate\"],\n\t\texcludeTemplatedBy: values[\"exclude-templated-by\"],\n\t\texcludeTests: values[\"unit-tests\"],\n\t\tfunding: values.funding,\n\t\tguide: values.guide,\n\t\tguideTitle: values[\"guide-title\"],\n\t\tlogo: values.logo,\n\t\tlogoAlt: values[\"logo-alt\"],\n\t\toffline: values.offline,\n\t\towner: values.owner,\n\t\tpreserveGeneratedFrom:\n\t\t\tvalues[\"preserve-generated-from\"] ?? values.owner === \"JoshuaKGoldberg\",\n\t\trepository: values.repository,\n\t\tskipAllContributorsApi:\n\t\t\tvalues[\"skip-all-contributors-api\"] ?? values.offline,\n\t\tskipGitHubApi: values[\"skip-github-api\"] ?? values.offline,\n\t\tskipInstall: values[\"skip-install\"],\n\t\tskipRemoval: values[\"skip-removal\"],\n\t\tskipRestore: values[\"skip-restore\"],\n\t\tskipUninstall: values[\"skip-uninstall\"],\n\t\ttitle: values.title,\n\t};\n\n\tconst emailError = detectEmailRedundancy(values);\n\tif (emailError) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: emailError,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst optionsParseResult = optionsSchema.safeParse(mappedOptions);\n\n\tif (!optionsParseResult.success) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: optionsParseResult.error,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst options = optionsParseResult.data;\n\n\tconst ownerOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.owner,\n\t\tmessage: \"What organization or user will the repository be under?\",\n\t\tname: \"owner\",\n\t\tprovided: options.owner,\n\t});\n\n\toptions.owner ??= ownerOption.value;\n\n\tif (!options.owner) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: ownerOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst repositoryOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.repository,\n\t\tmessage: \"What will the kebab-case name of the repository be?\",\n\t\tname: \"repository\",\n\t\tprovided: options.repository,\n\t});\n\n\toptions.repository ??= repositoryOption.value;\n\n\tif (!options.repository) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: repositoryOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst { octokit, repository } = await ensureRepositoryExists(\n\t\toptions.skipGitHubApi\n\t\t\t? undefined\n\t\t\t: await withSpinner(\"Checking GitHub authentication\", async () =>\n\t\t\t\t\toctokitFromAuth(),\n\t\t\t\t),\n\t\t{\n\t\t\tmode,\n\t\t\towner: options.owner,\n\t\t\trepository: options.repository,\n\t\t},\n\t);\n\n\tif (!repository) {\n\t\treturn { cancelled: true, error: repositoryOption.error, options };\n\t}\n\n\tconst descriptionOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.description()) ?? \"A very lovely package. Hooray!\",\n\t\tmessage: \"How would you describe the new package?\",\n\t\tname: \"description\",\n\t\tprovided: options.description,\n\t});\n\n\toptions.description ??= descriptionOption.value;\n\n\tif (!options.description) {\n\t\treturn { cancelled: true, error: descriptionOption.error, options };\n\t}\n\n\tconst titleOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.title()) ?? titleCase(repository).replaceAll(\"-\", \" \"),\n\t\tmessage: \"What will the Title Case title of the repository be?\",\n\t\tname: \"title\",\n\t\tprovided: options.title,\n\t});\n\n\toptions.title ??= titleOption.value;\n\n\tif (!options.title) {\n\t\treturn { cancelled: true, error: titleOption.error, options };\n\t}\n\n\tlet guide: OptionsGuide | undefined;\n\n\tif (options.guide) {\n\t\tif (options.guideTitle) {\n\t\t\tguide = { href: options.guide, title: options.guideTitle };\n\t\t} else {\n\t\t\tconst titleOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the title text for the guide?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!titleOption.value) {\n\t\t\t\treturn { cancelled: true, error: titleOption.error, options };\n\t\t\t}\n\n\t\t\tguide = { href: options.guide, title: titleOption.value };\n\t\t}\n\t}\n\n\tlet logo: OptionsLogo | undefined;\n\n\tif (options.logo) {\n\t\tif (options.logoAlt) {\n\t\t\tlogo = { alt: options.logoAlt, src: options.logo };\n\t\t} else {\n\t\t\tconst logoAltOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the alt text (non-visual description) of the logo?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!logoAltOption.value) {\n\t\t\t\treturn { cancelled: true, error: logoAltOption.error, options };\n\t\t\t}\n\n\t\t\tlogo = { alt: logoAltOption.value, src: options.logo };\n\t\t}\n\t}\n\n\tlet email = options.email ?? (await defaults.email());\n\n\tif (!email) {\n\t\tconst emailOption = await getPrefillOrPromptedOption({\n\t\t\tauto: !!mappedOptions.auto,\n\t\t\tmessage: \"What email should be used in package.json and .md files?\",\n\t\t\tname: \"email\",\n\t\t});\n\n\t\tif (!emailOption.value) {\n\t\t\treturn { cancelled: true, error: emailOption.error, options };\n\t\t}\n\n\t\temail = { github: emailOption.value, npm: emailOption.value };\n\t}\n\n\tconst augmentedOptions = await augmentOptionsWithExcludes({\n\t\t...options,\n\t\taccess: options.access ?? \"public\",\n\t\tauthor:\n\t\t\toptions.author ?? (await defaults.author()) ?? (await defaults.owner()),\n\t\tbin: options.bin ?? (await defaults.bin()),\n\t\tdescription: options.description,\n\t\tdirectory:\n\t\t\toptions.directory ?? promptedOptions.directory ?? options.repository,\n\t\temail,\n\t\tfunding: options.funding ?? (await defaults.funding()),\n\t\tguide: guide ?? (await defaults.guide()),\n\t\tlogo: logo ?? (await defaults.logo()),\n\t\tmode,\n\t\towner: options.owner,\n\t\trepository,\n\t\ttitle: options.title,\n\t});\n\n\tif (!augmentedOptions) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tif (options.auto) {\n\t\tlogInferredOptions(augmentedOptions);\n\t}\n\n\treturn {\n\t\tcancelled: false,\n\t\toctokit,\n\t\toptions: augmentedOptions,\n\t};\n}\n"],"mappings":"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","names":["titleOption"]}
1
+ {"version":3,"sources":["../../../src/shared/options/readOptions.ts"],"sourcesContent":["import { parseArgs } from \"node:util\";\nimport { Octokit } from \"octokit\";\nimport { octokitFromAuth } from \"octokit-from-auth\";\nimport { titleCase } from \"title-case\";\nimport { z } from \"zod\";\n\nimport { withSpinner } from \"../cli/spinners.js\";\nimport { Mode, OptionsGuide, PromptedOptions } from \"../types.js\";\nimport { Options, OptionsLogo } from \"../types.js\";\nimport { allArgOptions } from \"./args.js\";\nimport { augmentOptionsWithExcludes } from \"./augmentOptionsWithExcludes.js\";\nimport { createOptionDefaults } from \"./createOptionDefaults/index.js\";\nimport { detectEmailRedundancy } from \"./detectEmailRedundancy.js\";\nimport { ensureRepositoryExists } from \"./ensureRepositoryExists.js\";\nimport { getBase } from \"./getBase.js\";\nimport { getPrefillOrPromptedOption } from \"./getPrefillOrPromptedOption.js\";\nimport { logInferredOptions } from \"./logInferredOptions.js\";\nimport { optionsSchema } from \"./optionsSchema.js\";\nimport { readLogoSizing } from \"./readLogoSizing.js\";\n\nexport interface OctokitAndOptions {\n\toctokit: Octokit | undefined;\n\toptions: Options;\n}\n\nexport interface OptionsParseCancelled {\n\tcancelled: true;\n\terror?: string | z.ZodError<object>;\n\toptions: object;\n}\n\nexport type OptionsParseResult = OptionsParseCancelled | OptionsParseSuccess;\n\nexport interface OptionsParseSuccess extends OctokitAndOptions {\n\tcancelled: false;\n}\n\nexport async function readOptions(\n\targs: string[],\n\tmode: Mode,\n\tpromptedOptions: PromptedOptions = {},\n): Promise<OptionsParseResult> {\n\tconst defaults = createOptionDefaults(promptedOptions);\n\tconst { values } = parseArgs({\n\t\targs,\n\t\toptions: allArgOptions,\n\t\tstrict: false,\n\t\ttokens: true,\n\t});\n\n\tif (mode === \"migrate\" && !values.base) {\n\t\tvalues.base = await getBase();\n\t}\n\n\tconst mappedOptions = {\n\t\taccess: values.access,\n\t\tauthor: values.author,\n\t\tauto: !!values.auto,\n\t\tbase: values.base,\n\t\tbin: values.bin,\n\t\tdescription: values.description,\n\t\tdirectory: values.directory,\n\t\temail:\n\t\t\t(values.email ?? values[\"email-github\"] ?? values[\"email-npm\"])\n\t\t\t\t? {\n\t\t\t\t\t\tgithub: values.email ?? values[\"email-github\"],\n\t\t\t\t\t\tnpm: values.email ?? values[\"email-npm\"],\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\texcludeAllContributors: values[\"exclude-all-contributors\"],\n\t\texcludeCompliance: values[\"exclude-compliance\"],\n\t\texcludeLintESLint: values[\"exclude-lint-eslint\"],\n\t\texcludeLintJSDoc: values[\"exclude-lint-jsdoc\"],\n\t\texcludeLintJson: values[\"exclude-lint-json\"],\n\t\texcludeLintKnip: values[\"exclude-lint-knip\"],\n\t\texcludeLintMd: values[\"exclude-lint-md\"],\n\t\texcludeLintPackageJson: values[\"exclude-lint-package-json\"],\n\t\texcludeLintPackages: values[\"exclude-lint-packages\"],\n\t\texcludeLintPerfectionist: values[\"exclude-lint-perfectionist\"],\n\t\texcludeLintRegexp: values[\"exclude-lint-regexp\"],\n\t\texcludeLintSpelling: values[\"exclude-lint-spelling\"],\n\t\texcludeLintStrict: values[\"exclude-lint-strict\"],\n\t\texcludeLintYml: values[\"exclude-lint-yml\"],\n\t\texcludeReleases: values[\"exclude-releases\"],\n\t\texcludeRenovate: values[\"exclude-renovate\"],\n\t\texcludeTemplatedBy: values[\"exclude-templated-by\"],\n\t\texcludeTests: values[\"unit-tests\"],\n\t\tfunding: values.funding,\n\t\tguide: values.guide,\n\t\tguideTitle: values[\"guide-title\"],\n\t\tlogo: values.logo,\n\t\tlogoAlt: values[\"logo-alt\"],\n\t\toffline: values.offline,\n\t\towner: values.owner,\n\t\tpreserveGeneratedFrom:\n\t\t\tvalues[\"preserve-generated-from\"] ?? values.owner === \"JoshuaKGoldberg\",\n\t\trepository: values.repository,\n\t\tskipAllContributorsApi:\n\t\t\tvalues[\"skip-all-contributors-api\"] ?? values.offline,\n\t\tskipGitHubApi: values[\"skip-github-api\"] ?? values.offline,\n\t\tskipInstall: values[\"skip-install\"],\n\t\tskipRemoval: values[\"skip-removal\"],\n\t\tskipRestore: values[\"skip-restore\"] ?? mode === \"create\",\n\t\tskipUninstall: values[\"skip-uninstall\"],\n\t\ttitle: values.title,\n\t};\n\n\tconst emailError = detectEmailRedundancy(values);\n\tif (emailError) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: emailError,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst optionsParseResult = optionsSchema.safeParse(mappedOptions);\n\n\tif (!optionsParseResult.success) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: optionsParseResult.error,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst options = optionsParseResult.data;\n\n\tconst ownerOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.owner,\n\t\tmessage: \"What organization or user will the repository be under?\",\n\t\tname: \"owner\",\n\t\tprovided: options.owner,\n\t});\n\n\toptions.owner ??= ownerOption.value;\n\n\tif (!options.owner) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: ownerOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst repositoryOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.repository,\n\t\tmessage: \"What will the kebab-case name of the repository be?\",\n\t\tname: \"repository\",\n\t\tprovided: options.repository,\n\t});\n\n\toptions.repository ??= repositoryOption.value;\n\n\tif (!options.repository) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: repositoryOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst { octokit, repository } = await ensureRepositoryExists(\n\t\toptions.skipGitHubApi\n\t\t\t? undefined\n\t\t\t: await withSpinner(\"Checking GitHub authentication\", async () =>\n\t\t\t\t\toctokitFromAuth(),\n\t\t\t\t),\n\t\t{\n\t\t\tmode,\n\t\t\towner: options.owner,\n\t\t\trepository: options.repository,\n\t\t},\n\t);\n\n\tif (!repository) {\n\t\treturn { cancelled: true, error: repositoryOption.error, options };\n\t}\n\n\tconst descriptionOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.description()) ?? \"A very lovely package. Hooray!\",\n\t\tmessage: \"How would you describe the new package?\",\n\t\tname: \"description\",\n\t\tprovided: options.description,\n\t});\n\n\toptions.description ??= descriptionOption.value;\n\n\tif (!options.description) {\n\t\treturn { cancelled: true, error: descriptionOption.error, options };\n\t}\n\n\tconst titleOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.title()) ?? titleCase(repository).replaceAll(\"-\", \" \"),\n\t\tmessage: \"What will the Title Case title of the repository be?\",\n\t\tname: \"title\",\n\t\tprovided: options.title,\n\t});\n\n\toptions.title ??= titleOption.value;\n\n\tif (!options.title) {\n\t\treturn { cancelled: true, error: titleOption.error, options };\n\t}\n\n\tlet guide: OptionsGuide | undefined;\n\n\tif (options.guide) {\n\t\tif (options.guideTitle) {\n\t\t\tguide = { href: options.guide, title: options.guideTitle };\n\t\t} else {\n\t\t\tconst titleOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the title text for the guide?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!titleOption.value) {\n\t\t\t\treturn { cancelled: true, error: titleOption.error, options };\n\t\t\t}\n\n\t\t\tguide = { href: options.guide, title: titleOption.value };\n\t\t}\n\t}\n\n\tlet logo: OptionsLogo | undefined;\n\n\tif (options.logo) {\n\t\tif (options.logoAlt) {\n\t\t\tlogo = { alt: options.logoAlt, src: options.logo };\n\t\t} else {\n\t\t\tconst logoAltOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the alt text (non-visual description) of the logo?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!logoAltOption.value) {\n\t\t\t\treturn { cancelled: true, error: logoAltOption.error, options };\n\t\t\t}\n\n\t\t\tlogo = { alt: logoAltOption.value, src: options.logo };\n\t\t}\n\n\t\tObject.assign(logo, readLogoSizing(logo.src));\n\t}\n\n\tlet email = options.email ?? (await defaults.email());\n\n\tif (!email) {\n\t\tconst emailOption = await getPrefillOrPromptedOption({\n\t\t\tauto: !!mappedOptions.auto,\n\t\t\tmessage: \"What email should be used in package.json and .md files?\",\n\t\t\tname: \"email\",\n\t\t});\n\n\t\tif (!emailOption.value) {\n\t\t\treturn { cancelled: true, error: emailOption.error, options };\n\t\t}\n\n\t\temail = { github: emailOption.value, npm: emailOption.value };\n\t}\n\n\tconst augmentedOptions = await augmentOptionsWithExcludes({\n\t\t...options,\n\t\taccess: options.access ?? \"public\",\n\t\tauthor:\n\t\t\toptions.author ?? (await defaults.author()) ?? (await defaults.owner()),\n\t\tbin: options.bin ?? (await defaults.bin()),\n\t\tdescription: options.description,\n\t\tdirectory:\n\t\t\toptions.directory ?? promptedOptions.directory ?? options.repository,\n\t\temail,\n\t\tfunding: options.funding ?? (await defaults.funding()),\n\t\tguide: guide ?? (await defaults.guide()),\n\t\tlogo: logo ?? (await defaults.logo()),\n\t\tmode,\n\t\towner: options.owner,\n\t\trepository,\n\t\ttitle: options.title,\n\t});\n\n\tif (!augmentedOptions) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tif (options.auto) {\n\t\tlogInferredOptions(augmentedOptions);\n\t}\n\n\treturn {\n\t\tcancelled: false,\n\t\toctokit,\n\t\toptions: augmentedOptions,\n\t};\n}\n"],"mappings":"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","names":["titleOption"]}
@@ -1,9 +1,7 @@
1
1
  import { execaCommand } from "execa";
2
2
  import { readFileSafe } from "./readFileSafe.js";
3
3
  async function readPackageData() {
4
- return JSON.parse(
5
- await readFileSafe("./package.json", "{}")
6
- );
4
+ return JSON.parse(await readFileSafe("./package.json", "{}")) ?? {};
7
5
  }
8
6
  async function removeDependencies(packageNames, existing = {}, flags = "") {
9
7
  const present = packageNames.filter((packageName) => packageName in existing);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared/packages.ts"],"sourcesContent":["import { execaCommand } from \"execa\";\n\nimport { readFileSafe } from \"./readFileSafe.js\";\nimport { PartialPackageData } from \"./types.js\";\n\nexport async function readPackageData() {\n\treturn JSON.parse(\n\t\tawait readFileSafe(\"./package.json\", \"{}\"),\n\t) as PartialPackageData;\n}\n\nexport async function removeDependencies(\n\tpackageNames: string[],\n\texisting: Record<string, string> = {},\n\tflags = \"\",\n) {\n\tconst present = packageNames.filter((packageName) => packageName in existing);\n\n\tif (present.length) {\n\t\tawait execaCommand(\n\t\t\t`pnpm remove ${present.join(\" \")}${flags ? ` ${flags}` : \"\"}`,\n\t\t);\n\t}\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,oBAAoB;AAG7B,eAAsB,kBAAkB;AACvC,SAAO,KAAK;AAAA,IACX,MAAM,aAAa,kBAAkB,IAAI;AAAA,EAC1C;AACD;AAEA,eAAsB,mBACrB,cACA,WAAmC,CAAC,GACpC,QAAQ,IACP;AACD,QAAM,UAAU,aAAa,OAAO,CAAC,gBAAgB,eAAe,QAAQ;AAE5E,MAAI,QAAQ,QAAQ;AACnB,UAAM;AAAA,MACL,eAAe,QAAQ,KAAK,GAAG,CAAC,GAAG,QAAQ,IAAI,KAAK,KAAK,EAAE;AAAA,IAC5D;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../src/shared/packages.ts"],"sourcesContent":["import { execaCommand } from \"execa\";\n\nimport { readFileSafe } from \"./readFileSafe.js\";\nimport { PartialPackageData } from \"./types.js\";\n\nexport async function readPackageData() {\n\treturn (\n\t\t(JSON.parse(await readFileSafe(\"./package.json\", \"{}\")) as\n\t\t\t| PartialPackageData\n\t\t\t| undefined) ?? {}\n\t);\n}\n\nexport async function removeDependencies(\n\tpackageNames: string[],\n\texisting: Record<string, string> = {},\n\tflags = \"\",\n) {\n\tconst present = packageNames.filter((packageName) => packageName in existing);\n\n\tif (present.length) {\n\t\tawait execaCommand(\n\t\t\t`pnpm remove ${present.join(\" \")}${flags ? ` ${flags}` : \"\"}`,\n\t\t);\n\t}\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,oBAAoB;AAG7B,eAAsB,kBAAkB;AACvC,SACE,KAAK,MAAM,MAAM,aAAa,kBAAkB,IAAI,CAAC,KAErC,CAAC;AAEpB;AAEA,eAAsB,mBACrB,cACA,WAAmC,CAAC,GACpC,QAAQ,IACP;AACD,QAAM,UAAU,aAAa,OAAO,CAAC,gBAAgB,eAAe,QAAQ;AAE5E,MAAI,QAAQ,QAAQ;AACnB,UAAM;AAAA,MACL,eAAe,QAAQ,KAAK,GAAG,CAAC,GAAG,QAAQ,IAAI,KAAK,KAAK,EAAE;AAAA,IAC5D;AAAA,EACD;AACD;","names":[]}