create-typescript-app 2.51.0 → 2.52.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 (144) hide show
  1. package/lib/blocks/blockAllContributors.d.ts +2 -2
  2. package/lib/blocks/blockAllContributors.d.ts.map +1 -1
  3. package/lib/blocks/blockAreTheTypesWrong.d.ts +2 -2
  4. package/lib/blocks/blockAreTheTypesWrong.d.ts.map +1 -1
  5. package/lib/blocks/blockCSpell.d.ts +2 -2
  6. package/lib/blocks/blockCSpell.d.ts.map +1 -1
  7. package/lib/blocks/blockCTATransitions.d.ts +2 -2
  8. package/lib/blocks/blockCodecov.d.ts +2 -2
  9. package/lib/blocks/blockCodecov.d.ts.map +1 -1
  10. package/lib/blocks/blockContributingDocs.d.ts +2 -2
  11. package/lib/blocks/blockContributingDocs.d.ts.map +1 -1
  12. package/lib/blocks/blockContributorCovenant.d.ts +2 -2
  13. package/lib/blocks/blockContributorCovenant.d.ts.map +1 -1
  14. package/lib/blocks/blockDevelopmentDocs.d.ts +2 -2
  15. package/lib/blocks/blockESLint.d.ts +15 -20
  16. package/lib/blocks/blockESLint.d.ts.map +1 -1
  17. package/lib/blocks/blockESLint.js +23 -27
  18. package/lib/blocks/blockESLint.js.map +1 -1
  19. package/lib/blocks/blockESLintComments.d.ts +2 -2
  20. package/lib/blocks/blockESLintComments.d.ts.map +1 -1
  21. package/lib/blocks/blockESLintComments.js +6 -2
  22. package/lib/blocks/blockESLintComments.js.map +1 -1
  23. package/lib/blocks/blockESLintJSDoc.d.ts +2 -2
  24. package/lib/blocks/blockESLintJSDoc.d.ts.map +1 -1
  25. package/lib/blocks/blockESLintJSDoc.js +10 -6
  26. package/lib/blocks/blockESLintJSDoc.js.map +1 -1
  27. package/lib/blocks/blockESLintJSONC.d.ts +2 -2
  28. package/lib/blocks/blockESLintJSONC.js +4 -1
  29. package/lib/blocks/blockESLintJSONC.js.map +1 -1
  30. package/lib/blocks/blockESLintMarkdown.d.ts +2 -2
  31. package/lib/blocks/blockESLintMarkdown.js +4 -1
  32. package/lib/blocks/blockESLintMarkdown.js.map +1 -1
  33. package/lib/blocks/blockESLintMoreStyling.d.ts +2 -2
  34. package/lib/blocks/blockESLintMoreStyling.d.ts.map +1 -1
  35. package/lib/blocks/blockESLintMoreStyling.js +17 -13
  36. package/lib/blocks/blockESLintMoreStyling.js.map +1 -1
  37. package/lib/blocks/blockESLintNode.d.ts +2 -2
  38. package/lib/blocks/blockESLintNode.d.ts.map +1 -1
  39. package/lib/blocks/blockESLintNode.js +6 -2
  40. package/lib/blocks/blockESLintNode.js.map +1 -1
  41. package/lib/blocks/blockESLintPackageJson.d.ts +2 -2
  42. package/lib/blocks/blockESLintPackageJson.d.ts.map +1 -1
  43. package/lib/blocks/blockESLintPackageJson.js +4 -1
  44. package/lib/blocks/blockESLintPackageJson.js.map +1 -1
  45. package/lib/blocks/blockESLintPerfectionist.d.ts +2 -2
  46. package/lib/blocks/blockESLintPerfectionist.d.ts.map +1 -1
  47. package/lib/blocks/blockESLintPerfectionist.js +11 -7
  48. package/lib/blocks/blockESLintPerfectionist.js.map +1 -1
  49. package/lib/blocks/blockESLintPlugin.d.ts +2 -2
  50. package/lib/blocks/blockESLintPlugin.d.ts.map +1 -1
  51. package/lib/blocks/blockESLintPlugin.js +5 -1
  52. package/lib/blocks/blockESLintPlugin.js.map +1 -1
  53. package/lib/blocks/blockESLintRegexp.d.ts +2 -2
  54. package/lib/blocks/blockESLintRegexp.d.ts.map +1 -1
  55. package/lib/blocks/blockESLintRegexp.js +6 -2
  56. package/lib/blocks/blockESLintRegexp.js.map +1 -1
  57. package/lib/blocks/blockESLintYML.d.ts +2 -2
  58. package/lib/blocks/blockExampleFiles.d.ts +2 -2
  59. package/lib/blocks/blockFunding.d.ts +2 -2
  60. package/lib/blocks/blockGitHubActionsCI.d.ts +2 -2
  61. package/lib/blocks/blockGitHubApps.d.ts +2 -2
  62. package/lib/blocks/blockGitHubIssueTemplates.d.ts +2 -2
  63. package/lib/blocks/blockGitHubPRTemplate.d.ts +2 -2
  64. package/lib/blocks/blockGitignore.d.ts +2 -2
  65. package/lib/blocks/blockGitignore.d.ts.map +1 -1
  66. package/lib/blocks/blockKnip.d.ts +2 -2
  67. package/lib/blocks/blockKnip.d.ts.map +1 -1
  68. package/lib/blocks/blockMITLicense.d.ts +2 -2
  69. package/lib/blocks/blockMITLicense.d.ts.map +1 -1
  70. package/lib/blocks/blockMain.d.ts +2 -2
  71. package/lib/blocks/blockMain.d.ts.map +1 -1
  72. package/lib/blocks/blockMarkdownlint.d.ts +2 -2
  73. package/lib/blocks/blockMarkdownlint.d.ts.map +1 -1
  74. package/lib/blocks/blockNcc.d.ts +2 -2
  75. package/lib/blocks/blockNcc.d.ts.map +1 -1
  76. package/lib/blocks/blockNvmrc.d.ts +2 -2
  77. package/lib/blocks/blockOctoGuide.d.ts +2 -2
  78. package/lib/blocks/blockOctoGuideStrict.d.ts +2 -2
  79. package/lib/blocks/blockPackageJson.d.ts +2 -2
  80. package/lib/blocks/blockPnpmDedupe.d.ts +2 -2
  81. package/lib/blocks/blockPrettier.d.ts +3 -3
  82. package/lib/blocks/blockPrettier.d.ts.map +1 -1
  83. package/lib/blocks/blockPrettierPluginCurly.d.ts +2 -2
  84. package/lib/blocks/blockPrettierPluginPackageJson.d.ts +2 -2
  85. package/lib/blocks/blockPrettierPluginPackageJson.d.ts.map +1 -1
  86. package/lib/blocks/blockPrettierPluginSentencesPerLine.d.ts +2 -2
  87. package/lib/blocks/blockPrettierPluginSentencesPerLine.d.ts.map +1 -1
  88. package/lib/blocks/blockPrettierPluginSh.d.ts +2 -2
  89. package/lib/blocks/blockPrettierPluginSh.d.ts.map +1 -1
  90. package/lib/blocks/blockREADME.d.ts +2 -2
  91. package/lib/blocks/blockREADME.d.ts.map +1 -1
  92. package/lib/blocks/blockReleaseIt.d.ts +3 -3
  93. package/lib/blocks/blockReleaseIt.d.ts.map +1 -1
  94. package/lib/blocks/blockRemoveDependencies.d.ts +2 -2
  95. package/lib/blocks/blockRemoveDependencies.d.ts.map +1 -1
  96. package/lib/blocks/blockRemoveFiles.d.ts +2 -2
  97. package/lib/blocks/blockRemoveFiles.d.ts.map +1 -1
  98. package/lib/blocks/blockRemoveWorkflows.d.ts +2 -2
  99. package/lib/blocks/blockRemoveWorkflows.d.ts.map +1 -1
  100. package/lib/blocks/blockRenovate.d.ts +2 -2
  101. package/lib/blocks/blockRepositoryBranchRuleset.d.ts +2 -2
  102. package/lib/blocks/blockRepositoryLabels.d.ts +2 -2
  103. package/lib/blocks/blockRepositorySecrets.d.ts +2 -2
  104. package/lib/blocks/blockRepositorySettings.d.ts +2 -2
  105. package/lib/blocks/blockRepositorySettings.d.ts.map +1 -1
  106. package/lib/blocks/blockSecurityDocs.d.ts +2 -2
  107. package/lib/blocks/blockSecurityDocs.d.ts.map +1 -1
  108. package/lib/blocks/blockTSDown.d.ts +2 -2
  109. package/lib/blocks/blockTSDown.d.ts.map +1 -1
  110. package/lib/blocks/blockTemplatedWith.d.ts +2 -2
  111. package/lib/blocks/blockTemplatedWith.d.ts.map +1 -1
  112. package/lib/blocks/blockTypeScript.d.ts +2 -2
  113. package/lib/blocks/blockTypeScript.d.ts.map +1 -1
  114. package/lib/blocks/blockVSCode.d.ts +2 -2
  115. package/lib/blocks/blockVSCode.d.ts.map +1 -1
  116. package/lib/blocks/blockVitest.d.ts +2 -2
  117. package/lib/blocks/blockVitest.js +3 -3
  118. package/lib/blocks/blockVitest.js.map +1 -1
  119. package/lib/blocks/blockWebExt.d.ts +2 -2
  120. package/lib/blocks/eslint/getScriptFileExtension.d.ts +8 -0
  121. package/lib/blocks/eslint/getScriptFileExtension.d.ts.map +1 -0
  122. package/lib/blocks/eslint/getScriptFileExtension.js +8 -0
  123. package/lib/blocks/eslint/getScriptFileExtension.js.map +1 -0
  124. package/lib/blocks/eslint/mergeAllExtensions.d.ts +18 -0
  125. package/lib/blocks/eslint/mergeAllExtensions.d.ts.map +1 -0
  126. package/lib/blocks/eslint/mergeAllExtensions.js +48 -0
  127. package/lib/blocks/eslint/mergeAllExtensions.js.map +1 -0
  128. package/lib/blocks/eslint/schemas.d.ts +25 -12
  129. package/lib/blocks/eslint/schemas.d.ts.map +1 -1
  130. package/lib/blocks/eslint/schemas.js +5 -3
  131. package/lib/blocks/eslint/schemas.js.map +1 -1
  132. package/lib/blocks/index.d.ts +65 -70
  133. package/lib/index.d.ts +71 -71
  134. package/lib/index.d.ts.map +1 -1
  135. package/lib/inputs/inputFromOctokit.d.ts +2 -2
  136. package/lib/presets/common.d.ts +2 -2
  137. package/lib/presets/common.d.ts.map +1 -1
  138. package/lib/presets/everything.d.ts +69 -69
  139. package/lib/presets/index.d.ts +203 -203
  140. package/lib/presets/minimal.d.ts +69 -69
  141. package/lib/presets/minimal.d.ts.map +1 -1
  142. package/lib/template.d.ts +67 -67
  143. package/lib/template.d.ts.map +1 -1
  144. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum2 from "bingo-stratum";
1
+ import * as bingo_stratum72 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockAllContributors.d.ts
4
- declare const blockAllContributors: bingo_stratum2.BlockWithoutAddons<{
4
+ declare const blockAllContributors: bingo_stratum72.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockAllContributors.d.ts","names":[],"sources":["../../src/blocks/blockAllContributors.ts"],"sourcesContent":[],"mappings":";;;cAYa,qCAAoB;;;EAApB,SAAA,EAAA,MAAA;;;;;;;;;;EAAoB,KAAA,EAAA"}
1
+ {"version":3,"file":"blockAllContributors.d.ts","names":[],"sources":["../../src/blocks/blockAllContributors.ts"],"sourcesContent":[],"mappings":";;;cAYa,sCAAoB;;;EAApB,SAAA,EAAA,MAAA;;;;;;;;;;EAAoB,KAAA,EAAA"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum3 from "bingo-stratum";
1
+ import * as bingo_stratum73 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockAreTheTypesWrong.d.ts
4
- declare const blockAreTheTypesWrong: bingo_stratum3.BlockWithoutAddons<{
4
+ declare const blockAreTheTypesWrong: bingo_stratum73.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockAreTheTypesWrong.d.ts","names":[],"sources":["../../src/blocks/blockAreTheTypesWrong.ts"],"sourcesContent":[],"mappings":";;;cAGa,sCAAqB;;;EAArB,SAAA,EAAA,MAAA;;;;;;;;;;EAAqB,KAAA,EAAA"}
1
+ {"version":3,"file":"blockAreTheTypesWrong.d.ts","names":[],"sources":["../../src/blocks/blockAreTheTypesWrong.ts"],"sourcesContent":[],"mappings":";;;cAGa,uCAAqB;;;EAArB,SAAA,EAAA,MAAA;;;;;;;;;;EAAqB,KAAA,EAAA"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum1 from "bingo-stratum";
1
+ import * as bingo_stratum74 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockCSpell.d.ts
4
- declare const blockCSpell: bingo_stratum1.BlockWithAddons<{
4
+ declare const blockCSpell: bingo_stratum74.BlockWithAddons<{
5
5
  words: string[];
6
6
  ignorePaths: string[];
7
7
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"blockCSpell.d.ts","names":[],"sources":["../../src/blocks/blockCSpell.ts"],"sourcesContent":[],"mappings":";;;cAwBa,4BAAW;;;AAAxB,CAAA,EAAA;;;;;;;;;WAAwB,CAAA,EAAA,MAAA,GAAA,SAAA;IAAA,CAAA"}
1
+ {"version":3,"file":"blockCSpell.d.ts","names":[],"sources":["../../src/blocks/blockCSpell.ts"],"sourcesContent":[],"mappings":";;;cAwBa,6BAAW;;;AAAxB,CAAA,EAAA;;;;;;;;;WAAwB,CAAA,EAAA,MAAA,GAAA,SAAA;IAAA,CAAA"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum22 from "bingo-stratum";
1
+ import * as bingo_stratum75 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockCTATransitions.d.ts
4
- declare const blockCTATransitions: bingo_stratum22.BlockWithoutAddons<{
4
+ declare const blockCTATransitions: bingo_stratum75.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum5 from "bingo-stratum";
1
+ import * as bingo_stratum76 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockCodecov.d.ts
4
- declare const blockCodecov: bingo_stratum5.BlockWithAddons<{
4
+ declare const blockCodecov: bingo_stratum76.BlockWithAddons<{
5
5
  env?: Record<string, string> | undefined;
6
6
  }, {
7
7
  access: "public" | "restricted";
@@ -1 +1 @@
1
- {"version":3,"file":"blockCodecov.d.ts","names":[],"sources":["../../src/blocks/blockCodecov.ts"],"sourcesContent":[],"mappings":";;;cAUa,6BAAY;;;EAAZ,MAAA,EAAA,QA0EX,GAAA,YAAA;;;;;;;;;;eA1EuB,CAAA,EAAA,MAAA,GAAA,SAAA;EAAA,CAAA"}
1
+ {"version":3,"file":"blockCodecov.d.ts","names":[],"sources":["../../src/blocks/blockCodecov.ts"],"sourcesContent":[],"mappings":";;;cAUa,8BAAY;;;EAAZ,MAAA,EAAA,QA0EX,GAAA,YAAA;;;;;;;;;;eA1EuB,CAAA,EAAA,MAAA,GAAA,SAAA;EAAA,CAAA"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum6 from "bingo-stratum";
1
+ import * as bingo_stratum77 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockContributingDocs.d.ts
4
- declare const blockContributingDocs: bingo_stratum6.BlockWithoutAddons<{
4
+ declare const blockContributingDocs: bingo_stratum77.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockContributingDocs.d.ts","names":[],"sources":["../../src/blocks/blockContributingDocs.ts"],"sourcesContent":[],"mappings":";;;cAGa,sCAAqB;;;EAArB,SAAA,EAAA,MAAA;;;;;;;;;;EAAqB,KAAA,EAAA"}
1
+ {"version":3,"file":"blockContributingDocs.d.ts","names":[],"sources":["../../src/blocks/blockContributingDocs.ts"],"sourcesContent":[],"mappings":";;;cAGa,uCAAqB;;;EAArB,SAAA,EAAA,MAAA;;;;;;;;;;EAAqB,KAAA,EAAA"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum7 from "bingo-stratum";
1
+ import * as bingo_stratum79 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockContributorCovenant.d.ts
4
- declare const blockContributorCovenant: bingo_stratum7.BlockWithoutAddons<{
4
+ declare const blockContributorCovenant: bingo_stratum79.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockContributorCovenant.d.ts","names":[],"sources":["../../src/blocks/blockContributorCovenant.ts"],"sourcesContent":[],"mappings":";;;cAKa,yCAAwB;;;EAAxB,SAAA,EAAA,MAAA;;;;;;;;;;EAAwB,KAAA,EAAA"}
1
+ {"version":3,"file":"blockContributorCovenant.d.ts","names":[],"sources":["../../src/blocks/blockContributorCovenant.ts"],"sourcesContent":[],"mappings":";;;cAKa,0CAAwB;;;EAAxB,SAAA,EAAA,MAAA;;;;;;;;;;EAAwB,KAAA,EAAA"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum10 from "bingo-stratum";
1
+ import * as bingo_stratum83 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockDevelopmentDocs.d.ts
4
- declare const blockDevelopmentDocs: bingo_stratum10.BlockWithAddons<{
4
+ declare const blockDevelopmentDocs: bingo_stratum83.BlockWithAddons<{
5
5
  hints: string[];
6
6
  sections: Record<string, {
7
7
  contents?: string | {
@@ -1,19 +1,8 @@
1
- import * as bingo_stratum11 from "bingo-stratum";
1
+ import * as bingo_stratum84 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockESLint.d.ts
4
- declare const blockESLint: bingo_stratum11.BlockWithAddons<{
5
- extensions: (string | {
6
- files?: string[] | undefined;
7
- settings?: Record<string, unknown> | undefined;
8
- rules?: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]> | {
9
- entries: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]>;
10
- comment?: string | undefined;
11
- }[] | undefined;
12
- plugins?: Record<string, string> | undefined;
13
- extends?: string[] | undefined;
14
- languageOptions?: unknown;
15
- linterOptions?: unknown;
16
- })[];
4
+ declare const blockESLint: bingo_stratum84.BlockWithAddons<{
5
+ ignores: string[];
17
6
  imports: {
18
7
  source: string | {
19
8
  version: string;
@@ -22,13 +11,19 @@ declare const blockESLint: bingo_stratum11.BlockWithAddons<{
22
11
  specifier: string;
23
12
  types?: boolean | undefined;
24
13
  }[];
25
- ignores: string[];
14
+ extensions: {
15
+ files: string[];
16
+ rules?: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]> | {
17
+ entries: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]>;
18
+ comment?: string | undefined;
19
+ }[] | undefined;
20
+ settings?: Record<string, unknown> | undefined;
21
+ extends?: string[] | undefined;
22
+ languageOptions?: unknown;
23
+ linterOptions?: unknown;
24
+ plugins?: Record<string, string> | undefined;
25
+ }[];
26
26
  explanations: string[];
27
- settings?: Record<string, unknown> | undefined;
28
- rules?: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]> | {
29
- entries: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]>;
30
- comment?: string | undefined;
31
- }[] | undefined;
32
27
  beforeLint?: string | undefined;
33
28
  }, {
34
29
  access: "public" | "restricted";
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLint.d.ts","names":[],"sources":["../../src/blocks/blockESLint.ts"],"sourcesContent":[],"mappings":";;;cA0Ba,6BAAW;;;IAAX,QAAA,CAAA,QAoPX,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA;;;;;;;;;;;;;;;;mBApPsB,GAAA,SAAA;EAAA,CAAA,EAAA"}
1
+ {"version":3,"file":"blockESLint.d.ts","names":[],"sources":["../../src/blocks/blockESLint.ts"],"sourcesContent":[],"mappings":";;;cA2Ba,6BAAW;;;IAAX,MAAA,EAAA,MA6OX,GAAA;;;;;;;;;;;;;aA7OsB,QAAA,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA;IAAA,OAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA"}
@@ -9,8 +9,10 @@ import { blockDevelopmentDocs } from "./blockDevelopmentDocs.js";
9
9
  import { blockRemoveWorkflows } from "./blockRemoveWorkflows.js";
10
10
  import { blockVSCode } from "./blockVSCode.js";
11
11
  import { blockRemoveDependencies } from "./blockRemoveDependencies.js";
12
- import { zExtension, zExtensionRules, zPackageImport } from "./eslint/schemas.js";
12
+ import { getScriptFileExtension } from "./eslint/getScriptFileExtension.js";
13
+ import { zExtension, zPackageImport } from "./eslint/schemas.js";
13
14
  import { blockESLintIntake } from "./eslint/blockESLintIntake.js";
15
+ import { mergeAllExtensions } from "./eslint/mergeAllExtensions.js";
14
16
  import { z } from "zod";
15
17
  import sortKeys from "sort-keys";
16
18
  import { parse } from "parse-package-name";
@@ -21,19 +23,17 @@ const blockESLint = base.createBlock({
21
23
  addons: {
22
24
  beforeLint: z.string().optional(),
23
25
  explanations: z.array(z.string()).default([]),
24
- extensions: z.array(z.union([z.string(), zExtension])).default([]),
26
+ extensions: z.array(zExtension).default([]),
25
27
  ignores: z.array(z.string()).default([]),
26
- imports: z.array(zPackageImport).default([]),
27
- rules: zExtensionRules.optional(),
28
- settings: z.record(z.string(), z.unknown()).optional()
28
+ imports: z.array(zPackageImport).default([])
29
29
  },
30
30
  intake({ files }) {
31
31
  const eslintConfigRaw = intakeFile(files, [["eslint.config.js", "eslint.config.mjs"]]);
32
32
  return eslintConfigRaw ? blockESLintIntake(eslintConfigRaw[0]) : void 0;
33
33
  },
34
34
  produce({ addons, options }) {
35
- const { explanations, extensions, ignores, imports, rules, settings } = addons;
36
- const [configFileName, fileExtensions] = options.type === "commonjs" ? ["eslint.config.mjs", "js,mjs,ts"] : ["eslint.config.js", "js,ts"];
35
+ const { explanations, extensions, ignores, imports } = addons;
36
+ const configFileName = options.type === "commonjs" ? "eslint.config.mjs" : "eslint.config.js";
37
37
  const explanation = explanations.length > 0 ? `${explanations.map((explanation$1) => `/*\n${explanation$1}\n*/\n`).join("")}\n` : "";
38
38
  const importLines = [
39
39
  "import eslint from \"@eslint/js\";",
@@ -47,20 +47,18 @@ const blockESLint = base.createBlock({
47
47
  "pnpm-lock.yaml",
48
48
  ...ignores
49
49
  ].map((ignore) => JSON.stringify(ignore)))).sort();
50
- const extensionLines = [
51
- printExtension({
52
- extends: ["tseslint.configs.strictTypeChecked", "tseslint.configs.stylisticTypeChecked"],
53
- files: [`**/*.{${fileExtensions}}`],
54
- languageOptions: { parserOptions: { projectService: { allowDefaultProject: Array.from(new Set(["*.config.*s", ...typeof options.bin === "object" ? Object.values(options.bin) : [options.bin]].filter(Boolean).sort())) } } },
55
- ...rules && { rules },
56
- ...settings && { settings }
57
- }),
58
- ...options.type === "commonjs" ? [printExtension({
59
- files: ["*.mjs"],
60
- languageOptions: { sourceType: "module" }
61
- })] : [],
62
- ...extensions.map((extension) => typeof extension === "string" ? extension : printExtension(extension))
63
- ].sort((a, b) => processForSort(a).localeCompare(processForSort(b))).map((t) => t);
50
+ const extensionLines = mergeAllExtensions({
51
+ extends: [
52
+ "eslint.configs.recommended",
53
+ "tseslint.configs.strictTypeChecked",
54
+ "tseslint.configs.stylisticTypeChecked"
55
+ ],
56
+ files: [getScriptFileExtension(options)],
57
+ languageOptions: { parserOptions: { projectService: { allowDefaultProject: Array.from(new Set(["*.config.*s", ...typeof options.bin === "object" ? Object.values(options.bin) : [options.bin]].filter(Boolean).sort())) } } }
58
+ }, ...extensions, ...options.type === "commonjs" ? [{
59
+ files: ["*.mjs"],
60
+ languageOptions: { sourceType: "module" }
61
+ }] : []).sort((a, b) => processForSort(a.files).localeCompare(processForSort(b.files))).map(printExtension);
64
62
  return {
65
63
  addons: [
66
64
  blockDevelopmentDocs({ sections: { Linting: { contents: {
@@ -117,8 +115,7 @@ Each should be shown in VS Code, and can be run manually on the command-line:
117
115
 
118
116
  export default defineConfig(
119
117
  { ignores: [${ignoreLines.join(", ")}] },
120
- ${printExtension({ linterOptions: { reportUnusedDisableDirectives: "error" } })},
121
- eslint.configs.recommended,
118
+ { linterOptions: { reportUnusedDisableDirectives: "error" } },
122
119
  ${extensionLines.join(",")}
123
120
  );` },
124
121
  scripts: [{
@@ -169,7 +166,7 @@ function printExtension(extension) {
169
166
  return [
170
167
  "{",
171
168
  extension.extends && `extends: [${extension.extends.join(", ")}],`,
172
- extension.files && `files: [${extension.files.map((glob) => JSON.stringify(glob)).join(", ")}],`,
169
+ `files: [${extension.files.map((glob) => JSON.stringify(glob)).join(", ")}],`,
173
170
  extension.languageOptions && `languageOptions: ${JSON.stringify(extension.languageOptions).replace("\"import.meta.dirname\"", "import.meta.dirname")},`,
174
171
  extension.linterOptions && `linterOptions: ${JSON.stringify(extension.linterOptions)}`,
175
172
  extension.rules && `rules: ${printExtensionRules(extension.rules)},`,
@@ -188,9 +185,8 @@ function printExtensionRules(rules) {
188
185
  function printGroupComment(comment) {
189
186
  return comment ? `\n\n// ${comment.replaceAll("\n", "\n// ")}\n` : "";
190
187
  }
191
- function processForSort(line) {
192
- if (line.startsWith("...") || /\w+/.test(line[0])) return `A\n${line.replaceAll(/\W+/g, "")}`;
193
- return `B\n${(/files: (.+)/.exec(line)?.[1] ?? line).replaceAll(/\W+/g, "")}`;
188
+ function processForSort(files) {
189
+ return files.join("").replaceAll("{", "");
194
190
  }
195
191
 
196
192
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLint.js","names":["explanation","parsePackageName","grouped: typeof rulesGroups"],"sources":["../../src/blocks/blockESLint.ts"],"sourcesContent":["// @ts-expect-error -- https://github.com/egoist/parse-package-name/issues/30\nimport { parse as parsePackageName } from \"parse-package-name\";\nimport sortKeys from \"sort-keys\";\nimport { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { getPackageDependencies } from \"../data/packageData.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockRemoveDependencies } from \"./blockRemoveDependencies.js\";\nimport { blockRemoveFiles } from \"./blockRemoveFiles.js\";\nimport { blockRemoveWorkflows } from \"./blockRemoveWorkflows.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { blockESLintIntake } from \"./eslint/blockESLintIntake.js\";\nimport {\n\tExtension,\n\tExtensionRuleGroup,\n\tExtensionRules,\n\tzExtension,\n\tzExtensionRules,\n\tzPackageImport,\n} from \"./eslint/schemas.js\";\nimport { intakeFile } from \"./intake/intakeFile.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockESLint = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint\",\n\t},\n\taddons: {\n\t\tbeforeLint: z.string().optional(),\n\t\texplanations: z.array(z.string()).default([]),\n\t\textensions: z.array(z.union([z.string(), zExtension])).default([]),\n\t\tignores: z.array(z.string()).default([]),\n\t\timports: z.array(zPackageImport).default([]),\n\t\trules: zExtensionRules.optional(),\n\t\tsettings: z.record(z.string(), z.unknown()).optional(),\n\t},\n\tintake({ files }) {\n\t\tconst eslintConfigRaw = intakeFile(files, [\n\t\t\t[\"eslint.config.js\", \"eslint.config.mjs\"],\n\t\t]);\n\n\t\treturn eslintConfigRaw ? blockESLintIntake(eslintConfigRaw[0]) : undefined;\n\t},\n\tproduce({ addons, options }) {\n\t\tconst { explanations, extensions, ignores, imports, rules, settings } =\n\t\t\taddons;\n\n\t\tconst [configFileName, fileExtensions] =\n\t\t\toptions.type === \"commonjs\"\n\t\t\t\t? [\"eslint.config.mjs\", \"js,mjs,ts\"]\n\t\t\t\t: [\"eslint.config.js\", \"js,ts\"];\n\n\t\tconst explanation =\n\t\t\texplanations.length > 0\n\t\t\t\t? `${explanations\n\t\t\t\t\t\t.map((explanation) => `/*\\n${explanation}\\n*/\\n`)\n\t\t\t\t\t\t.join(\"\")}\\n`\n\t\t\t\t: \"\";\n\n\t\tconst importLines = [\n\t\t\t'import eslint from \"@eslint/js\";',\n\t\t\t'import { defineConfig } from \"eslint/config\";',\n\t\t\t'import tseslint from \"typescript-eslint\";',\n\t\t\t...imports.map(\n\t\t\t\t(packageImport) =>\n\t\t\t\t\t`import ${packageImport.specifier} from \"${typeof packageImport.source === \"string\" ? packageImport.source : packageImport.source.packageName}\"`,\n\t\t\t),\n\t\t].sort((a, b) =>\n\t\t\ta.replace(/.+from/, \"\").localeCompare(b.replace(/.+from/, \"\")),\n\t\t);\n\n\t\tconst ignoreLines = Array.from(\n\t\t\tnew Set(\n\t\t\t\t[\"lib\", \"node_modules\", \"pnpm-lock.yaml\", ...ignores].map((ignore) =>\n\t\t\t\t\tJSON.stringify(ignore),\n\t\t\t\t),\n\t\t\t),\n\t\t).sort();\n\n\t\tconst extensionLines = [\n\t\t\tprintExtension({\n\t\t\t\textends: [\n\t\t\t\t\t\"tseslint.configs.strictTypeChecked\",\n\t\t\t\t\t\"tseslint.configs.stylisticTypeChecked\",\n\t\t\t\t],\n\t\t\t\tfiles: [`**/*.{${fileExtensions}}`],\n\t\t\t\tlanguageOptions: {\n\t\t\t\t\tparserOptions: {\n\t\t\t\t\t\tprojectService: {\n\t\t\t\t\t\t\tallowDefaultProject: Array.from(\n\t\t\t\t\t\t\t\tnew Set(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\"*.config.*s\",\n\t\t\t\t\t\t\t\t\t\t...(typeof options.bin === \"object\"\n\t\t\t\t\t\t\t\t\t\t\t? Object.values(options.bin)\n\t\t\t\t\t\t\t\t\t\t\t: [options.bin]),\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t.sort(),\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\t...(rules && { rules }),\n\t\t\t\t...(settings && { settings }),\n\t\t\t}),\n\t\t\t...(options.type === \"commonjs\"\n\t\t\t\t? [\n\t\t\t\t\t\tprintExtension({\n\t\t\t\t\t\t\tfiles: [\"*.mjs\"],\n\t\t\t\t\t\t\tlanguageOptions: { sourceType: \"module\" },\n\t\t\t\t\t\t}),\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t\t...extensions.map((extension) =>\n\t\t\t\ttypeof extension === \"string\" ? extension : printExtension(extension),\n\t\t\t),\n\t\t]\n\t\t\t.sort((a, b) => processForSort(a).localeCompare(processForSort(b)))\n\t\t\t.map((t) => t);\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockDevelopmentDocs({\n\t\t\t\t\tsections: {\n\t\t\t\t\t\tLinting: {\n\t\t\t\t\t\t\tcontents: {\n\t\t\t\t\t\t\t\tafter: [\n\t\t\t\t\t\t\t\t\t`\nFor example, ESLint can be run with \\`--fix\\` to auto-fix some lint rule complaints:\n\n\\`\\`\\`shell\npnpm run lint --fix\n\\`\\`\\`\n`,\n\t\t\t\t\t\t\t\t\t...(addons.beforeLint ? [addons.beforeLint] : []),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tbefore: `\nThis package includes several forms of linting to enforce consistent code quality and styling.\nEach should be shown in VS Code, and can be run manually on the command-line:\n`,\n\t\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\t\t`- \\`pnpm lint\\` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files`,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tplural: `Read the individual documentation for each linter to understand how it can be configured and used best.`,\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\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Lint\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t...(options.bin ? [{ run: \"pnpm build\" }] : []),\n\t\t\t\t\t\t\t\t{ run: \"pnpm lint\" },\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: {\n\t\t\t\t\t\t\t...getPackageDependencies(\n\t\t\t\t\t\t\t\t\"@eslint/js\",\n\t\t\t\t\t\t\t\t\"@types/node\",\n\t\t\t\t\t\t\t\t\"eslint\",\n\t\t\t\t\t\t\t\t\"typescript-eslint\",\n\t\t\t\t\t\t\t\t...imports\n\t\t\t\t\t\t\t\t\t.filter((imported) => typeof imported.source === \"string\")\n\t\t\t\t\t\t\t\t\t.flatMap(({ source, types }) => {\n\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call -- https://github.com/egoist/parse-package-name/issues/30\n\t\t\t\t\t\t\t\t\t\tconst { name } = parsePackageName(source) as {\n\t\t\t\t\t\t\t\t\t\t\tname: string;\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\treturn types ? [name, `@types/${name}`] : [name];\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...Object.fromEntries(\n\t\t\t\t\t\t\t\timports\n\t\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\timported,\n\t\t\t\t\t\t\t\t\t\t): imported is typeof imported & { source: object } =>\n\t\t\t\t\t\t\t\t\t\t\ttypeof imported.source === \"object\",\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.map((imported) => [\n\t\t\t\t\t\t\t\t\t\timported.source.packageName,\n\t\t\t\t\t\t\t\t\t\timported.source.version,\n\t\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\tscripts: {\n\t\t\t\t\t\t\tlint: \"eslint . --max-warnings 0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockVSCode({\n\t\t\t\t\textensions: [\"dbaeumer.vscode-eslint\"],\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\"editor.codeActionsOnSave\": {\n\t\t\t\t\t\t\t\"source.fixAll.eslint\": \"explicit\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"eslint.probe\": [\n\t\t\t\t\t\t\t\"javascript\",\n\t\t\t\t\t\t\t\"javascriptreact\",\n\t\t\t\t\t\t\t\"json\",\n\t\t\t\t\t\t\t\"jsonc\",\n\t\t\t\t\t\t\t\"markdown\",\n\t\t\t\t\t\t\t\"typescript\",\n\t\t\t\t\t\t\t\"typescriptreact\",\n\t\t\t\t\t\t\t\"yaml\",\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"eslint.rules.customizations\": [{ rule: \"*\", severity: \"warn\" }],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t[configFileName]: `${explanation}${importLines.join(\"\\n\")}\n\nexport default defineConfig(\n\t{ ignores: [${ignoreLines.join(\", \")}] },\n\t${printExtension({\n\t\tlinterOptions: { reportUnusedDisableDirectives: \"error\" },\n\t})},\n\teslint.configs.recommended,\n\t${extensionLines.join(\",\")}\n);`,\n\t\t\t},\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\"pnpm lint --fix\"],\n\t\t\t\t\tphase: CommandPhase.Process,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\ttransition({ options }) {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockRemoveDependencies({\n\t\t\t\t\tdependencies: [\n\t\t\t\t\t\t\"@types/eslint\",\n\t\t\t\t\t\t\"@typescript-eslint/eslint-plugin\",\n\t\t\t\t\t\t\"@typescript-eslint/parser\",\n\t\t\t\t\t\t\"eslint-plugin-deprecation\",\n\t\t\t\t\t\t\"eslint-plugin-eslint-comments\",\n\t\t\t\t\t\t\"eslint-plugin-no-only-tests\",\n\t\t\t\t\t\t\"yaml-eslint-parser\",\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockRemoveFiles({\n\t\t\t\t\tfiles: [\n\t\t\t\t\t\t\".eslintrc*\",\n\t\t\t\t\t\t\".eslintignore\",\n\t\t\t\t\t\toptions.type === \"commonjs\"\n\t\t\t\t\t\t\t? \"eslint.config.{cjs,js}\"\n\t\t\t\t\t\t\t: \"eslint.config.{cjs,mjs}\",\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockRemoveWorkflows({\n\t\t\t\t\tworkflows: [\"eslint\", \"lint\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n\nfunction groupByComment(rulesGroups: ExtensionRuleGroup[]) {\n\tconst byComment = new Map<string | undefined, ExtensionRuleGroup>();\n\tconst grouped: typeof rulesGroups = [];\n\n\tfor (const group of rulesGroups) {\n\t\tconst existing = byComment.get(group.comment);\n\n\t\tif (existing) {\n\t\t\texisting.entries = {\n\t\t\t\t...existing.entries,\n\t\t\t\t...group.entries,\n\t\t\t};\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tbyComment.set(group.comment, group);\n\t\t\tgrouped.push(group);\n\t\t}\n\t}\n\n\treturn grouped;\n}\n\nfunction printExtension(extension: Extension) {\n\treturn [\n\t\t\"{\",\n\t\textension.extends && `extends: [${extension.extends.join(\", \")}],`,\n\t\textension.files &&\n\t\t\t`files: [${extension.files.map((glob) => JSON.stringify(glob)).join(\", \")}],`,\n\t\textension.languageOptions &&\n\t\t\t`languageOptions: ${JSON.stringify(extension.languageOptions).replace('\"import.meta.dirname\"', \"import.meta.dirname\")},`,\n\t\textension.linterOptions &&\n\t\t\t`linterOptions: ${JSON.stringify(extension.linterOptions)}`,\n\t\textension.rules && `rules: ${printExtensionRules(extension.rules)},`,\n\t\textension.settings &&\n\t\t\t`settings: ${JSON.stringify(sortKeys(extension.settings))},`,\n\t\t\"}\",\n\t]\n\t\t.filter(Boolean)\n\t\t.join(\" \");\n}\n\nfunction printExtensionRules(rules: ExtensionRules) {\n\tif (!Array.isArray(rules)) {\n\t\treturn JSON.stringify(rules);\n\t}\n\n\treturn [\n\t\t\"{\",\n\t\t...groupByComment(rules).flatMap((group) => [\n\t\t\tprintGroupComment(group.comment),\n\t\t\t...Object.entries(group.entries).map(\n\t\t\t\t([ruleName, options]) => `\"${ruleName}\": ${JSON.stringify(options)},`,\n\t\t\t),\n\t\t]),\n\t\t\"}\",\n\t].join(\"\");\n}\n\nfunction printGroupComment(comment: string | undefined) {\n\treturn comment ? `\\n\\n// ${comment.replaceAll(\"\\n\", \"\\n// \")}\\n` : \"\";\n}\n\nfunction processForSort(line: string) {\n\tif (line.startsWith(\"...\") || /\\w+/.test(line[0])) {\n\t\treturn `A\\n${line.replaceAll(/\\W+/g, \"\")}`;\n\t}\n\n\treturn `B\\n${(/files: (.+)/.exec(line)?.[1] ?? line).replaceAll(/\\W+/g, \"\")}`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"blockESLint.js","names":["explanation","parsePackageName","grouped: typeof rulesGroups"],"sources":["../../src/blocks/blockESLint.ts"],"sourcesContent":["// @ts-expect-error -- https://github.com/egoist/parse-package-name/issues/30\nimport { parse as parsePackageName } from \"parse-package-name\";\nimport sortKeys from \"sort-keys\";\nimport { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { getPackageDependencies } from \"../data/packageData.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockRemoveDependencies } from \"./blockRemoveDependencies.js\";\nimport { blockRemoveFiles } from \"./blockRemoveFiles.js\";\nimport { blockRemoveWorkflows } from \"./blockRemoveWorkflows.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { blockESLintIntake } from \"./eslint/blockESLintIntake.js\";\nimport { getScriptFileExtension } from \"./eslint/getScriptFileExtension.js\";\nimport { mergeAllExtensions } from \"./eslint/mergeAllExtensions.js\";\nimport {\n\tExtension,\n\tExtensionRuleGroup,\n\tExtensionRules,\n\tzExtension,\n\tzPackageImport,\n} from \"./eslint/schemas.js\";\nimport { intakeFile } from \"./intake/intakeFile.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockESLint = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint\",\n\t},\n\taddons: {\n\t\tbeforeLint: z.string().optional(),\n\t\texplanations: z.array(z.string()).default([]),\n\t\textensions: z.array(zExtension).default([]),\n\t\tignores: z.array(z.string()).default([]),\n\t\timports: z.array(zPackageImport).default([]),\n\t},\n\tintake({ files }) {\n\t\tconst eslintConfigRaw = intakeFile(files, [\n\t\t\t[\"eslint.config.js\", \"eslint.config.mjs\"],\n\t\t]);\n\n\t\treturn eslintConfigRaw ? blockESLintIntake(eslintConfigRaw[0]) : undefined;\n\t},\n\tproduce({ addons, options }) {\n\t\tconst { explanations, extensions, ignores, imports } = addons;\n\n\t\tconst configFileName =\n\t\t\toptions.type === \"commonjs\" ? \"eslint.config.mjs\" : \"eslint.config.js\";\n\n\t\tconst explanation =\n\t\t\texplanations.length > 0\n\t\t\t\t? `${explanations\n\t\t\t\t\t\t.map((explanation) => `/*\\n${explanation}\\n*/\\n`)\n\t\t\t\t\t\t.join(\"\")}\\n`\n\t\t\t\t: \"\";\n\n\t\tconst importLines = [\n\t\t\t'import eslint from \"@eslint/js\";',\n\t\t\t'import { defineConfig } from \"eslint/config\";',\n\t\t\t'import tseslint from \"typescript-eslint\";',\n\t\t\t...imports.map(\n\t\t\t\t(packageImport) =>\n\t\t\t\t\t`import ${packageImport.specifier} from \"${typeof packageImport.source === \"string\" ? packageImport.source : packageImport.source.packageName}\"`,\n\t\t\t),\n\t\t].sort((a, b) =>\n\t\t\ta.replace(/.+from/, \"\").localeCompare(b.replace(/.+from/, \"\")),\n\t\t);\n\n\t\tconst ignoreLines = Array.from(\n\t\t\tnew Set(\n\t\t\t\t[\"lib\", \"node_modules\", \"pnpm-lock.yaml\", ...ignores].map((ignore) =>\n\t\t\t\t\tJSON.stringify(ignore),\n\t\t\t\t),\n\t\t\t),\n\t\t).sort();\n\n\t\tconst extensionEntries = mergeAllExtensions(\n\t\t\t{\n\t\t\t\textends: [\n\t\t\t\t\t\"eslint.configs.recommended\",\n\t\t\t\t\t\"tseslint.configs.strictTypeChecked\",\n\t\t\t\t\t\"tseslint.configs.stylisticTypeChecked\",\n\t\t\t\t],\n\t\t\t\tfiles: [getScriptFileExtension(options)],\n\t\t\t\tlanguageOptions: {\n\t\t\t\t\tparserOptions: {\n\t\t\t\t\t\tprojectService: {\n\t\t\t\t\t\t\tallowDefaultProject: Array.from(\n\t\t\t\t\t\t\t\tnew Set(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\"*.config.*s\",\n\t\t\t\t\t\t\t\t\t\t...(typeof options.bin === \"object\"\n\t\t\t\t\t\t\t\t\t\t\t? Object.values(options.bin)\n\t\t\t\t\t\t\t\t\t\t\t: [options.bin]),\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t.sort(),\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},\n\t\t\t...extensions,\n\t\t\t...(options.type === \"commonjs\"\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfiles: [\"*.mjs\"],\n\t\t\t\t\t\t\tlanguageOptions: { sourceType: \"module\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t);\n\n\t\tconst extensionLines = extensionEntries\n\t\t\t.sort((a, b) =>\n\t\t\t\tprocessForSort(a.files).localeCompare(processForSort(b.files)),\n\t\t\t)\n\t\t\t.map(printExtension);\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockDevelopmentDocs({\n\t\t\t\t\tsections: {\n\t\t\t\t\t\tLinting: {\n\t\t\t\t\t\t\tcontents: {\n\t\t\t\t\t\t\t\tafter: [\n\t\t\t\t\t\t\t\t\t`\nFor example, ESLint can be run with \\`--fix\\` to auto-fix some lint rule complaints:\n\n\\`\\`\\`shell\npnpm run lint --fix\n\\`\\`\\`\n`,\n\t\t\t\t\t\t\t\t\t...(addons.beforeLint ? [addons.beforeLint] : []),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tbefore: `\nThis package includes several forms of linting to enforce consistent code quality and styling.\nEach should be shown in VS Code, and can be run manually on the command-line:\n`,\n\t\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\t\t`- \\`pnpm lint\\` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files`,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tplural: `Read the individual documentation for each linter to understand how it can be configured and used best.`,\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\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Lint\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t...(options.bin ? [{ run: \"pnpm build\" }] : []),\n\t\t\t\t\t\t\t\t{ run: \"pnpm lint\" },\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: {\n\t\t\t\t\t\t\t...getPackageDependencies(\n\t\t\t\t\t\t\t\t\"@eslint/js\",\n\t\t\t\t\t\t\t\t\"@types/node\",\n\t\t\t\t\t\t\t\t\"eslint\",\n\t\t\t\t\t\t\t\t\"typescript-eslint\",\n\t\t\t\t\t\t\t\t...imports\n\t\t\t\t\t\t\t\t\t.filter((imported) => typeof imported.source === \"string\")\n\t\t\t\t\t\t\t\t\t.flatMap(({ source, types }) => {\n\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call -- https://github.com/egoist/parse-package-name/issues/30\n\t\t\t\t\t\t\t\t\t\tconst { name } = parsePackageName(source) as {\n\t\t\t\t\t\t\t\t\t\t\tname: string;\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\treturn types ? [name, `@types/${name}`] : [name];\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...Object.fromEntries(\n\t\t\t\t\t\t\t\timports\n\t\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\timported,\n\t\t\t\t\t\t\t\t\t\t): imported is typeof imported & { source: object } =>\n\t\t\t\t\t\t\t\t\t\t\ttypeof imported.source === \"object\",\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.map((imported) => [\n\t\t\t\t\t\t\t\t\t\timported.source.packageName,\n\t\t\t\t\t\t\t\t\t\timported.source.version,\n\t\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\tscripts: {\n\t\t\t\t\t\t\tlint: \"eslint . --max-warnings 0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockVSCode({\n\t\t\t\t\textensions: [\"dbaeumer.vscode-eslint\"],\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\"editor.codeActionsOnSave\": {\n\t\t\t\t\t\t\t\"source.fixAll.eslint\": \"explicit\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"eslint.probe\": [\n\t\t\t\t\t\t\t\"javascript\",\n\t\t\t\t\t\t\t\"javascriptreact\",\n\t\t\t\t\t\t\t\"json\",\n\t\t\t\t\t\t\t\"jsonc\",\n\t\t\t\t\t\t\t\"markdown\",\n\t\t\t\t\t\t\t\"typescript\",\n\t\t\t\t\t\t\t\"typescriptreact\",\n\t\t\t\t\t\t\t\"yaml\",\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"eslint.rules.customizations\": [{ rule: \"*\", severity: \"warn\" }],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t[configFileName]: `${explanation}${importLines.join(\"\\n\")}\n\nexport default defineConfig(\n\t{ ignores: [${ignoreLines.join(\", \")}] },\n\t{ linterOptions: { reportUnusedDisableDirectives: \"error\" } },\n\t${extensionLines.join(\",\")}\n);`,\n\t\t\t},\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\"pnpm lint --fix\"],\n\t\t\t\t\tphase: CommandPhase.Process,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\ttransition({ options }) {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockRemoveDependencies({\n\t\t\t\t\tdependencies: [\n\t\t\t\t\t\t\"@types/eslint\",\n\t\t\t\t\t\t\"@typescript-eslint/eslint-plugin\",\n\t\t\t\t\t\t\"@typescript-eslint/parser\",\n\t\t\t\t\t\t\"eslint-plugin-deprecation\",\n\t\t\t\t\t\t\"eslint-plugin-eslint-comments\",\n\t\t\t\t\t\t\"eslint-plugin-no-only-tests\",\n\t\t\t\t\t\t\"yaml-eslint-parser\",\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockRemoveFiles({\n\t\t\t\t\tfiles: [\n\t\t\t\t\t\t\".eslintrc*\",\n\t\t\t\t\t\t\".eslintignore\",\n\t\t\t\t\t\toptions.type === \"commonjs\"\n\t\t\t\t\t\t\t? \"eslint.config.{cjs,js}\"\n\t\t\t\t\t\t\t: \"eslint.config.{cjs,mjs}\",\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockRemoveWorkflows({\n\t\t\t\t\tworkflows: [\"eslint\", \"lint\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n\nfunction groupByComment(rulesGroups: ExtensionRuleGroup[]) {\n\tconst byComment = new Map<string | undefined, ExtensionRuleGroup>();\n\tconst grouped: typeof rulesGroups = [];\n\n\tfor (const group of rulesGroups) {\n\t\tconst existing = byComment.get(group.comment);\n\n\t\tif (existing) {\n\t\t\texisting.entries = {\n\t\t\t\t...existing.entries,\n\t\t\t\t...group.entries,\n\t\t\t};\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tbyComment.set(group.comment, group);\n\t\t\tgrouped.push(group);\n\t\t}\n\t}\n\n\treturn grouped;\n}\n\nfunction printExtension(extension: Extension) {\n\treturn [\n\t\t\"{\",\n\t\textension.extends && `extends: [${extension.extends.join(\", \")}],`,\n\t\t`files: [${extension.files.map((glob) => JSON.stringify(glob)).join(\", \")}],`,\n\t\textension.languageOptions &&\n\t\t\t`languageOptions: ${JSON.stringify(extension.languageOptions).replace('\"import.meta.dirname\"', \"import.meta.dirname\")},`,\n\t\textension.linterOptions &&\n\t\t\t`linterOptions: ${JSON.stringify(extension.linterOptions)}`,\n\t\textension.rules && `rules: ${printExtensionRules(extension.rules)},`,\n\t\textension.settings &&\n\t\t\t`settings: ${JSON.stringify(sortKeys(extension.settings))},`,\n\t\t\"}\",\n\t]\n\t\t.filter(Boolean)\n\t\t.join(\" \");\n}\n\nfunction printExtensionRules(rules: ExtensionRules) {\n\tif (!Array.isArray(rules)) {\n\t\treturn JSON.stringify(rules);\n\t}\n\n\treturn [\n\t\t\"{\",\n\t\t...groupByComment(rules).flatMap((group) => [\n\t\t\tprintGroupComment(group.comment),\n\t\t\t...Object.entries(group.entries).map(\n\t\t\t\t([ruleName, options]) => `\"${ruleName}\": ${JSON.stringify(options)},`,\n\t\t\t),\n\t\t]),\n\t\t\"}\",\n\t].join(\"\");\n}\n\nfunction printGroupComment(comment: string | undefined) {\n\treturn comment ? `\\n\\n// ${comment.replaceAll(\"\\n\", \"\\n// \")}\\n` : \"\";\n}\n\nfunction processForSort(files: string[]) {\n\treturn files.join(\"\").replaceAll(\"{\", \"\");\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum16 from "bingo-stratum";
1
+ import * as bingo_stratum78 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockESLintComments.d.ts
4
- declare const blockESLintComments: bingo_stratum16.BlockWithoutAddons<{
4
+ declare const blockESLintComments: bingo_stratum78.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintComments.d.ts","names":[],"sources":["../../src/blocks/blockESLintComments.ts"],"sourcesContent":[],"mappings":";;;cAGa,qCAAmB;;;EAAnB,SAAA,EAAA,MAAA;;;;;;;;;;EAAmB,KAAA,EAAA"}
1
+ {"version":3,"file":"blockESLintComments.d.ts","names":[],"sources":["../../src/blocks/blockESLintComments.ts"],"sourcesContent":[],"mappings":";;;cAIa,qCAAmB;;;EAAnB,SAAA,EAAA,MAAA;;;;;;;;;;EAAmB,KAAA,EAAA"}
@@ -1,12 +1,16 @@
1
1
  import { base } from "../base.js";
2
+ import { getScriptFileExtension } from "./eslint/getScriptFileExtension.js";
2
3
  import { blockESLint } from "./blockESLint.js";
3
4
 
4
5
  //#region src/blocks/blockESLintComments.ts
5
6
  const blockESLintComments = base.createBlock({
6
7
  about: { name: "ESLint Comments Plugin" },
7
- produce() {
8
+ produce({ options }) {
8
9
  return { addons: [blockESLint({
9
- extensions: ["comments.recommended"],
10
+ extensions: [{
11
+ extends: ["comments.recommended"],
12
+ files: [getScriptFileExtension(options)]
13
+ }],
10
14
  imports: [{
11
15
  source: "@eslint-community/eslint-plugin-eslint-comments/configs",
12
16
  specifier: "comments"
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintComments.js","names":[],"sources":["../../src/blocks/blockESLintComments.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\n\nexport const blockESLintComments = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint Comments Plugin\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [\"comments.recommended\"],\n\t\t\t\t\timports: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsource: \"@eslint-community/eslint-plugin-eslint-comments/configs\",\n\t\t\t\t\t\t\tspecifier: \"comments\",\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":";;;;AAGA,MAAa,sBAAsB,KAAK,YAAY;CACnD,OAAO,EACN,MAAM,0BACN;CACD,UAAU;AACT,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY,CAAC,uBAAuB;GACpC,SAAS,CACR;IACC,QAAQ;IACR,WAAW;IACX,CACD;GACD,CAAC,CACF,EACD;;CAEF,CAAC"}
1
+ {"version":3,"file":"blockESLintComments.js","names":[],"sources":["../../src/blocks/blockESLintComments.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\nimport { getScriptFileExtension } from \"./eslint/getScriptFileExtension.js\";\n\nexport const blockESLintComments = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint Comments Plugin\",\n\t},\n\tproduce({ options }) {\n\t\treturn {\n\t\t\taddons: [\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: [\"comments.recommended\"],\n\t\t\t\t\t\t\tfiles: [getScriptFileExtension(options)],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\timports: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsource: \"@eslint-community/eslint-plugin-eslint-comments/configs\",\n\t\t\t\t\t\t\tspecifier: \"comments\",\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":";;;;;AAIA,MAAa,sBAAsB,KAAK,YAAY;CACnD,OAAO,EACN,MAAM,0BACN;CACD,QAAQ,EAAE,WAAW;AACpB,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY,CACX;IACC,SAAS,CAAC,uBAAuB;IACjC,OAAO,CAAC,uBAAuB,QAAQ,CAAC;IACxC,CACD;GACD,SAAS,CACR;IACC,QAAQ;IACR,WAAW;IACX,CACD;GACD,CAAC,CACF,EACD;;CAEF,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum12 from "bingo-stratum";
1
+ import * as bingo_stratum80 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockESLintJSDoc.d.ts
4
- declare const blockESLintJSDoc: bingo_stratum12.BlockWithoutAddons<{
4
+ declare const blockESLintJSDoc: bingo_stratum80.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintJSDoc.d.ts","names":[],"sources":["../../src/blocks/blockESLintJSDoc.ts"],"sourcesContent":[],"mappings":";;;cAGa,kCAAgB;;;EAAhB,SAAA,EAAA,MAAA;;;;;;;;;;EAAgB,KAAA,EAAA"}
1
+ {"version":3,"file":"blockESLintJSDoc.d.ts","names":[],"sources":["../../src/blocks/blockESLintJSDoc.ts"],"sourcesContent":[],"mappings":";;;cAIa,kCAAgB;;;EAAhB,SAAA,EAAA,MAAA;;;;;;;;;;EAAgB,KAAA,EAAA"}
@@ -1,16 +1,20 @@
1
1
  import { base } from "../base.js";
2
+ import { getScriptFileExtension } from "./eslint/getScriptFileExtension.js";
2
3
  import { blockESLint } from "./blockESLint.js";
3
4
 
4
5
  //#region src/blocks/blockESLintJSDoc.ts
5
6
  const blockESLintJSDoc = base.createBlock({
6
7
  about: { name: "ESLint JSDoc Plugin" },
7
- produce() {
8
+ produce({ options }) {
8
9
  return { addons: [blockESLint({
9
- extensions: [
10
- "jsdoc.configs[\"flat/contents-typescript-error\"]",
11
- "jsdoc.configs[\"flat/logical-typescript-error\"]",
12
- "jsdoc.configs[\"flat/stylistic-typescript-error\"]"
13
- ],
10
+ extensions: [{
11
+ extends: [
12
+ "jsdoc.configs[\"flat/contents-typescript-error\"]",
13
+ "jsdoc.configs[\"flat/logical-typescript-error\"]",
14
+ "jsdoc.configs[\"flat/stylistic-typescript-error\"]"
15
+ ],
16
+ files: [getScriptFileExtension(options)]
17
+ }],
14
18
  imports: [{
15
19
  source: "eslint-plugin-jsdoc",
16
20
  specifier: "jsdoc"
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintJSDoc.js","names":[],"sources":["../../src/blocks/blockESLintJSDoc.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\n\nexport const blockESLintJSDoc = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint JSDoc Plugin\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [\n\t\t\t\t\t\t'jsdoc.configs[\"flat/contents-typescript-error\"]',\n\t\t\t\t\t\t'jsdoc.configs[\"flat/logical-typescript-error\"]',\n\t\t\t\t\t\t'jsdoc.configs[\"flat/stylistic-typescript-error\"]',\n\t\t\t\t\t],\n\t\t\t\t\timports: [{ source: \"eslint-plugin-jsdoc\", specifier: \"jsdoc\" }],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":";;;;AAGA,MAAa,mBAAmB,KAAK,YAAY;CAChD,OAAO,EACN,MAAM,uBACN;CACD,UAAU;AACT,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY;IACX;IACA;IACA;IACA;GACD,SAAS,CAAC;IAAE,QAAQ;IAAuB,WAAW;IAAS,CAAC;GAChE,CAAC,CACF,EACD;;CAEF,CAAC"}
1
+ {"version":3,"file":"blockESLintJSDoc.js","names":[],"sources":["../../src/blocks/blockESLintJSDoc.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\nimport { getScriptFileExtension } from \"./eslint/getScriptFileExtension.js\";\n\nexport const blockESLintJSDoc = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint JSDoc Plugin\",\n\t},\n\tproduce({ options }) {\n\t\treturn {\n\t\t\taddons: [\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: [\n\t\t\t\t\t\t\t\t'jsdoc.configs[\"flat/contents-typescript-error\"]',\n\t\t\t\t\t\t\t\t'jsdoc.configs[\"flat/logical-typescript-error\"]',\n\t\t\t\t\t\t\t\t'jsdoc.configs[\"flat/stylistic-typescript-error\"]',\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfiles: [getScriptFileExtension(options)],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\timports: [{ source: \"eslint-plugin-jsdoc\", specifier: \"jsdoc\" }],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":";;;;;AAIA,MAAa,mBAAmB,KAAK,YAAY;CAChD,OAAO,EACN,MAAM,uBACN;CACD,QAAQ,EAAE,WAAW;AACpB,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY,CACX;IACC,SAAS;KACR;KACA;KACA;KACA;IACD,OAAO,CAAC,uBAAuB,QAAQ,CAAC;IACxC,CACD;GACD,SAAS,CAAC;IAAE,QAAQ;IAAuB,WAAW;IAAS,CAAC;GAChE,CAAC,CACF,EACD;;CAEF,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum13 from "bingo-stratum";
1
+ import * as bingo_stratum81 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockESLintJSONC.d.ts
4
- declare const blockESLintJSONC: bingo_stratum13.BlockWithoutAddons<{
4
+ declare const blockESLintJSONC: bingo_stratum81.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -6,7 +6,10 @@ const blockESLintJSONC = base.createBlock({
6
6
  about: { name: "ESLint JSONC Plugin" },
7
7
  produce() {
8
8
  return { addons: [blockESLint({
9
- extensions: [`jsonc.configs["flat/recommended-with-json"]`],
9
+ extensions: [{
10
+ extends: [`jsonc.configs["flat/recommended-with-json"]`],
11
+ files: ["**/*.json"]
12
+ }],
10
13
  imports: [{
11
14
  source: "eslint-plugin-jsonc",
12
15
  specifier: "jsonc"
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintJSONC.js","names":[],"sources":["../../src/blocks/blockESLintJSONC.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\n\nexport const blockESLintJSONC = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint JSONC Plugin\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [`jsonc.configs[\"flat/recommended-with-json\"]`],\n\t\t\t\t\timports: [{ source: \"eslint-plugin-jsonc\", specifier: \"jsonc\" }],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":";;;;AAGA,MAAa,mBAAmB,KAAK,YAAY;CAChD,OAAO,EACN,MAAM,uBACN;CACD,UAAU;AACT,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY,CAAC,8CAA8C;GAC3D,SAAS,CAAC;IAAE,QAAQ;IAAuB,WAAW;IAAS,CAAC;GAChE,CAAC,CACF,EACD;;CAEF,CAAC"}
1
+ {"version":3,"file":"blockESLintJSONC.js","names":[],"sources":["../../src/blocks/blockESLintJSONC.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\n\nexport const blockESLintJSONC = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint JSONC Plugin\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\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: [`jsonc.configs[\"flat/recommended-with-json\"]`],\n\t\t\t\t\t\t\tfiles: [\"**/*.json\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\timports: [{ source: \"eslint-plugin-jsonc\", specifier: \"jsonc\" }],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":";;;;AAGA,MAAa,mBAAmB,KAAK,YAAY;CAChD,OAAO,EACN,MAAM,uBACN;CACD,UAAU;AACT,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY,CACX;IACC,SAAS,CAAC,8CAA8C;IACxD,OAAO,CAAC,YAAY;IACpB,CACD;GACD,SAAS,CAAC;IAAE,QAAQ;IAAuB,WAAW;IAAS,CAAC;GAChE,CAAC,CACF,EACD;;CAEF,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum14 from "bingo-stratum";
1
+ import * as bingo_stratum82 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockESLintMarkdown.d.ts
4
- declare const blockESLintMarkdown: bingo_stratum14.BlockWithoutAddons<{
4
+ declare const blockESLintMarkdown: bingo_stratum82.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -6,7 +6,10 @@ const blockESLintMarkdown = base.createBlock({
6
6
  about: { name: "ESLint Markdown Plugin" },
7
7
  produce() {
8
8
  return { addons: [blockESLint({
9
- extensions: ["markdown.configs.recommended"],
9
+ extensions: [{
10
+ extends: ["markdown.configs.recommended"],
11
+ files: ["**/*.md"]
12
+ }],
10
13
  imports: [{
11
14
  source: "eslint-plugin-markdown",
12
15
  specifier: "markdown",
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintMarkdown.js","names":[],"sources":["../../src/blocks/blockESLintMarkdown.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\n\nexport const blockESLintMarkdown = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint Markdown Plugin\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [\"markdown.configs.recommended\"],\n\t\t\t\t\timports: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsource: \"eslint-plugin-markdown\",\n\t\t\t\t\t\t\tspecifier: \"markdown\",\n\t\t\t\t\t\t\ttypes: true,\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":";;;;AAGA,MAAa,sBAAsB,KAAK,YAAY;CACnD,OAAO,EACN,MAAM,0BACN;CACD,UAAU;AACT,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY,CAAC,+BAA+B;GAC5C,SAAS,CACR;IACC,QAAQ;IACR,WAAW;IACX,OAAO;IACP,CACD;GACD,CAAC,CACF,EACD;;CAEF,CAAC"}
1
+ {"version":3,"file":"blockESLintMarkdown.js","names":[],"sources":["../../src/blocks/blockESLintMarkdown.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\n\nexport const blockESLintMarkdown = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint Markdown Plugin\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\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: [\"markdown.configs.recommended\"],\n\t\t\t\t\t\t\tfiles: [\"**/*.md\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\timports: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsource: \"eslint-plugin-markdown\",\n\t\t\t\t\t\t\tspecifier: \"markdown\",\n\t\t\t\t\t\t\ttypes: true,\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":";;;;AAGA,MAAa,sBAAsB,KAAK,YAAY;CACnD,OAAO,EACN,MAAM,0BACN;CACD,UAAU;AACT,SAAO,EACN,QAAQ,CACP,YAAY;GACX,YAAY,CACX;IACC,SAAS,CAAC,+BAA+B;IACzC,OAAO,CAAC,UAAU;IAClB,CACD;GACD,SAAS,CACR;IACC,QAAQ;IACR,WAAW;IACX,OAAO;IACP,CACD;GACD,CAAC,CACF,EACD;;CAEF,CAAC"}
@@ -1,8 +1,8 @@
1
- import * as bingo_stratum15 from "bingo-stratum";
1
+ import * as bingo_stratum85 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockESLintMoreStyling.d.ts
4
4
  declare const stylisticComment = "Stylistic concerns that don't interfere with Prettier";
5
- declare const blockESLintMoreStyling: bingo_stratum15.BlockWithoutAddons<{
5
+ declare const blockESLintMoreStyling: bingo_stratum85.BlockWithoutAddons<{
6
6
  access: "public" | "restricted";
7
7
  description: string;
8
8
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintMoreStyling.d.ts","names":[],"sources":["../../src/blocks/blockESLintMoreStyling.ts"],"sourcesContent":[],"mappings":";;;cAGa,gBAAA;cAGA,wCAAsB;;EAHtB,WAAA,EAAA,MAAgB;EAGhB,SAAA,EAAA,MAAA;;;;;;;;;;EAAsB,KAAA,EAAA"}
1
+ {"version":3,"file":"blockESLintMoreStyling.d.ts","names":[],"sources":["../../src/blocks/blockESLintMoreStyling.ts"],"sourcesContent":[],"mappings":";;;cAIa,gBAAA;cAGA,wCAAsB;;EAHtB,WAAA,EAAA,MAAgB;EAGhB,SAAA,EAAA,MAAA;;;;;;;;;;EAAsB,KAAA,EAAA"}
@@ -1,23 +1,27 @@
1
1
  import { base } from "../base.js";
2
+ import { getScriptFileExtension } from "./eslint/getScriptFileExtension.js";
2
3
  import { blockESLint } from "./blockESLint.js";
3
4
 
4
5
  //#region src/blocks/blockESLintMoreStyling.ts
5
6
  const stylisticComment = "Stylistic concerns that don't interfere with Prettier";
6
7
  const blockESLintMoreStyling = base.createBlock({
7
8
  about: { name: "ESLint More Styling" },
8
- produce() {
9
- return { addons: [blockESLint({ rules: [{
10
- comment: stylisticComment,
11
- entries: {
12
- "logical-assignment-operators": [
13
- "error",
14
- "always",
15
- { enforceForIfStatements: true }
16
- ],
17
- "no-useless-rename": "error",
18
- "object-shorthand": "error",
19
- "operator-assignment": "error"
20
- }
9
+ produce({ options }) {
10
+ return { addons: [blockESLint({ extensions: [{
11
+ files: [getScriptFileExtension(options)],
12
+ rules: [{
13
+ comment: stylisticComment,
14
+ entries: {
15
+ "logical-assignment-operators": [
16
+ "error",
17
+ "always",
18
+ { enforceForIfStatements: true }
19
+ ],
20
+ "no-useless-rename": "error",
21
+ "object-shorthand": "error",
22
+ "operator-assignment": "error"
23
+ }
24
+ }]
21
25
  }] })] };
22
26
  }
23
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintMoreStyling.js","names":[],"sources":["../../src/blocks/blockESLintMoreStyling.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\n\nexport const stylisticComment =\n\t\"Stylistic concerns that don't interfere with Prettier\";\n\nexport const blockESLintMoreStyling = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint More Styling\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockESLint({\n\t\t\t\t\trules: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomment: stylisticComment,\n\t\t\t\t\t\t\tentries: {\n\t\t\t\t\t\t\t\t\"logical-assignment-operators\": [\n\t\t\t\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\t\t\t{ enforceForIfStatements: true },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"no-useless-rename\": \"error\",\n\t\t\t\t\t\t\t\t\"object-shorthand\": \"error\",\n\t\t\t\t\t\t\t\t\"operator-assignment\": \"error\",\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":";;;;AAGA,MAAa,mBACZ;AAED,MAAa,yBAAyB,KAAK,YAAY;CACtD,OAAO,EACN,MAAM,uBACN;CACD,UAAU;AACT,SAAO,EACN,QAAQ,CACP,YAAY,EACX,OAAO,CACN;GACC,SAAS;GACT,SAAS;IACR,gCAAgC;KAC/B;KACA;KACA,EAAE,wBAAwB,MAAM;KAChC;IACD,qBAAqB;IACrB,oBAAoB;IACpB,uBAAuB;IACvB;GACD,CACD,EACD,CAAC,CACF,EACD;;CAEF,CAAC"}
1
+ {"version":3,"file":"blockESLintMoreStyling.js","names":[],"sources":["../../src/blocks/blockESLintMoreStyling.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockESLint } from \"./blockESLint.js\";\nimport { getScriptFileExtension } from \"./eslint/getScriptFileExtension.js\";\n\nexport const stylisticComment =\n\t\"Stylistic concerns that don't interfere with Prettier\";\n\nexport const blockESLintMoreStyling = base.createBlock({\n\tabout: {\n\t\tname: \"ESLint More Styling\",\n\t},\n\tproduce({ options }) {\n\t\treturn {\n\t\t\taddons: [\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\tfiles: [getScriptFileExtension(options)],\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\tcomment: stylisticComment,\n\t\t\t\t\t\t\t\t\tentries: {\n\t\t\t\t\t\t\t\t\t\t\"logical-assignment-operators\": [\n\t\t\t\t\t\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\t\t\t\t\t\t\"always\",\n\t\t\t\t\t\t\t\t\t\t\t{ enforceForIfStatements: true },\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"no-useless-rename\": \"error\",\n\t\t\t\t\t\t\t\t\t\t\"object-shorthand\": \"error\",\n\t\t\t\t\t\t\t\t\t\t\"operator-assignment\": \"error\",\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}),\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":";;;;;AAIA,MAAa,mBACZ;AAED,MAAa,yBAAyB,KAAK,YAAY;CACtD,OAAO,EACN,MAAM,uBACN;CACD,QAAQ,EAAE,WAAW;AACpB,SAAO,EACN,QAAQ,CACP,YAAY,EACX,YAAY,CACX;GACC,OAAO,CAAC,uBAAuB,QAAQ,CAAC;GACxC,OAAO,CACN;IACC,SAAS;IACT,SAAS;KACR,gCAAgC;MAC/B;MACA;MACA,EAAE,wBAAwB,MAAM;MAChC;KACD,qBAAqB;KACrB,oBAAoB;KACpB,uBAAuB;KACvB;IACD,CACD;GACD,CACD,EACD,CAAC,CACF,EACD;;CAEF,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as bingo_stratum17 from "bingo-stratum";
1
+ import * as bingo_stratum87 from "bingo-stratum";
2
2
 
3
3
  //#region src/blocks/blockESLintNode.d.ts
4
- declare const blockESLintNode: bingo_stratum17.BlockWithoutAddons<{
4
+ declare const blockESLintNode: bingo_stratum87.BlockWithoutAddons<{
5
5
  access: "public" | "restricted";
6
6
  description: string;
7
7
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blockESLintNode.d.ts","names":[],"sources":["../../src/blocks/blockESLintNode.ts"],"sourcesContent":[],"mappings":";;;cAGa,iCAAe;;;EAAf,SAAA,EAAA,MAAA;;;;;;;;;;EAAe,KAAA,EAAA"}
1
+ {"version":3,"file":"blockESLintNode.d.ts","names":[],"sources":["../../src/blocks/blockESLintNode.ts"],"sourcesContent":[],"mappings":";;;cAIa,iCAAe;;;EAAf,SAAA,EAAA,MAAA;;;;;;;;;;EAAe,KAAA,EAAA"}