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,37 +1,59 @@
1
1
  async function initializeBranchProtectionSettings(octokit, options) {
2
2
  try {
3
- await octokit.request(
4
- `PUT /repos/${options.owner}/${options.repository}/branches/main/protection`,
5
- {
6
- allow_deletions: false,
7
- allow_force_pushes: true,
8
- allow_fork_pushes: false,
9
- allow_fork_syncing: true,
10
- block_creations: false,
11
- branch: "main",
12
- enforce_admins: false,
13
- owner: options.owner,
14
- repo: options.repository,
15
- required_conversation_resolution: true,
16
- required_linear_history: false,
17
- required_pull_request_reviews: null,
18
- required_status_checks: {
19
- checks: [
20
- { context: "Build" },
21
- ...options.excludeCompliance ? [] : [{ context: "Compliance" }],
22
- { context: "Lint" },
23
- ...options.excludeLintKnip ? [] : [{ context: "Lint Knip" }],
24
- ...options.excludeLintMd ? [] : [{ context: "Lint Markdown" }],
25
- ...options.excludeLintPackages ? [] : [{ context: "Lint Packages" }],
26
- ...options.excludeLintSpelling ? [] : [{ context: "Lint Spelling" }],
27
- { context: "Prettier" },
28
- ...options.excludeTests ? [] : [{ context: "Test" }]
29
- ],
30
- strict: false
3
+ await octokit.request("POST /repos/{owner}/{repo}/rulesets", {
4
+ bypass_actors: [
5
+ {
6
+ // This *seems* to be the Repository Admin role always?
7
+ // https://github.com/github/rest-api-description/issues/4406
8
+ actor_id: 5,
9
+ actor_type: "RepositoryRole",
10
+ bypass_mode: "always"
11
+ }
12
+ ],
13
+ conditions: {
14
+ ref_name: {
15
+ exclude: [],
16
+ include: ["refs/heads/main"]
17
+ }
18
+ },
19
+ enforcement: "active",
20
+ name: "Branch protection for main",
21
+ owner: options.owner,
22
+ repo: options.repository,
23
+ rules: [
24
+ { type: "deletion" },
25
+ {
26
+ parameters: {
27
+ // @ts-expect-error -- https://github.com/github/rest-api-description/issues/4405
28
+ allowed_merge_methods: ["squash"],
29
+ dismiss_stale_reviews_on_push: false,
30
+ require_code_owner_review: false,
31
+ require_last_push_approval: false,
32
+ required_approving_review_count: 0,
33
+ required_review_thread_resolution: false
34
+ },
35
+ type: "pull_request"
31
36
  },
32
- restrictions: null
33
- }
34
- );
37
+ {
38
+ parameters: {
39
+ required_status_checks: [
40
+ { context: "Build" },
41
+ ...options.excludeCompliance ? [] : [{ context: "Compliance" }],
42
+ { context: "Lint" },
43
+ ...options.excludeLintKnip ? [] : [{ context: "Lint Knip" }],
44
+ ...options.excludeLintMd ? [] : [{ context: "Lint Markdown" }],
45
+ ...options.excludeLintPackages ? [] : [{ context: "Lint Packages" }],
46
+ ...options.excludeLintSpelling ? [] : [{ context: "Lint Spelling" }],
47
+ { context: "Prettier" },
48
+ ...options.excludeTests ? [] : [{ context: "Test" }]
49
+ ],
50
+ strict_required_status_checks_policy: false
51
+ },
52
+ type: "required_status_checks"
53
+ }
54
+ ],
55
+ target: "branch"
56
+ });
35
57
  } catch (error) {
36
58
  if (error.status === 403) {
37
59
  return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/steps/initializeGitHubRepository/initializeBranchProtectionSettings.ts"],"sourcesContent":["import { RequestError } from \"@octokit/request-error\";\nimport { Octokit } from \"octokit\";\n\nimport { Options } from \"../../shared/types.js\";\n\nexport async function initializeBranchProtectionSettings(\n\toctokit: Octokit,\n\toptions: Options,\n) {\n\ttry {\n\t\tawait octokit.request(\n\t\t\t`PUT /repos/${options.owner}/${options.repository}/branches/main/protection`,\n\t\t\t{\n\t\t\t\tallow_deletions: false,\n\t\t\t\tallow_force_pushes: true,\n\t\t\t\tallow_fork_pushes: false,\n\t\t\t\tallow_fork_syncing: true,\n\t\t\t\tblock_creations: false,\n\t\t\t\tbranch: \"main\",\n\t\t\t\tenforce_admins: false,\n\t\t\t\towner: options.owner,\n\t\t\t\trepo: options.repository,\n\t\t\t\trequired_conversation_resolution: true,\n\t\t\t\trequired_linear_history: false,\n\t\t\t\trequired_pull_request_reviews: null,\n\t\t\t\trequired_status_checks: {\n\t\t\t\t\tchecks: [\n\t\t\t\t\t\t{ context: \"Build\" },\n\t\t\t\t\t\t...(options.excludeCompliance ? [] : [{ context: \"Compliance\" }]),\n\t\t\t\t\t\t{ context: \"Lint\" },\n\t\t\t\t\t\t...(options.excludeLintKnip ? [] : [{ context: \"Lint Knip\" }]),\n\t\t\t\t\t\t...(options.excludeLintMd ? [] : [{ context: \"Lint Markdown\" }]),\n\t\t\t\t\t\t...(options.excludeLintPackages\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: [{ context: \"Lint Packages\" }]),\n\t\t\t\t\t\t...(options.excludeLintSpelling\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: [{ context: \"Lint Spelling\" }]),\n\t\t\t\t\t\t{ context: \"Prettier\" },\n\t\t\t\t\t\t...(options.excludeTests ? [] : [{ context: \"Test\" }]),\n\t\t\t\t\t],\n\t\t\t\t\tstrict: false,\n\t\t\t\t},\n\t\t\t\trestrictions: null,\n\t\t\t},\n\t\t);\n\t} catch (error) {\n\t\tif ((error as RequestError).status === 403) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n"],"mappings":"AAKA,eAAsB,mCACrB,SACA,SACC;AACD,MAAI;AACH,UAAM,QAAQ;AAAA,MACb,cAAc,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,MACjD;AAAA,QACC,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,QACpB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,iBAAiB;AAAA,QACjB,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf,MAAM,QAAQ;AAAA,QACd,kCAAkC;AAAA,QAClC,yBAAyB;AAAA,QACzB,+BAA+B;AAAA,QAC/B,wBAAwB;AAAA,UACvB,QAAQ;AAAA,YACP,EAAE,SAAS,QAAQ;AAAA,YACnB,GAAI,QAAQ,oBAAoB,CAAC,IAAI,CAAC,EAAE,SAAS,aAAa,CAAC;AAAA,YAC/D,EAAE,SAAS,OAAO;AAAA,YAClB,GAAI,QAAQ,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,YAAY,CAAC;AAAA,YAC5D,GAAI,QAAQ,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,YAC9D,GAAI,QAAQ,sBACT,CAAC,IACD,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,YAChC,GAAI,QAAQ,sBACT,CAAC,IACD,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,YAChC,EAAE,SAAS,WAAW;AAAA,YACtB,GAAI,QAAQ,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,CAAC;AAAA,UACrD;AAAA,UACA,QAAQ;AAAA,QACT;AAAA,QACA,cAAc;AAAA,MACf;AAAA,IACD;AAAA,EACD,SAAS,OAAO;AACf,QAAK,MAAuB,WAAW,KAAK;AAC3C,aAAO;AAAA,IACR;AAEA,UAAM;AAAA,EACP;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/steps/initializeGitHubRepository/initializeBranchProtectionSettings.ts"],"sourcesContent":["import { RequestError } from \"@octokit/request-error\";\nimport { Octokit } from \"octokit\";\n\nimport { Options } from \"../../shared/types.js\";\n\nexport async function initializeBranchProtectionSettings(\n\toctokit: Octokit,\n\toptions: Options,\n) {\n\ttry {\n\t\tawait octokit.request(\"POST /repos/{owner}/{repo}/rulesets\", {\n\t\t\tbypass_actors: [\n\t\t\t\t{\n\t\t\t\t\t// This *seems* to be the Repository Admin role always?\n\t\t\t\t\t// https://github.com/github/rest-api-description/issues/4406\n\t\t\t\t\tactor_id: 5,\n\t\t\t\t\tactor_type: \"RepositoryRole\",\n\t\t\t\t\tbypass_mode: \"always\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tconditions: {\n\t\t\t\tref_name: {\n\t\t\t\t\texclude: [],\n\t\t\t\t\tinclude: [\"refs/heads/main\"],\n\t\t\t\t},\n\t\t\t},\n\t\t\tenforcement: \"active\",\n\t\t\tname: \"Branch protection for main\",\n\t\t\towner: options.owner,\n\t\t\trepo: options.repository,\n\t\t\trules: [\n\t\t\t\t{ type: \"deletion\" },\n\t\t\t\t{\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\t// @ts-expect-error -- https://github.com/github/rest-api-description/issues/4405\n\t\t\t\t\t\tallowed_merge_methods: [\"squash\"],\n\t\t\t\t\t\tdismiss_stale_reviews_on_push: false,\n\t\t\t\t\t\trequire_code_owner_review: false,\n\t\t\t\t\t\trequire_last_push_approval: false,\n\t\t\t\t\t\trequired_approving_review_count: 0,\n\t\t\t\t\t\trequired_review_thread_resolution: false,\n\t\t\t\t\t},\n\t\t\t\t\ttype: \"pull_request\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\trequired_status_checks: [\n\t\t\t\t\t\t\t{ context: \"Build\" },\n\t\t\t\t\t\t\t...(options.excludeCompliance ? [] : [{ context: \"Compliance\" }]),\n\t\t\t\t\t\t\t{ context: \"Lint\" },\n\t\t\t\t\t\t\t...(options.excludeLintKnip ? [] : [{ context: \"Lint Knip\" }]),\n\t\t\t\t\t\t\t...(options.excludeLintMd ? [] : [{ context: \"Lint Markdown\" }]),\n\t\t\t\t\t\t\t...(options.excludeLintPackages\n\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t: [{ context: \"Lint Packages\" }]),\n\t\t\t\t\t\t\t...(options.excludeLintSpelling\n\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t: [{ context: \"Lint Spelling\" }]),\n\t\t\t\t\t\t\t{ context: \"Prettier\" },\n\t\t\t\t\t\t\t...(options.excludeTests ? [] : [{ context: \"Test\" }]),\n\t\t\t\t\t\t],\n\t\t\t\t\t\tstrict_required_status_checks_policy: false,\n\t\t\t\t\t},\n\t\t\t\t\ttype: \"required_status_checks\",\n\t\t\t\t},\n\t\t\t],\n\t\t\ttarget: \"branch\",\n\t\t});\n\t} catch (error) {\n\t\tif ((error as RequestError).status === 403) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n"],"mappings":"AAKA,eAAsB,mCACrB,SACA,SACC;AACD,MAAI;AACH,UAAM,QAAQ,QAAQ,uCAAuC;AAAA,MAC5D,eAAe;AAAA,QACd;AAAA;AAAA;AAAA,UAGC,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,aAAa;AAAA,QACd;AAAA,MACD;AAAA,MACA,YAAY;AAAA,QACX,UAAU;AAAA,UACT,SAAS,CAAC;AAAA,UACV,SAAS,CAAC,iBAAiB;AAAA,QAC5B;AAAA,MACD;AAAA,MACA,aAAa;AAAA,MACb,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,OAAO;AAAA,QACN,EAAE,MAAM,WAAW;AAAA,QACnB;AAAA,UACC,YAAY;AAAA;AAAA,YAEX,uBAAuB,CAAC,QAAQ;AAAA,YAChC,+BAA+B;AAAA,YAC/B,2BAA2B;AAAA,YAC3B,4BAA4B;AAAA,YAC5B,iCAAiC;AAAA,YACjC,mCAAmC;AAAA,UACpC;AAAA,UACA,MAAM;AAAA,QACP;AAAA,QACA;AAAA,UACC,YAAY;AAAA,YACX,wBAAwB;AAAA,cACvB,EAAE,SAAS,QAAQ;AAAA,cACnB,GAAI,QAAQ,oBAAoB,CAAC,IAAI,CAAC,EAAE,SAAS,aAAa,CAAC;AAAA,cAC/D,EAAE,SAAS,OAAO;AAAA,cAClB,GAAI,QAAQ,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,YAAY,CAAC;AAAA,cAC5D,GAAI,QAAQ,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,cAC9D,GAAI,QAAQ,sBACT,CAAC,IACD,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,cAChC,GAAI,QAAQ,sBACT,CAAC,IACD,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,cAChC,EAAE,SAAS,WAAW;AAAA,cACtB,GAAI,QAAQ,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,CAAC;AAAA,YACrD;AAAA,YACA,sCAAsC;AAAA,UACvC;AAAA,UACA,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MACA,QAAQ;AAAA,IACT,CAAC;AAAA,EACF,SAAS,OAAO;AACf,QAAK,MAAuB,WAAW,KAAK;AAC3C,aAAO;AAAA,IACR;AAEA,UAAM;AAAA,EACP;AACD;","names":[]}
@@ -9,20 +9,24 @@ async function uninstallPackages(offline) {
9
9
  "all-contributors-cli",
10
10
  "chalk",
11
11
  "create",
12
+ "cspell-populate-words",
12
13
  "execa",
13
14
  "git-remote-origin-url",
14
15
  "git-url-parse",
15
16
  "input-from-file",
16
17
  "input-from-file-json",
18
+ "input-from-script",
17
19
  "js-yaml",
18
20
  "lazy-value",
19
21
  "npm-user",
22
+ "object-strings-deep",
20
23
  "octokit",
21
24
  "octokit-from-auth",
22
25
  "parse-author",
23
26
  "parse-package-name",
24
27
  "populate-all-contributors-for-repository",
25
28
  "prettier",
29
+ "remove-undefined-objects",
26
30
  "replace-in-file",
27
31
  "rimraf",
28
32
  "set-github-repository-labels",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/steps/uninstallPackages.ts"],"sourcesContent":["import { $ } from \"execa\";\n\nimport { readPackageData, removeDependencies } from \"../shared/packages.js\";\n\nexport async function uninstallPackages(offline: boolean | undefined) {\n\tconst packageData = await readPackageData();\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@clack/prompts\",\n\t\t\t\"@prettier/sync\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"chalk\",\n\t\t\t\"create\",\n\t\t\t\"execa\",\n\t\t\t\"git-remote-origin-url\",\n\t\t\t\"git-url-parse\",\n\t\t\t\"input-from-file\",\n\t\t\t\"input-from-file-json\",\n\t\t\t\"js-yaml\",\n\t\t\t\"lazy-value\",\n\t\t\t\"npm-user\",\n\t\t\t\"octokit\",\n\t\t\t\"octokit-from-auth\",\n\t\t\t\"parse-author\",\n\t\t\t\"parse-package-name\",\n\t\t\t\"populate-all-contributors-for-repository\",\n\t\t\t\"prettier\",\n\t\t\t\"replace-in-file\",\n\t\t\t\"rimraf\",\n\t\t\t\"set-github-repository-labels\",\n\t\t\t\"sort-package-json\",\n\t\t\t\"title-case\",\n\t\t\t\"zod\",\n\t\t\t\"zod-validation-error\",\n\t\t],\n\t\tpackageData.dependencies,\n\t);\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@octokit/request-error\",\n\t\t\t\"@types/git-url-parse\",\n\t\t\t\"@types/js-yaml\",\n\t\t\t\"@types/parse-author\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"c8\",\n\t\t\t\"create-testers\",\n\t\t\t\"eslint-config-prettier\",\n\t\t\t\"globby\",\n\t\t\t\"tsx\",\n\t\t],\n\t\tpackageData.devDependencies,\n\t\t\"-D\",\n\t);\n\n\tawait $`pnpm add prettier -D${offline ? \" --offline\" : \"\"}`;\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,0BAA0B;AAEpD,eAAsB,kBAAkB,SAA8B;AACrE,QAAM,cAAc,MAAM,gBAAgB;AAE1C,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,EACb;AAEA,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,EACD;AAEA,QAAM,wBAAwB,UAAU,eAAe,EAAE;AAC1D;","names":[]}
1
+ {"version":3,"sources":["../../src/steps/uninstallPackages.ts"],"sourcesContent":["import { $ } from \"execa\";\n\nimport { readPackageData, removeDependencies } from \"../shared/packages.js\";\n\nexport async function uninstallPackages(offline: boolean | undefined) {\n\tconst packageData = await readPackageData();\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@clack/prompts\",\n\t\t\t\"@prettier/sync\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"chalk\",\n\t\t\t\"create\",\n\t\t\t\"cspell-populate-words\",\n\t\t\t\"execa\",\n\t\t\t\"git-remote-origin-url\",\n\t\t\t\"git-url-parse\",\n\t\t\t\"input-from-file\",\n\t\t\t\"input-from-file-json\",\n\t\t\t\"input-from-script\",\n\t\t\t\"js-yaml\",\n\t\t\t\"lazy-value\",\n\t\t\t\"npm-user\",\n\t\t\t\"object-strings-deep\",\n\t\t\t\"octokit\",\n\t\t\t\"octokit-from-auth\",\n\t\t\t\"parse-author\",\n\t\t\t\"parse-package-name\",\n\t\t\t\"populate-all-contributors-for-repository\",\n\t\t\t\"prettier\",\n\t\t\t\"remove-undefined-objects\",\n\t\t\t\"replace-in-file\",\n\t\t\t\"rimraf\",\n\t\t\t\"set-github-repository-labels\",\n\t\t\t\"sort-package-json\",\n\t\t\t\"title-case\",\n\t\t\t\"zod\",\n\t\t\t\"zod-validation-error\",\n\t\t],\n\t\tpackageData.dependencies,\n\t);\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@octokit/request-error\",\n\t\t\t\"@types/git-url-parse\",\n\t\t\t\"@types/js-yaml\",\n\t\t\t\"@types/parse-author\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"c8\",\n\t\t\t\"create-testers\",\n\t\t\t\"eslint-config-prettier\",\n\t\t\t\"globby\",\n\t\t\t\"tsx\",\n\t\t],\n\t\tpackageData.devDependencies,\n\t\t\"-D\",\n\t);\n\n\tawait $`pnpm add prettier -D${offline ? \" --offline\" : \"\"}`;\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,0BAA0B;AAEpD,eAAsB,kBAAkB,SAA8B;AACrE,QAAM,cAAc,MAAM,gBAAgB;AAE1C,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,EACb;AAEA,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,EACD;AAEA,QAAM,wBAAwB,UAAU,eAAe,EAAE;AAC1D;","names":[]}
@@ -16,7 +16,7 @@ async function updateAllContributorsTable({
16
16
  projectOwner: owner
17
17
  })
18
18
  );
19
- await $`npx -y all-contributors-cli generate`;
19
+ await $`pnpx all-contributors-cli generate`;
20
20
  }
21
21
  export {
22
22
  updateAllContributorsTable
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/steps/updateAllContributorsTable.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport * as fs from \"node:fs/promises\";\n\nimport { readFileSafeAsJson } from \"../shared/readFileSafeAsJson.js\";\nimport { AllContributorsData, Options } from \"../shared/types.js\";\nimport { formatJson } from \"./writing/creation/formatters/formatJson.js\";\n\nexport async function updateAllContributorsTable({\n\towner,\n\trepository,\n}: Pick<Options, \"owner\" | \"repository\">) {\n\tawait fs.writeFile(\n\t\t\".all-contributorsrc\",\n\t\tawait formatJson({\n\t\t\t...((await readFileSafeAsJson(\n\t\t\t\t\".all-contributorsrc\",\n\t\t\t)) as AllContributorsData),\n\t\t\tprojectName: repository,\n\t\t\tprojectOwner: owner,\n\t\t}),\n\t);\n\n\tawait $`npx -y all-contributors-cli generate`;\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,YAAY,QAAQ;AAEpB,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,eAAsB,2BAA2B;AAAA,EAChD;AAAA,EACA;AACD,GAA0C;AACzC,QAAM,GAAG;AAAA,IACR;AAAA,IACA,MAAM,WAAW;AAAA,MAChB,GAAK,MAAM;AAAA,QACV;AAAA,MACD;AAAA,MACA,aAAa;AAAA,MACb,cAAc;AAAA,IACf,CAAC;AAAA,EACF;AAEA,QAAM;AACP;","names":[]}
1
+ {"version":3,"sources":["../../src/steps/updateAllContributorsTable.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport * as fs from \"node:fs/promises\";\n\nimport { readFileSafeAsJson } from \"../shared/readFileSafeAsJson.js\";\nimport { AllContributorsData, Options } from \"../shared/types.js\";\nimport { formatJson } from \"./writing/creation/formatters/formatJson.js\";\n\nexport async function updateAllContributorsTable({\n\towner,\n\trepository,\n}: Pick<Options, \"owner\" | \"repository\">) {\n\tawait fs.writeFile(\n\t\t\".all-contributorsrc\",\n\t\tawait formatJson({\n\t\t\t...((await readFileSafeAsJson(\n\t\t\t\t\".all-contributorsrc\",\n\t\t\t)) as AllContributorsData),\n\t\t\tprojectName: repository,\n\t\t\tprojectOwner: owner,\n\t\t}),\n\t);\n\n\tawait $`pnpx all-contributors-cli generate`;\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,YAAY,QAAQ;AAEpB,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,eAAsB,2BAA2B;AAAA,EAChD;AAAA,EACA;AACD,GAA0C;AACzC,QAAM,GAAG;AAAA,IACR;AAAA,IACA,MAAM,WAAW;AAAA,MAChB,GAAK,MAAM;AAAA,QACV;AAAA,MACD;AAAA,MACA,aAAa;AAAA,MACb,cAAc;AAAA,IACf,CAAC;AAAA,EACF;AAEA,QAAM;AACP;","names":[]}
@@ -0,0 +1,3 @@
1
+ declare function createKnipConfig(): Promise<string>;
2
+
3
+ export { createKnipConfig };
@@ -0,0 +1,20 @@
1
+ import { readFileSafeAsJson } from "../../../shared/readFileSafeAsJson.js";
2
+ import { formatJson } from "./formatters/formatJson.js";
3
+ async function createKnipConfig() {
4
+ const existingPackageJson = await readFileSafeAsJson(
5
+ "./package.json"
6
+ );
7
+ return await formatJson({
8
+ $schema: `https://unpkg.com/knip@${existingPackageJson?.devDependencies?.knip ?? "latest"}/schema.json`,
9
+ entry: ["src/index.ts!"],
10
+ ignoreExportsUsedInFile: {
11
+ interface: true,
12
+ type: true
13
+ },
14
+ project: ["src/**/*.ts!"]
15
+ });
16
+ }
17
+ export {
18
+ createKnipConfig
19
+ };
20
+ //# sourceMappingURL=createKnipConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/steps/writing/creation/createKnipConfig.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { PartialPackageData } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nexport async function createKnipConfig() {\n\tconst existingPackageJson = (await readFileSafeAsJson(\n\t\t\"./package.json\",\n\t)) as null | PartialPackageData;\n\n\treturn await formatJson({\n\t\t$schema: `https://unpkg.com/knip@${existingPackageJson?.devDependencies?.knip ?? \"latest\"}/schema.json`,\n\t\tentry: [\"src/index.ts!\"],\n\t\tignoreExportsUsedInFile: {\n\t\t\tinterface: true,\n\t\t\ttype: true,\n\t\t},\n\t\tproject: [\"src/**/*.ts!\"],\n\t});\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,eAAsB,mBAAmB;AACxC,QAAM,sBAAuB,MAAM;AAAA,IAClC;AAAA,EACD;AAEA,SAAO,MAAM,WAAW;AAAA,IACvB,SAAS,0BAA0B,qBAAqB,iBAAiB,QAAQ,QAAQ;AAAA,IACzF,OAAO,CAAC,eAAe;AAAA,IACvB,yBAAyB;AAAA,MACxB,WAAW;AAAA,MACX,MAAM;AAAA,IACP;AAAA,IACA,SAAS,CAAC,cAAc;AAAA,EACzB,CAAC;AACF;","names":[]}
@@ -1,8 +1,9 @@
1
+ import { SystemFetchers } from 'create';
1
2
  import { Options } from '../../../shared/types.js';
2
3
  import { Structure } from '../types.js';
3
4
  import 'zod';
4
5
  import '../../../shared/codes.js';
5
6
 
6
- declare function createStructure(options: Options, useNextEngine: boolean): Promise<Structure>;
7
+ declare function createStructure(providedOptions: Options, useNextEngine: boolean, fetchers?: SystemFetchers): Promise<Structure>;
7
8
 
8
9
  export { createStructure };
@@ -1,4 +1,7 @@
1
- import { producePreset } from "create";
1
+ import {
2
+ produceBase,
3
+ producePreset
4
+ } from "create";
2
5
  import prettier from "prettier";
3
6
  import { presetCommon } from "../../../next/presetCommon.js";
4
7
  import { presetEverything } from "../../../next/presetEverything.js";
@@ -13,21 +16,31 @@ const presets = {
13
16
  everything: presetEverything,
14
17
  minimal: presetMinimal
15
18
  };
16
- async function createStructure(options, useNextEngine) {
17
- const preset = useNextEngine && options.base && options.base !== "prompt" && presets[options.base];
19
+ async function createStructure(providedOptions, useNextEngine, fetchers) {
20
+ const preset = useNextEngine && providedOptions.base && providedOptions.base !== "prompt" && presets[providedOptions.base];
18
21
  if (preset) {
19
- const { creation } = await producePreset(preset, {
22
+ const options = {
23
+ ...await produceBase(preset.base, {
24
+ fetchers,
25
+ options: providedOptions
26
+ }),
27
+ ...providedOptions
28
+ };
29
+ const creation = await producePreset(preset, {
30
+ fetchers,
20
31
  mode: "initialize",
21
32
  options
22
33
  });
23
34
  return await recursivelyFormat(creation.files);
24
35
  }
25
36
  return {
26
- ".github": await createDotGitHub(options),
37
+ ".github": await createDotGitHub(providedOptions),
27
38
  ".husky": createDotHusky(),
28
- ".vscode": await createDotVSCode(options),
29
- ...options.mode !== "migrate" && { src: await createSrc(options) },
30
- ...await createRootFiles(options)
39
+ ".vscode": await createDotVSCode(providedOptions),
40
+ ...providedOptions.mode !== "migrate" && {
41
+ src: await createSrc(providedOptions)
42
+ },
43
+ ...await createRootFiles(providedOptions)
31
44
  };
32
45
  }
33
46
  async function recursivelyFormat(files) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/steps/writing/creation/index.ts"],"sourcesContent":["import { CreatedFiles, producePreset } from \"create\";\nimport prettier from \"prettier\";\n\nimport { presetCommon } from \"../../../next/presetCommon.js\";\nimport { presetEverything } from \"../../../next/presetEverything.js\";\nimport { presetMinimal } from \"../../../next/presetMinimal.js\";\nimport { Options } from \"../../../shared/types.js\";\nimport { Structure } from \"../types.js\";\nimport { createDotGitHub } from \"./dotGitHub/index.js\";\nimport { createDotHusky } from \"./dotHusky.js\";\nimport { createDotVSCode } from \"./dotVSCode.js\";\nimport { createRootFiles } from \"./rootFiles.js\";\nimport { createSrc } from \"./src.js\";\n\nconst presets = {\n\tcommon: presetCommon,\n\teverything: presetEverything,\n\tminimal: presetMinimal,\n};\n\nexport async function createStructure(\n\toptions: Options,\n\tuseNextEngine: boolean,\n): Promise<Structure> {\n\tconst preset =\n\t\tuseNextEngine &&\n\t\toptions.base &&\n\t\toptions.base !== \"prompt\" &&\n\t\tpresets[options.base];\n\n\tif (preset) {\n\t\tconst { creation } = await producePreset(preset, {\n\t\t\tmode: \"initialize\",\n\t\t\toptions,\n\t\t});\n\n\t\treturn await recursivelyFormat(creation.files);\n\t}\n\n\treturn {\n\t\t\".github\": await createDotGitHub(options),\n\t\t\".husky\": createDotHusky(),\n\t\t\".vscode\": await createDotVSCode(options),\n\t\t...(options.mode !== \"migrate\" && { src: await createSrc(options) }),\n\t\t...(await createRootFiles(options)),\n\t};\n}\n\nasync function recursivelyFormat(files: CreatedFiles): Promise<Structure> {\n\tconst result: Structure = {};\n\n\tfor (const [key, value] of Object.entries(files)) {\n\t\tif (Array.isArray(value)) {\n\t\t\tresult[key] = await formatCreatedFile(key, value[0]);\n\t\t} else if (typeof value === \"string\") {\n\t\t\tresult[key] = await formatCreatedFile(key, value);\n\t\t} else if (typeof value === \"object\") {\n\t\t\tresult[key] = await recursivelyFormat(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nconst asYaml = new Set([\n\t\".gitignore\",\n\t\".markdownlintignore\",\n\t\".nvmrc\",\n\t\".prettierignore\",\n\t\"pre-commit\",\n]);\n\nasync function formatCreatedFile(filepath: string, entry: string) {\n\t// For now, explicit yml files internally already have formatting applied\n\tif (filepath.endsWith(\".yml\")) {\n\t\treturn entry;\n\t}\n\n\treturn await prettier.format(entry, {\n\t\tuseTabs: true,\n\t\t...(asYaml.has(filepath) ? { parser: \"yaml\" } : { filepath }),\n\t});\n}\n"],"mappings":"AAAA,SAAuB,qBAAqB;AAC5C,OAAO,cAAc;AAErB,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAG9B,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAE1B,MAAM,UAAU;AAAA,EACf,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AACV;AAEA,eAAsB,gBACrB,SACA,eACqB;AACrB,QAAM,SACL,iBACA,QAAQ,QACR,QAAQ,SAAS,YACjB,QAAQ,QAAQ,IAAI;AAErB,MAAI,QAAQ;AACX,UAAM,EAAE,SAAS,IAAI,MAAM,cAAc,QAAQ;AAAA,MAChD,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAED,WAAO,MAAM,kBAAkB,SAAS,KAAK;AAAA,EAC9C;AAEA,SAAO;AAAA,IACN,WAAW,MAAM,gBAAgB,OAAO;AAAA,IACxC,UAAU,eAAe;AAAA,IACzB,WAAW,MAAM,gBAAgB,OAAO;AAAA,IACxC,GAAI,QAAQ,SAAS,aAAa,EAAE,KAAK,MAAM,UAAU,OAAO,EAAE;AAAA,IAClE,GAAI,MAAM,gBAAgB,OAAO;AAAA,EAClC;AACD;AAEA,eAAe,kBAAkB,OAAyC;AACzE,QAAM,SAAoB,CAAC;AAE3B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACjD,QAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK,MAAM,CAAC,CAAC;AAAA,IACpD,WAAW,OAAO,UAAU,UAAU;AACrC,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK,KAAK;AAAA,IACjD,WAAW,OAAO,UAAU,UAAU;AACrC,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK;AAAA,IAC5C;AAAA,EACD;AAEA,SAAO;AACR;AAEA,MAAM,SAAS,oBAAI,IAAI;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,eAAe,kBAAkB,UAAkB,OAAe;AAEjE,MAAI,SAAS,SAAS,MAAM,GAAG;AAC9B,WAAO;AAAA,EACR;AAEA,SAAO,MAAM,SAAS,OAAO,OAAO;AAAA,IACnC,SAAS;AAAA,IACT,GAAI,OAAO,IAAI,QAAQ,IAAI,EAAE,QAAQ,OAAO,IAAI,EAAE,SAAS;AAAA,EAC5D,CAAC;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/steps/writing/creation/index.ts"],"sourcesContent":["import {\n\tCreatedFiles,\n\tproduceBase,\n\tproducePreset,\n\tSystemFetchers,\n} from \"create\";\nimport prettier from \"prettier\";\n\nimport { presetCommon } from \"../../../next/presetCommon.js\";\nimport { presetEverything } from \"../../../next/presetEverything.js\";\nimport { presetMinimal } from \"../../../next/presetMinimal.js\";\nimport { Options } from \"../../../shared/types.js\";\nimport { Structure } from \"../types.js\";\nimport { createDotGitHub } from \"./dotGitHub/index.js\";\nimport { createDotHusky } from \"./dotHusky.js\";\nimport { createDotVSCode } from \"./dotVSCode.js\";\nimport { createRootFiles } from \"./rootFiles.js\";\nimport { createSrc } from \"./src.js\";\n\nconst presets = {\n\tcommon: presetCommon,\n\teverything: presetEverything,\n\tminimal: presetMinimal,\n};\n\nexport async function createStructure(\n\tprovidedOptions: Options,\n\tuseNextEngine: boolean,\n\tfetchers?: SystemFetchers,\n): Promise<Structure> {\n\tconst preset =\n\t\tuseNextEngine &&\n\t\tprovidedOptions.base &&\n\t\tprovidedOptions.base !== \"prompt\" &&\n\t\tpresets[providedOptions.base];\n\n\tif (preset) {\n\t\tconst options = {\n\t\t\t...(await produceBase(preset.base, {\n\t\t\t\tfetchers,\n\t\t\t\toptions: providedOptions,\n\t\t\t})),\n\t\t\t...providedOptions,\n\t\t};\n\t\tconst creation = await producePreset(preset, {\n\t\t\tfetchers,\n\t\t\tmode: \"initialize\",\n\t\t\toptions,\n\t\t});\n\n\t\treturn await recursivelyFormat(creation.files);\n\t}\n\n\treturn {\n\t\t\".github\": await createDotGitHub(providedOptions),\n\t\t\".husky\": createDotHusky(),\n\t\t\".vscode\": await createDotVSCode(providedOptions),\n\t\t...(providedOptions.mode !== \"migrate\" && {\n\t\t\tsrc: await createSrc(providedOptions),\n\t\t}),\n\t\t...(await createRootFiles(providedOptions)),\n\t};\n}\n\nasync function recursivelyFormat(files: CreatedFiles): Promise<Structure> {\n\tconst result: Structure = {};\n\n\tfor (const [key, value] of Object.entries(files)) {\n\t\tif (Array.isArray(value)) {\n\t\t\tresult[key] = await formatCreatedFile(key, value[0]);\n\t\t} else if (typeof value === \"string\") {\n\t\t\tresult[key] = await formatCreatedFile(key, value);\n\t\t} else if (typeof value === \"object\") {\n\t\t\tresult[key] = await recursivelyFormat(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nconst asYaml = new Set([\n\t\".gitignore\",\n\t\".markdownlintignore\",\n\t\".nvmrc\",\n\t\".prettierignore\",\n\t\"pre-commit\",\n]);\n\nasync function formatCreatedFile(filepath: string, entry: string) {\n\t// For now, explicit yml files internally already have formatting applied\n\tif (filepath.endsWith(\".yml\")) {\n\t\treturn entry;\n\t}\n\n\treturn await prettier.format(entry, {\n\t\tuseTabs: true,\n\t\t...(asYaml.has(filepath) ? { parser: \"yaml\" } : { filepath }),\n\t});\n}\n"],"mappings":"AAAA;AAAA,EAEC;AAAA,EACA;AAAA,OAEM;AACP,OAAO,cAAc;AAErB,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAG9B,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAE1B,MAAM,UAAU;AAAA,EACf,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AACV;AAEA,eAAsB,gBACrB,iBACA,eACA,UACqB;AACrB,QAAM,SACL,iBACA,gBAAgB,QAChB,gBAAgB,SAAS,YACzB,QAAQ,gBAAgB,IAAI;AAE7B,MAAI,QAAQ;AACX,UAAM,UAAU;AAAA,MACf,GAAI,MAAM,YAAY,OAAO,MAAM;AAAA,QAClC;AAAA,QACA,SAAS;AAAA,MACV,CAAC;AAAA,MACD,GAAG;AAAA,IACJ;AACA,UAAM,WAAW,MAAM,cAAc,QAAQ;AAAA,MAC5C;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAED,WAAO,MAAM,kBAAkB,SAAS,KAAK;AAAA,EAC9C;AAEA,SAAO;AAAA,IACN,WAAW,MAAM,gBAAgB,eAAe;AAAA,IAChD,UAAU,eAAe;AAAA,IACzB,WAAW,MAAM,gBAAgB,eAAe;AAAA,IAChD,GAAI,gBAAgB,SAAS,aAAa;AAAA,MACzC,KAAK,MAAM,UAAU,eAAe;AAAA,IACrC;AAAA,IACA,GAAI,MAAM,gBAAgB,eAAe;AAAA,EAC1C;AACD;AAEA,eAAe,kBAAkB,OAAyC;AACzE,QAAM,SAAoB,CAAC;AAE3B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACjD,QAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK,MAAM,CAAC,CAAC;AAAA,IACpD,WAAW,OAAO,UAAU,UAAU;AACrC,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK,KAAK;AAAA,IACjD,WAAW,OAAO,UAAU,UAAU;AACrC,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK;AAAA,IAC5C;AAAA,EACD;AAEA,SAAO;AACR;AAEA,MAAM,SAAS,oBAAI,IAAI;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,eAAe,kBAAkB,UAAkB,OAAe;AAEjE,MAAI,SAAS,SAAS,MAAM,GAAG;AAC9B,WAAO;AAAA,EACR;AAEA,SAAO,MAAM,SAAS,OAAO,OAAO;AAAA,IACnC,SAAS;AAAA,IACT,GAAI,OAAO,IAAI,QAAQ,IAAI,EAAE,QAAQ,OAAO,IAAI,EAAE,SAAS;AAAA,EAC5D,CAAC;AACF;","names":[]}
@@ -1,6 +1,7 @@
1
1
  import { createCSpellConfig } from "./createCSpellConfig.js";
2
2
  import { createDotGitignore } from "./createDotGitignore.js";
3
3
  import { createESLintConfig } from "./createESLintConfig.js";
4
+ import { createKnipConfig } from "./createKnipConfig.js";
4
5
  import { createTsupConfig } from "./createTsupConfig.js";
5
6
  import { formatIgnoreFile } from "./formatters/formatIgnoreFile.js";
6
7
  import { formatJson } from "./formatters/formatJson.js";
@@ -95,15 +96,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
95
96
  "cspell.json": await createCSpellConfig(options)
96
97
  },
97
98
  ...!options.excludeLintKnip && {
98
- "knip.json": await formatJson({
99
- $schema: "https://unpkg.com/knip@latest/schema.json",
100
- entry: ["src/index.ts!"],
101
- ignoreExportsUsedInFile: {
102
- interface: true,
103
- type: true
104
- },
105
- project: ["src/**/*.ts!"]
106
- })
99
+ "knip.json": await createKnipConfig()
107
100
  },
108
101
  "package.json": await writePackageJson(options),
109
102
  "tsconfig.json": await formatJson({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/steps/writing/creation/rootFiles.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { createCSpellConfig } from \"./createCSpellConfig.js\";\nimport { createDotGitignore } from \"./createDotGitignore.js\";\nimport { createESLintConfig } from \"./createESLintConfig.js\";\nimport { createTsupConfig } from \"./createTsupConfig.js\";\nimport { formatIgnoreFile } from \"./formatters/formatIgnoreFile.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\nimport { writeAllContributorsRC } from \"./writeAllContributorsRC.js\";\nimport { writePackageJson } from \"./writePackageJson.js\";\n\nexport async function createRootFiles(options: Options) {\n\treturn {\n\t\t\".all-contributorsrc\": await writeAllContributorsRC(options),\n\t\t\".gitignore\": createDotGitignore(options),\n\t\t\"eslint.config.js\": await createESLintConfig(options),\n\t\t...(!options.excludeLintMd && {\n\t\t\t\".markdownlint.json\": await formatJson({\n\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\"no-inline-html\": false,\n\t\t\t}),\n\t\t\t\".markdownlintignore\": formatIgnoreFile([\n\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\"lib/\",\n\t\t\t\t\"node_modules/\",\n\t\t\t]),\n\t\t}),\n\t\t\".nvmrc\": `20.18.0\\n`,\n\t\t\".prettierignore\": formatIgnoreFile([\n\t\t\t...(options.excludeAllContributors ? [] : [\"/.all-contributorsrc\"]),\n\t\t\t\"/.husky\",\n\t\t\t...(options.excludeTests ? [] : [\"/coverage\"]),\n\t\t\t\"/lib\",\n\t\t\t\"/pnpm-lock.yaml\",\n\t\t]),\n\t\t\".prettierrc.json\": await formatJson({\n\t\t\t$schema: \"http://json.schemastore.org/prettierrc\",\n\t\t\toverrides: [\n\t\t\t\t{\n\t\t\t\t\tfiles: \".nvmrc\",\n\t\t\t\t\toptions: { parser: \"yaml\" },\n\t\t\t\t},\n\t\t\t],\n\t\t\tplugins: [\n\t\t\t\t\"prettier-plugin-curly\",\n\t\t\t\t\"prettier-plugin-packagejson\",\n\t\t\t\t\"prettier-plugin-sh\",\n\t\t\t],\n\t\t\tuseTabs: true,\n\t\t}),\n\t\t...(!options.excludeReleases && {\n\t\t\t\".release-it.json\": await formatJson({\n\t\t\t\tgit: {\n\t\t\t\t\tcommitMessage: \"chore: release v${version}\",\n\t\t\t\t\trequireCommits: true,\n\t\t\t\t},\n\t\t\t\tgithub: {\n\t\t\t\t\tautoGenerate: true,\n\t\t\t\t\trelease: true,\n\t\t\t\t\treleaseName: \"v${version}\",\n\t\t\t\t},\n\t\t\t\tnpm: {\n\t\t\t\t\tpublishArgs: [`--access ${options.access}`, \"--provenance\"],\n\t\t\t\t},\n\t\t\t\tplugins: {\n\t\t\t\t\t\"@release-it/conventional-changelog\": {\n\t\t\t\t\t\tinfile: \"CHANGELOG.md\",\n\t\t\t\t\t\tpreset: \"angular\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t}),\n\t\t\"LICENSE.md\": `# MIT License\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n`,\n\t\t...(!options.excludeLintSpelling && {\n\t\t\t\"cspell.json\": await createCSpellConfig(options),\n\t\t}),\n\t\t...(!options.excludeLintKnip && {\n\t\t\t\"knip.json\": await formatJson({\n\t\t\t\t$schema: \"https://unpkg.com/knip@latest/schema.json\",\n\t\t\t\tentry: [\"src/index.ts!\"],\n\t\t\t\tignoreExportsUsedInFile: {\n\t\t\t\t\tinterface: true,\n\t\t\t\t\ttype: true,\n\t\t\t\t},\n\t\t\t\tproject: [\"src/**/*.ts!\"],\n\t\t\t}),\n\t\t}),\n\t\t\"package.json\": await writePackageJson(options),\n\t\t\"tsconfig.json\": await formatJson({\n\t\t\tcompilerOptions: {\n\t\t\t\tdeclaration: true,\n\t\t\t\tdeclarationMap: true,\n\t\t\t\tesModuleInterop: true,\n\t\t\t\tmodule: \"NodeNext\",\n\t\t\t\tmoduleResolution: \"NodeNext\",\n\t\t\t\tnoEmit: true,\n\t\t\t\tresolveJsonModule: true,\n\t\t\t\tskipLibCheck: true,\n\t\t\t\tsourceMap: true,\n\t\t\t\tstrict: true,\n\t\t\t\ttarget: \"ES2022\",\n\t\t\t},\n\t\t\tinclude: [\"src\"],\n\t\t}),\n\t\t\"tsup.config.ts\": await createTsupConfig(options),\n\t\t...(!options.excludeTests && {\n\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: [\"lib\"],\n\t\t\tinclude: [\"src\"],\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [\"lib\", \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n`,\n\t\t}),\n\t};\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/steps/writing/creation/rootFiles.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { createCSpellConfig } from \"./createCSpellConfig.js\";\nimport { createDotGitignore } from \"./createDotGitignore.js\";\nimport { createESLintConfig } from \"./createESLintConfig.js\";\nimport { createKnipConfig } from \"./createKnipConfig.js\";\nimport { createTsupConfig } from \"./createTsupConfig.js\";\nimport { formatIgnoreFile } from \"./formatters/formatIgnoreFile.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\nimport { writeAllContributorsRC } from \"./writeAllContributorsRC.js\";\nimport { writePackageJson } from \"./writePackageJson.js\";\n\nexport async function createRootFiles(options: Options) {\n\treturn {\n\t\t\".all-contributorsrc\": await writeAllContributorsRC(options),\n\t\t\".gitignore\": createDotGitignore(options),\n\t\t\"eslint.config.js\": await createESLintConfig(options),\n\t\t...(!options.excludeLintMd && {\n\t\t\t\".markdownlint.json\": await formatJson({\n\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\"no-inline-html\": false,\n\t\t\t}),\n\t\t\t\".markdownlintignore\": formatIgnoreFile([\n\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\"lib/\",\n\t\t\t\t\"node_modules/\",\n\t\t\t]),\n\t\t}),\n\t\t\".nvmrc\": `20.18.0\\n`,\n\t\t\".prettierignore\": formatIgnoreFile([\n\t\t\t...(options.excludeAllContributors ? [] : [\"/.all-contributorsrc\"]),\n\t\t\t\"/.husky\",\n\t\t\t...(options.excludeTests ? [] : [\"/coverage\"]),\n\t\t\t\"/lib\",\n\t\t\t\"/pnpm-lock.yaml\",\n\t\t]),\n\t\t\".prettierrc.json\": await formatJson({\n\t\t\t$schema: \"http://json.schemastore.org/prettierrc\",\n\t\t\toverrides: [\n\t\t\t\t{\n\t\t\t\t\tfiles: \".nvmrc\",\n\t\t\t\t\toptions: { parser: \"yaml\" },\n\t\t\t\t},\n\t\t\t],\n\t\t\tplugins: [\n\t\t\t\t\"prettier-plugin-curly\",\n\t\t\t\t\"prettier-plugin-packagejson\",\n\t\t\t\t\"prettier-plugin-sh\",\n\t\t\t],\n\t\t\tuseTabs: true,\n\t\t}),\n\t\t...(!options.excludeReleases && {\n\t\t\t\".release-it.json\": await formatJson({\n\t\t\t\tgit: {\n\t\t\t\t\tcommitMessage: \"chore: release v${version}\",\n\t\t\t\t\trequireCommits: true,\n\t\t\t\t},\n\t\t\t\tgithub: {\n\t\t\t\t\tautoGenerate: true,\n\t\t\t\t\trelease: true,\n\t\t\t\t\treleaseName: \"v${version}\",\n\t\t\t\t},\n\t\t\t\tnpm: {\n\t\t\t\t\tpublishArgs: [`--access ${options.access}`, \"--provenance\"],\n\t\t\t\t},\n\t\t\t\tplugins: {\n\t\t\t\t\t\"@release-it/conventional-changelog\": {\n\t\t\t\t\t\tinfile: \"CHANGELOG.md\",\n\t\t\t\t\t\tpreset: \"angular\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t}),\n\t\t\"LICENSE.md\": `# MIT License\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n`,\n\t\t...(!options.excludeLintSpelling && {\n\t\t\t\"cspell.json\": await createCSpellConfig(options),\n\t\t}),\n\t\t...(!options.excludeLintKnip && {\n\t\t\t\"knip.json\": await createKnipConfig(),\n\t\t}),\n\t\t\"package.json\": await writePackageJson(options),\n\t\t\"tsconfig.json\": await formatJson({\n\t\t\tcompilerOptions: {\n\t\t\t\tdeclaration: true,\n\t\t\t\tdeclarationMap: true,\n\t\t\t\tesModuleInterop: true,\n\t\t\t\tmodule: \"NodeNext\",\n\t\t\t\tmoduleResolution: \"NodeNext\",\n\t\t\t\tnoEmit: true,\n\t\t\t\tresolveJsonModule: true,\n\t\t\t\tskipLibCheck: true,\n\t\t\t\tsourceMap: true,\n\t\t\t\tstrict: true,\n\t\t\t\ttarget: \"ES2022\",\n\t\t\t},\n\t\t\tinclude: [\"src\"],\n\t\t}),\n\t\t\"tsup.config.ts\": await createTsupConfig(options),\n\t\t...(!options.excludeTests && {\n\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: [\"lib\"],\n\t\t\tinclude: [\"src\"],\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [\"lib\", \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n`,\n\t\t}),\n\t};\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-typescript-app",
3
- "version": "1.77.1",
3
+ "version": "1.79.0",
4
4
  "description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️‍🔥",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,24 +41,28 @@
41
41
  "*": "prettier --ignore-unknown --write"
42
42
  },
43
43
  "dependencies": {
44
- "@clack/prompts": "^0.8.2",
44
+ "@clack/prompts": "^0.9.0",
45
45
  "@prettier/sync": "^0.5.2",
46
- "chalk": "^5.3.0",
47
- "create": "0.1.0-alpha.7",
46
+ "chalk": "^5.4.1",
47
+ "create": "0.1.0-alpha.8",
48
+ "cspell-populate-words": "^0.3.0",
48
49
  "execa": "^9.5.2",
49
50
  "git-remote-origin-url": "^4.0.0",
50
51
  "git-url-parse": "^16.0.0",
51
- "input-from-file": "0.1.0-alpha.2",
52
- "input-from-file-json": "0.1.0-alpha.2",
52
+ "input-from-file": "0.1.0-alpha.4",
53
+ "input-from-file-json": "0.1.0-alpha.4",
54
+ "input-from-script": "0.1.0-alpha.4",
53
55
  "js-yaml": "^4.1.0",
54
56
  "lazy-value": "^3.0.0",
55
57
  "npm-user": "^6.1.1",
58
+ "object-strings-deep": "^0.1.1",
56
59
  "octokit": "^4.0.2",
57
60
  "octokit-from-auth": "^0.3.0",
58
61
  "parse-author": "^2.0.0",
59
62
  "parse-package-name": "^1.0.0",
60
63
  "populate-all-contributors-for-repository": "^0.1.2",
61
64
  "prettier": "^3.4.2",
65
+ "remove-undefined-objects": "^5.0.0",
62
66
  "replace-in-file": "^8.3.0",
63
67
  "rimraf": "^6.0.1",
64
68
  "set-github-repository-labels": "^0.1.0",
@@ -78,26 +82,26 @@
78
82
  "@types/node": "22.10.2",
79
83
  "@types/parse-author": "2.0.3",
80
84
  "@vitest/coverage-v8": "2.1.8",
81
- "@vitest/eslint-plugin": "1.1.18",
85
+ "@vitest/eslint-plugin": "1.1.20",
82
86
  "all-contributors-cli": "6.26.1",
83
87
  "c8": "10.1.3",
84
88
  "console-fail-test": "0.5.0",
85
- "create-testers": "0.1.0-alpha.7",
89
+ "create-testers": "0.1.0-alpha.8",
86
90
  "cspell": "8.17.1",
87
91
  "eslint": "9.17.0",
88
92
  "eslint-plugin-jsdoc": "50.6.1",
89
93
  "eslint-plugin-jsonc": "2.18.2",
90
94
  "eslint-plugin-markdown": "5.1.0",
91
- "eslint-plugin-n": "17.15.0",
95
+ "eslint-plugin-n": "17.15.1",
92
96
  "eslint-plugin-package-json": "0.18.0",
93
- "eslint-plugin-perfectionist": "4.3.0",
97
+ "eslint-plugin-perfectionist": "4.4.0",
94
98
  "eslint-plugin-regexp": "2.7.0",
95
99
  "eslint-plugin-yml": "1.16.0",
96
100
  "globby": "14.0.2",
97
101
  "husky": "9.1.7",
98
- "knip": "5.41.0",
102
+ "knip": "5.41.1",
99
103
  "lint-staged": "15.2.11",
100
- "markdownlint": "0.37.1",
104
+ "markdownlint": "0.37.2",
101
105
  "markdownlint-cli": "0.43.0",
102
106
  "prettier-plugin-curly": "0.3.1",
103
107
  "prettier-plugin-packagejson": "2.5.6",
@@ -1,49 +0,0 @@
1
- import { z } from "zod";
2
- import { base } from "../base.js";
3
- const blockRepositoryBranchProtection = base.createBlock({
4
- about: {
5
- name: "Repository Branch Protection"
6
- },
7
- addons: {
8
- requiredStatusChecks: z.array(z.string()).default([])
9
- },
10
- produce({ addons, options }) {
11
- return {
12
- requests: [
13
- {
14
- id: "branch-protection",
15
- async send({ octokit }) {
16
- await octokit.request(
17
- `PUT /repos/{owner}/{repository}/branches/{main}/protection`,
18
- {
19
- allow_deletions: false,
20
- allow_force_pushes: true,
21
- allow_fork_pushes: false,
22
- allow_fork_syncing: true,
23
- block_creations: false,
24
- branch: "main",
25
- enforce_admins: false,
26
- owner: options.owner,
27
- repo: options.repository,
28
- required_conversation_resolution: true,
29
- required_linear_history: false,
30
- required_pull_request_reviews: null,
31
- required_status_checks: {
32
- checks: addons.requiredStatusChecks.map((context) => ({
33
- context
34
- })),
35
- strict: false
36
- },
37
- restrictions: null
38
- }
39
- );
40
- }
41
- }
42
- ]
43
- };
44
- }
45
- });
46
- export {
47
- blockRepositoryBranchProtection
48
- };
49
- //# sourceMappingURL=blockRepositoryBranchProtection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/next/blocks/blockRepositoryBranchProtection.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\n\nexport const blockRepositoryBranchProtection = base.createBlock({\n\tabout: {\n\t\tname: \"Repository Branch Protection\",\n\t},\n\taddons: {\n\t\trequiredStatusChecks: z.array(z.string()).default([]),\n\t},\n\tproduce({ addons, options }) {\n\t\treturn {\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\tid: \"branch-protection\",\n\t\t\t\t\tasync send({ octokit }) {\n\t\t\t\t\t\tawait octokit.request(\n\t\t\t\t\t\t\t`PUT /repos/{owner}/{repository}/branches/{main}/protection`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tallow_deletions: false,\n\t\t\t\t\t\t\t\tallow_force_pushes: true,\n\t\t\t\t\t\t\t\tallow_fork_pushes: false,\n\t\t\t\t\t\t\t\tallow_fork_syncing: true,\n\t\t\t\t\t\t\t\tblock_creations: false,\n\t\t\t\t\t\t\t\tbranch: \"main\",\n\t\t\t\t\t\t\t\tenforce_admins: false,\n\t\t\t\t\t\t\t\towner: options.owner,\n\t\t\t\t\t\t\t\trepo: options.repository,\n\t\t\t\t\t\t\t\trequired_conversation_resolution: true,\n\t\t\t\t\t\t\t\trequired_linear_history: false,\n\t\t\t\t\t\t\t\trequired_pull_request_reviews: null,\n\t\t\t\t\t\t\t\trequired_status_checks: {\n\t\t\t\t\t\t\t\t\tchecks: addons.requiredStatusChecks.map((context) => ({\n\t\t\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\t\tstrict: false,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\trestrictions: null,\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],\n\t\t};\n\t},\n});\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,YAAY;AAEd,MAAM,kCAAkC,KAAK,YAAY;AAAA,EAC/D,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACP,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACrD;AAAA,EACA,QAAQ,EAAE,QAAQ,QAAQ,GAAG;AAC5B,WAAO;AAAA,MACN,UAAU;AAAA,QACT;AAAA,UACC,IAAI;AAAA,UACJ,MAAM,KAAK,EAAE,QAAQ,GAAG;AACvB,kBAAM,QAAQ;AAAA,cACb;AAAA,cACA;AAAA,gBACC,iBAAiB;AAAA,gBACjB,oBAAoB;AAAA,gBACpB,mBAAmB;AAAA,gBACnB,oBAAoB;AAAA,gBACpB,iBAAiB;AAAA,gBACjB,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,OAAO,QAAQ;AAAA,gBACf,MAAM,QAAQ;AAAA,gBACd,kCAAkC;AAAA,gBAClC,yBAAyB;AAAA,gBACzB,+BAA+B;AAAA,gBAC/B,wBAAwB;AAAA,kBACvB,QAAQ,OAAO,qBAAqB,IAAI,CAAC,aAAa;AAAA,oBACrD;AAAA,kBACD,EAAE;AAAA,kBACF,QAAQ;AAAA,gBACT;AAAA,gBACA,cAAc;AAAA,cACf;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;","names":[]}