create-typescript-app 1.77.1 → 1.79.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 (130) hide show
  1. package/README.md +50 -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/createWithOptions.d.ts +1 -1
  6. package/lib/create/createWithOptions.js +7 -8
  7. package/lib/create/createWithOptions.js.map +1 -1
  8. package/lib/create/index.js +8 -2
  9. package/lib/create/index.js.map +1 -1
  10. package/lib/next/base.d.ts +1 -2
  11. package/lib/next/base.js +37 -27
  12. package/lib/next/base.js.map +1 -1
  13. package/lib/next/blocks/blockAllContributors.d.ts +1 -2
  14. package/lib/next/blocks/blockAllContributors.js +11 -2
  15. package/lib/next/blocks/blockAllContributors.js.map +1 -1
  16. package/lib/next/blocks/blockAreTheTypesWrong.d.ts +1 -2
  17. package/lib/next/blocks/blockCSpell.d.ts +1 -2
  18. package/lib/next/blocks/blockCSpell.js +16 -0
  19. package/lib/next/blocks/blockCSpell.js.map +1 -1
  20. package/lib/next/blocks/blockContributingDocs.d.ts +1 -2
  21. package/lib/next/blocks/blockContributorCovenant.d.ts +1 -2
  22. package/lib/next/blocks/blockDevelopmentDocs.d.ts +1 -2
  23. package/lib/next/blocks/blockESLint.d.ts +1 -2
  24. package/lib/next/blocks/blockESLintComments.d.ts +1 -2
  25. package/lib/next/blocks/blockESLintJSDoc.d.ts +1 -2
  26. package/lib/next/blocks/blockESLintJSONC.d.ts +1 -2
  27. package/lib/next/blocks/blockESLintMarkdown.d.ts +1 -2
  28. package/lib/next/blocks/blockESLintMoreStyling.d.ts +1 -2
  29. package/lib/next/blocks/blockESLintNode.d.ts +1 -2
  30. package/lib/next/blocks/blockESLintPackageJson.d.ts +1 -2
  31. package/lib/next/blocks/blockESLintPerfectionist.d.ts +1 -2
  32. package/lib/next/blocks/blockESLintRegexp.d.ts +1 -2
  33. package/lib/next/blocks/blockESLintYML.d.ts +1 -2
  34. package/lib/next/blocks/blockExampleFiles.d.ts +1 -2
  35. package/lib/next/blocks/blockFunding.d.ts +1 -2
  36. package/lib/next/blocks/blockGitHubActionsCI.d.ts +1 -2
  37. package/lib/next/blocks/blockGitHubApps.d.ts +52 -0
  38. package/lib/next/blocks/blockGitHubApps.js +34 -0
  39. package/lib/next/blocks/blockGitHubApps.js.map +1 -0
  40. package/lib/next/blocks/blockGitHubIssueTemplates.d.ts +1 -2
  41. package/lib/next/blocks/blockGitHubPRTemplate.d.ts +1 -2
  42. package/lib/next/blocks/blockGitignore.d.ts +1 -2
  43. package/lib/next/blocks/blockKnip.d.ts +1 -2
  44. package/lib/next/blocks/blockKnip.js +2 -2
  45. package/lib/next/blocks/blockKnip.js.map +1 -1
  46. package/lib/next/blocks/blockMITLicense.d.ts +1 -2
  47. package/lib/next/blocks/blockMarkdownlint.d.ts +1 -2
  48. package/lib/next/blocks/blockNvmrc.d.ts +1 -2
  49. package/lib/next/blocks/blockPRCompliance.d.ts +1 -2
  50. package/lib/next/blocks/blockPackageJson.d.ts +1 -2
  51. package/lib/next/blocks/blockPackageJson.js +46 -41
  52. package/lib/next/blocks/blockPackageJson.js.map +1 -1
  53. package/lib/next/blocks/blockPnpmDedupe.d.ts +1 -2
  54. package/lib/next/blocks/blockPrettier.d.ts +1 -2
  55. package/lib/next/blocks/blockPrettierPluginCurly.d.ts +1 -2
  56. package/lib/next/blocks/blockPrettierPluginPackageJson.d.ts +1 -2
  57. package/lib/next/blocks/blockPrettierPluginSh.d.ts +1 -2
  58. package/lib/next/blocks/blockREADME.d.ts +1 -2
  59. package/lib/next/blocks/blockReleaseIt.d.ts +1 -2
  60. package/lib/next/blocks/blockReleaseIt.js +13 -0
  61. package/lib/next/blocks/blockReleaseIt.js.map +1 -1
  62. package/lib/next/blocks/blockRenovate.d.ts +1 -2
  63. package/lib/next/blocks/blockRenovate.js +9 -0
  64. package/lib/next/blocks/blockRenovate.js.map +1 -1
  65. package/lib/next/blocks/{blockRepositoryBranchProtection.d.ts → blockRepositoryBranchRuleset.d.ts} +3 -4
  66. package/lib/next/blocks/blockRepositoryBranchRuleset.js +71 -0
  67. package/lib/next/blocks/blockRepositoryBranchRuleset.js.map +1 -0
  68. package/lib/next/blocks/blockRepositoryLabels.d.ts +1 -2
  69. package/lib/next/blocks/blockRepositoryLabels.js +12 -2
  70. package/lib/next/blocks/blockRepositoryLabels.js.map +1 -1
  71. package/lib/next/blocks/blockRepositorySecrets.d.ts +52 -0
  72. package/lib/next/blocks/blockRepositorySecrets.js +34 -0
  73. package/lib/next/blocks/blockRepositorySecrets.js.map +1 -0
  74. package/lib/next/blocks/blockRepositorySettings.d.ts +1 -2
  75. package/lib/next/blocks/blockRepositorySettings.js +1 -1
  76. package/lib/next/blocks/blockRepositorySettings.js.map +1 -1
  77. package/lib/next/blocks/blockSecurityDocs.d.ts +1 -2
  78. package/lib/next/blocks/blockTSup.d.ts +1 -2
  79. package/lib/next/blocks/blockTemplatedBy.d.ts +1 -2
  80. package/lib/next/blocks/blockTypeScript.d.ts +1 -2
  81. package/lib/next/blocks/blockVSCode.d.ts +1 -2
  82. package/lib/next/blocks/blockVitest.d.ts +1 -2
  83. package/lib/next/blocks/blockVitest.js +26 -17
  84. package/lib/next/blocks/blockVitest.js.map +1 -1
  85. package/lib/next/blocks/options.fakes.d.ts +1 -0
  86. package/lib/next/blocks/options.fakes.js +1 -0
  87. package/lib/next/blocks/options.fakes.js.map +1 -1
  88. package/lib/next/blocks/packageData.d.ts +3 -2
  89. package/lib/next/blocks/packageData.js +20 -14
  90. package/lib/next/blocks/packageData.js.map +1 -1
  91. package/lib/next/presetCommon.d.ts +1 -2
  92. package/lib/next/presetEverything.d.ts +1 -2
  93. package/lib/next/presetMinimal.d.ts +1 -2
  94. package/lib/next/presetMinimal.js +6 -2
  95. package/lib/next/presetMinimal.js.map +1 -1
  96. package/lib/next/readDocumentation.d.ts +5 -0
  97. package/lib/next/readDocumentation.js +28 -0
  98. package/lib/next/readDocumentation.js.map +1 -0
  99. package/lib/next/template.d.ts +2 -3
  100. package/lib/next/template.js +2 -6
  101. package/lib/next/template.js.map +1 -1
  102. package/lib/next/utils/resolveBin.d.ts +3 -0
  103. package/lib/next/utils/resolveBin.js +7 -0
  104. package/lib/next/utils/resolveBin.js.map +1 -0
  105. package/lib/shared/getGitHubUserAsAllContributor.js +1 -1
  106. package/lib/shared/getGitHubUserAsAllContributor.js.map +1 -1
  107. package/lib/shared/options/optionsSchema.d.ts +4 -4
  108. package/lib/shared/options/readOptions.js +1 -1
  109. package/lib/shared/options/readOptions.js.map +1 -1
  110. package/lib/shared/packages.js +1 -3
  111. package/lib/shared/packages.js.map +1 -1
  112. package/lib/steps/addToolAllContributors.js +1 -1
  113. package/lib/steps/addToolAllContributors.js.map +1 -1
  114. package/lib/steps/initializeGitHubRepository/initializeBranchProtectionSettings.js +53 -31
  115. package/lib/steps/initializeGitHubRepository/initializeBranchProtectionSettings.js.map +1 -1
  116. package/lib/steps/uninstallPackages.js +4 -0
  117. package/lib/steps/uninstallPackages.js.map +1 -1
  118. package/lib/steps/updateAllContributorsTable.js +1 -1
  119. package/lib/steps/updateAllContributorsTable.js.map +1 -1
  120. package/lib/steps/writing/creation/createKnipConfig.d.ts +3 -0
  121. package/lib/steps/writing/creation/createKnipConfig.js +20 -0
  122. package/lib/steps/writing/creation/createKnipConfig.js.map +1 -0
  123. package/lib/steps/writing/creation/index.d.ts +2 -1
  124. package/lib/steps/writing/creation/index.js +21 -8
  125. package/lib/steps/writing/creation/index.js.map +1 -1
  126. package/lib/steps/writing/creation/rootFiles.js +2 -9
  127. package/lib/steps/writing/creation/rootFiles.js.map +1 -1
  128. package/package.json +16 -12
  129. package/lib/next/blocks/blockRepositoryBranchProtection.js +0 -49
  130. package/lib/next/blocks/blockRepositoryBranchProtection.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/blocks/blockVitest.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockESLint } from \"./blockESLint.js\";\nimport { blockExampleFiles } from \"./blockExampleFiles.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockGitignore } from \"./blockGitignore.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockPrettier } from \"./blockPrettier.js\";\nimport { blockTSup } from \"./blockTSup.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { getPackageDependencies } from \"./packageData.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockVitest = base.createBlock({\n\tabout: {\n\t\tname: \"Vitest\",\n\t},\n\taddons: {\n\t\tcoverage: z\n\t\t\t.object({\n\t\t\t\tdirectory: z.string(),\n\t\t\t\tflags: z.string().optional(),\n\t\t\t})\n\t\t\t.default({ directory: \"coverage\" }),\n\t\texclude: z.array(z.string()).default([]),\n\t\tinclude: z.array(z.string()).default([]),\n\t},\n\tmigrate() {\n\t\treturn {\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\n\t\t\t\t\t\t\"rm .github/codecov.yml .mocha* codecov.yml jest.config.*\",\n\t\t\t\t\t],\n\t\t\t\t\tphase: CommandPhase.Migrations,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tproduce({ addons }) {\n\t\tconst { coverage, exclude = [], include = [] } = addons;\n\t\tconst excludeText = JSON.stringify(exclude);\n\t\tconst includeText = JSON.stringify(include);\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\tignores: [coverage.directory],\n\t\t\t\t}),\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\textends: [\"vitest.configs.recommended\"],\n\t\t\t\t\t\t\tfiles: [\"**/*.test.*\"],\n\t\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentries: {\n\t\t\t\t\t\t\t\t\t\t\"@typescript-eslint/no-unsafe-assignment\": \"off\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tignores: [coverage.directory, \"**/*.snap\"],\n\t\t\t\t\timports: [{ source: \"@vitest/eslint-plugin\", specifier: \"vitest\" }],\n\t\t\t\t}),\n\t\t\t\tblockDevelopmentDocs({\n\t\t\t\t\tsections: {\n\t\t\t\t\t\tTesting: {\n\t\t\t\t\t\t\tcontents: `\n[Vitest](https://vitest.dev) is used for tests.\nYou can run it locally on the command-line:\n\n\\`\\`\\`shell\npnpm run test\n\\`\\`\\`\n\nAdd the \\`--coverage\\` flag to compute test coverage and place reports in the \\`coverage/\\` directory:\n\n\\`\\`\\`shell\npnpm run test --coverage\n\\`\\`\\`\n\nNote that [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test) is enabled for all test runs.\nCalls to \\`console.log\\`, \\`console.warn\\`, and other console methods will cause a test to fail.\n\n\n\t\t`,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockExampleFiles({\n\t\t\t\t\tfiles: {\n\t\t\t\t\t\t\"greet.test.ts\": `import { describe, expect, it, vi } from \"vitest\";\n\nimport { greet } from \"./greet.js\";\n\nconst message = \"Yay, testing!\";\n\ndescribe(\"greet\", () => {\n\tit(\"logs to the console once when message is provided as a string\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet(message);\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs to the console once when message is provided as an object\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet({ message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs once when times is not provided in an object\", () => {\n\t\tconst logger = vi.fn();\n\n\t\tgreet({ logger, message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs a specified number of times when times is provided\", () => {\n\t\tconst logger = vi.fn();\n\t\tconst times = 7;\n\n\t\tgreet({ logger, message, times });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(7);\n\t});\n});\n`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockGitignore({\n\t\t\t\t\tignores: [`/${coverage.directory}`],\n\t\t\t\t}),\n\t\t\t\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Test\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t{ run: \"pnpm run test --coverage\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif: \"always()\",\n\t\t\t\t\t\t\t\t\tuses: \"codecov/codecov-action@v3\",\n\t\t\t\t\t\t\t\t\t...(coverage.flags && { with: { flags: coverage.flags } }),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockPackageJson({\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdevDependencies: getPackageDependencies(\n\t\t\t\t\t\t\t\"@vitest/coverage-v8\",\n\t\t\t\t\t\t\t\"@vitest/eslint-plugin\",\n\t\t\t\t\t\t\t\"console-fail-test\",\n\t\t\t\t\t\t\t\"vitest\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\ttest: \"vitest\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockPrettier({\n\t\t\t\t\tignores: [`/${coverage.directory}`],\n\t\t\t\t}),\n\t\t\t\tblockTSup({\n\t\t\t\t\tentry: [\"!src/**/*.test.*\"],\n\t\t\t\t}),\n\t\t\t\tblockVSCode({\n\t\t\t\t\tdebuggers: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\targs: [\"run\", \"${relativeFile}\"],\n\t\t\t\t\t\t\tautoAttachChildProcesses: true,\n\t\t\t\t\t\t\tconsole: \"integratedTerminal\",\n\t\t\t\t\t\t\tname: \"Debug Current Test File\",\n\t\t\t\t\t\t\tprogram: \"${workspaceRoot}/node_modules/vitest/vitest.mjs\",\n\t\t\t\t\t\t\trequest: \"launch\",\n\t\t\t\t\t\t\tskipFiles: [\"<node_internals>/**\", \"**/node_modules/**\"],\n\t\t\t\t\t\t\tsmartStep: true,\n\t\t\t\t\t\t\ttype: \"node\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\textensions: [\"vitest.explorer\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t\"vitest.config.ts\": `import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tclearMocks: true,\n\t\tcoverage: {\n\t\t\tall: true,\n\t\t\texclude: ${excludeText},\n\t\t\tinclude: ${includeText},\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [${excludeText.slice(1, excludeText.length - 1)}, \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n\t`,\n\t\t\t},\n\t\t};\n\t},\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/next/blocks/blockVitest.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockESLint } from \"./blockESLint.js\";\nimport { blockExampleFiles } from \"./blockExampleFiles.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockGitHubApps } from \"./blockGitHubApps.js\";\nimport { blockGitignore } from \"./blockGitignore.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockPrettier } from \"./blockPrettier.js\";\nimport { blockTSup } from \"./blockTSup.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { getPackageDependencies } from \"./packageData.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockVitest = base.createBlock({\n\tabout: {\n\t\tname: \"Vitest\",\n\t},\n\taddons: {\n\t\tcoverage: z\n\t\t\t.object({\n\t\t\t\tdirectory: z.string(),\n\t\t\t\tflags: z.string().optional(),\n\t\t\t})\n\t\t\t.default({ directory: \"coverage\" }),\n\t\texclude: z.array(z.string()).default([]),\n\t\tinclude: z.array(z.string()).default([]),\n\t},\n\tmigrate() {\n\t\treturn {\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\n\t\t\t\t\t\t\"rm .github/codecov.yml .mocha* codecov.yml jest.config.*\",\n\t\t\t\t\t],\n\t\t\t\t\tphase: CommandPhase.Migrations,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tproduce({ addons }) {\n\t\tconst { coverage, exclude = [], include = [] } = addons;\n\t\tconst excludeText = JSON.stringify(exclude);\n\t\tconst includeText = JSON.stringify(include);\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\tignores: [coverage.directory],\n\t\t\t\t}),\n\t\t\t\tblockDevelopmentDocs({\n\t\t\t\t\tsections: {\n\t\t\t\t\t\tTesting: {\n\t\t\t\t\t\t\tcontents: `\n[Vitest](https://vitest.dev) is used for tests.\nYou can run it locally on the command-line:\n\n\\`\\`\\`shell\npnpm run test\n\\`\\`\\`\n\nAdd the \\`--coverage\\` flag to compute test coverage and place reports in the \\`coverage/\\` directory:\n\n\\`\\`\\`shell\npnpm run test --coverage\n\\`\\`\\`\n\nNote that [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test) is enabled for all test runs.\nCalls to \\`console.log\\`, \\`console.warn\\`, and other console methods will cause a test to fail.\n\n\n\t\t`,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\textends: [\"vitest.configs.recommended\"],\n\t\t\t\t\t\t\tfiles: [\"**/*.test.*\"],\n\t\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentries: {\n\t\t\t\t\t\t\t\t\t\t\"@typescript-eslint/no-unsafe-assignment\": \"off\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tignores: [coverage.directory, \"**/*.snap\"],\n\t\t\t\t\timports: [{ source: \"@vitest/eslint-plugin\", specifier: \"vitest\" }],\n\t\t\t\t}),\n\t\t\t\tblockExampleFiles({\n\t\t\t\t\tfiles: {\n\t\t\t\t\t\t\"greet.test.ts\": `import { describe, expect, it, vi } from \"vitest\";\n\nimport { greet } from \"./greet.js\";\n\nconst message = \"Yay, testing!\";\n\ndescribe(\"greet\", () => {\n\tit(\"logs to the console once when message is provided as a string\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet(message);\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs to the console once when message is provided as an object\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet({ message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs once when times is not provided in an object\", () => {\n\t\tconst logger = vi.fn();\n\n\t\tgreet({ logger, message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs a specified number of times when times is provided\", () => {\n\t\tconst logger = vi.fn();\n\t\tconst times = 7;\n\n\t\tgreet({ logger, message, times });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(7);\n\t});\n});\n`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockGitignore({\n\t\t\t\t\tignores: [`/${coverage.directory}`],\n\t\t\t\t}),\n\t\t\t\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Test\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t{ run: \"pnpm run test --coverage\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif: \"always()\",\n\t\t\t\t\t\t\t\t\tuses: \"codecov/codecov-action@v3\",\n\t\t\t\t\t\t\t\t\t...(coverage.flags && { with: { flags: coverage.flags } }),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockGitHubApps({\n\t\t\t\t\tapps: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Codecov\",\n\t\t\t\t\t\t\turl: \"https://github.com/apps/codecov\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockPackageJson({\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdevDependencies: getPackageDependencies(\n\t\t\t\t\t\t\t\"@vitest/coverage-v8\",\n\t\t\t\t\t\t\t\"@vitest/eslint-plugin\",\n\t\t\t\t\t\t\t\"console-fail-test\",\n\t\t\t\t\t\t\t\"vitest\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\ttest: \"vitest\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockPrettier({\n\t\t\t\t\tignores: [`/${coverage.directory}`],\n\t\t\t\t}),\n\t\t\t\tblockTSup({\n\t\t\t\t\tentry: [\"!src/**/*.test.*\"],\n\t\t\t\t}),\n\t\t\t\tblockVSCode({\n\t\t\t\t\tdebuggers: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\targs: [\"run\", \"${relativeFile}\"],\n\t\t\t\t\t\t\tautoAttachChildProcesses: true,\n\t\t\t\t\t\t\tconsole: \"integratedTerminal\",\n\t\t\t\t\t\t\tname: \"Debug Current Test File\",\n\t\t\t\t\t\t\tprogram: \"${workspaceRoot}/node_modules/vitest/vitest.mjs\",\n\t\t\t\t\t\t\trequest: \"launch\",\n\t\t\t\t\t\t\tskipFiles: [\"<node_internals>/**\", \"**/node_modules/**\"],\n\t\t\t\t\t\t\tsmartStep: true,\n\t\t\t\t\t\t\ttype: \"node\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\textensions: [\"vitest.explorer\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t\"vitest.config.ts\": `import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tclearMocks: true,\n\t\tcoverage: {\n\t\t\tall: true,\n\t\t\texclude: ${excludeText},\n\t\t\tinclude: ${includeText},\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [${excludeText.slice(1, excludeText.length - 1)}, \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n\t`,\n\t\t\t},\n\t\t};\n\t},\n});\n"],"mappings":"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","names":[]}
@@ -1,6 +1,7 @@
1
1
  declare const optionsBase: {
2
2
  access: "public";
3
3
  description: string;
4
+ directory: string;
4
5
  email: {
5
6
  github: string;
6
7
  npm: string;
@@ -1,6 +1,7 @@
1
1
  const optionsBase = {
2
2
  access: "public",
3
3
  description: "Test description",
4
+ directory: ".",
4
5
  email: {
5
6
  github: "github@email.com",
6
7
  npm: "npm@email.com"
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/blocks/options.fakes.ts"],"sourcesContent":["import { BaseOptions } from \"../base.js\";\n\nexport const optionsBase = {\n\taccess: \"public\",\n\tdescription: \"Test description\",\n\temail: {\n\t\tgithub: \"github@email.com\",\n\t\tnpm: \"npm@email.com\",\n\t},\n\towner: \"test-owner\",\n\trepository: \"test-repository\",\n\ttitle: \"Test Title\",\n} satisfies BaseOptions;\n"],"mappings":"AAEO,MAAM,cAAc;AAAA,EAC1B,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,OAAO;AAAA,IACN,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,OAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/blocks/options.fakes.ts"],"sourcesContent":["import { BaseOptions } from \"../base.js\";\n\nexport const optionsBase = {\n\taccess: \"public\",\n\tdescription: \"Test description\",\n\tdirectory: \".\",\n\temail: {\n\t\tgithub: \"github@email.com\",\n\t\tnpm: \"npm@email.com\",\n\t},\n\towner: \"test-owner\",\n\trepository: \"test-repository\",\n\ttitle: \"Test Title\",\n} satisfies BaseOptions;\n"],"mappings":"AAEO,MAAM,cAAc;AAAA,EAC1B,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO;AAAA,IACN,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,OAAO;AACR;","names":[]}
@@ -1,5 +1,6 @@
1
- declare const getPackageDependencies: (...names: string[]) => {
1
+ declare function getPackageDependencies(...names: string[]): {
2
2
  [k: string]: string;
3
3
  };
4
+ declare function getPackageDependency(name: string): string;
4
5
 
5
- export { getPackageDependencies };
6
+ export { getPackageDependencies, getPackageDependency };
@@ -4,22 +4,28 @@ const packageData = (
4
4
  // Importing from above src/ would expand the TS build rootDir
5
5
  require2("../../../package.json")
6
6
  );
7
- const getPackageInner = (key, name) => {
7
+ function getPackageDependencies(...names) {
8
+ return Object.fromEntries(
9
+ names.map((name) => {
10
+ return [name, getPackageDependency(name)];
11
+ })
12
+ );
13
+ }
14
+ function getPackageDependency(name) {
15
+ const version = getPackageInner("devDependencies", name) ?? getPackageInner("dependencies", name);
16
+ if (!version) {
17
+ throw new Error(
18
+ `'${name} is neither in package.json's dependencies nor its devDependencies.`
19
+ );
20
+ }
21
+ return version;
22
+ }
23
+ function getPackageInner(key, name) {
8
24
  const inner = packageData[key];
9
25
  return inner[name];
10
- };
11
- const getPackageDependencies = (...names) => Object.fromEntries(
12
- names.map((name) => {
13
- const version = getPackageInner("devDependencies", name) ?? getPackageInner("dependencies", name);
14
- if (!version) {
15
- throw new Error(
16
- `'${name} is neither in package.json's dependencies nor its devDependencies.`
17
- );
18
- }
19
- return [name, version];
20
- })
21
- );
26
+ }
22
27
  export {
23
- getPackageDependencies
28
+ getPackageDependencies,
29
+ getPackageDependency
24
30
  };
25
31
  //# sourceMappingURL=packageData.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/blocks/packageData.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\n\nconst require = createRequire(import.meta.url);\n\nconst packageData =\n\t// Importing from above src/ would expand the TS build rootDir\n\trequire(\"../../../package.json\") as typeof import(\"../../../package.json\");\n\nconst getPackageInner = (\n\tkey: \"dependencies\" | \"devDependencies\",\n\tname: string,\n) => {\n\tconst inner = packageData[key];\n\n\treturn inner[name as keyof typeof inner] as string | undefined;\n};\n\nexport const getPackageDependencies = (...names: string[]) =>\n\tObject.fromEntries(\n\t\tnames.map((name) => {\n\t\t\tconst version =\n\t\t\t\tgetPackageInner(\"devDependencies\", name) ??\n\t\t\t\tgetPackageInner(\"dependencies\", name);\n\n\t\t\tif (!version) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${name} is neither in package.json's dependencies nor its devDependencies.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [name, version];\n\t\t}),\n\t);\n"],"mappings":"AAAA,SAAS,qBAAqB;AAE9B,MAAMA,WAAU,cAAc,YAAY,GAAG;AAE7C,MAAM;AAAA;AAAA,EAELA,SAAQ,uBAAuB;AAAA;AAEhC,MAAM,kBAAkB,CACvB,KACA,SACI;AACJ,QAAM,QAAQ,YAAY,GAAG;AAE7B,SAAO,MAAM,IAA0B;AACxC;AAEO,MAAM,yBAAyB,IAAI,UACzC,OAAO;AAAA,EACN,MAAM,IAAI,CAAC,SAAS;AACnB,UAAM,UACL,gBAAgB,mBAAmB,IAAI,KACvC,gBAAgB,gBAAgB,IAAI;AAErC,QAAI,CAAC,SAAS;AACb,YAAM,IAAI;AAAA,QACT,IAAI,IAAI;AAAA,MACT;AAAA,IACD;AAEA,WAAO,CAAC,MAAM,OAAO;AAAA,EACtB,CAAC;AACF;","names":["require"]}
1
+ {"version":3,"sources":["../../../src/next/blocks/packageData.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\n\nconst require = createRequire(import.meta.url);\n\nconst packageData =\n\t// Importing from above src/ would expand the TS build rootDir\n\trequire(\"../../../package.json\") as typeof import(\"../../../package.json\");\n\nexport function getPackageDependencies(...names: string[]) {\n\treturn Object.fromEntries(\n\t\tnames.map((name) => {\n\t\t\treturn [name, getPackageDependency(name)];\n\t\t}),\n\t);\n}\n\nexport function getPackageDependency(name: string) {\n\tconst version =\n\t\tgetPackageInner(\"devDependencies\", name) ??\n\t\tgetPackageInner(\"dependencies\", name);\n\n\tif (!version) {\n\t\tthrow new Error(\n\t\t\t`'${name} is neither in package.json's dependencies nor its devDependencies.`,\n\t\t);\n\t}\n\n\treturn version;\n}\n\nfunction getPackageInner(\n\tkey: \"dependencies\" | \"devDependencies\",\n\tname: string,\n) {\n\tconst inner = packageData[key];\n\n\treturn inner[name as keyof typeof inner] as string | undefined;\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAE9B,MAAMA,WAAU,cAAc,YAAY,GAAG;AAE7C,MAAM;AAAA;AAAA,EAELA,SAAQ,uBAAuB;AAAA;AAEzB,SAAS,0BAA0B,OAAiB;AAC1D,SAAO,OAAO;AAAA,IACb,MAAM,IAAI,CAAC,SAAS;AACnB,aAAO,CAAC,MAAM,qBAAqB,IAAI,CAAC;AAAA,IACzC,CAAC;AAAA,EACF;AACD;AAEO,SAAS,qBAAqB,MAAc;AAClD,QAAM,UACL,gBAAgB,mBAAmB,IAAI,KACvC,gBAAgB,gBAAgB,IAAI;AAErC,MAAI,CAAC,SAAS;AACb,UAAM,IAAI;AAAA,MACT,IAAI,IAAI;AAAA,IACT;AAAA,EACD;AAEA,SAAO;AACR;AAEA,SAAS,gBACR,KACA,MACC;AACD,QAAM,QAAQ,YAAY,GAAG;AAE7B,SAAO,MAAM,IAA0B;AACxC;","names":["require"]}
@@ -25,6 +25,7 @@ declare const presetCommon: create.Preset<{
25
25
  profile: string;
26
26
  }>, "many">>;
27
27
  description: zod.ZodString;
28
+ directory: zod.ZodString;
28
29
  documentation: zod.ZodOptional<zod.ZodString>;
29
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
30
31
  github: zod.ZodString;
@@ -55,7 +56,6 @@ declare const presetCommon: create.Preset<{
55
56
  }>>;
56
57
  hideTemplatedBy: zod.ZodOptional<zod.ZodBoolean>;
57
58
  keywords: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
58
- login: zod.ZodOptional<zod.ZodString>;
59
59
  logo: zod.ZodOptional<zod.ZodObject<{
60
60
  alt: zod.ZodString;
61
61
  src: zod.ZodString;
@@ -90,7 +90,6 @@ declare const presetCommon: create.Preset<{
90
90
  devDependencies?: Record<string, string> | undefined;
91
91
  scripts?: Record<string, string> | undefined;
92
92
  }>>;
93
- preserveGeneratedFrom: zod.ZodOptional<zod.ZodBoolean>;
94
93
  repository: zod.ZodString;
95
94
  title: zod.ZodString;
96
95
  version: zod.ZodOptional<zod.ZodString>;
@@ -25,6 +25,7 @@ declare const presetEverything: create.Preset<{
25
25
  profile: string;
26
26
  }>, "many">>;
27
27
  description: zod.ZodString;
28
+ directory: zod.ZodString;
28
29
  documentation: zod.ZodOptional<zod.ZodString>;
29
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
30
31
  github: zod.ZodString;
@@ -55,7 +56,6 @@ declare const presetEverything: create.Preset<{
55
56
  }>>;
56
57
  hideTemplatedBy: zod.ZodOptional<zod.ZodBoolean>;
57
58
  keywords: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
58
- login: zod.ZodOptional<zod.ZodString>;
59
59
  logo: zod.ZodOptional<zod.ZodObject<{
60
60
  alt: zod.ZodString;
61
61
  src: zod.ZodString;
@@ -90,7 +90,6 @@ declare const presetEverything: create.Preset<{
90
90
  devDependencies?: Record<string, string> | undefined;
91
91
  scripts?: Record<string, string> | undefined;
92
92
  }>>;
93
- preserveGeneratedFrom: zod.ZodOptional<zod.ZodBoolean>;
94
93
  repository: zod.ZodString;
95
94
  title: zod.ZodString;
96
95
  version: zod.ZodOptional<zod.ZodString>;
@@ -25,6 +25,7 @@ declare const presetMinimal: create.Preset<{
25
25
  profile: string;
26
26
  }>, "many">>;
27
27
  description: zod.ZodString;
28
+ directory: zod.ZodString;
28
29
  documentation: zod.ZodOptional<zod.ZodString>;
29
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
30
31
  github: zod.ZodString;
@@ -55,7 +56,6 @@ declare const presetMinimal: create.Preset<{
55
56
  }>>;
56
57
  hideTemplatedBy: zod.ZodOptional<zod.ZodBoolean>;
57
58
  keywords: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
58
- login: zod.ZodOptional<zod.ZodString>;
59
59
  logo: zod.ZodOptional<zod.ZodObject<{
60
60
  alt: zod.ZodString;
61
61
  src: zod.ZodString;
@@ -90,7 +90,6 @@ declare const presetMinimal: create.Preset<{
90
90
  devDependencies?: Record<string, string> | undefined;
91
91
  scripts?: Record<string, string> | undefined;
92
92
  }>>;
93
- preserveGeneratedFrom: zod.ZodOptional<zod.ZodBoolean>;
94
93
  repository: zod.ZodString;
95
94
  title: zod.ZodString;
96
95
  version: zod.ZodOptional<zod.ZodString>;
@@ -6,6 +6,7 @@ import { blockESLint } from "./blocks/blockESLint.js";
6
6
  import { blockExampleFiles } from "./blocks/blockExampleFiles.js";
7
7
  import { blockFunding } from "./blocks/blockFunding.js";
8
8
  import { blockGitHubActionsCI } from "./blocks/blockGitHubActionsCI.js";
9
+ import { blockGitHubApps } from "./blocks/blockGitHubApps.js";
9
10
  import { blockGitHubIssueTemplates } from "./blocks/blockGitHubIssueTemplates.js";
10
11
  import { blockGitHubPRTemplate } from "./blocks/blockGitHubPRTemplate.js";
11
12
  import { blockGitignore } from "./blocks/blockGitignore.js";
@@ -13,8 +14,9 @@ import { blockMITLicense } from "./blocks/blockMITLicense.js";
13
14
  import { blockPackageJson } from "./blocks/blockPackageJson.js";
14
15
  import { blockPrettier } from "./blocks/blockPrettier.js";
15
16
  import { blockREADME } from "./blocks/blockREADME.js";
16
- import { blockRepositoryBranchProtection } from "./blocks/blockRepositoryBranchProtection.js";
17
+ import { blockRepositoryBranchRuleset } from "./blocks/blockRepositoryBranchRuleset.js";
17
18
  import { blockRepositoryLabels } from "./blocks/blockRepositoryLabels.js";
19
+ import { blockRepositorySecrets } from "./blocks/blockRepositorySecrets.js";
18
20
  import { blockRepositorySettings } from "./blocks/blockRepositorySettings.js";
19
21
  import { blockTemplatedBy } from "./blocks/blockTemplatedBy.js";
20
22
  import { blockTSup } from "./blocks/blockTSup.js";
@@ -32,6 +34,7 @@ const presetMinimal = base.createPreset({
32
34
  blockExampleFiles,
33
35
  blockFunding,
34
36
  blockGitHubActionsCI,
37
+ blockGitHubApps,
35
38
  blockGitHubIssueTemplates,
36
39
  blockGitHubPRTemplate,
37
40
  blockGitignore,
@@ -39,8 +42,9 @@ const presetMinimal = base.createPreset({
39
42
  blockPackageJson,
40
43
  blockPrettier,
41
44
  blockREADME,
42
- blockRepositoryBranchProtection,
45
+ blockRepositoryBranchRuleset,
43
46
  blockRepositoryLabels,
47
+ blockRepositorySecrets,
44
48
  blockRepositorySettings,
45
49
  blockTemplatedBy,
46
50
  blockTSup,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/presetMinimal.ts"],"sourcesContent":["import { base } from \"./base.js\";\nimport { blockContributingDocs } from \"./blocks/blockContributingDocs.js\";\nimport { blockContributorCovenant } from \"./blocks/blockContributorCovenant.js\";\nimport { blockDevelopmentDocs } from \"./blocks/blockDevelopmentDocs.js\";\nimport { blockESLint } from \"./blocks/blockESLint.js\";\nimport { blockExampleFiles } from \"./blocks/blockExampleFiles.js\";\nimport { blockFunding } from \"./blocks/blockFunding.js\";\nimport { blockGitHubActionsCI } from \"./blocks/blockGitHubActionsCI.js\";\nimport { blockGitHubIssueTemplates } from \"./blocks/blockGitHubIssueTemplates.js\";\nimport { blockGitHubPRTemplate } from \"./blocks/blockGitHubPRTemplate.js\";\nimport { blockGitignore } from \"./blocks/blockGitignore.js\";\nimport { blockMITLicense } from \"./blocks/blockMITLicense.js\";\nimport { blockPackageJson } from \"./blocks/blockPackageJson.js\";\nimport { blockPrettier } from \"./blocks/blockPrettier.js\";\nimport { blockREADME } from \"./blocks/blockREADME.js\";\nimport { blockRepositoryBranchProtection } from \"./blocks/blockRepositoryBranchProtection.js\";\nimport { blockRepositoryLabels } from \"./blocks/blockRepositoryLabels.js\";\nimport { blockRepositorySettings } from \"./blocks/blockRepositorySettings.js\";\nimport { blockTemplatedBy } from \"./blocks/blockTemplatedBy.js\";\nimport { blockTSup } from \"./blocks/blockTSup.js\";\nimport { blockTypeScript } from \"./blocks/blockTypeScript.js\";\n\nexport const presetMinimal = base.createPreset({\n\tabout: {\n\t\tdescription:\n\t\t\t\"Just bare starter tooling: building, formatting, linting, and type checking.\",\n\t\tname: \"Minimal\",\n\t},\n\tblocks: [\n\t\tblockContributingDocs,\n\t\tblockContributorCovenant,\n\t\tblockDevelopmentDocs,\n\t\tblockESLint,\n\t\tblockExampleFiles,\n\t\tblockFunding,\n\t\tblockGitHubActionsCI,\n\t\tblockGitHubIssueTemplates,\n\t\tblockGitHubPRTemplate,\n\t\tblockGitignore,\n\t\tblockMITLicense,\n\t\tblockPackageJson,\n\t\tblockPrettier,\n\t\tblockREADME,\n\t\tblockRepositoryBranchProtection,\n\t\tblockRepositoryLabels,\n\t\tblockRepositorySettings,\n\t\tblockTemplatedBy,\n\t\tblockTSup,\n\t\tblockTypeScript,\n\t],\n});\n"],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,6BAA6B;AACtC,SAAS,gCAAgC;AACzC,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,4BAA4B;AACrC,SAAS,iCAAiC;AAC1C,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,uCAAuC;AAChD,SAAS,6BAA6B;AACtC,SAAS,+BAA+B;AACxC,SAAS,wBAAwB;AACjC,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAEzB,MAAM,gBAAgB,KAAK,aAAa;AAAA,EAC9C,OAAO;AAAA,IACN,aACC;AAAA,IACD,MAAM;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../src/next/presetMinimal.ts"],"sourcesContent":["import { base } from \"./base.js\";\nimport { blockContributingDocs } from \"./blocks/blockContributingDocs.js\";\nimport { blockContributorCovenant } from \"./blocks/blockContributorCovenant.js\";\nimport { blockDevelopmentDocs } from \"./blocks/blockDevelopmentDocs.js\";\nimport { blockESLint } from \"./blocks/blockESLint.js\";\nimport { blockExampleFiles } from \"./blocks/blockExampleFiles.js\";\nimport { blockFunding } from \"./blocks/blockFunding.js\";\nimport { blockGitHubActionsCI } from \"./blocks/blockGitHubActionsCI.js\";\nimport { blockGitHubApps } from \"./blocks/blockGitHubApps.js\";\nimport { blockGitHubIssueTemplates } from \"./blocks/blockGitHubIssueTemplates.js\";\nimport { blockGitHubPRTemplate } from \"./blocks/blockGitHubPRTemplate.js\";\nimport { blockGitignore } from \"./blocks/blockGitignore.js\";\nimport { blockMITLicense } from \"./blocks/blockMITLicense.js\";\nimport { blockPackageJson } from \"./blocks/blockPackageJson.js\";\nimport { blockPrettier } from \"./blocks/blockPrettier.js\";\nimport { blockREADME } from \"./blocks/blockREADME.js\";\nimport { blockRepositoryBranchRuleset } from \"./blocks/blockRepositoryBranchRuleset.js\";\nimport { blockRepositoryLabels } from \"./blocks/blockRepositoryLabels.js\";\nimport { blockRepositorySecrets } from \"./blocks/blockRepositorySecrets.js\";\nimport { blockRepositorySettings } from \"./blocks/blockRepositorySettings.js\";\nimport { blockTemplatedBy } from \"./blocks/blockTemplatedBy.js\";\nimport { blockTSup } from \"./blocks/blockTSup.js\";\nimport { blockTypeScript } from \"./blocks/blockTypeScript.js\";\n\nexport const presetMinimal = base.createPreset({\n\tabout: {\n\t\tdescription:\n\t\t\t\"Just bare starter tooling: building, formatting, linting, and type checking.\",\n\t\tname: \"Minimal\",\n\t},\n\tblocks: [\n\t\tblockContributingDocs,\n\t\tblockContributorCovenant,\n\t\tblockDevelopmentDocs,\n\t\tblockESLint,\n\t\tblockExampleFiles,\n\t\tblockFunding,\n\t\tblockGitHubActionsCI,\n\t\tblockGitHubApps,\n\t\tblockGitHubIssueTemplates,\n\t\tblockGitHubPRTemplate,\n\t\tblockGitignore,\n\t\tblockMITLicense,\n\t\tblockPackageJson,\n\t\tblockPrettier,\n\t\tblockREADME,\n\t\tblockRepositoryBranchRuleset,\n\t\tblockRepositoryLabels,\n\t\tblockRepositorySecrets,\n\t\tblockRepositorySettings,\n\t\tblockTemplatedBy,\n\t\tblockTSup,\n\t\tblockTypeScript,\n\t],\n});\n"],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,6BAA6B;AACtC,SAAS,gCAAgC;AACzC,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,SAAS,iCAAiC;AAC1C,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,oCAAoC;AAC7C,SAAS,6BAA6B;AACtC,SAAS,8BAA8B;AACvC,SAAS,+BAA+B;AACxC,SAAS,wBAAwB;AACjC,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAEzB,MAAM,gBAAgB,KAAK,aAAa;AAAA,EAC9C,OAAO;AAAA,IACN,aACC;AAAA,IACD,MAAM;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD,CAAC;","names":[]}
@@ -0,0 +1,5 @@
1
+ import { TakeInput } from 'create';
2
+
3
+ declare function readDocumentation(take: TakeInput): Promise<string | undefined>;
4
+
5
+ export { readDocumentation };
@@ -0,0 +1,28 @@
1
+ import { inputFromFile } from "input-from-file";
2
+ import { swallowError } from "./utils/swallowError.js";
3
+ const knownHeadings = /* @__PURE__ */ new Set([
4
+ "building",
5
+ "development",
6
+ "formatting",
7
+ "linting",
8
+ "testing",
9
+ "type checking"
10
+ ]);
11
+ async function readDocumentation(take) {
12
+ const existing = swallowError(
13
+ await take(inputFromFile, {
14
+ filePath: ".github/DEVELOPMENT.md"
15
+ })
16
+ );
17
+ if (!existing) {
18
+ return void 0;
19
+ }
20
+ return existing.split(/\n\n(?=##\s)/).filter((section) => !knownHeadings.has(parseHeading(section))).join("\n\n");
21
+ }
22
+ function parseHeading(section) {
23
+ return section.split("\n")[0].replace(/^#+\s+/, "").trim().toLowerCase();
24
+ }
25
+ export {
26
+ readDocumentation
27
+ };
28
+ //# sourceMappingURL=readDocumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/next/readDocumentation.ts"],"sourcesContent":["import { TakeInput } from \"create\";\nimport { inputFromFile } from \"input-from-file\";\n\nimport { swallowError } from \"./utils/swallowError.js\";\n\nconst knownHeadings = new Set([\n\t\"building\",\n\t\"development\",\n\t\"formatting\",\n\t\"linting\",\n\t\"testing\",\n\t\"type checking\",\n]);\n\nexport async function readDocumentation(take: TakeInput) {\n\tconst existing = swallowError(\n\t\tawait take(inputFromFile, {\n\t\t\tfilePath: \".github/DEVELOPMENT.md\",\n\t\t}),\n\t);\n\tif (!existing) {\n\t\treturn undefined;\n\t}\n\n\treturn existing\n\t\t.split(/\\n\\n(?=##\\s)/)\n\t\t.filter((section) => !knownHeadings.has(parseHeading(section)))\n\t\t.join(\"\\n\\n\");\n}\n\nfunction parseHeading(section: string) {\n\treturn section\n\t\t.split(\"\\n\")[0]\n\t\t.replace(/^#+\\s+/, \"\")\n\t\t.trim()\n\t\t.toLowerCase();\n}\n"],"mappings":"AACA,SAAS,qBAAqB;AAE9B,SAAS,oBAAoB;AAE7B,MAAM,gBAAgB,oBAAI,IAAI;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,eAAsB,kBAAkB,MAAiB;AACxD,QAAM,WAAW;AAAA,IAChB,MAAM,KAAK,eAAe;AAAA,MACzB,UAAU;AAAA,IACX,CAAC;AAAA,EACF;AACA,MAAI,CAAC,UAAU;AACd,WAAO;AAAA,EACR;AAEA,SAAO,SACL,MAAM,cAAc,EACpB,OAAO,CAAC,YAAY,CAAC,cAAc,IAAI,aAAa,OAAO,CAAC,CAAC,EAC7D,KAAK,MAAM;AACd;AAEA,SAAS,aAAa,SAAiB;AACtC,SAAO,QACL,MAAM,IAAI,EAAE,CAAC,EACb,QAAQ,UAAU,EAAE,EACpB,KAAK,EACL,YAAY;AACf;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import * as create from 'create';
2
2
  import * as zod from 'zod';
3
3
 
4
- declare const template: create.Template<"common" | "everything" | "minimal", {
4
+ declare const template: create.Template<{
5
5
  access: zod.ZodOptional<zod.ZodUnion<[zod.ZodLiteral<"public">, zod.ZodLiteral<"restricted">]>>;
6
6
  author: zod.ZodOptional<zod.ZodString>;
7
7
  bin: zod.ZodOptional<zod.ZodString>;
@@ -25,6 +25,7 @@ declare const template: create.Template<"common" | "everything" | "minimal", {
25
25
  profile: string;
26
26
  }>, "many">>;
27
27
  description: zod.ZodString;
28
+ directory: zod.ZodString;
28
29
  documentation: zod.ZodOptional<zod.ZodString>;
29
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
30
31
  github: zod.ZodString;
@@ -55,7 +56,6 @@ declare const template: create.Template<"common" | "everything" | "minimal", {
55
56
  }>>;
56
57
  hideTemplatedBy: zod.ZodOptional<zod.ZodBoolean>;
57
58
  keywords: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
58
- login: zod.ZodOptional<zod.ZodString>;
59
59
  logo: zod.ZodOptional<zod.ZodObject<{
60
60
  alt: zod.ZodString;
61
61
  src: zod.ZodString;
@@ -90,7 +90,6 @@ declare const template: create.Template<"common" | "everything" | "minimal", {
90
90
  devDependencies?: Record<string, string> | undefined;
91
91
  scripts?: Record<string, string> | undefined;
92
92
  }>>;
93
- preserveGeneratedFrom: zod.ZodOptional<zod.ZodBoolean>;
94
93
  repository: zod.ZodString;
95
94
  title: zod.ZodString;
96
95
  version: zod.ZodOptional<zod.ZodString>;
@@ -6,12 +6,8 @@ const template = createTemplate({
6
6
  about: {
7
7
  name: "TypeScript App"
8
8
  },
9
- default: "common",
10
- presets: [
11
- { label: "common", preset: presetCommon },
12
- { label: "everything", preset: presetEverything },
13
- { label: "minimal", preset: presetMinimal }
14
- ]
9
+ presets: [presetMinimal, presetCommon, presetEverything],
10
+ suggested: presetCommon
15
11
  });
16
12
  var template_default = template;
17
13
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/template.ts"],"sourcesContent":["import { createTemplate } from \"create\";\n\nimport { presetCommon } from \"./presetCommon.js\";\nimport { presetEverything } from \"./presetEverything.js\";\nimport { presetMinimal } from \"./presetMinimal.js\";\n\nexport const template = createTemplate({\n\tabout: {\n\t\tname: \"TypeScript App\",\n\t},\n\tdefault: \"common\",\n\tpresets: [\n\t\t{ label: \"common\", preset: presetCommon },\n\t\t{ label: \"everything\", preset: presetEverything },\n\t\t{ label: \"minimal\", preset: presetMinimal },\n\t],\n});\n\nexport default template;\n"],"mappings":"AAAA,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,MAAM,WAAW,eAAe;AAAA,EACtC,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,SAAS;AAAA,EACT,SAAS;AAAA,IACR,EAAE,OAAO,UAAU,QAAQ,aAAa;AAAA,IACxC,EAAE,OAAO,cAAc,QAAQ,iBAAiB;AAAA,IAChD,EAAE,OAAO,WAAW,QAAQ,cAAc;AAAA,EAC3C;AACD,CAAC;AAED,IAAO,mBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/next/template.ts"],"sourcesContent":["import { createTemplate } from \"create\";\n\nimport { presetCommon } from \"./presetCommon.js\";\nimport { presetEverything } from \"./presetEverything.js\";\nimport { presetMinimal } from \"./presetMinimal.js\";\n\nexport const template = createTemplate({\n\tabout: {\n\t\tname: \"TypeScript App\",\n\t},\n\tpresets: [presetMinimal, presetCommon, presetEverything],\n\tsuggested: presetCommon,\n});\n\nexport default template;\n"],"mappings":"AAAA,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,MAAM,WAAW,eAAe;AAAA,EACtC,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,SAAS,CAAC,eAAe,cAAc,gBAAgB;AAAA,EACvD,WAAW;AACZ,CAAC;AAED,IAAO,mBAAQ;","names":[]}
@@ -0,0 +1,3 @@
1
+ declare function resolveBin(bin: string): string;
2
+
3
+ export { resolveBin };
@@ -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":[]}
@@ -114,10 +114,11 @@ declare const optionsSchema: z.ZodObject<{
114
114
  skipUninstall: z.ZodOptional<z.ZodBoolean>;
115
115
  title: z.ZodOptional<z.ZodString>;
116
116
  }, "strip", z.ZodTypeAny, {
117
+ mode?: "create" | "initialize" | "migrate" | undefined;
118
+ auto?: boolean | undefined;
117
119
  offline?: boolean | undefined;
118
120
  access?: "public" | "restricted" | undefined;
119
121
  author?: string | undefined;
120
- auto?: boolean | undefined;
121
122
  base?: "common" | "everything" | "minimal" | "prompt" | undefined;
122
123
  bin?: string | undefined;
123
124
  description?: string | undefined;
@@ -130,7 +131,6 @@ declare const optionsSchema: z.ZodObject<{
130
131
  guide?: string | undefined;
131
132
  keywords?: string[] | undefined;
132
133
  logo?: string | undefined;
133
- mode?: "create" | "initialize" | "migrate" | undefined;
134
134
  owner?: string | undefined;
135
135
  repository?: string | undefined;
136
136
  title?: string | undefined;
@@ -164,10 +164,11 @@ declare const optionsSchema: z.ZodObject<{
164
164
  guideTitle?: string | undefined;
165
165
  logoAlt?: string | undefined;
166
166
  }, {
167
+ mode?: "create" | "initialize" | "migrate" | undefined;
168
+ auto?: boolean | undefined;
167
169
  offline?: boolean | undefined;
168
170
  access?: "public" | "restricted" | undefined;
169
171
  author?: string | undefined;
170
- auto?: boolean | undefined;
171
172
  base?: "common" | "everything" | "minimal" | "prompt" | undefined;
172
173
  bin?: string | undefined;
173
174
  description?: string | undefined;
@@ -180,7 +181,6 @@ declare const optionsSchema: z.ZodObject<{
180
181
  guide?: string | undefined;
181
182
  keywords?: string[] | undefined;
182
183
  logo?: string | undefined;
183
- mode?: "create" | "initialize" | "migrate" | undefined;
184
184
  owner?: string | undefined;
185
185
  repository?: string | undefined;
186
186
  title?: string | undefined;
@@ -65,7 +65,7 @@ async function readOptions(args, mode, promptedOptions = {}) {
65
65
  skipGitHubApi: values["skip-github-api"] ?? values.offline,
66
66
  skipInstall: values["skip-install"],
67
67
  skipRemoval: values["skip-removal"],
68
- skipRestore: values["skip-restore"],
68
+ skipRestore: values["skip-restore"] ?? mode === "create",
69
69
  skipUninstall: values["skip-uninstall"],
70
70
  title: values.title
71
71
  };
@@ -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":"AAAA,SAAS,iBAAiB;AAE1B,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAG1B,SAAS,mBAAmB;AAG5B,SAAS,qBAAqB;AAC9B,SAAS,kCAAkC;AAC3C,SAAS,4BAA4B;AACrC,SAAS,6BAA6B;AACtC,SAAS,8BAA8B;AACvC,SAAS,eAAe;AACxB,SAAS,kCAAkC;AAC3C,SAAS,0BAA0B;AACnC,SAAS,qBAAqB;AAmB9B,eAAsB,YACrB,MACA,MACA,kBAAmC,CAAC,GACN;AAC9B,QAAM,WAAW,qBAAqB,eAAe;AACrD,QAAM,EAAE,OAAO,IAAI,UAAU;AAAA,IAC5B;AAAA,IACA,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT,CAAC;AAED,MAAI,SAAS,aAAa,CAAC,OAAO,MAAM;AACvC,WAAO,OAAO,MAAM,QAAQ;AAAA,EAC7B;AAEA,QAAM,gBAAgB;AAAA,IACrB,QAAQ,OAAO;AAAA,IACf,QAAQ,OAAO;AAAA,IACf,MAAM,CAAC,CAAC,OAAO;AAAA,IACf,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,aAAa,OAAO;AAAA,IACpB,WAAW,OAAO;AAAA,IAClB,OACE,OAAO,SAAS,OAAO,cAAc,KAAK,OAAO,WAAW,IAC1D;AAAA,MACA,QAAQ,OAAO,SAAS,OAAO,cAAc;AAAA,MAC7C,KAAK,OAAO,SAAS,OAAO,WAAW;AAAA,IACxC,IACC;AAAA,IACJ,wBAAwB,OAAO,0BAA0B;AAAA,IACzD,mBAAmB,OAAO,oBAAoB;AAAA,IAC9C,mBAAmB,OAAO,qBAAqB;AAAA,IAC/C,kBAAkB,OAAO,oBAAoB;AAAA,IAC7C,iBAAiB,OAAO,mBAAmB;AAAA,IAC3C,iBAAiB,OAAO,mBAAmB;AAAA,IAC3C,eAAe,OAAO,iBAAiB;AAAA,IACvC,wBAAwB,OAAO,2BAA2B;AAAA,IAC1D,qBAAqB,OAAO,uBAAuB;AAAA,IACnD,0BAA0B,OAAO,4BAA4B;AAAA,IAC7D,kBAAkB,OAAO,oBAAoB;AAAA,IAC7C,qBAAqB,OAAO,uBAAuB;AAAA,IACnD,mBAAmB,OAAO,qBAAqB;AAAA,IAC/C,gBAAgB,OAAO,kBAAkB;AAAA,IACzC,iBAAiB,OAAO,kBAAkB;AAAA,IAC1C,iBAAiB,OAAO,kBAAkB;AAAA,IAC1C,oBAAoB,OAAO,sBAAsB;AAAA,IACjD,cAAc,OAAO,YAAY;AAAA,IACjC,SAAS,OAAO;AAAA,IAChB,OAAO,OAAO;AAAA,IACd,YAAY,OAAO,aAAa;AAAA,IAChC,MAAM,OAAO;AAAA,IACb,SAAS,OAAO,UAAU;AAAA,IAC1B,SAAS,OAAO;AAAA,IAChB,OAAO,OAAO;AAAA,IACd,uBACC,OAAO,yBAAyB,KAAK,OAAO,UAAU;AAAA,IACvD,YAAY,OAAO;AAAA,IACnB,wBACC,OAAO,2BAA2B,KAAK,OAAO;AAAA,IAC/C,eAAe,OAAO,iBAAiB,KAAK,OAAO;AAAA,IACnD,aAAa,OAAO,cAAc;AAAA,IAClC,aAAa,OAAO,cAAc;AAAA,IAClC,aAAa,OAAO,cAAc;AAAA,IAClC,eAAe,OAAO,gBAAgB;AAAA,IACtC,OAAO,OAAO;AAAA,EACf;AAEA,QAAM,aAAa,sBAAsB,MAAM;AAC/C,MAAI,YAAY;AACf,WAAO;AAAA,MACN,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,IACV;AAAA,EACD;AAEA,QAAM,qBAAqB,cAAc,UAAU,aAAa;AAEhE,MAAI,CAAC,mBAAmB,SAAS;AAChC,WAAO;AAAA,MACN,WAAW;AAAA,MACX,OAAO,mBAAmB;AAAA,MAC1B,SAAS;AAAA,IACV;AAAA,EACD;AAEA,QAAM,UAAU,mBAAmB;AAEnC,QAAM,cAAc,MAAM,2BAA2B;AAAA,IACpD,MAAM,CAAC,CAAC,cAAc;AAAA,IACtB,iBAAiB,SAAS;AAAA,IAC1B,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU,QAAQ;AAAA,EACnB,CAAC;AAED,UAAQ,UAAU,YAAY;AAE9B,MAAI,CAAC,QAAQ,OAAO;AACnB,WAAO;AAAA,MACN,WAAW;AAAA,MACX,OAAO,YAAY;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAEA,QAAM,mBAAmB,MAAM,2BAA2B;AAAA,IACzD,MAAM,CAAC,CAAC,cAAc;AAAA,IACtB,iBAAiB,SAAS;AAAA,IAC1B,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU,QAAQ;AAAA,EACnB,CAAC;AAED,UAAQ,eAAe,iBAAiB;AAExC,MAAI,CAAC,QAAQ,YAAY;AACxB,WAAO;AAAA,MACN,WAAW;AAAA,MACX,OAAO,iBAAiB;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AAEA,QAAM,EAAE,SAAS,WAAW,IAAI,MAAM;AAAA,IACrC,QAAQ,gBACL,SACA,MAAM;AAAA,MAAY;AAAA,MAAkC,YACpD,gBAAgB;AAAA,IACjB;AAAA,IACF;AAAA,MACC;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,YAAY,QAAQ;AAAA,IACrB;AAAA,EACD;AAEA,MAAI,CAAC,YAAY;AAChB,WAAO,EAAE,WAAW,MAAM,OAAO,iBAAiB,OAAO,QAAQ;AAAA,EAClE;AAEA,QAAM,oBAAoB,MAAM,2BAA2B;AAAA,IAC1D,MAAM,CAAC,CAAC,cAAc;AAAA,IACtB,iBAAiB,YACf,MAAM,SAAS,YAAY,KAAM;AAAA,IACnC,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU,QAAQ;AAAA,EACnB,CAAC;AAED,UAAQ,gBAAgB,kBAAkB;AAE1C,MAAI,CAAC,QAAQ,aAAa;AACzB,WAAO,EAAE,WAAW,MAAM,OAAO,kBAAkB,OAAO,QAAQ;AAAA,EACnE;AAEA,QAAM,cAAc,MAAM,2BAA2B;AAAA,IACpD,MAAM,CAAC,CAAC,cAAc;AAAA,IACtB,iBAAiB,YACf,MAAM,SAAS,MAAM,KAAM,UAAU,UAAU,EAAE,WAAW,KAAK,GAAG;AAAA,IACtE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU,QAAQ;AAAA,EACnB,CAAC;AAED,UAAQ,UAAU,YAAY;AAE9B,MAAI,CAAC,QAAQ,OAAO;AACnB,WAAO,EAAE,WAAW,MAAM,OAAO,YAAY,OAAO,QAAQ;AAAA,EAC7D;AAEA,MAAI;AAEJ,MAAI,QAAQ,OAAO;AAClB,QAAI,QAAQ,YAAY;AACvB,cAAQ,EAAE,MAAM,QAAQ,OAAO,OAAO,QAAQ,WAAW;AAAA,IAC1D,OAAO;AACN,YAAMA,eAAc,MAAM,2BAA2B;AAAA,QACpD,MAAM,CAAC,CAAC,cAAc;AAAA,QACtB,SAAS;AAAA,QACT,MAAM;AAAA,MACP,CAAC;AAED,UAAI,CAACA,aAAY,OAAO;AACvB,eAAO,EAAE,WAAW,MAAM,OAAOA,aAAY,OAAO,QAAQ;AAAA,MAC7D;AAEA,cAAQ,EAAE,MAAM,QAAQ,OAAO,OAAOA,aAAY,MAAM;AAAA,IACzD;AAAA,EACD;AAEA,MAAI;AAEJ,MAAI,QAAQ,MAAM;AACjB,QAAI,QAAQ,SAAS;AACpB,aAAO,EAAE,KAAK,QAAQ,SAAS,KAAK,QAAQ,KAAK;AAAA,IAClD,OAAO;AACN,YAAM,gBAAgB,MAAM,2BAA2B;AAAA,QACtD,MAAM,CAAC,CAAC,cAAc;AAAA,QACtB,SAAS;AAAA,QACT,MAAM;AAAA,MACP,CAAC;AAED,UAAI,CAAC,cAAc,OAAO;AACzB,eAAO,EAAE,WAAW,MAAM,OAAO,cAAc,OAAO,QAAQ;AAAA,MAC/D;AAEA,aAAO,EAAE,KAAK,cAAc,OAAO,KAAK,QAAQ,KAAK;AAAA,IACtD;AAAA,EACD;AAEA,MAAI,QAAQ,QAAQ,SAAU,MAAM,SAAS,MAAM;AAEnD,MAAI,CAAC,OAAO;AACX,UAAM,cAAc,MAAM,2BAA2B;AAAA,MACpD,MAAM,CAAC,CAAC,cAAc;AAAA,MACtB,SAAS;AAAA,MACT,MAAM;AAAA,IACP,CAAC;AAED,QAAI,CAAC,YAAY,OAAO;AACvB,aAAO,EAAE,WAAW,MAAM,OAAO,YAAY,OAAO,QAAQ;AAAA,IAC7D;AAEA,YAAQ,EAAE,QAAQ,YAAY,OAAO,KAAK,YAAY,MAAM;AAAA,EAC7D;AAEA,QAAM,mBAAmB,MAAM,2BAA2B;AAAA,IACzD,GAAG;AAAA,IACH,QAAQ,QAAQ,UAAU;AAAA,IAC1B,QACC,QAAQ,UAAW,MAAM,SAAS,OAAO,KAAO,MAAM,SAAS,MAAM;AAAA,IACtE,KAAK,QAAQ,OAAQ,MAAM,SAAS,IAAI;AAAA,IACxC,aAAa,QAAQ;AAAA,IACrB,WACC,QAAQ,aAAa,gBAAgB,aAAa,QAAQ;AAAA,IAC3D;AAAA,IACA,SAAS,QAAQ,WAAY,MAAM,SAAS,QAAQ;AAAA,IACpD,OAAO,SAAU,MAAM,SAAS,MAAM;AAAA,IACtC,MAAM,QAAS,MAAM,SAAS,KAAK;AAAA,IACnC;AAAA,IACA,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,OAAO,QAAQ;AAAA,EAChB,CAAC;AAED,MAAI,CAAC,kBAAkB;AACtB,WAAO;AAAA,MACN,WAAW;AAAA,MACX;AAAA,IACD;AAAA,EACD;AAEA,MAAI,QAAQ,MAAM;AACjB,uBAAmB,gBAAgB;AAAA,EACpC;AAEA,SAAO;AAAA,IACN,WAAW;AAAA,IACX;AAAA,IACA,SAAS;AAAA,EACV;AACD;","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\";\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\"] ?? 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\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":[]}
@@ -3,7 +3,7 @@ import { getGitHubUserAsAllContributor } from "../shared/getGitHubUserAsAllContr
3
3
  async function addToolAllContributors(octokit, options) {
4
4
  const login = await getGitHubUserAsAllContributor(octokit, options);
5
5
  if (login !== "JoshuaKGoldberg") {
6
- await $`npx -y all-contributors-cli add JoshuaKGoldberg tool`;
6
+ await $`pnpx all-contributors-cli add JoshuaKGoldberg tool`;
7
7
  }
8
8
  }
9
9
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/steps/addToolAllContributors.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport { Octokit } from \"octokit\";\n\nimport { getGitHubUserAsAllContributor } from \"../shared/getGitHubUserAsAllContributor.js\";\nimport { Options } from \"../shared/types.js\";\n\nexport async function addToolAllContributors(\n\toctokit: Octokit | undefined,\n\toptions: Pick<Options, \"offline\" | \"owner\">,\n) {\n\tconst login = await getGitHubUserAsAllContributor(octokit, options);\n\n\tif (login !== \"JoshuaKGoldberg\") {\n\t\tawait $`npx -y all-contributors-cli add JoshuaKGoldberg tool`;\n\t}\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAGlB,SAAS,qCAAqC;AAG9C,eAAsB,uBACrB,SACA,SACC;AACD,QAAM,QAAQ,MAAM,8BAA8B,SAAS,OAAO;AAElE,MAAI,UAAU,mBAAmB;AAChC,UAAM;AAAA,EACP;AACD;","names":[]}
1
+ {"version":3,"sources":["../../src/steps/addToolAllContributors.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport { Octokit } from \"octokit\";\n\nimport { getGitHubUserAsAllContributor } from \"../shared/getGitHubUserAsAllContributor.js\";\nimport { Options } from \"../shared/types.js\";\n\nexport async function addToolAllContributors(\n\toctokit: Octokit | undefined,\n\toptions: Pick<Options, \"offline\" | \"owner\">,\n) {\n\tconst login = await getGitHubUserAsAllContributor(octokit, options);\n\n\tif (login !== \"JoshuaKGoldberg\") {\n\t\tawait $`pnpx all-contributors-cli add JoshuaKGoldberg tool`;\n\t}\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAGlB,SAAS,qCAAqC;AAG9C,eAAsB,uBACrB,SACA,SACC;AACD,QAAM,QAAQ,MAAM,8BAA8B,SAAS,OAAO;AAElE,MAAI,UAAU,mBAAmB;AAChC,UAAM;AAAA,EACP;AACD;","names":[]}