create-typescript-app 1.79.0 → 1.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +1 -1
  2. package/lib/create/createRerunDirectorySuggestion.d.ts +7 -0
  3. package/lib/create/createRerunDirectorySuggestion.js +8 -0
  4. package/lib/create/createRerunDirectorySuggestion.js.map +1 -0
  5. package/lib/create/createRerunSuggestion.js +3 -1
  6. package/lib/create/createRerunSuggestion.js.map +1 -1
  7. package/lib/index.d.ts +3 -0
  8. package/lib/index.js +1 -0
  9. package/lib/index.js.map +1 -1
  10. package/lib/next/base.d.ts +6 -0
  11. package/lib/next/base.js +5 -2
  12. package/lib/next/base.js.map +1 -1
  13. package/lib/next/blocks/blockAllContributors.d.ts +2 -0
  14. package/lib/next/blocks/blockAreTheTypesWrong.d.ts +2 -0
  15. package/lib/next/blocks/blockCSpell.d.ts +2 -0
  16. package/lib/next/blocks/blockContributingDocs.d.ts +2 -0
  17. package/lib/next/blocks/blockContributorCovenant.d.ts +2 -0
  18. package/lib/next/blocks/blockDevelopmentDocs.d.ts +2 -0
  19. package/lib/next/blocks/blockESLint.d.ts +2 -0
  20. package/lib/next/blocks/blockESLintComments.d.ts +2 -0
  21. package/lib/next/blocks/blockESLintJSDoc.d.ts +2 -0
  22. package/lib/next/blocks/blockESLintJSONC.d.ts +2 -0
  23. package/lib/next/blocks/blockESLintMarkdown.d.ts +2 -0
  24. package/lib/next/blocks/blockESLintMoreStyling.d.ts +2 -0
  25. package/lib/next/blocks/blockESLintNode.d.ts +2 -0
  26. package/lib/next/blocks/blockESLintPackageJson.d.ts +2 -0
  27. package/lib/next/blocks/blockESLintPerfectionist.d.ts +2 -0
  28. package/lib/next/blocks/blockESLintRegexp.d.ts +2 -0
  29. package/lib/next/blocks/blockESLintYML.d.ts +2 -0
  30. package/lib/next/blocks/blockExampleFiles.d.ts +2 -0
  31. package/lib/next/blocks/blockFunding.d.ts +2 -0
  32. package/lib/next/blocks/blockGitHubActionsCI.d.ts +2 -0
  33. package/lib/next/blocks/blockGitHubApps.d.ts +2 -0
  34. package/lib/next/blocks/blockGitHubIssueTemplates.d.ts +2 -0
  35. package/lib/next/blocks/blockGitHubPRTemplate.d.ts +2 -0
  36. package/lib/next/blocks/blockGitignore.d.ts +2 -0
  37. package/lib/next/blocks/blockKnip.d.ts +2 -0
  38. package/lib/next/blocks/blockMITLicense.d.ts +2 -0
  39. package/lib/next/blocks/blockMarkdownlint.d.ts +2 -0
  40. package/lib/next/blocks/blockNvmrc.d.ts +2 -0
  41. package/lib/next/blocks/blockPRCompliance.d.ts +2 -0
  42. package/lib/next/blocks/blockPackageJson.d.ts +2 -0
  43. package/lib/next/blocks/blockPnpmDedupe.d.ts +2 -0
  44. package/lib/next/blocks/blockPrettier.d.ts +2 -0
  45. package/lib/next/blocks/blockPrettierPluginCurly.d.ts +2 -0
  46. package/lib/next/blocks/blockPrettierPluginPackageJson.d.ts +2 -0
  47. package/lib/next/blocks/blockPrettierPluginSh.d.ts +2 -0
  48. package/lib/next/blocks/blockREADME.d.ts +2 -0
  49. package/lib/next/blocks/blockREADME.js +5 -1
  50. package/lib/next/blocks/blockREADME.js.map +1 -1
  51. package/lib/next/blocks/blockReleaseIt.d.ts +2 -0
  52. package/lib/next/blocks/blockRenovate.d.ts +2 -0
  53. package/lib/next/blocks/blockRepositoryBranchRuleset.d.ts +2 -0
  54. package/lib/next/blocks/blockRepositoryLabels.d.ts +2 -0
  55. package/lib/next/blocks/blockRepositorySecrets.d.ts +2 -0
  56. package/lib/next/blocks/blockRepositorySettings.d.ts +2 -0
  57. package/lib/next/blocks/blockSecurityDocs.d.ts +2 -0
  58. package/lib/next/blocks/blockTSup.d.ts +2 -0
  59. package/lib/next/blocks/blockTemplatedBy.d.ts +2 -0
  60. package/lib/next/blocks/blockTypeScript.d.ts +2 -0
  61. package/lib/next/blocks/blockVSCode.d.ts +2 -0
  62. package/lib/next/blocks/blockVitest.d.ts +2 -0
  63. package/lib/next/blocks/packageData.js +2 -7
  64. package/lib/next/blocks/packageData.js.map +1 -1
  65. package/lib/next/blocks/sourcePackageJson.d.ts +162 -0
  66. package/lib/next/blocks/sourcePackageJson.js +10 -0
  67. package/lib/next/blocks/sourcePackageJson.js.map +1 -0
  68. package/lib/next/presets/index.d.ts +5 -0
  69. package/lib/next/presets/index.js +4 -0
  70. package/lib/next/presets/index.js.map +1 -0
  71. package/lib/next/{presetCommon.d.ts → presets/presetCommon.d.ts} +6 -0
  72. package/lib/next/{presetCommon.js → presets/presetCommon.js} +4 -4
  73. package/lib/next/presets/presetCommon.js.map +1 -0
  74. package/lib/next/{presetEverything.d.ts → presets/presetEverything.d.ts} +6 -0
  75. package/lib/next/presets/presetEverything.js +59 -0
  76. package/lib/next/presets/presetEverything.js.map +1 -0
  77. package/lib/next/{presetMinimal.d.ts → presets/presetMinimal.d.ts} +6 -0
  78. package/lib/next/presets/presetMinimal.js +57 -0
  79. package/lib/next/presets/presetMinimal.js.map +1 -0
  80. package/lib/next/readDescription.d.ts +7 -0
  81. package/lib/next/readDescription.js +10 -0
  82. package/lib/next/readDescription.js.map +1 -0
  83. package/lib/next/runCreateEnginePreset.js +3 -3
  84. package/lib/next/runCreateEnginePreset.js.map +1 -1
  85. package/lib/next/template.d.ts +6 -0
  86. package/lib/next/template.js +3 -3
  87. package/lib/next/template.js.map +1 -1
  88. package/lib/shared/options/args.d.ts +14 -2
  89. package/lib/shared/options/args.js +18 -2
  90. package/lib/shared/options/args.js.map +1 -1
  91. package/lib/shared/options/createOptionDefaults/index.d.ts +2 -0
  92. package/lib/shared/options/createOptionDefaults/index.js +2 -1
  93. package/lib/shared/options/createOptionDefaults/index.js.map +1 -1
  94. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.d.ts +2 -0
  95. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js +3 -1
  96. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js.map +1 -1
  97. package/lib/shared/options/exclusionKeys.js +3 -3
  98. package/lib/shared/options/exclusionKeys.js.map +1 -1
  99. package/lib/shared/options/logInferredOptions.js +6 -0
  100. package/lib/shared/options/logInferredOptions.js.map +1 -1
  101. package/lib/shared/options/optionsSchema.d.ts +8 -8
  102. package/lib/shared/options/optionsSchema.js +1 -1
  103. package/lib/shared/options/optionsSchema.js.map +1 -1
  104. package/lib/shared/options/readLogoSizing.d.ts +7 -0
  105. package/lib/shared/options/readLogoSizing.js +29 -0
  106. package/lib/shared/options/readLogoSizing.js.map +1 -0
  107. package/lib/shared/options/readOptions.js +3 -1
  108. package/lib/shared/options/readOptions.js.map +1 -1
  109. package/lib/shared/types.d.ts +3 -1
  110. package/lib/steps/finalizeDependencies.js +1 -1
  111. package/lib/steps/finalizeDependencies.js.map +1 -1
  112. package/lib/steps/uninstallPackages.js +1 -0
  113. package/lib/steps/uninstallPackages.js.map +1 -1
  114. package/lib/steps/updateReadme.js +1 -1
  115. package/lib/steps/updateReadme.js.map +1 -1
  116. package/lib/steps/writing/creation/createESLintConfig.js +2 -2
  117. package/lib/steps/writing/creation/createESLintConfig.js.map +1 -1
  118. package/lib/steps/writing/creation/index.js +3 -3
  119. package/lib/steps/writing/creation/index.js.map +1 -1
  120. package/package.json +3 -2
  121. package/lib/next/presetCommon.js.map +0 -1
  122. package/lib/next/presetEverything.js +0 -59
  123. package/lib/next/presetEverything.js.map +0 -1
  124. package/lib/next/presetMinimal.js +0 -57
  125. package/lib/next/presetMinimal.js.map +0 -1
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  <img alt="💪 TypeScript: Strict" src="https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg" />
16
16
  </p>
17
17
 
18
- <img align="right" alt="Project logo: the TypeScript blue square with rounded corners, but a plus sign instead of 'TS'" src="./docs/create-typescript-app.png">
18
+ <img align="right" alt="Project logo: the TypeScript blue square with rounded corners, but a plus sign instead of 'TS'" height="128" src="./docs/create-typescript-app.png" width="128">
19
19
 
20
20
  `create-typescript-app` is a one-stop-shop solution to set up a new or existing repository with the latest and greatest TypeScript tooling.
21
21
  It includes options not just for building and testing but also GitHub repository templates, contributor recognition, automated release management, and more.
@@ -0,0 +1,7 @@
1
+ import { Options } from '../shared/types.js';
2
+ import 'zod';
3
+ import '../shared/codes.js';
4
+
5
+ declare function createRerunDirectorySuggestion(options: Partial<Options>): string | undefined;
6
+
7
+ export { createRerunDirectorySuggestion };
@@ -0,0 +1,8 @@
1
+ function createRerunDirectorySuggestion(options) {
2
+ const defaultValue = options.mode === "create" ? options.repository : ".";
3
+ return options.directory === defaultValue ? void 0 : options.directory;
4
+ }
5
+ export {
6
+ createRerunDirectorySuggestion
7
+ };
8
+ //# sourceMappingURL=createRerunDirectorySuggestion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/create/createRerunDirectorySuggestion.ts"],"sourcesContent":["import { Options } from \"../shared/types.js\";\n\nexport function createRerunDirectorySuggestion(options: Partial<Options>) {\n\tconst defaultValue = options.mode === \"create\" ? options.repository : \".\";\n\n\treturn options.directory === defaultValue ? undefined : options.directory;\n}\n"],"mappings":"AAEO,SAAS,+BAA+B,SAA2B;AACzE,QAAM,eAAe,QAAQ,SAAS,WAAW,QAAQ,aAAa;AAEtE,SAAO,QAAQ,cAAc,eAAe,SAAY,QAAQ;AACjE;","names":[]}
@@ -2,6 +2,7 @@ import { allArgOptions } from "../shared/options/args.js";
2
2
  import {
3
3
  getExclusions
4
4
  } from "../shared/options/exclusionKeys.js";
5
+ import { createRerunDirectorySuggestion } from "./createRerunDirectorySuggestion.js";
5
6
  function getFirstMatchingArg(key) {
6
7
  return Object.keys(allArgOptions).find(
7
8
  (arg) => arg.replaceAll("-", "") === key.toLowerCase()
@@ -27,7 +28,8 @@ function createRerunSuggestion(options) {
27
28
  ...options.offline && {
28
29
  skipAllContributorsApi: void 0,
29
30
  skipGitHubApi: void 0
30
- }
31
+ },
32
+ directory: createRerunDirectorySuggestion(options)
31
33
  };
32
34
  const args = Object.entries(optionsNormalized).sort(
33
35
  ([a], [b]) => a === "base" ? -1 : b === "base" ? 1 : a.localeCompare(b)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/create/createRerunSuggestion.ts"],"sourcesContent":["import { allArgOptions } from \"../shared/options/args.js\";\nimport {\n\tExclusionKey,\n\tgetExclusions,\n} from \"../shared/options/exclusionKeys.js\";\nimport { Options } from \"../shared/types.js\";\n\nfunction getFirstMatchingArg(key: string) {\n\treturn Object.keys(allArgOptions).find(\n\t\t(arg) => arg.replaceAll(\"-\", \"\") === key.toLowerCase(),\n\t);\n}\n\nconst defaultValues = new Map([[\"access\", \"public\"]]);\n\nexport function createRerunSuggestion(options: Partial<Options>): string {\n\tconst optionsNormalized = {\n\t\t...options,\n\t\temail: undefined,\n\t\t...(options.email && {\n\t\t\temailGitHub: options.email.github,\n\t\t\temailNpm: options.email.npm,\n\t\t}),\n\t\t...(options.guide\n\t\t\t? {\n\t\t\t\t\tguide: options.guide.href,\n\t\t\t\t\tguideTitle: options.guide.title,\n\t\t\t\t}\n\t\t\t: { guide: undefined }),\n\t\t...(options.logo\n\t\t\t? {\n\t\t\t\t\tlogo: options.logo.src,\n\t\t\t\t\tlogoAlt: options.logo.alt,\n\t\t\t\t}\n\t\t\t: { logo: undefined }),\n\t\t...(options.offline && {\n\t\t\tskipAllContributorsApi: undefined,\n\t\t\tskipGitHubApi: undefined,\n\t\t}),\n\t};\n\n\tconst args = Object.entries(optionsNormalized)\n\t\t// Sort so the base is first, then the rest are sorted alphabetically\n\t\t.sort(([a], [b]) =>\n\t\t\ta === \"base\" ? -1 : b === \"base\" ? 1 : a.localeCompare(b),\n\t\t)\n\t\t// Filter out entries with an excluded key or a default or falsy value\n\t\t.filter(\n\t\t\t([key, value]) =>\n\t\t\t\tgetExclusions(options, optionsNormalized.base)[key as ExclusionKey] ==\n\t\t\t\t\tundefined &&\n\t\t\t\t!!value &&\n\t\t\t\tvalue !== defaultValues.get(key),\n\t\t)\n\t\t.map(([key, value]) => {\n\t\t\treturn `--${getFirstMatchingArg(key)}${stringifyValue(value)}`;\n\t\t})\n\t\t.join(\" \");\n\n\treturn [\"npx create-typescript-app\", args].filter(Boolean).join(\" \");\n}\n\nfunction stringifyValue(\n\tvalue: boolean | string | string[] | undefined,\n): string {\n\tif (Array.isArray(value)) {\n\t\treturn stringifyValue(value.join(\" \"));\n\t}\n\n\tif (typeof value === \"boolean\" && value) {\n\t\treturn \"\";\n\t}\n\n\tconst valueStringified = `${value}`;\n\n\treturn valueStringified.includes(\" \")\n\t\t? ` \"${valueStringified}\"`\n\t\t: ` ${valueStringified}`;\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAC9B;AAAA,EAEC;AAAA,OACM;AAGP,SAAS,oBAAoB,KAAa;AACzC,SAAO,OAAO,KAAK,aAAa,EAAE;AAAA,IACjC,CAAC,QAAQ,IAAI,WAAW,KAAK,EAAE,MAAM,IAAI,YAAY;AAAA,EACtD;AACD;AAEA,MAAM,gBAAgB,oBAAI,IAAI,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC;AAE7C,SAAS,sBAAsB,SAAmC;AACxE,QAAM,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,OAAO;AAAA,IACP,GAAI,QAAQ,SAAS;AAAA,MACpB,aAAa,QAAQ,MAAM;AAAA,MAC3B,UAAU,QAAQ,MAAM;AAAA,IACzB;AAAA,IACA,GAAI,QAAQ,QACT;AAAA,MACA,OAAO,QAAQ,MAAM;AAAA,MACrB,YAAY,QAAQ,MAAM;AAAA,IAC3B,IACC,EAAE,OAAO,OAAU;AAAA,IACtB,GAAI,QAAQ,OACT;AAAA,MACA,MAAM,QAAQ,KAAK;AAAA,MACnB,SAAS,QAAQ,KAAK;AAAA,IACvB,IACC,EAAE,MAAM,OAAU;AAAA,IACrB,GAAI,QAAQ,WAAW;AAAA,MACtB,wBAAwB;AAAA,MACxB,eAAe;AAAA,IAChB;AAAA,EACD;AAEA,QAAM,OAAO,OAAO,QAAQ,iBAAiB,EAE3C;AAAA,IAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MACb,MAAM,SAAS,KAAK,MAAM,SAAS,IAAI,EAAE,cAAc,CAAC;AAAA,EACzD,EAEC;AAAA,IACA,CAAC,CAAC,KAAK,KAAK,MACX,cAAc,SAAS,kBAAkB,IAAI,EAAE,GAAmB,KACjE,UACD,CAAC,CAAC,SACF,UAAU,cAAc,IAAI,GAAG;AAAA,EACjC,EACC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACtB,WAAO,KAAK,oBAAoB,GAAG,CAAC,GAAG,eAAe,KAAK,CAAC;AAAA,EAC7D,CAAC,EACA,KAAK,GAAG;AAEV,SAAO,CAAC,6BAA6B,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AACpE;AAEA,SAAS,eACR,OACS;AACT,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,eAAe,MAAM,KAAK,GAAG,CAAC;AAAA,EACtC;AAEA,MAAI,OAAO,UAAU,aAAa,OAAO;AACxC,WAAO;AAAA,EACR;AAEA,QAAM,mBAAmB,GAAG,KAAK;AAEjC,SAAO,iBAAiB,SAAS,GAAG,IACjC,KAAK,gBAAgB,MACrB,IAAI,gBAAgB;AACxB;","names":[]}
1
+ {"version":3,"sources":["../../src/create/createRerunSuggestion.ts"],"sourcesContent":["import { allArgOptions } from \"../shared/options/args.js\";\nimport {\n\tExclusionKey,\n\tgetExclusions,\n} from \"../shared/options/exclusionKeys.js\";\nimport { Options } from \"../shared/types.js\";\nimport { createRerunDirectorySuggestion } from \"./createRerunDirectorySuggestion.js\";\n\nfunction getFirstMatchingArg(key: string) {\n\treturn Object.keys(allArgOptions).find(\n\t\t(arg) => arg.replaceAll(\"-\", \"\") === key.toLowerCase(),\n\t);\n}\n\nconst defaultValues = new Map([[\"access\", \"public\"]]);\n\nexport function createRerunSuggestion(options: Partial<Options>): string {\n\tconst optionsNormalized = {\n\t\t...options,\n\t\temail: undefined,\n\t\t...(options.email && {\n\t\t\temailGitHub: options.email.github,\n\t\t\temailNpm: options.email.npm,\n\t\t}),\n\t\t...(options.guide\n\t\t\t? {\n\t\t\t\t\tguide: options.guide.href,\n\t\t\t\t\tguideTitle: options.guide.title,\n\t\t\t\t}\n\t\t\t: { guide: undefined }),\n\t\t...(options.logo\n\t\t\t? {\n\t\t\t\t\tlogo: options.logo.src,\n\t\t\t\t\tlogoAlt: options.logo.alt,\n\t\t\t\t}\n\t\t\t: { logo: undefined }),\n\t\t...(options.offline && {\n\t\t\tskipAllContributorsApi: undefined,\n\t\t\tskipGitHubApi: undefined,\n\t\t}),\n\t\tdirectory: createRerunDirectorySuggestion(options),\n\t};\n\n\tconst args = Object.entries(optionsNormalized)\n\t\t// Sort so the base is first, then the rest are sorted alphabetically\n\t\t.sort(([a], [b]) =>\n\t\t\ta === \"base\" ? -1 : b === \"base\" ? 1 : a.localeCompare(b),\n\t\t)\n\t\t// Filter out entries with an excluded key or a default or falsy value\n\t\t.filter(\n\t\t\t([key, value]) =>\n\t\t\t\tgetExclusions(options, optionsNormalized.base)[key as ExclusionKey] ==\n\t\t\t\t\tundefined &&\n\t\t\t\t!!value &&\n\t\t\t\tvalue !== defaultValues.get(key),\n\t\t)\n\t\t.map(([key, value]) => {\n\t\t\treturn `--${getFirstMatchingArg(key)}${stringifyValue(value)}`;\n\t\t})\n\t\t.join(\" \");\n\n\treturn [\"npx create-typescript-app\", args].filter(Boolean).join(\" \");\n}\n\nfunction stringifyValue(\n\tvalue: boolean | string | string[] | undefined,\n): string {\n\tif (Array.isArray(value)) {\n\t\treturn stringifyValue(value.join(\" \"));\n\t}\n\n\tif (typeof value === \"boolean\" && value) {\n\t\treturn \"\";\n\t}\n\n\tconst valueStringified = `${value}`;\n\n\treturn valueStringified.includes(\" \")\n\t\t? ` \"${valueStringified}\"`\n\t\t: ` ${valueStringified}`;\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAC9B;AAAA,EAEC;AAAA,OACM;AAEP,SAAS,sCAAsC;AAE/C,SAAS,oBAAoB,KAAa;AACzC,SAAO,OAAO,KAAK,aAAa,EAAE;AAAA,IACjC,CAAC,QAAQ,IAAI,WAAW,KAAK,EAAE,MAAM,IAAI,YAAY;AAAA,EACtD;AACD;AAEA,MAAM,gBAAgB,oBAAI,IAAI,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC;AAE7C,SAAS,sBAAsB,SAAmC;AACxE,QAAM,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,OAAO;AAAA,IACP,GAAI,QAAQ,SAAS;AAAA,MACpB,aAAa,QAAQ,MAAM;AAAA,MAC3B,UAAU,QAAQ,MAAM;AAAA,IACzB;AAAA,IACA,GAAI,QAAQ,QACT;AAAA,MACA,OAAO,QAAQ,MAAM;AAAA,MACrB,YAAY,QAAQ,MAAM;AAAA,IAC3B,IACC,EAAE,OAAO,OAAU;AAAA,IACtB,GAAI,QAAQ,OACT;AAAA,MACA,MAAM,QAAQ,KAAK;AAAA,MACnB,SAAS,QAAQ,KAAK;AAAA,IACvB,IACC,EAAE,MAAM,OAAU;AAAA,IACrB,GAAI,QAAQ,WAAW;AAAA,MACtB,wBAAwB;AAAA,MACxB,eAAe;AAAA,IAChB;AAAA,IACA,WAAW,+BAA+B,OAAO;AAAA,EAClD;AAEA,QAAM,OAAO,OAAO,QAAQ,iBAAiB,EAE3C;AAAA,IAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MACb,MAAM,SAAS,KAAK,MAAM,SAAS,IAAI,EAAE,cAAc,CAAC;AAAA,EACzD,EAEC;AAAA,IACA,CAAC,CAAC,KAAK,KAAK,MACX,cAAc,SAAS,kBAAkB,IAAI,EAAE,GAAmB,KACjE,UACD,CAAC,CAAC,SACF,UAAU,cAAc,IAAI,GAAG;AAAA,EACjC,EACC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACtB,WAAO,KAAK,oBAAoB,GAAG,CAAC,GAAG,eAAe,KAAK,CAAC;AAAA,EAC7D,CAAC,EACA,KAAK,GAAG;AAEV,SAAO,CAAC,6BAA6B,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AACpE;AAEA,SAAS,eACR,OACS;AACT,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,eAAe,MAAM,KAAK,GAAG,CAAC;AAAA,EACtC;AAEA,MAAI,OAAO,UAAU,aAAa,OAAO;AACxC,WAAO;AAAA,EACR;AAEA,QAAM,mBAAmB,GAAG,KAAK;AAEjC,SAAO,iBAAiB,SAAS,GAAG,IACjC,KAAK,gBAAgB,MACrB,IAAI,gBAAgB;AACxB;","names":[]}
package/lib/index.d.ts CHANGED
@@ -41,6 +41,9 @@ export { blockTSup } from './next/blocks/blockTSup.js';
41
41
  export { blockTypeScript } from './next/blocks/blockTypeScript.js';
42
42
  export { blockVitest } from './next/blocks/blockVitest.js';
43
43
  export { blockVSCode } from './next/blocks/blockVSCode.js';
44
+ export { presetCommon } from './next/presets/presetCommon.js';
45
+ export { presetEverything } from './next/presets/presetEverything.js';
46
+ export { presetMinimal } from './next/presets/presetMinimal.js';
44
47
  export { default } from './next/template.js';
45
48
  export { GreetOptions } from './types.js';
46
49
  import 'create';
package/lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./greet.js";
2
2
  export * from "./next/blocks/index.js";
3
+ export * from "./next/presets/index.js";
3
4
  import { default as default2 } from "./next/template.js";
4
5
  export * from "./types.js";
5
6
  export {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./greet.js\";\n\n// If you're using create-typescript-app as a template, ignore these.\n// They're plumbing for the create engine. :)\nexport * from \"./next/blocks/index.js\";\nexport { default } from \"./next/template.js\";\n\nexport * from \"./types.js\";\n"],"mappings":"AAAA,cAAc;AAId,cAAc;AACd,SAAS,WAAAA,gBAAe;AAExB,cAAc;","names":["default"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./greet.js\";\n\n// If you're using create-typescript-app as a template, ignore these.\n// They're plumbing for the create engine. :)\nexport * from \"./next/blocks/index.js\";\nexport * from \"./next/presets/index.js\";\nexport { default } from \"./next/template.js\";\n\nexport * from \"./types.js\";\n"],"mappings":"AAAA,cAAc;AAId,cAAc;AACd,cAAc;AACd,SAAS,WAAAA,gBAAe;AAExB,cAAc;","names":["default"]}
@@ -59,13 +59,19 @@ declare const base: create.Base<{
59
59
  keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
60
60
  logo: z.ZodOptional<z.ZodObject<{
61
61
  alt: z.ZodString;
62
+ height: z.ZodOptional<z.ZodNumber>;
62
63
  src: z.ZodString;
64
+ width: z.ZodOptional<z.ZodNumber>;
63
65
  }, "strip", z.ZodTypeAny, {
64
66
  alt: string;
65
67
  src: string;
68
+ height?: number | undefined;
69
+ width?: number | undefined;
66
70
  }, {
67
71
  alt: string;
68
72
  src: string;
73
+ height?: number | undefined;
74
+ width?: number | undefined;
69
75
  }>>;
70
76
  node: z.ZodOptional<z.ZodObject<{
71
77
  minimum: z.ZodString;
package/lib/next/base.js CHANGED
@@ -15,6 +15,7 @@ import { readFunding } from "../shared/options/createOptionDefaults/readFunding.
15
15
  import { readGuide } from "../shared/options/createOptionDefaults/readGuide.js";
16
16
  import { readPackageData } from "../shared/packages.js";
17
17
  import { tryCatchLazyValueAsync } from "../shared/tryCatchLazyValueAsync.js";
18
+ import { readDescription } from "./readDescription.js";
18
19
  import { readDocumentation } from "./readDocumentation.js";
19
20
  import { swallowError } from "./utils/swallowError.js";
20
21
  const base = createBase({
@@ -58,7 +59,9 @@ const base = createBase({
58
59
  keywords: z.array(z.string()).optional().describe("any number of keywords to include in `package.json`"),
59
60
  logo: z.object({
60
61
  alt: z.string(),
61
- src: z.string()
62
+ height: z.number().optional(),
63
+ src: z.string(),
64
+ width: z.number().optional()
62
65
  }).optional().describe(
63
66
  "local image file in the repository to display near the top of the README.md"
64
67
  ),
@@ -122,7 +125,7 @@ const base = createBase({
122
125
  author,
123
126
  bin: async () => (await packageData()).bin,
124
127
  contributors: allContributors,
125
- description: async () => (await packageData()).description,
128
+ description: async () => await readDescription(packageData),
126
129
  documentation,
127
130
  email: async () => readEmails(npmDefaults, packageAuthor),
128
131
  funding: readFunding,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/base.ts"],"sourcesContent":["import { BaseOptionsFor, createBase } from \"create\";\nimport { execaCommand } from \"execa\";\nimport gitRemoteOriginUrl from \"git-remote-origin-url\";\nimport gitUrlParse from \"git-url-parse\";\nimport { inputFromFile } from \"input-from-file\";\nimport { inputFromFileJSON } from \"input-from-file-json\";\nimport { inputFromScript } from \"input-from-script\";\nimport lazyValue from \"lazy-value\";\nimport npmUser from \"npm-user\";\nimport { z } from \"zod\";\n\nimport { parsePackageAuthor } from \"../shared/options/createOptionDefaults/parsePackageAuthor.js\";\nimport { readDefaultsFromReadme } from \"../shared/options/createOptionDefaults/readDefaultsFromReadme.js\";\nimport { readEmails } from \"../shared/options/createOptionDefaults/readEmails.js\";\nimport { readFunding } from \"../shared/options/createOptionDefaults/readFunding.js\";\nimport { readGuide } from \"../shared/options/createOptionDefaults/readGuide.js\";\nimport { readPackageData } from \"../shared/packages.js\";\nimport { tryCatchLazyValueAsync } from \"../shared/tryCatchLazyValueAsync.js\";\nimport { AllContributorsData } from \"../shared/types.js\";\nimport { readDocumentation } from \"./readDocumentation.js\";\nimport { swallowError } from \"./utils/swallowError.js\";\n\nexport const base = createBase({\n\toptions: {\n\t\taccess: z\n\t\t\t.union([z.literal(\"public\"), z.literal(\"restricted\")])\n\t\t\t.optional()\n\t\t\t.describe(\"which `npm publish --access` to release npm packages with\"),\n\t\tauthor: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"username on npm to publish packages under\"),\n\t\tbin: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe('value to set in `package.json`\\'s `\"bin\"` property.'),\n\t\tcontributors: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tavatar_url: z.string(),\n\t\t\t\t\tcontributions: z.array(z.string()),\n\t\t\t\t\tlogin: z.string(),\n\t\t\t\t\tname: z.string(),\n\t\t\t\t\tprofile: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional()\n\t\t\t.describe(\"AllContributors contributors to store in .all-contributorsrc\"),\n\t\tdescription: z\n\t\t\t.string()\n\t\t\t.describe(\"sentence case description of the repository\"),\n\t\tdirectory: z.string(),\n\t\tdocumentation: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"any additional docs to add to .github/DEVELOPMENT.md\"),\n\t\temail: z\n\t\t\t.union([\n\t\t\t\tz.string(),\n\t\t\t\tz.object({\n\t\t\t\t\tgithub: z.string(),\n\t\t\t\t\tnpm: z.string(),\n\t\t\t\t}),\n\t\t\t])\n\t\t\t.transform((email) =>\n\t\t\t\ttypeof email === \"string\" ? { github: email, npm: email } : email,\n\t\t\t)\n\t\t\t.describe(\n\t\t\t\t\"email address to be listed as the point of contact in docs and packages\",\n\t\t\t),\n\t\tfunding: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"GitHub organization or username to mention in `funding.yml`\"),\n\t\tguide: z\n\t\t\t.object({\n\t\t\t\thref: z.string(),\n\t\t\t\ttitle: z.string(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"link to a contribution guide to place at the top of development docs\",\n\t\t\t),\n\t\thideTemplatedBy: z\n\t\t\t.boolean()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"whether to hide the 'created by ...' notice at the bottom of the README.md\",\n\t\t\t),\n\t\tkeywords: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.describe(\"any number of keywords to include in `package.json`\"),\n\t\tlogo: z\n\t\t\t.object({\n\t\t\t\talt: z.string(),\n\t\t\t\tsrc: z.string(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"local image file in the repository to display near the top of the README.md\",\n\t\t\t),\n\t\tnode: z\n\t\t\t.object({\n\t\t\t\tminimum: z.string(),\n\t\t\t\tpinned: z.string().optional(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\"node.js engine version(s) to pin and require a minimum of\"),\n\t\towner: z\n\t\t\t.string()\n\t\t\t.describe(\"GitHub organization or user the repository is underneath\"),\n\t\tpackageData: z\n\t\t\t.object({\n\t\t\t\tdependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\tdevDependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\tscripts: z.record(z.string(), z.string()).optional(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\"additional properties to include in `package.json`\"),\n\t\trepository: z\n\t\t\t.string()\n\t\t\t.describe(\"'Sentence case.' description of the repository\"),\n\t\ttitle: z.string().describe(\"'Title Case' title for the repository\"),\n\t\tversion: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"package version to publish as and store in `package.json`\"),\n\t},\n\tproduce({ options, take }) {\n\t\tconst allContributors = lazyValue(async () => {\n\t\t\tconst contributions = (await take(inputFromFileJSON, {\n\t\t\t\tfilePath: \".all-contributorsrc\",\n\t\t\t})) as AllContributorsData;\n\n\t\t\treturn contributions.contributors;\n\t\t});\n\n\t\tconst documentation = lazyValue(async () => readDocumentation(take));\n\n\t\tconst nvmrc = lazyValue(\n\t\t\tasync () =>\n\t\t\t\tawait take(inputFromFile, {\n\t\t\t\t\tfilePath: \".nvmrc\",\n\t\t\t\t}),\n\t\t);\n\n\t\tconst githubCliUser = lazyValue(async () => {\n\t\t\treturn swallowError(\n\t\t\t\tawait take(inputFromScript, {\n\t\t\t\t\tcommand: \"gh config get user -h github.com\",\n\t\t\t\t}),\n\t\t\t)?.stdout?.toString();\n\t\t});\n\n\t\t// TODO: Make these all use take\n\n\t\tconst gitDefaults = tryCatchLazyValueAsync(async () =>\n\t\t\tgitUrlParse(await gitRemoteOriginUrl()),\n\t\t);\n\n\t\tconst npmDefaults = tryCatchLazyValueAsync(async () => {\n\t\t\tconst whoami = (await execaCommand(`npm whoami`)).stdout;\n\t\t\treturn whoami ? await npmUser(whoami) : undefined;\n\t\t});\n\n\t\tconst packageData = lazyValue(readPackageData);\n\t\tconst packageAuthor = lazyValue(async () =>\n\t\t\tparsePackageAuthor(await packageData()),\n\t\t);\n\n\t\tconst author = lazyValue(async () =>\n\t\t\t(\n\t\t\t\t(await packageAuthor()).author ??\n\t\t\t\t(await npmDefaults())?.name ??\n\t\t\t\toptions.owner\n\t\t\t)?.toLowerCase(),\n\t\t);\n\n\t\tconst node = lazyValue(async () => {\n\t\t\tconst { engines } = await packageData();\n\n\t\t\treturn {\n\t\t\t\tminimum:\n\t\t\t\t\t(engines?.node && /[\\d+.]+/.exec(engines.node))?.[0] ?? \"18.3.0\",\n\t\t\t\tpinned: swallowError(await nvmrc()) ?? \"20.18.0\",\n\t\t\t};\n\t\t});\n\n\t\tconst version = lazyValue(async () => (await packageData()).version);\n\n\t\treturn {\n\t\t\tauthor,\n\t\t\tbin: async () => (await packageData()).bin,\n\t\t\tcontributors: allContributors,\n\t\t\tdescription: async () => (await packageData()).description,\n\t\t\tdocumentation,\n\t\t\temail: async () => readEmails(npmDefaults, packageAuthor),\n\t\t\tfunding: readFunding,\n\t\t\tguide: readGuide,\n\t\t\tlogin: author,\n\t\t\tnode,\n\t\t\towner: async () =>\n\t\t\t\t(await gitDefaults())?.organization ??\n\t\t\t\t(await packageAuthor()).author ??\n\t\t\t\t(await githubCliUser()),\n\t\t\tpackageData: async () => {\n\t\t\t\tconst original = await packageData();\n\n\t\t\t\treturn {\n\t\t\t\t\tdependencies: original.dependencies,\n\t\t\t\t\tdevDependencies: original.devDependencies,\n\t\t\t\t\tscripts: original.scripts,\n\t\t\t\t};\n\t\t\t},\n\t\t\trepository: async () =>\n\t\t\t\toptions.repository ??\n\t\t\t\t(await gitDefaults())?.name ??\n\t\t\t\t(await packageData()).name,\n\t\t\t...readDefaultsFromReadme(),\n\t\t\tversion,\n\t\t};\n\t},\n\ttemplate: {\n\t\towner: \"JoshuaKGoldberg\",\n\t\trepository: \"create-typescript-app\",\n\t},\n});\n\nexport type BaseOptions = BaseOptionsFor<typeof base>;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/next/base.ts"],"sourcesContent":["import { BaseOptionsFor, createBase } from \"create\";\nimport { execaCommand } from \"execa\";\nimport gitRemoteOriginUrl from \"git-remote-origin-url\";\nimport gitUrlParse from \"git-url-parse\";\nimport { inputFromFile } from \"input-from-file\";\nimport { inputFromFileJSON } from \"input-from-file-json\";\nimport { inputFromScript } from \"input-from-script\";\nimport lazyValue from \"lazy-value\";\nimport npmUser from \"npm-user\";\nimport { z } from \"zod\";\n\nimport { parsePackageAuthor } from \"../shared/options/createOptionDefaults/parsePackageAuthor.js\";\nimport { readDefaultsFromReadme } from \"../shared/options/createOptionDefaults/readDefaultsFromReadme.js\";\nimport { readEmails } from \"../shared/options/createOptionDefaults/readEmails.js\";\nimport { readFunding } from \"../shared/options/createOptionDefaults/readFunding.js\";\nimport { readGuide } from \"../shared/options/createOptionDefaults/readGuide.js\";\nimport { readPackageData } from \"../shared/packages.js\";\nimport { tryCatchLazyValueAsync } from \"../shared/tryCatchLazyValueAsync.js\";\nimport { AllContributorsData } from \"../shared/types.js\";\nimport { readDescription } from \"./readDescription.js\";\nimport { readDocumentation } from \"./readDocumentation.js\";\nimport { swallowError } from \"./utils/swallowError.js\";\n\nexport const base = createBase({\n\toptions: {\n\t\taccess: z\n\t\t\t.union([z.literal(\"public\"), z.literal(\"restricted\")])\n\t\t\t.optional()\n\t\t\t.describe(\"which `npm publish --access` to release npm packages with\"),\n\t\tauthor: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"username on npm to publish packages under\"),\n\t\tbin: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe('value to set in `package.json`\\'s `\"bin\"` property.'),\n\t\tcontributors: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tavatar_url: z.string(),\n\t\t\t\t\tcontributions: z.array(z.string()),\n\t\t\t\t\tlogin: z.string(),\n\t\t\t\t\tname: z.string(),\n\t\t\t\t\tprofile: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional()\n\t\t\t.describe(\"AllContributors contributors to store in .all-contributorsrc\"),\n\t\tdescription: z\n\t\t\t.string()\n\t\t\t.describe(\"sentence case description of the repository\"),\n\t\tdirectory: z.string(),\n\t\tdocumentation: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"any additional docs to add to .github/DEVELOPMENT.md\"),\n\t\temail: z\n\t\t\t.union([\n\t\t\t\tz.string(),\n\t\t\t\tz.object({\n\t\t\t\t\tgithub: z.string(),\n\t\t\t\t\tnpm: z.string(),\n\t\t\t\t}),\n\t\t\t])\n\t\t\t.transform((email) =>\n\t\t\t\ttypeof email === \"string\" ? { github: email, npm: email } : email,\n\t\t\t)\n\t\t\t.describe(\n\t\t\t\t\"email address to be listed as the point of contact in docs and packages\",\n\t\t\t),\n\t\tfunding: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"GitHub organization or username to mention in `funding.yml`\"),\n\t\tguide: z\n\t\t\t.object({\n\t\t\t\thref: z.string(),\n\t\t\t\ttitle: z.string(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"link to a contribution guide to place at the top of development docs\",\n\t\t\t),\n\t\thideTemplatedBy: z\n\t\t\t.boolean()\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"whether to hide the 'created by ...' notice at the bottom of the README.md\",\n\t\t\t),\n\t\tkeywords: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.describe(\"any number of keywords to include in `package.json`\"),\n\t\tlogo: z\n\t\t\t.object({\n\t\t\t\talt: z.string(),\n\t\t\t\theight: z.number().optional(),\n\t\t\t\tsrc: z.string(),\n\t\t\t\twidth: z.number().optional(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"local image file in the repository to display near the top of the README.md\",\n\t\t\t),\n\t\tnode: z\n\t\t\t.object({\n\t\t\t\tminimum: z.string(),\n\t\t\t\tpinned: z.string().optional(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\"node.js engine version(s) to pin and require a minimum of\"),\n\t\towner: z\n\t\t\t.string()\n\t\t\t.describe(\"GitHub organization or user the repository is underneath\"),\n\t\tpackageData: z\n\t\t\t.object({\n\t\t\t\tdependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\tdevDependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\tscripts: z.record(z.string(), z.string()).optional(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\"additional properties to include in `package.json`\"),\n\t\trepository: z\n\t\t\t.string()\n\t\t\t.describe(\"'Sentence case.' description of the repository\"),\n\t\ttitle: z.string().describe(\"'Title Case' title for the repository\"),\n\t\tversion: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"package version to publish as and store in `package.json`\"),\n\t},\n\tproduce({ options, take }) {\n\t\tconst allContributors = lazyValue(async () => {\n\t\t\tconst contributions = (await take(inputFromFileJSON, {\n\t\t\t\tfilePath: \".all-contributorsrc\",\n\t\t\t})) as AllContributorsData;\n\n\t\t\treturn contributions.contributors;\n\t\t});\n\n\t\tconst documentation = lazyValue(async () => readDocumentation(take));\n\n\t\tconst nvmrc = lazyValue(\n\t\t\tasync () =>\n\t\t\t\tawait take(inputFromFile, {\n\t\t\t\t\tfilePath: \".nvmrc\",\n\t\t\t\t}),\n\t\t);\n\n\t\tconst githubCliUser = lazyValue(async () => {\n\t\t\treturn swallowError(\n\t\t\t\tawait take(inputFromScript, {\n\t\t\t\t\tcommand: \"gh config get user -h github.com\",\n\t\t\t\t}),\n\t\t\t)?.stdout?.toString();\n\t\t});\n\n\t\t// TODO: Make these all use take\n\n\t\tconst gitDefaults = tryCatchLazyValueAsync(async () =>\n\t\t\tgitUrlParse(await gitRemoteOriginUrl()),\n\t\t);\n\n\t\tconst npmDefaults = tryCatchLazyValueAsync(async () => {\n\t\t\tconst whoami = (await execaCommand(`npm whoami`)).stdout;\n\t\t\treturn whoami ? await npmUser(whoami) : undefined;\n\t\t});\n\n\t\tconst packageData = lazyValue(readPackageData);\n\t\tconst packageAuthor = lazyValue(async () =>\n\t\t\tparsePackageAuthor(await packageData()),\n\t\t);\n\n\t\tconst author = lazyValue(async () =>\n\t\t\t(\n\t\t\t\t(await packageAuthor()).author ??\n\t\t\t\t(await npmDefaults())?.name ??\n\t\t\t\toptions.owner\n\t\t\t)?.toLowerCase(),\n\t\t);\n\n\t\tconst node = lazyValue(async () => {\n\t\t\tconst { engines } = await packageData();\n\n\t\t\treturn {\n\t\t\t\tminimum:\n\t\t\t\t\t(engines?.node && /[\\d+.]+/.exec(engines.node))?.[0] ?? \"18.3.0\",\n\t\t\t\tpinned: swallowError(await nvmrc()) ?? \"20.18.0\",\n\t\t\t};\n\t\t});\n\n\t\tconst version = lazyValue(async () => (await packageData()).version);\n\n\t\treturn {\n\t\t\tauthor,\n\t\t\tbin: async () => (await packageData()).bin,\n\t\t\tcontributors: allContributors,\n\t\t\tdescription: async () => await readDescription(packageData),\n\t\t\tdocumentation,\n\t\t\temail: async () => readEmails(npmDefaults, packageAuthor),\n\t\t\tfunding: readFunding,\n\t\t\tguide: readGuide,\n\t\t\tlogin: author,\n\t\t\tnode,\n\t\t\towner: async () =>\n\t\t\t\t(await gitDefaults())?.organization ??\n\t\t\t\t(await packageAuthor()).author ??\n\t\t\t\t(await githubCliUser()),\n\t\t\tpackageData: async () => {\n\t\t\t\tconst original = await packageData();\n\n\t\t\t\treturn {\n\t\t\t\t\tdependencies: original.dependencies,\n\t\t\t\t\tdevDependencies: original.devDependencies,\n\t\t\t\t\tscripts: original.scripts,\n\t\t\t\t};\n\t\t\t},\n\t\t\trepository: async () =>\n\t\t\t\toptions.repository ??\n\t\t\t\t(await gitDefaults())?.name ??\n\t\t\t\t(await packageData()).name,\n\t\t\t...readDefaultsFromReadme(),\n\t\t\tversion,\n\t\t};\n\t},\n\ttemplate: {\n\t\towner: \"JoshuaKGoldberg\",\n\t\trepository: \"create-typescript-app\",\n\t},\n});\n\nexport type BaseOptions = BaseOptionsFor<typeof base>;\n"],"mappings":"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","names":[]}
@@ -31,6 +31,8 @@ declare const blockAllContributors: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockAreTheTypesWrong: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -34,6 +34,8 @@ declare const blockCSpell: create.BlockWithAddons<{
34
34
  logo?: {
35
35
  alt: string;
36
36
  src: string;
37
+ height?: number | undefined;
38
+ width?: number | undefined;
37
39
  } | undefined;
38
40
  node?: {
39
41
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockContributingDocs: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockContributorCovenant: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -45,6 +45,8 @@ declare const blockDevelopmentDocs: create.BlockWithAddons<{
45
45
  logo?: {
46
46
  alt: string;
47
47
  src: string;
48
+ height?: number | undefined;
49
+ width?: number | undefined;
48
50
  } | undefined;
49
51
  node?: {
50
52
  minimum: string;
@@ -56,6 +56,8 @@ declare const blockESLint: create.BlockWithAddons<{
56
56
  logo?: {
57
57
  alt: string;
58
58
  src: string;
59
+ height?: number | undefined;
60
+ width?: number | undefined;
59
61
  } | undefined;
60
62
  node?: {
61
63
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintComments: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintJSDoc: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintJSONC: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintMarkdown: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintMoreStyling: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintNode: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintPackageJson: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintPerfectionist: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintRegexp: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockESLintYML: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -33,6 +33,8 @@ declare const blockExampleFiles: create.BlockWithAddons<{
33
33
  logo?: {
34
34
  alt: string;
35
35
  src: string;
36
+ height?: number | undefined;
37
+ width?: number | undefined;
36
38
  } | undefined;
37
39
  node?: {
38
40
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockFunding: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -43,6 +43,8 @@ declare const blockGitHubActionsCI: create.BlockWithAddons<{
43
43
  logo?: {
44
44
  alt: string;
45
45
  src: string;
46
+ height?: number | undefined;
47
+ width?: number | undefined;
46
48
  } | undefined;
47
49
  node?: {
48
50
  minimum: string;
@@ -36,6 +36,8 @@ declare const blockGitHubApps: create.BlockWithAddons<{
36
36
  logo?: {
37
37
  alt: string;
38
38
  src: string;
39
+ height?: number | undefined;
40
+ width?: number | undefined;
39
41
  } | undefined;
40
42
  node?: {
41
43
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockGitHubIssueTemplates: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockGitHubPRTemplate: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -33,6 +33,8 @@ declare const blockGitignore: create.BlockWithAddons<{
33
33
  logo?: {
34
34
  alt: string;
35
35
  src: string;
36
+ height?: number | undefined;
37
+ width?: number | undefined;
36
38
  } | undefined;
37
39
  node?: {
38
40
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockKnip: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockMITLicense: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -33,6 +33,8 @@ declare const blockMarkdownlint: create.BlockWithAddons<{
33
33
  logo?: {
34
34
  alt: string;
35
35
  src: string;
36
+ height?: number | undefined;
37
+ width?: number | undefined;
36
38
  } | undefined;
37
39
  node?: {
38
40
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockNvmrc: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockPRCompliance: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -40,6 +40,8 @@ declare const blockPackageJson: create.BlockWithAddons<{
40
40
  logo?: {
41
41
  alt: string;
42
42
  src: string;
43
+ height?: number | undefined;
44
+ width?: number | undefined;
43
45
  } | undefined;
44
46
  node?: {
45
47
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockPnpmDedupe: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -40,6 +40,8 @@ declare const blockPrettier: create.BlockWithAddons<{
40
40
  logo?: {
41
41
  alt: string;
42
42
  src: string;
43
+ height?: number | undefined;
44
+ width?: number | undefined;
43
45
  } | undefined;
44
46
  node?: {
45
47
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockPrettierPluginCurly: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockPrettierPluginPackageJson: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -31,6 +31,8 @@ declare const blockPrettierPluginSh: create.BlockWithoutAddons<{
31
31
  logo?: {
32
32
  alt: string;
33
33
  src: string;
34
+ height?: number | undefined;
35
+ width?: number | undefined;
34
36
  } | undefined;
35
37
  node?: {
36
38
  minimum: string;
@@ -33,6 +33,8 @@ declare const blockREADME: create.BlockWithAddons<{
33
33
  logo?: {
34
34
  alt: string;
35
35
  src: string;
36
+ height?: number | undefined;
37
+ width?: number | undefined;
36
38
  } | undefined;
37
39
  node?: {
38
40
  minimum: string;
@@ -1,5 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { base } from "../base.js";
3
+ function printAttributes(attributes) {
4
+ return Object.entries(attributes).map(([key, value]) => `${key}="${value}"`).join(" ");
5
+ }
3
6
  const blockREADME = base.createBlock({
4
7
  about: {
5
8
  name: "README.md"
@@ -9,6 +12,7 @@ const blockREADME = base.createBlock({
9
12
  },
10
13
  produce({ addons, options }) {
11
14
  const { notices } = addons;
15
+ const logo = options.logo ? `<img ${printAttributes({ align: "right", ...options.logo })}>` : "";
12
16
  return {
13
17
  files: {
14
18
  "README.md": `<h1 align="center">${options.title}</h1>
@@ -27,7 +31,7 @@ const blockREADME = base.createBlock({
27
31
  <img alt="\u{1F4AA} TypeScript: Strict" src="https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg" />
28
32
  </p>
29
33
 
30
- ${options.logo ? `<img align="right" alt="${options.logo.alt}" src="${options.logo.src}">` : ""}
34
+ ${logo}
31
35
 
32
36
  ## Usage
33
37
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/blocks/blockREADME.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\n\nexport const blockREADME = base.createBlock({\n\tabout: {\n\t\tname: \"README.md\",\n\t},\n\taddons: {\n\t\tnotices: z.array(z.string()).default([]),\n\t},\n\tproduce({ addons, options }) {\n\t\tconst { notices } = addons;\n\n\t\treturn {\n\t\t\tfiles: {\n\t\t\t\t\"README.md\": `<h1 align=\"center\">${options.title}</h1>\n\n<p align=\"center\">${options.description}</p>\n\n<p align=\"center\">\n\t<!-- prettier-ignore-start -->\n\t<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\t<!-- prettier-ignore-end -->\n\t<a href=\"https://github.com/${options.owner}/${options.repository}/blob/main/.github/CODE_OF_CONDUCT.md\" target=\"_blank\"><img alt=\"🤝 Code of Conduct: Kept\" src=\"https://img.shields.io/badge/%F0%9F%A4%9D_code_of_conduct-kept-21bb42\" /></a>\n\t<a href=\"https://codecov.io/gh/${options.owner}/${options.repository}\" target=\"_blank\"><img alt=\"🧪 Coverage\" src=\"https://img.shields.io/codecov/c/github/${options.owner}/${options.repository}?label=%F0%9F%A7%AA%20coverage\" /></a>\n\t<a href=\"https://github.com/${options.owner}/${options.repository}/blob/main/LICENSE.md\" target=\"_blank\"><img alt=\"📝 License: MIT\" src=\"https://img.shields.io/badge/%F0%9F%93%9D_license-MIT-21bb42.svg\"></a>\n\t<a href=\"http://npmjs.com/package/${options.repository}\"><img alt=\"📦 npm version\" src=\"https://img.shields.io/npm/v/${options.repository}?color=21bb42&label=%F0%9F%93%A6%20npm\" /></a>\n\t<img alt=\"💪 TypeScript: Strict\" src=\"https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg\" />\n</p>\n\n${options.logo ? `<img align=\"right\" alt=\"${options.logo.alt}\" src=\"${options.logo.src}\">` : \"\"}\n\n## Usage\n\n\\`\\`\\`shell\nnpm i ${options.repository}\n\\`\\`\\`\n\\`\\`\\`ts\nimport { greet } from \"${options.repository}\";\n\ngreet(\"Hello, world! 💖\");\n\\`\\`\\`\n\n## Development\n\nSee [\\`.github/CONTRIBUTING.md\\`](./.github/CONTRIBUTING.md), then [\\`.github/DEVELOPMENT.md\\`](./.github/DEVELOPMENT.md).\nThanks! 💖\n\n## Contributors\n\n<!-- spellchecker: disable -->\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n<!-- spellchecker: enable -->\n${notices.length ? `\\n${notices.map((notice) => notice.trim()).join(\"\\n\\n\")}` : \"\"}`,\n\t\t\t},\n\t\t};\n\t},\n});\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,YAAY;AAEd,MAAM,cAAc,KAAK,YAAY;AAAA,EAC3C,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACP,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACxC;AAAA,EACA,QAAQ,EAAE,QAAQ,QAAQ,GAAG;AAC5B,UAAM,EAAE,QAAQ,IAAI;AAEpB,WAAO;AAAA,MACN,OAAO;AAAA,QACN,aAAa,sBAAsB,QAAQ,KAAK;AAAA;AAAA,oBAEhC,QAAQ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAOR,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,kCAChC,QAAQ,KAAK,IAAI,QAAQ,UAAU,gGAAyF,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,+BAClK,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,qCAC7B,QAAQ,UAAU,wEAAiE,QAAQ,UAAU;AAAA;AAAA;AAAA;AAAA,EAIxI,QAAQ,OAAO,2BAA2B,QAAQ,KAAK,GAAG,UAAU,QAAQ,KAAK,GAAG,OAAO,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,QAKvF,QAAQ,UAAU;AAAA;AAAA;AAAA,yBAGD,QAAQ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBzC,QAAQ,SAAS;AAAA,EAAK,QAAQ,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE;AAAA,MAC/E;AAAA,IACD;AAAA,EACD;AACD,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/blocks/blockREADME.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\n\nfunction printAttributes(attributes: Record<string, number | string>) {\n\treturn Object.entries(attributes)\n\t\t.map(([key, value]) => `${key}=\"${value}\"`)\n\t\t.join(\" \");\n}\n\nexport const blockREADME = base.createBlock({\n\tabout: {\n\t\tname: \"README.md\",\n\t},\n\taddons: {\n\t\tnotices: z.array(z.string()).default([]),\n\t},\n\tproduce({ addons, options }) {\n\t\tconst { notices } = addons;\n\n\t\tconst logo = options.logo\n\t\t\t? `<img ${printAttributes({ align: \"right\", ...options.logo })}>`\n\t\t\t: \"\";\n\n\t\treturn {\n\t\t\tfiles: {\n\t\t\t\t\"README.md\": `<h1 align=\"center\">${options.title}</h1>\n\n<p align=\"center\">${options.description}</p>\n\n<p align=\"center\">\n\t<!-- prettier-ignore-start -->\n\t<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\t<!-- prettier-ignore-end -->\n\t<a href=\"https://github.com/${options.owner}/${options.repository}/blob/main/.github/CODE_OF_CONDUCT.md\" target=\"_blank\"><img alt=\"🤝 Code of Conduct: Kept\" src=\"https://img.shields.io/badge/%F0%9F%A4%9D_code_of_conduct-kept-21bb42\" /></a>\n\t<a href=\"https://codecov.io/gh/${options.owner}/${options.repository}\" target=\"_blank\"><img alt=\"🧪 Coverage\" src=\"https://img.shields.io/codecov/c/github/${options.owner}/${options.repository}?label=%F0%9F%A7%AA%20coverage\" /></a>\n\t<a href=\"https://github.com/${options.owner}/${options.repository}/blob/main/LICENSE.md\" target=\"_blank\"><img alt=\"📝 License: MIT\" src=\"https://img.shields.io/badge/%F0%9F%93%9D_license-MIT-21bb42.svg\"></a>\n\t<a href=\"http://npmjs.com/package/${options.repository}\"><img alt=\"📦 npm version\" src=\"https://img.shields.io/npm/v/${options.repository}?color=21bb42&label=%F0%9F%93%A6%20npm\" /></a>\n\t<img alt=\"💪 TypeScript: Strict\" src=\"https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg\" />\n</p>\n\n${logo}\n\n## Usage\n\n\\`\\`\\`shell\nnpm i ${options.repository}\n\\`\\`\\`\n\\`\\`\\`ts\nimport { greet } from \"${options.repository}\";\n\ngreet(\"Hello, world! 💖\");\n\\`\\`\\`\n\n## Development\n\nSee [\\`.github/CONTRIBUTING.md\\`](./.github/CONTRIBUTING.md), then [\\`.github/DEVELOPMENT.md\\`](./.github/DEVELOPMENT.md).\nThanks! 💖\n\n## Contributors\n\n<!-- spellchecker: disable -->\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n<!-- spellchecker: enable -->\n${notices.length ? `\\n${notices.map((notice) => notice.trim()).join(\"\\n\\n\")}` : \"\"}`,\n\t\t\t},\n\t\t};\n\t},\n});\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,YAAY;AAErB,SAAS,gBAAgB,YAA6C;AACrE,SAAO,OAAO,QAAQ,UAAU,EAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,GAAG,EACzC,KAAK,GAAG;AACX;AAEO,MAAM,cAAc,KAAK,YAAY;AAAA,EAC3C,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACP,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACxC;AAAA,EACA,QAAQ,EAAE,QAAQ,QAAQ,GAAG;AAC5B,UAAM,EAAE,QAAQ,IAAI;AAEpB,UAAM,OAAO,QAAQ,OAClB,QAAQ,gBAAgB,EAAE,OAAO,SAAS,GAAG,QAAQ,KAAK,CAAC,CAAC,MAC5D;AAEH,WAAO;AAAA,MACN,OAAO;AAAA,QACN,aAAa,sBAAsB,QAAQ,KAAK;AAAA;AAAA,oBAEhC,QAAQ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAOR,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,kCAChC,QAAQ,KAAK,IAAI,QAAQ,UAAU,gGAAyF,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,+BAClK,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,qCAC7B,QAAQ,UAAU,wEAAiE,QAAQ,UAAU;AAAA;AAAA;AAAA;AAAA,EAIxI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,QAKE,QAAQ,UAAU;AAAA;AAAA;AAAA,yBAGD,QAAQ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBzC,QAAQ,SAAS;AAAA,EAAK,QAAQ,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE;AAAA,MAC/E;AAAA,IACD;AAAA,EACD;AACD,CAAC;","names":[]}