create-typescript-app 1.81.0 → 1.83.0-beta.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 (29) hide show
  1. package/README.md +1 -1
  2. package/lib/next/base.d.ts +1 -1
  3. package/lib/next/base.js +9 -6
  4. package/lib/next/base.js.map +1 -1
  5. package/lib/next/blocks/blockMarkdownlint.js +8 -1
  6. package/lib/next/blocks/blockMarkdownlint.js.map +1 -1
  7. package/lib/next/blocks/blockPackageJson.js +6 -3
  8. package/lib/next/blocks/blockPackageJson.js.map +1 -1
  9. package/lib/next/blocks/blockREADME.js +10 -4
  10. package/lib/next/blocks/blockREADME.js.map +1 -1
  11. package/lib/next/blocks/blockTemplatedBy.js +1 -1
  12. package/lib/next/blocks/blockTemplatedBy.js.map +1 -1
  13. package/lib/next/blocks/sourcePackageJson.d.ts +5 -5
  14. package/lib/next/presets/presetCommon.d.ts +1 -1
  15. package/lib/next/presets/presetEverything.d.ts +1 -1
  16. package/lib/next/presets/presetMinimal.d.ts +1 -1
  17. package/lib/next/template.d.ts +1 -1
  18. package/lib/next/template.js +2 -2
  19. package/lib/next/template.js.map +1 -1
  20. package/lib/shared/options/createOptionDefaults/index.js +5 -2
  21. package/lib/shared/options/createOptionDefaults/index.js.map +1 -1
  22. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.d.ts +1 -1
  23. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js +9 -3
  24. package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js.map +1 -1
  25. package/lib/shared/options/readOptions.js +1 -1
  26. package/lib/shared/options/readOptions.js.map +1 -1
  27. package/lib/steps/writing/creation/writePackageJson.js +1 -1
  28. package/lib/steps/writing/creation/writePackageJson.js.map +1 -1
  29. package/package.json +5 -5
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <h1 align="center">Create TypeScript App</h1>
2
2
 
3
- <p align="center">Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️‍🔥</p>
3
+ <p align="center">Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 🎁</p>
4
4
 
5
5
  <p align="center">
6
6
  <!-- prettier-ignore-start -->
@@ -25,7 +25,7 @@ declare const base: create.Base<{
25
25
  login: string;
26
26
  profile: string;
27
27
  }>, "many">>;
28
- description: z.ZodString;
28
+ description: z.ZodDefault<z.ZodString>;
29
29
  directory: z.ZodString;
30
30
  documentation: z.ZodOptional<z.ZodString>;
31
31
  email: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodObject<{
package/lib/next/base.js CHANGED
@@ -23,7 +23,7 @@ const base = createBase({
23
23
  options: {
24
24
  access: z.union([z.literal("public"), z.literal("restricted")]).describe("which `npm publish --access` to release npm packages with"),
25
25
  author: z.string().optional().describe("username on npm to publish packages under"),
26
- bin: z.string().optional().describe('value to set in `package.json`\'s `"bin"` property.'),
26
+ bin: z.string().optional().describe('value to set in `package.json`\'s `"bin"` property'),
27
27
  contributors: z.array(
28
28
  z.object({
29
29
  avatar_url: z.string(),
@@ -33,8 +33,8 @@ const base = createBase({
33
33
  profile: z.string()
34
34
  })
35
35
  ).optional().describe("AllContributors contributors to store in .all-contributorsrc"),
36
- description: z.string().describe("'Sentence case.' description of the repository"),
37
- directory: z.string(),
36
+ description: z.string().default("A very lovely package. Hooray! \u{1F496}").describe("'Sentence case.' description of the repository"),
37
+ directory: z.string().describe("Directory to create the repository in"),
38
38
  documentation: z.string().optional().describe("any additional docs to add to .github/DEVELOPMENT.md"),
39
39
  email: z.union([
40
40
  z.string(),
@@ -120,10 +120,13 @@ const base = createBase({
120
120
  const { engines } = await packageData();
121
121
  return {
122
122
  minimum: (engines?.node && /[\d+.]+/.exec(engines.node))?.[0] ?? "18.3.0",
123
- pinned: swallowError(await nvmrc()) ?? "20.18.0"
123
+ pinned: swallowError(await nvmrc())?.trim() ?? "20.18.0"
124
124
  };
125
125
  });
126
126
  const version = lazyValue(async () => (await packageData()).version);
127
+ const repository = lazyValue(
128
+ async () => options.repository ?? (await gitDefaults())?.name ?? (await packageData()).name ?? options.directory
129
+ );
127
130
  return {
128
131
  access: "public",
129
132
  author,
@@ -145,8 +148,8 @@ const base = createBase({
145
148
  scripts: original.scripts
146
149
  };
147
150
  },
148
- repository: async () => options.repository ?? (await gitDefaults())?.name ?? (await packageData()).name,
149
- ...readDefaultsFromReadme(readme, options.repository),
151
+ repository,
152
+ ...readDefaultsFromReadme(readme, repository),
150
153
  version
151
154
  };
152
155
  },
@@ -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 { readFileSafe } from \"../shared/readFileSafe.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.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(\"'kebab-case' or 'PascalCase' title of the repository\"),\n\t\ttitle: z.string().describe(\"'Title Case' title for the repository\"),\n\t\tusage: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"markdown docs to put in README.md under the ## Usage heading\"),\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\tconst readme = lazyValue(async () => await readFileSafe(\"README.md\", \"\"));\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(\n\t\t\tasync () =>\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);\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\taccess: \"public\" as const,\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, readme),\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(readme, options.repository),\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 { readFileSafe } from \"../shared/readFileSafe.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.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.default(\"A very lovely package. Hooray! 💖\")\n\t\t\t.describe(\"'Sentence case.' description of the repository\"),\n\t\tdirectory: z.string().describe(\"Directory to create the repository in\"),\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(\"'kebab-case' or 'PascalCase' title of the repository\"),\n\t\ttitle: z.string().describe(\"'Title Case' title for the repository\"),\n\t\tusage: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.describe(\"markdown docs to put in README.md under the ## Usage heading\"),\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\tconst readme = lazyValue(async () => await readFileSafe(\"README.md\", \"\"));\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(\n\t\t\tasync () =>\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);\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())?.trim() ?? \"20.18.0\",\n\t\t\t};\n\t\t});\n\n\t\tconst version = lazyValue(async () => (await packageData()).version);\n\n\t\tconst repository = lazyValue(\n\t\t\tasync () =>\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\toptions.directory,\n\t\t);\n\n\t\treturn {\n\t\t\taccess: \"public\" as const,\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, readme),\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,\n\t\t\t...readDefaultsFromReadme(readme, repository),\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":[]}
@@ -6,6 +6,7 @@ import { blockGitHubActionsCI } from "./blockGitHubActionsCI.js";
6
6
  import { blockPackageJson } from "./blockPackageJson.js";
7
7
  import { blockVSCode } from "./blockVSCode.js";
8
8
  import { getPackageDependencies } from "./packageData.js";
9
+ import { CommandPhase } from "./phases.js";
9
10
  const blockMarkdownlint = base.createBlock({
10
11
  about: {
11
12
  name: "Markdownlint"
@@ -67,7 +68,13 @@ const blockMarkdownlint = base.createBlock({
67
68
  "node_modules/",
68
69
  ...ignores
69
70
  ].sort().join("\n")
70
- }
71
+ },
72
+ scripts: [
73
+ {
74
+ commands: ["pnpm lint:md --fix"],
75
+ phase: CommandPhase.Process
76
+ }
77
+ ]
71
78
  };
72
79
  }
73
80
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/blocks/blockMarkdownlint.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { getPackageDependencies } from \"./packageData.js\";\n\nexport const blockMarkdownlint = base.createBlock({\n\tabout: {\n\t\tname: \"Markdownlint\",\n\t},\n\taddons: {\n\t\tignores: z.array(z.string()).default([]),\n\t},\n\tproduce({ addons }) {\n\t\tconst { ignores } = addons;\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\twords: [\"markdownlintignore\"],\n\t\t\t\t}),\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\titems: [\n\t\t\t\t\t\t\t\t\t`- \\`pnpm lint:md\\` ([Markdownlint](https://github.com/DavidAnson/markdownlint)): Checks Markdown source files`,\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\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Lint Markdown\",\n\t\t\t\t\t\t\tsteps: [{ run: \"pnpm lint:md\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockPackageJson({\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdevDependencies: getPackageDependencies(\n\t\t\t\t\t\t\t\"markdownlint\",\n\t\t\t\t\t\t\t\"markdownlint-cli\",\n\t\t\t\t\t\t\t\"sentences-per-line\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\t\"lint:md\":\n\t\t\t\t\t\t\t\t'markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line',\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: [\"DavidAnson.vscode-markdownlint\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t\".markdownlint.json\": JSON.stringify({\n\t\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\t\"no-inline-html\": false,\n\t\t\t\t}),\n\t\t\t\t\".markdownlintignore\": [\n\t\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\t\"node_modules/\",\n\t\t\t\t\t...ignores,\n\t\t\t\t]\n\t\t\t\t\t.sort()\n\t\t\t\t\t.join(\"\\n\"),\n\t\t\t},\n\t\t};\n\t},\n});\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,8BAA8B;AAEhC,MAAM,oBAAoB,KAAK,YAAY;AAAA,EACjD,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,OAAO,GAAG;AACnB,UAAM,EAAE,QAAQ,IAAI;AAEpB,WAAO;AAAA,MACN,QAAQ;AAAA,QACP,YAAY;AAAA,UACX,OAAO,CAAC,oBAAoB;AAAA,QAC7B,CAAC;AAAA,QACD,qBAAqB;AAAA,UACpB,UAAU;AAAA,YACT,SAAS;AAAA,cACR,UAAU;AAAA,gBACT,OAAO;AAAA,kBACN;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAC;AAAA,QACD,qBAAqB;AAAA,UACpB,MAAM;AAAA,YACL;AAAA,cACC,MAAM;AAAA,cACN,OAAO,CAAC,EAAE,KAAK,eAAe,CAAC;AAAA,YAChC;AAAA,UACD;AAAA,QACD,CAAC;AAAA,QACD,iBAAiB;AAAA,UAChB,YAAY;AAAA,YACX,iBAAiB;AAAA,cAChB;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,YACA,SAAS;AAAA,cACR,WACC;AAAA,YACF;AAAA,UACD;AAAA,QACD,CAAC;AAAA,QACD,YAAY;AAAA,UACX,YAAY,CAAC,gCAAgC;AAAA,QAC9C,CAAC;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACN,sBAAsB,KAAK,UAAU;AAAA,UACpC,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,QACnB,CAAC;AAAA,QACD,uBAAuB;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACJ,EACE,KAAK,EACL,KAAK,IAAI;AAAA,MACZ;AAAA,IACD;AAAA,EACD;AACD,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/blocks/blockMarkdownlint.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { getPackageDependencies } from \"./packageData.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockMarkdownlint = base.createBlock({\n\tabout: {\n\t\tname: \"Markdownlint\",\n\t},\n\taddons: {\n\t\tignores: z.array(z.string()).default([]),\n\t},\n\tproduce({ addons }) {\n\t\tconst { ignores } = addons;\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\twords: [\"markdownlintignore\"],\n\t\t\t\t}),\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\titems: [\n\t\t\t\t\t\t\t\t\t`- \\`pnpm lint:md\\` ([Markdownlint](https://github.com/DavidAnson/markdownlint)): Checks Markdown source files`,\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\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Lint Markdown\",\n\t\t\t\t\t\t\tsteps: [{ run: \"pnpm lint:md\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockPackageJson({\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdevDependencies: getPackageDependencies(\n\t\t\t\t\t\t\t\"markdownlint\",\n\t\t\t\t\t\t\t\"markdownlint-cli\",\n\t\t\t\t\t\t\t\"sentences-per-line\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\t\"lint:md\":\n\t\t\t\t\t\t\t\t'markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line',\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: [\"DavidAnson.vscode-markdownlint\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t\".markdownlint.json\": JSON.stringify({\n\t\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\t\"no-inline-html\": false,\n\t\t\t\t}),\n\t\t\t\t\".markdownlintignore\": [\n\t\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\t\"node_modules/\",\n\t\t\t\t\t...ignores,\n\t\t\t\t]\n\t\t\t\t\t.sort()\n\t\t\t\t\t.join(\"\\n\"),\n\t\t\t},\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\"pnpm lint:md --fix\"],\n\t\t\t\t\tphase: CommandPhase.Process,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAS,8BAA8B;AACvC,SAAS,oBAAoB;AAEtB,MAAM,oBAAoB,KAAK,YAAY;AAAA,EACjD,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,OAAO,GAAG;AACnB,UAAM,EAAE,QAAQ,IAAI;AAEpB,WAAO;AAAA,MACN,QAAQ;AAAA,QACP,YAAY;AAAA,UACX,OAAO,CAAC,oBAAoB;AAAA,QAC7B,CAAC;AAAA,QACD,qBAAqB;AAAA,UACpB,UAAU;AAAA,YACT,SAAS;AAAA,cACR,UAAU;AAAA,gBACT,OAAO;AAAA,kBACN;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD,CAAC;AAAA,QACD,qBAAqB;AAAA,UACpB,MAAM;AAAA,YACL;AAAA,cACC,MAAM;AAAA,cACN,OAAO,CAAC,EAAE,KAAK,eAAe,CAAC;AAAA,YAChC;AAAA,UACD;AAAA,QACD,CAAC;AAAA,QACD,iBAAiB;AAAA,UAChB,YAAY;AAAA,YACX,iBAAiB;AAAA,cAChB;AAAA,cACA;AAAA,cACA;AAAA,YACD;AAAA,YACA,SAAS;AAAA,cACR,WACC;AAAA,YACF;AAAA,UACD;AAAA,QACD,CAAC;AAAA,QACD,YAAY;AAAA,UACX,YAAY,CAAC,gCAAgC;AAAA,QAC9C,CAAC;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACN,sBAAsB,KAAK,UAAU;AAAA,UACpC,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,QACnB,CAAC;AAAA,QACD,uBAAuB;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACJ,EACE,KAAK,EACL,KAAK,IAAI;AAAA,MACZ;AAAA,MACA,SAAS;AAAA,QACR;AAAA,UACC,UAAU,CAAC,oBAAoB;AAAA,UAC/B,OAAO,aAAa;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;","names":[]}
@@ -32,7 +32,7 @@ const blockPackageJson = base.createBlock({
32
32
  ]
33
33
  };
34
34
  },
35
- produce({ addons, options }) {
35
+ produce({ addons, offline, options }) {
36
36
  const dependencies = {
37
37
  ...options.packageData?.dependencies,
38
38
  ...addons.properties.dependencies
@@ -72,7 +72,7 @@ const blockPackageJson = base.createBlock({
72
72
  name: options.repository,
73
73
  repository: {
74
74
  type: "git",
75
- url: `https://github.com/${options.owner}/${options.repository}`
75
+ url: `git+https://github.com/${options.owner}/${options.repository}.git`
76
76
  },
77
77
  scripts: {
78
78
  ...options.packageData?.scripts,
@@ -86,7 +86,10 @@ const blockPackageJson = base.createBlock({
86
86
  },
87
87
  scripts: [
88
88
  {
89
- commands: ["pnpm install", ...addons.cleanupCommands],
89
+ commands: [
90
+ offline ? "pnpm install" : "pnpm install --offline",
91
+ ...addons.cleanupCommands
92
+ ],
90
93
  phase: CommandPhase.Install
91
94
  }
92
95
  ]
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/blocks/blockPackageJson.ts"],"sourcesContent":["import * as htmlToText from \"html-to-text\";\nimport removeUndefinedObjects from \"remove-undefined-objects\";\nimport sortPackageJson from \"sort-package-json\";\nimport { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockPackageJson = base.createBlock({\n\tabout: {\n\t\tname: \"Package JSON\",\n\t},\n\taddons: {\n\t\tcleanupCommands: z.array(z.string()).default([]),\n\t\t// TODO: Find a zod package for this?\n\t\tproperties: z\n\t\t\t.intersection(\n\t\t\t\tz.object({\n\t\t\t\t\tdependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tdevDependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tfiles: z.array(z.string()).optional(),\n\t\t\t\t\tpeerDependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tscripts: z.record(z.string(), z.string()).optional(),\n\t\t\t\t}),\n\t\t\t\tz.record(z.string(), z.unknown()),\n\t\t\t)\n\t\t\t.default({}),\n\t},\n\tmigrate() {\n\t\treturn {\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\"rm package-lock.json yarn.lock\"],\n\t\t\t\t\tphase: CommandPhase.Migrations,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tproduce({ addons, options }) {\n\t\tconst dependencies = {\n\t\t\t...options.packageData?.dependencies,\n\t\t\t...addons.properties.dependencies,\n\t\t};\n\t\tconst devDependencies = {\n\t\t\t...options.packageData?.devDependencies,\n\t\t\t...addons.properties.devDependencies,\n\t\t};\n\t\tconst description = htmlToText.convert(options.description);\n\n\t\treturn {\n\t\t\tfiles: {\n\t\t\t\t\"package.json\": sortPackageJson(\n\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\tremoveUndefinedObjects({\n\t\t\t\t\t\t\t...addons.properties,\n\t\t\t\t\t\t\tauthor: { email: options.email.npm, name: options.author },\n\t\t\t\t\t\t\tbin: options.bin,\n\t\t\t\t\t\t\tdependencies: Object.keys(dependencies).length\n\t\t\t\t\t\t\t\t? dependencies\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\tdevDependencies: Object.keys(devDependencies).length\n\t\t\t\t\t\t\t\t? devDependencies\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t...(options.node && {\n\t\t\t\t\t\t\t\tengines: {\n\t\t\t\t\t\t\t\t\tnode: `>=${options.node.minimum}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfiles: [\n\t\t\t\t\t\t\t\toptions.bin?.replace(/^\\.\\//, \"\"),\n\t\t\t\t\t\t\t\t...(addons.properties.files ?? []),\n\t\t\t\t\t\t\t\t\"package.json\",\n\t\t\t\t\t\t\t\t\"README.md\",\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t.sort(),\n\t\t\t\t\t\t\tkeywords: options.keywords?.flatMap((keyword) =>\n\t\t\t\t\t\t\t\tkeyword.split(/ /),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlicense: \"MIT\",\n\t\t\t\t\t\t\tmain: \"./lib/index.js\",\n\t\t\t\t\t\t\tname: options.repository,\n\t\t\t\t\t\t\trepository: {\n\t\t\t\t\t\t\t\ttype: \"git\",\n\t\t\t\t\t\t\t\turl: `https://github.com/${options.owner}/${options.repository}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\t\t...options.packageData?.scripts,\n\t\t\t\t\t\t\t\t...addons.properties.scripts,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype: \"module\",\n\t\t\t\t\t\t\tversion: options.version ?? \"0.0.0\",\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\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\"pnpm install\", ...addons.cleanupCommands],\n\t\t\t\t\tphase: CommandPhase.Install,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/next/blocks/blockPackageJson.ts"],"sourcesContent":["import * as htmlToText from \"html-to-text\";\nimport removeUndefinedObjects from \"remove-undefined-objects\";\nimport sortPackageJson from \"sort-package-json\";\nimport { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockPackageJson = base.createBlock({\n\tabout: {\n\t\tname: \"Package JSON\",\n\t},\n\taddons: {\n\t\tcleanupCommands: z.array(z.string()).default([]),\n\t\t// TODO: Find a zod package for this?\n\t\tproperties: z\n\t\t\t.intersection(\n\t\t\t\tz.object({\n\t\t\t\t\tdependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tdevDependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tfiles: z.array(z.string()).optional(),\n\t\t\t\t\tpeerDependencies: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tscripts: z.record(z.string(), z.string()).optional(),\n\t\t\t\t}),\n\t\t\t\tz.record(z.string(), z.unknown()),\n\t\t\t)\n\t\t\t.default({}),\n\t},\n\tmigrate() {\n\t\treturn {\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\"rm package-lock.json yarn.lock\"],\n\t\t\t\t\tphase: CommandPhase.Migrations,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tproduce({ addons, offline, options }) {\n\t\tconst dependencies = {\n\t\t\t...options.packageData?.dependencies,\n\t\t\t...addons.properties.dependencies,\n\t\t};\n\t\tconst devDependencies = {\n\t\t\t...options.packageData?.devDependencies,\n\t\t\t...addons.properties.devDependencies,\n\t\t};\n\t\tconst description = htmlToText.convert(options.description);\n\n\t\treturn {\n\t\t\tfiles: {\n\t\t\t\t\"package.json\": sortPackageJson(\n\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\tremoveUndefinedObjects({\n\t\t\t\t\t\t\t...addons.properties,\n\t\t\t\t\t\t\tauthor: { email: options.email.npm, name: options.author },\n\t\t\t\t\t\t\tbin: options.bin,\n\t\t\t\t\t\t\tdependencies: Object.keys(dependencies).length\n\t\t\t\t\t\t\t\t? dependencies\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\tdevDependencies: Object.keys(devDependencies).length\n\t\t\t\t\t\t\t\t? devDependencies\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t...(options.node && {\n\t\t\t\t\t\t\t\tengines: {\n\t\t\t\t\t\t\t\t\tnode: `>=${options.node.minimum}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfiles: [\n\t\t\t\t\t\t\t\toptions.bin?.replace(/^\\.\\//, \"\"),\n\t\t\t\t\t\t\t\t...(addons.properties.files ?? []),\n\t\t\t\t\t\t\t\t\"package.json\",\n\t\t\t\t\t\t\t\t\"README.md\",\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t.sort(),\n\t\t\t\t\t\t\tkeywords: options.keywords?.flatMap((keyword) =>\n\t\t\t\t\t\t\t\tkeyword.split(/ /),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlicense: \"MIT\",\n\t\t\t\t\t\t\tmain: \"./lib/index.js\",\n\t\t\t\t\t\t\tname: options.repository,\n\t\t\t\t\t\t\trepository: {\n\t\t\t\t\t\t\t\ttype: \"git\",\n\t\t\t\t\t\t\t\turl: `git+https://github.com/${options.owner}/${options.repository}.git`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\t\t...options.packageData?.scripts,\n\t\t\t\t\t\t\t\t...addons.properties.scripts,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttype: \"module\",\n\t\t\t\t\t\t\tversion: options.version ?? \"0.0.0\",\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\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\n\t\t\t\t\t\toffline ? \"pnpm install\" : \"pnpm install --offline\",\n\t\t\t\t\t\t...addons.cleanupCommands,\n\t\t\t\t\t],\n\t\t\t\t\tphase: CommandPhase.Install,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":"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","names":[]}
@@ -12,12 +12,14 @@ const blockREADME = base.createBlock({
12
12
  },
13
13
  produce({ addons, options }) {
14
14
  const { notices } = addons;
15
- const logo = options.logo ? `<img ${printAttributes({ align: "right", ...options.logo })}>` : "";
15
+ const logo = options.logo ? `
16
+ <img ${printAttributes({ align: "right", ...options.logo })}>
17
+ ` : "";
16
18
  return {
17
19
  files: {
18
20
  "README.md": `<h1 align="center">${options.title}</h1>
19
21
 
20
- <p align="center">${options.description}</p>
22
+ <p align="center">${formatDescription(options.description)}</p>
21
23
 
22
24
  <p align="center">
23
25
  <!-- prettier-ignore-start -->
@@ -30,9 +32,7 @@ const blockREADME = base.createBlock({
30
32
  <a href="http://npmjs.com/package/${options.repository}"><img alt="\u{1F4E6} npm version" src="https://img.shields.io/npm/v/${options.repository}?color=21bb42&label=%F0%9F%93%A6%20npm" /></a>
31
33
  <img alt="\u{1F4AA} TypeScript: Strict" src="https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg" />
32
34
  </p>
33
-
34
35
  ${logo}
35
-
36
36
  ## Usage
37
37
 
38
38
  ${options.usage}
@@ -54,6 +54,12 @@ ${notices.map((notice) => notice.trim()).join("\n\n")}` : ""}`
54
54
  };
55
55
  }
56
56
  });
57
+ function formatDescription(description) {
58
+ if (!description.includes(". ")) {
59
+ return description;
60
+ }
61
+ return "\n " + description.replaceAll(". ", ". \n ") + "\n";
62
+ }
57
63
  export {
58
64
  blockREADME
59
65
  };
@@ -1 +1 @@
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${options.usage}\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,EAIJ,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAab,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? `\\n<img ${printAttributes({ align: \"right\", ...options.logo })}>\\n`\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\">${formatDescription(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${logo}\n## Usage\n\n${options.usage}\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\nfunction formatDescription(description: string) {\n\tif (!description.includes(\". \")) {\n\t\treturn description;\n\t}\n\n\treturn \"\\n\\t\" + description.replaceAll(\". \", \". \\n\\t\") + \"\\n\";\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;AAAA,OAAU,gBAAgB,EAAE,OAAO,SAAS,GAAG,QAAQ,KAAK,CAAC,CAAC;AAAA,IAC9D;AAEH,WAAO;AAAA,MACN,OAAO;AAAA,QACN,aAAa,sBAAsB,QAAQ,KAAK;AAAA;AAAA,oBAEhC,kBAAkB,QAAQ,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAO3B,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,EAGxI,IAAI;AAAA;AAAA;AAAA,EAGJ,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAab,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;AAED,SAAS,kBAAkB,aAAqB;AAC/C,MAAI,CAAC,YAAY,SAAS,IAAI,GAAG;AAChC,WAAO;AAAA,EACR;AAEA,SAAO,QAAS,YAAY,WAAW,MAAM,OAAQ,IAAI;AAC1D;","names":[]}
@@ -16,7 +16,7 @@ const blockTemplatedBy = base.createBlock({
16
16
  `
17
17
  <!-- You can remove this notice if you don't want it \u{1F642} no worries! -->
18
18
 
19
- > \u{1F49D} This package was templated with [\`create-typescript-app\`](https://github.com/JoshuaKGoldberg/create-typescript-app) using the [\`create\` engine](https://github.com/JoshuaKGoldberg/create).
19
+ > \u{1F49D} This package was templated with [\`create-typescript-app\`](https://github.com/JoshuaKGoldberg/create-typescript-app) using the [\`create\` engine](https://create.bingo).
20
20
  `
21
21
  ]
22
22
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/blocks/blockTemplatedBy.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockREADME } from \"./blockREADME.js\";\n\nexport const blockTemplatedBy = base.createBlock({\n\tabout: {\n\t\tname: \"Templated By Notice\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\twords: [\"joshuakgoldberg\"],\n\t\t\t\t}),\n\t\t\t\tblockREADME({\n\t\t\t\t\tnotices: [\n\t\t\t\t\t\t`\n<!-- You can remove this notice if you don't want it 🙂 no worries! -->\n\n> 💝 This package was templated with [\\`create-typescript-app\\`](https://github.com/JoshuaKGoldberg/create-typescript-app) using the [\\`create\\` engine](https://github.com/JoshuaKGoldberg/create).\n`,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAErB,MAAM,mBAAmB,KAAK,YAAY;AAAA,EAChD,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,UAAU;AACT,WAAO;AAAA,MACN,QAAQ;AAAA,QACP,YAAY;AAAA,UACX,OAAO,CAAC,iBAAiB;AAAA,QAC1B,CAAC;AAAA,QACD,YAAY;AAAA,UACX,SAAS;AAAA,YACR;AAAA;AAAA;AAAA;AAAA;AAAA,UAKD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/blocks/blockTemplatedBy.ts"],"sourcesContent":["import { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockREADME } from \"./blockREADME.js\";\n\nexport const blockTemplatedBy = base.createBlock({\n\tabout: {\n\t\tname: \"Templated By Notice\",\n\t},\n\tproduce() {\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\twords: [\"joshuakgoldberg\"],\n\t\t\t\t}),\n\t\t\t\tblockREADME({\n\t\t\t\t\tnotices: [\n\t\t\t\t\t\t`\n<!-- You can remove this notice if you don't want it 🙂 no worries! -->\n\n> 💝 This package was templated with [\\`create-typescript-app\\`](https://github.com/JoshuaKGoldberg/create-typescript-app) using the [\\`create\\` engine](https://create.bingo).\n`,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t],\n\t\t};\n\t},\n});\n"],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAErB,MAAM,mBAAmB,KAAK,YAAY;AAAA,EAChD,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,UAAU;AACT,WAAO;AAAA,MACN,QAAQ;AAAA,QACP,YAAY;AAAA,UACX,OAAO,CAAC,iBAAiB;AAAA,QAC1B,CAAC;AAAA,QACD,YAAY;AAAA,UACX,SAAS;AAAA,YACR;AAAA;AAAA;AAAA;AAAA;AAAA,UAKD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD,CAAC;","names":[]}
@@ -1,9 +1,9 @@
1
1
  var name = "create-typescript-app";
2
- var version = "1.80.0";
3
- var description = "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️‍🔥";
2
+ var version = "1.82.0";
3
+ var description = "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 🎁";
4
4
  var repository = {
5
5
  type: "git",
6
- url: "https://github.com/JoshuaKGoldberg/create-typescript-app"
6
+ url: "git+https://github.com/JoshuaKGoldberg/create-typescript-app.git"
7
7
  };
8
8
  var license = "MIT";
9
9
  var author = {
@@ -40,7 +40,7 @@ var dependencies = {
40
40
  "@clack/prompts": "^0.9.0",
41
41
  "@prettier/sync": "^0.5.2",
42
42
  chalk: "^5.4.1",
43
- create: "0.1.0-alpha.8",
43
+ create: "0.1.0-alpha.11",
44
44
  "cspell-populate-words": "^0.3.0",
45
45
  execa: "^9.5.2",
46
46
  "git-remote-origin-url": "^4.0.0",
@@ -85,7 +85,7 @@ var devDependencies = {
85
85
  "all-contributors-cli": "6.26.1",
86
86
  c8: "10.1.3",
87
87
  "console-fail-test": "0.5.0",
88
- "create-testers": "0.1.0-alpha.8",
88
+ "create-testers": "0.1.0-alpha.11",
89
89
  cspell: "8.17.1",
90
90
  eslint: "9.17.0",
91
91
  "eslint-plugin-jsdoc": "50.6.1",
@@ -24,7 +24,7 @@ declare const presetCommon: create.Preset<{
24
24
  login: string;
25
25
  profile: string;
26
26
  }>, "many">>;
27
- description: zod.ZodString;
27
+ description: zod.ZodDefault<zod.ZodString>;
28
28
  directory: zod.ZodString;
29
29
  documentation: zod.ZodOptional<zod.ZodString>;
30
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
@@ -24,7 +24,7 @@ declare const presetEverything: create.Preset<{
24
24
  login: string;
25
25
  profile: string;
26
26
  }>, "many">>;
27
- description: zod.ZodString;
27
+ description: zod.ZodDefault<zod.ZodString>;
28
28
  directory: zod.ZodString;
29
29
  documentation: zod.ZodOptional<zod.ZodString>;
30
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
@@ -24,7 +24,7 @@ declare const presetMinimal: create.Preset<{
24
24
  login: string;
25
25
  profile: string;
26
26
  }>, "many">>;
27
- description: zod.ZodString;
27
+ description: zod.ZodDefault<zod.ZodString>;
28
28
  directory: zod.ZodString;
29
29
  documentation: zod.ZodOptional<zod.ZodString>;
30
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
@@ -24,7 +24,7 @@ declare const template: create.Template<{
24
24
  login: string;
25
25
  profile: string;
26
26
  }>, "many">>;
27
- description: zod.ZodString;
27
+ description: zod.ZodDefault<zod.ZodString>;
28
28
  directory: zod.ZodString;
29
29
  documentation: zod.ZodOptional<zod.ZodString>;
30
30
  email: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
@@ -1,8 +1,8 @@
1
- import { createTemplate } from "create";
1
+ import { base } from "./base.js";
2
2
  import { presetCommon } from "./presets/presetCommon.js";
3
3
  import { presetEverything } from "./presets/presetEverything.js";
4
4
  import { presetMinimal } from "./presets/presetMinimal.js";
5
- const template = createTemplate({
5
+ const template = base.createTemplate({
6
6
  about: {
7
7
  name: "TypeScript App"
8
8
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/next/template.ts"],"sourcesContent":["import { createTemplate } from \"create\";\n\nimport { presetCommon } from \"./presets/presetCommon.js\";\nimport { presetEverything } from \"./presets/presetEverything.js\";\nimport { presetMinimal } from \"./presets/presetMinimal.js\";\n\nexport const template = createTemplate({\n\tabout: {\n\t\tname: \"TypeScript App\",\n\t},\n\tpresets: [presetMinimal, presetCommon, presetEverything],\n\tsuggested: presetCommon,\n});\n\nexport default template;\n"],"mappings":"AAAA,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,MAAM,WAAW,eAAe;AAAA,EACtC,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,SAAS,CAAC,eAAe,cAAc,gBAAgB;AAAA,EACvD,WAAW;AACZ,CAAC;AAED,IAAO,mBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/next/template.ts"],"sourcesContent":["import { base } from \"./base.js\";\nimport { presetCommon } from \"./presets/presetCommon.js\";\nimport { presetEverything } from \"./presets/presetEverything.js\";\nimport { presetMinimal } from \"./presets/presetMinimal.js\";\n\nexport const template = base.createTemplate({\n\tabout: {\n\t\tname: \"TypeScript App\",\n\t},\n\tpresets: [presetMinimal, presetCommon, presetEverything],\n\tsuggested: presetCommon,\n});\n\nexport default template;\n"],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,MAAM,WAAW,KAAK,eAAe;AAAA,EAC3C,OAAO;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,SAAS,CAAC,eAAe,cAAc,gBAAgB;AAAA,EACvD,WAAW;AACZ,CAAC;AAED,IAAO,mBAAQ;","names":[]}
@@ -36,8 +36,11 @@ function createOptionDefaults(promptedOptions) {
36
36
  ),
37
37
  guide: readGuide,
38
38
  owner: async () => (await gitDefaults())?.organization ?? (await packageAuthor()).author,
39
- repository: async () => promptedOptions?.repository ?? (await gitDefaults())?.name ?? (await packageData()).name,
40
- ...readDefaultsFromReadme(readme, promptedOptions?.repository)
39
+ repository: async () => promptedOptions?.repository ?? (await gitDefaults())?.name ?? (await packageData()).name ?? promptedOptions?.directory,
40
+ ...readDefaultsFromReadme(
41
+ readme,
42
+ () => Promise.resolve(promptedOptions?.repository)
43
+ )
41
44
  };
42
45
  }
43
46
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/index.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport gitRemoteOriginUrl from \"git-remote-origin-url\";\nimport gitUrlParse from \"git-url-parse\";\nimport lazyValue from \"lazy-value\";\nimport * as fs from \"node:fs/promises\";\nimport npmUser from \"npm-user\";\n\nimport { readDescription } from \"../../../next/readDescription.js\";\nimport { readPackageData } from \"../../packages.js\";\nimport { readFileSafe } from \"../../readFileSafe.js\";\nimport { tryCatchAsync } from \"../../tryCatchAsync.js\";\nimport { tryCatchLazyValueAsync } from \"../../tryCatchLazyValueAsync.js\";\nimport { PromptedOptions } from \"../../types.js\";\nimport { parsePackageAuthor } from \"./parsePackageAuthor.js\";\nimport { readDefaultsFromReadme } from \"./readDefaultsFromReadme.js\";\nimport { readEmails } from \"./readEmails.js\";\nimport { readGuide } from \"./readGuide.js\";\n\nexport function createOptionDefaults(promptedOptions?: PromptedOptions) {\n\tconst gitDefaults = tryCatchLazyValueAsync(async () =>\n\t\tgitUrlParse(await gitRemoteOriginUrl()),\n\t);\n\n\tconst npmDefaults = tryCatchLazyValueAsync(async () => {\n\t\tconst whoami = (await $`npm whoami`).stdout;\n\t\treturn whoami ? await npmUser(whoami) : undefined;\n\t});\n\n\tconst packageData = lazyValue(readPackageData);\n\tconst packageAuthor = lazyValue(async () =>\n\t\tparsePackageAuthor(await packageData()),\n\t);\n\n\tconst readme = lazyValue(async () => await readFileSafe(\"README.md\", \"\"));\n\n\treturn {\n\t\tauthor: async () =>\n\t\t\t(await packageAuthor()).author ?? (await npmDefaults())?.name,\n\t\tbin: async () => (await packageData()).bin,\n\t\tdescription: async () => await readDescription(packageData, readme),\n\t\temail: async () => readEmails(npmDefaults, packageAuthor),\n\t\tfunding: async () =>\n\t\t\tawait tryCatchAsync(async () =>\n\t\t\t\t(await fs.readFile(\".github/FUNDING.yml\"))\n\t\t\t\t\t.toString()\n\t\t\t\t\t.split(\":\")[1]\n\t\t\t\t\t?.trim(),\n\t\t\t),\n\t\tguide: readGuide,\n\t\towner: async () =>\n\t\t\t(await gitDefaults())?.organization ?? (await packageAuthor()).author,\n\t\trepository: async () =>\n\t\t\tpromptedOptions?.repository ??\n\t\t\t(await gitDefaults())?.name ??\n\t\t\t(await packageData()).name,\n\t\t...readDefaultsFromReadme(readme, promptedOptions?.repository),\n\t};\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AACxB,OAAO,eAAe;AACtB,YAAY,QAAQ;AACpB,OAAO,aAAa;AAEpB,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AAEvC,SAAS,0BAA0B;AACnC,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAEnB,SAAS,qBAAqB,iBAAmC;AACvE,QAAM,cAAc;AAAA,IAAuB,YAC1C,YAAY,MAAM,mBAAmB,CAAC;AAAA,EACvC;AAEA,QAAM,cAAc,uBAAuB,YAAY;AACtD,UAAM,UAAU,MAAM,eAAe;AACrC,WAAO,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,EACzC,CAAC;AAED,QAAM,cAAc,UAAU,eAAe;AAC7C,QAAM,gBAAgB;AAAA,IAAU,YAC/B,mBAAmB,MAAM,YAAY,CAAC;AAAA,EACvC;AAEA,QAAM,SAAS,UAAU,YAAY,MAAM,aAAa,aAAa,EAAE,CAAC;AAExE,SAAO;AAAA,IACN,QAAQ,aACN,MAAM,cAAc,GAAG,WAAW,MAAM,YAAY,IAAI;AAAA,IAC1D,KAAK,aAAa,MAAM,YAAY,GAAG;AAAA,IACvC,aAAa,YAAY,MAAM,gBAAgB,aAAa,MAAM;AAAA,IAClE,OAAO,YAAY,WAAW,aAAa,aAAa;AAAA,IACxD,SAAS,YACR,MAAM;AAAA,MAAc,aAClB,MAAM,GAAG,SAAS,qBAAqB,GACtC,SAAS,EACT,MAAM,GAAG,EAAE,CAAC,GACX,KAAK;AAAA,IACT;AAAA,IACD,OAAO;AAAA,IACP,OAAO,aACL,MAAM,YAAY,IAAI,iBAAiB,MAAM,cAAc,GAAG;AAAA,IAChE,YAAY,YACX,iBAAiB,eAChB,MAAM,YAAY,IAAI,SACtB,MAAM,YAAY,GAAG;AAAA,IACvB,GAAG,uBAAuB,QAAQ,iBAAiB,UAAU;AAAA,EAC9D;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/index.ts"],"sourcesContent":["import { $ } from \"execa\";\nimport gitRemoteOriginUrl from \"git-remote-origin-url\";\nimport gitUrlParse from \"git-url-parse\";\nimport lazyValue from \"lazy-value\";\nimport * as fs from \"node:fs/promises\";\nimport npmUser from \"npm-user\";\n\nimport { readDescription } from \"../../../next/readDescription.js\";\nimport { readPackageData } from \"../../packages.js\";\nimport { readFileSafe } from \"../../readFileSafe.js\";\nimport { tryCatchAsync } from \"../../tryCatchAsync.js\";\nimport { tryCatchLazyValueAsync } from \"../../tryCatchLazyValueAsync.js\";\nimport { PromptedOptions } from \"../../types.js\";\nimport { parsePackageAuthor } from \"./parsePackageAuthor.js\";\nimport { readDefaultsFromReadme } from \"./readDefaultsFromReadme.js\";\nimport { readEmails } from \"./readEmails.js\";\nimport { readGuide } from \"./readGuide.js\";\n\nexport function createOptionDefaults(promptedOptions?: PromptedOptions) {\n\tconst gitDefaults = tryCatchLazyValueAsync(async () =>\n\t\tgitUrlParse(await gitRemoteOriginUrl()),\n\t);\n\n\tconst npmDefaults = tryCatchLazyValueAsync(async () => {\n\t\tconst whoami = (await $`npm whoami`).stdout;\n\t\treturn whoami ? await npmUser(whoami) : undefined;\n\t});\n\n\tconst packageData = lazyValue(readPackageData);\n\tconst packageAuthor = lazyValue(async () =>\n\t\tparsePackageAuthor(await packageData()),\n\t);\n\n\tconst readme = lazyValue(async () => await readFileSafe(\"README.md\", \"\"));\n\n\treturn {\n\t\tauthor: async () =>\n\t\t\t(await packageAuthor()).author ?? (await npmDefaults())?.name,\n\t\tbin: async () => (await packageData()).bin,\n\t\tdescription: async () => await readDescription(packageData, readme),\n\t\temail: async () => readEmails(npmDefaults, packageAuthor),\n\t\tfunding: async () =>\n\t\t\tawait tryCatchAsync(async () =>\n\t\t\t\t(await fs.readFile(\".github/FUNDING.yml\"))\n\t\t\t\t\t.toString()\n\t\t\t\t\t.split(\":\")[1]\n\t\t\t\t\t?.trim(),\n\t\t\t),\n\t\tguide: readGuide,\n\t\towner: async () =>\n\t\t\t(await gitDefaults())?.organization ?? (await packageAuthor()).author,\n\t\trepository: async () =>\n\t\t\tpromptedOptions?.repository ??\n\t\t\t(await gitDefaults())?.name ??\n\t\t\t(await packageData()).name ??\n\t\t\tpromptedOptions?.directory,\n\t\t...readDefaultsFromReadme(readme, () =>\n\t\t\tPromise.resolve(promptedOptions?.repository),\n\t\t),\n\t};\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AACxB,OAAO,eAAe;AACtB,YAAY,QAAQ;AACpB,OAAO,aAAa;AAEpB,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AAEvC,SAAS,0BAA0B;AACnC,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAEnB,SAAS,qBAAqB,iBAAmC;AACvE,QAAM,cAAc;AAAA,IAAuB,YAC1C,YAAY,MAAM,mBAAmB,CAAC;AAAA,EACvC;AAEA,QAAM,cAAc,uBAAuB,YAAY;AACtD,UAAM,UAAU,MAAM,eAAe;AACrC,WAAO,SAAS,MAAM,QAAQ,MAAM,IAAI;AAAA,EACzC,CAAC;AAED,QAAM,cAAc,UAAU,eAAe;AAC7C,QAAM,gBAAgB;AAAA,IAAU,YAC/B,mBAAmB,MAAM,YAAY,CAAC;AAAA,EACvC;AAEA,QAAM,SAAS,UAAU,YAAY,MAAM,aAAa,aAAa,EAAE,CAAC;AAExE,SAAO;AAAA,IACN,QAAQ,aACN,MAAM,cAAc,GAAG,WAAW,MAAM,YAAY,IAAI;AAAA,IAC1D,KAAK,aAAa,MAAM,YAAY,GAAG;AAAA,IACvC,aAAa,YAAY,MAAM,gBAAgB,aAAa,MAAM;AAAA,IAClE,OAAO,YAAY,WAAW,aAAa,aAAa;AAAA,IACxD,SAAS,YACR,MAAM;AAAA,MAAc,aAClB,MAAM,GAAG,SAAS,qBAAqB,GACtC,SAAS,EACT,MAAM,GAAG,EAAE,CAAC,GACX,KAAK;AAAA,IACT;AAAA,IACD,OAAO;AAAA,IACP,OAAO,aACL,MAAM,YAAY,IAAI,iBAAiB,MAAM,cAAc,GAAG;AAAA,IAChE,YAAY,YACX,iBAAiB,eAChB,MAAM,YAAY,IAAI,SACtB,MAAM,YAAY,GAAG,QACtB,iBAAiB;AAAA,IAClB,GAAG;AAAA,MAAuB;AAAA,MAAQ,MACjC,QAAQ,QAAQ,iBAAiB,UAAU;AAAA,IAC5C;AAAA,EACD;AACD;","names":[]}
@@ -1,4 +1,4 @@
1
- declare function readDefaultsFromReadme(readme: () => Promise<string>, repository: string | undefined): {
1
+ declare function readDefaultsFromReadme(readme: () => Promise<string>, repository: () => Promise<string | undefined>): {
2
2
  logo: () => Promise<{
3
3
  height?: number;
4
4
  width?: number;
@@ -1,4 +1,5 @@
1
1
  import lazyValue from "lazy-value";
2
+ import { titleCase } from "title-case";
2
3
  import { readLogoSizing } from "../readLogoSizing.js";
3
4
  import { getUsageFromReadme } from "./getUsageFromReadme.js";
4
5
  function readDefaultsFromReadme(readme, repository) {
@@ -23,14 +24,19 @@ function readDefaultsFromReadme(readme, repository) {
23
24
  },
24
25
  title: async () => {
25
26
  const text = await readme();
26
- return (/^<h1\s+align="center">(.+)<\/h1>/.exec(text) ?? /^# (.+)/.exec(text))?.[1];
27
+ const fromText = (/^<h1\s+align="center">(.+)<\/h1>/.exec(text) ?? /^# (.+)/.exec(text))?.[1];
28
+ if (fromText) {
29
+ return fromText;
30
+ }
31
+ const repositoryValue = await repository();
32
+ return repositoryValue && titleCase(repositoryValue).replaceAll("Typescript", "TypeScript").replaceAll("-", " ");
27
33
  },
28
34
  usage: async () => {
29
35
  return getUsageFromReadme(await readme()) ?? `\`\`\`shell
30
- npm i ${repository}
36
+ npm i ${await repository()}
31
37
  \`\`\`
32
38
  \`\`\`ts
33
- import { greet } from "${repository}";
39
+ import { greet } from "${await repository()}";
34
40
 
35
41
  greet("Hello, world! \u{1F496}");
36
42
  \`\`\``;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/readDefaultsFromReadme.ts"],"sourcesContent":["import lazyValue from \"lazy-value\";\n\nimport { readLogoSizing } from \"../readLogoSizing.js\";\nimport { getUsageFromReadme } from \"./getUsageFromReadme.js\";\n\nexport function readDefaultsFromReadme(\n\treadme: () => Promise<string>,\n\trepository: string | undefined,\n) {\n\tconst imageTag = lazyValue(\n\t\tasync () => /\\n<img.+src=.+>/.exec(await readme())?.[0],\n\t);\n\n\treturn {\n\t\tlogo: async () => {\n\t\t\tconst tag = await imageTag();\n\n\t\t\tif (!tag) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst src = /src\\s*=(.+)['\"/]>/\n\t\t\t\t.exec(tag)?.[1]\n\t\t\t\t?.replaceAll(/^['\"]|['\"]$/g, \"\");\n\n\t\t\tif (!src) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\talt: /alt=['\"](.+)['\"]\\s*src=/.exec(tag)?.[1] ?? \"Project logo\",\n\t\t\t\tsrc,\n\t\t\t\t...readLogoSizing(src),\n\t\t\t};\n\t\t},\n\t\ttitle: async () => {\n\t\t\tconst text = await readme();\n\t\t\treturn (/^<h1\\s+align=\"center\">(.+)<\\/h1>/.exec(text) ??\n\t\t\t\t/^# (.+)/.exec(text))?.[1];\n\t\t},\n\n\t\tusage: async () => {\n\t\t\treturn (\n\t\t\t\tgetUsageFromReadme(await readme()) ??\n\t\t\t\t`\\`\\`\\`shell\nnpm i ${repository}\n\\`\\`\\`\n\\`\\`\\`ts\nimport { greet } from \"${repository}\";\n\ngreet(\"Hello, world! 💖\");\n\\`\\`\\``\n\t\t\t);\n\t\t},\n\t};\n}\n"],"mappings":"AAAA,OAAO,eAAe;AAEtB,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AAE5B,SAAS,uBACf,QACA,YACC;AACD,QAAM,WAAW;AAAA,IAChB,YAAY,kBAAkB,KAAK,MAAM,OAAO,CAAC,IAAI,CAAC;AAAA,EACvD;AAEA,SAAO;AAAA,IACN,MAAM,YAAY;AACjB,YAAM,MAAM,MAAM,SAAS;AAE3B,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,YAAM,MAAM,oBACV,KAAK,GAAG,IAAI,CAAC,GACZ,WAAW,gBAAgB,EAAE;AAEhC,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,QACN,KAAK,0BAA0B,KAAK,GAAG,IAAI,CAAC,KAAK;AAAA,QACjD;AAAA,QACA,GAAG,eAAe,GAAG;AAAA,MACtB;AAAA,IACD;AAAA,IACA,OAAO,YAAY;AAClB,YAAM,OAAO,MAAM,OAAO;AAC1B,cAAQ,mCAAmC,KAAK,IAAI,KACnD,UAAU,KAAK,IAAI,KAAK,CAAC;AAAA,IAC3B;AAAA,IAEA,OAAO,YAAY;AAClB,aACC,mBAAmB,MAAM,OAAO,CAAC,KACjC;AAAA,QACI,UAAU;AAAA;AAAA;AAAA,yBAGO,UAAU;AAAA;AAAA;AAAA;AAAA,IAKjC;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/readDefaultsFromReadme.ts"],"sourcesContent":["import lazyValue from \"lazy-value\";\nimport { titleCase } from \"title-case\";\n\nimport { readLogoSizing } from \"../readLogoSizing.js\";\nimport { getUsageFromReadme } from \"./getUsageFromReadme.js\";\n\nexport function readDefaultsFromReadme(\n\treadme: () => Promise<string>,\n\trepository: () => Promise<string | undefined>,\n) {\n\tconst imageTag = lazyValue(\n\t\tasync () => /\\n<img.+src=.+>/.exec(await readme())?.[0],\n\t);\n\n\treturn {\n\t\tlogo: async () => {\n\t\t\tconst tag = await imageTag();\n\n\t\t\tif (!tag) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst src = /src\\s*=(.+)['\"/]>/\n\t\t\t\t.exec(tag)?.[1]\n\t\t\t\t?.replaceAll(/^['\"]|['\"]$/g, \"\");\n\n\t\t\tif (!src) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\talt: /alt=['\"](.+)['\"]\\s*src=/.exec(tag)?.[1] ?? \"Project logo\",\n\t\t\t\tsrc,\n\t\t\t\t...readLogoSizing(src),\n\t\t\t};\n\t\t},\n\t\ttitle: async () => {\n\t\t\tconst text = await readme();\n\t\t\tconst fromText = (/^<h1\\s+align=\"center\">(.+)<\\/h1>/.exec(text) ??\n\t\t\t\t/^# (.+)/.exec(text))?.[1];\n\t\t\tif (fromText) {\n\t\t\t\treturn fromText;\n\t\t\t}\n\n\t\t\tconst repositoryValue = await repository();\n\n\t\t\treturn (\n\t\t\t\trepositoryValue &&\n\t\t\t\ttitleCase(repositoryValue)\n\t\t\t\t\t.replaceAll(\"Typescript\", \"TypeScript\")\n\t\t\t\t\t.replaceAll(\"-\", \" \")\n\t\t\t);\n\t\t},\n\n\t\tusage: async () => {\n\t\t\treturn (\n\t\t\t\tgetUsageFromReadme(await readme()) ??\n\t\t\t\t`\\`\\`\\`shell\nnpm i ${await repository()}\n\\`\\`\\`\n\\`\\`\\`ts\nimport { greet } from \"${await repository()}\";\n\ngreet(\"Hello, world! 💖\");\n\\`\\`\\``\n\t\t\t);\n\t\t},\n\t};\n}\n"],"mappings":"AAAA,OAAO,eAAe;AACtB,SAAS,iBAAiB;AAE1B,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AAE5B,SAAS,uBACf,QACA,YACC;AACD,QAAM,WAAW;AAAA,IAChB,YAAY,kBAAkB,KAAK,MAAM,OAAO,CAAC,IAAI,CAAC;AAAA,EACvD;AAEA,SAAO;AAAA,IACN,MAAM,YAAY;AACjB,YAAM,MAAM,MAAM,SAAS;AAE3B,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,YAAM,MAAM,oBACV,KAAK,GAAG,IAAI,CAAC,GACZ,WAAW,gBAAgB,EAAE;AAEhC,UAAI,CAAC,KAAK;AACT,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,QACN,KAAK,0BAA0B,KAAK,GAAG,IAAI,CAAC,KAAK;AAAA,QACjD;AAAA,QACA,GAAG,eAAe,GAAG;AAAA,MACtB;AAAA,IACD;AAAA,IACA,OAAO,YAAY;AAClB,YAAM,OAAO,MAAM,OAAO;AAC1B,YAAM,YAAY,mCAAmC,KAAK,IAAI,KAC7D,UAAU,KAAK,IAAI,KAAK,CAAC;AAC1B,UAAI,UAAU;AACb,eAAO;AAAA,MACR;AAEA,YAAM,kBAAkB,MAAM,WAAW;AAEzC,aACC,mBACA,UAAU,eAAe,EACvB,WAAW,cAAc,YAAY,EACrC,WAAW,KAAK,GAAG;AAAA,IAEvB;AAAA,IAEA,OAAO,YAAY;AAClB,aACC,mBAAmB,MAAM,OAAO,CAAC,KACjC;AAAA,QACI,MAAM,WAAW,CAAC;AAAA;AAAA;AAAA,yBAGD,MAAM,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA,IAKzC;AAAA,EACD;AACD;","names":[]}
@@ -133,7 +133,7 @@ async function readOptions(args, mode, promptedOptions = {}) {
133
133
  }
134
134
  const descriptionOption = await getPrefillOrPromptedOption({
135
135
  auto: !!mappedOptions.auto,
136
- getDefaultValue: async () => await defaults.description() ?? "A very lovely package. Hooray!",
136
+ getDefaultValue: async () => await defaults.description() ?? "A very lovely package. Hooray! \u{1F496}",
137
137
  message: "How would you describe the new package?",
138
138
  name: "description",
139
139
  provided: options.description
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/shared/options/readOptions.ts"],"sourcesContent":["import { parseArgs } from \"node:util\";\nimport { Octokit } from \"octokit\";\nimport { octokitFromAuth } from \"octokit-from-auth\";\nimport { titleCase } from \"title-case\";\nimport { z } from \"zod\";\n\nimport { withSpinner } from \"../cli/spinners.js\";\nimport { Mode, OptionsGuide, PromptedOptions } from \"../types.js\";\nimport { Options, OptionsLogo } from \"../types.js\";\nimport { allArgOptions } from \"./args.js\";\nimport { augmentOptionsWithExcludes } from \"./augmentOptionsWithExcludes.js\";\nimport { createOptionDefaults } from \"./createOptionDefaults/index.js\";\nimport { detectEmailRedundancy } from \"./detectEmailRedundancy.js\";\nimport { ensureRepositoryExists } from \"./ensureRepositoryExists.js\";\nimport { getBase } from \"./getBase.js\";\nimport { getPrefillOrPromptedOption } from \"./getPrefillOrPromptedOption.js\";\nimport { logInferredOptions } from \"./logInferredOptions.js\";\nimport { optionsSchema } from \"./optionsSchema.js\";\nimport { readLogoSizing } from \"./readLogoSizing.js\";\n\nexport interface OctokitAndOptions {\n\toctokit: Octokit | undefined;\n\toptions: Options;\n}\n\nexport interface OptionsParseCancelled {\n\tcancelled: true;\n\terror?: string | z.ZodError<object>;\n\toptions: object;\n}\n\nexport type OptionsParseResult = OptionsParseCancelled | OptionsParseSuccess;\n\nexport interface OptionsParseSuccess extends OctokitAndOptions {\n\tcancelled: false;\n}\n\nexport async function readOptions(\n\targs: string[],\n\tmode: Mode,\n\tpromptedOptions: PromptedOptions = {},\n): Promise<OptionsParseResult> {\n\tconst defaults = createOptionDefaults(promptedOptions);\n\tconst { values } = parseArgs({\n\t\targs,\n\t\toptions: allArgOptions,\n\t\tstrict: false,\n\t\ttokens: true,\n\t});\n\n\tif (mode === \"migrate\" && !values.base) {\n\t\tvalues.base = await getBase();\n\t}\n\n\tconst mappedOptions = {\n\t\taccess: values.access,\n\t\tauthor: values.author,\n\t\tauto: !!values.auto,\n\t\tbase: values.base,\n\t\tbin: values.bin,\n\t\tdescription: values.description,\n\t\tdirectory: values.directory,\n\t\temail:\n\t\t\t(values.email ?? values[\"email-github\"] ?? values[\"email-npm\"])\n\t\t\t\t? {\n\t\t\t\t\t\tgithub: values.email ?? values[\"email-github\"],\n\t\t\t\t\t\tnpm: values.email ?? values[\"email-npm\"],\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\texcludeAllContributors: values[\"exclude-all-contributors\"],\n\t\texcludeCompliance: values[\"exclude-compliance\"],\n\t\texcludeLintESLint: values[\"exclude-lint-eslint\"],\n\t\texcludeLintJSDoc: values[\"exclude-lint-jsdoc\"],\n\t\texcludeLintJson: values[\"exclude-lint-json\"],\n\t\texcludeLintKnip: values[\"exclude-lint-knip\"],\n\t\texcludeLintMd: values[\"exclude-lint-md\"],\n\t\texcludeLintPackageJson: values[\"exclude-lint-package-json\"],\n\t\texcludeLintPackages: values[\"exclude-lint-packages\"],\n\t\texcludeLintPerfectionist: values[\"exclude-lint-perfectionist\"],\n\t\texcludeLintRegexp: values[\"exclude-lint-regexp\"],\n\t\texcludeLintSpelling: values[\"exclude-lint-spelling\"],\n\t\texcludeLintStrict: values[\"exclude-lint-strict\"],\n\t\texcludeLintYml: values[\"exclude-lint-yml\"],\n\t\texcludeReleases: values[\"exclude-releases\"],\n\t\texcludeRenovate: values[\"exclude-renovate\"],\n\t\texcludeTemplatedBy: values[\"exclude-templated-by\"],\n\t\texcludeTests: values[\"unit-tests\"],\n\t\tfunding: values.funding,\n\t\tguide: values.guide,\n\t\tguideTitle: values[\"guide-title\"],\n\t\tlogo: values.logo,\n\t\tlogoAlt: values[\"logo-alt\"],\n\t\toffline: values.offline,\n\t\towner: values.owner,\n\t\tpreserveGeneratedFrom:\n\t\t\tvalues[\"preserve-generated-from\"] ?? values.owner === \"JoshuaKGoldberg\",\n\t\trepository: values.repository,\n\t\tskipAllContributorsApi:\n\t\t\tvalues[\"skip-all-contributors-api\"] ?? values.offline,\n\t\tskipGitHubApi: values[\"skip-github-api\"] ?? values.offline,\n\t\tskipInstall: values[\"skip-install\"],\n\t\tskipRemoval: values[\"skip-removal\"],\n\t\tskipRestore: values[\"skip-restore\"] ?? mode === \"create\",\n\t\tskipUninstall: values[\"skip-uninstall\"],\n\t\ttitle: values.title,\n\t};\n\n\tconst emailError = detectEmailRedundancy(values);\n\tif (emailError) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: emailError,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst optionsParseResult = optionsSchema.safeParse(mappedOptions);\n\n\tif (!optionsParseResult.success) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: optionsParseResult.error,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst options = optionsParseResult.data;\n\n\tconst ownerOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.owner,\n\t\tmessage: \"What organization or user will the repository be under?\",\n\t\tname: \"owner\",\n\t\tprovided: options.owner,\n\t});\n\n\toptions.owner ??= ownerOption.value;\n\n\tif (!options.owner) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: ownerOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst repositoryOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.repository,\n\t\tmessage: \"What will the kebab-case name of the repository be?\",\n\t\tname: \"repository\",\n\t\tprovided: options.repository,\n\t});\n\n\toptions.repository ??= repositoryOption.value;\n\n\tif (!options.repository) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: repositoryOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst { octokit, repository } = await ensureRepositoryExists(\n\t\toptions.skipGitHubApi\n\t\t\t? undefined\n\t\t\t: await withSpinner(\"Checking GitHub authentication\", async () =>\n\t\t\t\t\toctokitFromAuth(),\n\t\t\t\t),\n\t\t{\n\t\t\tmode,\n\t\t\towner: options.owner,\n\t\t\trepository: options.repository,\n\t\t},\n\t);\n\n\tif (!repository) {\n\t\treturn { cancelled: true, error: repositoryOption.error, options };\n\t}\n\n\tconst descriptionOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.description()) ?? \"A very lovely package. Hooray!\",\n\t\tmessage: \"How would you describe the new package?\",\n\t\tname: \"description\",\n\t\tprovided: options.description,\n\t});\n\n\toptions.description ??= descriptionOption.value;\n\n\tif (!options.description) {\n\t\treturn { cancelled: true, error: descriptionOption.error, options };\n\t}\n\n\tconst titleOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.title()) ?? titleCase(repository).replaceAll(\"-\", \" \"),\n\t\tmessage: \"What will the Title Case title of the repository be?\",\n\t\tname: \"title\",\n\t\tprovided: options.title,\n\t});\n\n\toptions.title ??= titleOption.value;\n\n\tif (!options.title) {\n\t\treturn { cancelled: true, error: titleOption.error, options };\n\t}\n\n\tlet guide: OptionsGuide | undefined;\n\n\tif (options.guide) {\n\t\tif (options.guideTitle) {\n\t\t\tguide = { href: options.guide, title: options.guideTitle };\n\t\t} else {\n\t\t\tconst titleOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the title text for the guide?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!titleOption.value) {\n\t\t\t\treturn { cancelled: true, error: titleOption.error, options };\n\t\t\t}\n\n\t\t\tguide = { href: options.guide, title: titleOption.value };\n\t\t}\n\t}\n\n\tlet logo: OptionsLogo | undefined;\n\n\tif (options.logo) {\n\t\tif (options.logoAlt) {\n\t\t\tlogo = { alt: options.logoAlt, src: options.logo };\n\t\t} else {\n\t\t\tconst logoAltOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the alt text (non-visual description) of the logo?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!logoAltOption.value) {\n\t\t\t\treturn { cancelled: true, error: logoAltOption.error, options };\n\t\t\t}\n\n\t\t\tlogo = { alt: logoAltOption.value, src: options.logo };\n\t\t}\n\n\t\tObject.assign(logo, readLogoSizing(logo.src));\n\t}\n\n\tlet email = options.email ?? (await defaults.email());\n\n\tif (!email) {\n\t\tconst emailOption = await getPrefillOrPromptedOption({\n\t\t\tauto: !!mappedOptions.auto,\n\t\t\tmessage: \"What email should be used in package.json and .md files?\",\n\t\t\tname: \"email\",\n\t\t});\n\n\t\tif (!emailOption.value) {\n\t\t\treturn { cancelled: true, error: emailOption.error, options };\n\t\t}\n\n\t\temail = { github: emailOption.value, npm: emailOption.value };\n\t}\n\n\tconst augmentedOptions = await augmentOptionsWithExcludes({\n\t\t...options,\n\t\taccess: options.access ?? \"public\",\n\t\tauthor:\n\t\t\toptions.author ?? (await defaults.author()) ?? (await defaults.owner()),\n\t\tbin: options.bin ?? (await defaults.bin()),\n\t\tdescription: options.description,\n\t\tdirectory:\n\t\t\toptions.directory ?? promptedOptions.directory ?? options.repository,\n\t\temail,\n\t\tfunding: options.funding ?? (await defaults.funding()),\n\t\tguide: guide ?? (await defaults.guide()),\n\t\tlogo: logo ?? (await defaults.logo()),\n\t\tmode,\n\t\towner: options.owner,\n\t\trepository,\n\t\ttitle: options.title,\n\t});\n\n\tif (!augmentedOptions) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tif (options.auto) {\n\t\tlogInferredOptions(augmentedOptions);\n\t}\n\n\treturn {\n\t\tcancelled: false,\n\t\toctokit,\n\t\toptions: augmentedOptions,\n\t};\n}\n"],"mappings":"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","names":["titleOption"]}
1
+ {"version":3,"sources":["../../../src/shared/options/readOptions.ts"],"sourcesContent":["import { parseArgs } from \"node:util\";\nimport { Octokit } from \"octokit\";\nimport { octokitFromAuth } from \"octokit-from-auth\";\nimport { titleCase } from \"title-case\";\nimport { z } from \"zod\";\n\nimport { withSpinner } from \"../cli/spinners.js\";\nimport { Mode, OptionsGuide, PromptedOptions } from \"../types.js\";\nimport { Options, OptionsLogo } from \"../types.js\";\nimport { allArgOptions } from \"./args.js\";\nimport { augmentOptionsWithExcludes } from \"./augmentOptionsWithExcludes.js\";\nimport { createOptionDefaults } from \"./createOptionDefaults/index.js\";\nimport { detectEmailRedundancy } from \"./detectEmailRedundancy.js\";\nimport { ensureRepositoryExists } from \"./ensureRepositoryExists.js\";\nimport { getBase } from \"./getBase.js\";\nimport { getPrefillOrPromptedOption } from \"./getPrefillOrPromptedOption.js\";\nimport { logInferredOptions } from \"./logInferredOptions.js\";\nimport { optionsSchema } from \"./optionsSchema.js\";\nimport { readLogoSizing } from \"./readLogoSizing.js\";\n\nexport interface OctokitAndOptions {\n\toctokit: Octokit | undefined;\n\toptions: Options;\n}\n\nexport interface OptionsParseCancelled {\n\tcancelled: true;\n\terror?: string | z.ZodError<object>;\n\toptions: object;\n}\n\nexport type OptionsParseResult = OptionsParseCancelled | OptionsParseSuccess;\n\nexport interface OptionsParseSuccess extends OctokitAndOptions {\n\tcancelled: false;\n}\n\nexport async function readOptions(\n\targs: string[],\n\tmode: Mode,\n\tpromptedOptions: PromptedOptions = {},\n): Promise<OptionsParseResult> {\n\tconst defaults = createOptionDefaults(promptedOptions);\n\tconst { values } = parseArgs({\n\t\targs,\n\t\toptions: allArgOptions,\n\t\tstrict: false,\n\t\ttokens: true,\n\t});\n\n\tif (mode === \"migrate\" && !values.base) {\n\t\tvalues.base = await getBase();\n\t}\n\n\tconst mappedOptions = {\n\t\taccess: values.access,\n\t\tauthor: values.author,\n\t\tauto: !!values.auto,\n\t\tbase: values.base,\n\t\tbin: values.bin,\n\t\tdescription: values.description,\n\t\tdirectory: values.directory,\n\t\temail:\n\t\t\t(values.email ?? values[\"email-github\"] ?? values[\"email-npm\"])\n\t\t\t\t? {\n\t\t\t\t\t\tgithub: values.email ?? values[\"email-github\"],\n\t\t\t\t\t\tnpm: values.email ?? values[\"email-npm\"],\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\texcludeAllContributors: values[\"exclude-all-contributors\"],\n\t\texcludeCompliance: values[\"exclude-compliance\"],\n\t\texcludeLintESLint: values[\"exclude-lint-eslint\"],\n\t\texcludeLintJSDoc: values[\"exclude-lint-jsdoc\"],\n\t\texcludeLintJson: values[\"exclude-lint-json\"],\n\t\texcludeLintKnip: values[\"exclude-lint-knip\"],\n\t\texcludeLintMd: values[\"exclude-lint-md\"],\n\t\texcludeLintPackageJson: values[\"exclude-lint-package-json\"],\n\t\texcludeLintPackages: values[\"exclude-lint-packages\"],\n\t\texcludeLintPerfectionist: values[\"exclude-lint-perfectionist\"],\n\t\texcludeLintRegexp: values[\"exclude-lint-regexp\"],\n\t\texcludeLintSpelling: values[\"exclude-lint-spelling\"],\n\t\texcludeLintStrict: values[\"exclude-lint-strict\"],\n\t\texcludeLintYml: values[\"exclude-lint-yml\"],\n\t\texcludeReleases: values[\"exclude-releases\"],\n\t\texcludeRenovate: values[\"exclude-renovate\"],\n\t\texcludeTemplatedBy: values[\"exclude-templated-by\"],\n\t\texcludeTests: values[\"unit-tests\"],\n\t\tfunding: values.funding,\n\t\tguide: values.guide,\n\t\tguideTitle: values[\"guide-title\"],\n\t\tlogo: values.logo,\n\t\tlogoAlt: values[\"logo-alt\"],\n\t\toffline: values.offline,\n\t\towner: values.owner,\n\t\tpreserveGeneratedFrom:\n\t\t\tvalues[\"preserve-generated-from\"] ?? values.owner === \"JoshuaKGoldberg\",\n\t\trepository: values.repository,\n\t\tskipAllContributorsApi:\n\t\t\tvalues[\"skip-all-contributors-api\"] ?? values.offline,\n\t\tskipGitHubApi: values[\"skip-github-api\"] ?? values.offline,\n\t\tskipInstall: values[\"skip-install\"],\n\t\tskipRemoval: values[\"skip-removal\"],\n\t\tskipRestore: values[\"skip-restore\"] ?? mode === \"create\",\n\t\tskipUninstall: values[\"skip-uninstall\"],\n\t\ttitle: values.title,\n\t};\n\n\tconst emailError = detectEmailRedundancy(values);\n\tif (emailError) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: emailError,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst optionsParseResult = optionsSchema.safeParse(mappedOptions);\n\n\tif (!optionsParseResult.success) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: optionsParseResult.error,\n\t\t\toptions: mappedOptions,\n\t\t};\n\t}\n\n\tconst options = optionsParseResult.data;\n\n\tconst ownerOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.owner,\n\t\tmessage: \"What organization or user will the repository be under?\",\n\t\tname: \"owner\",\n\t\tprovided: options.owner,\n\t});\n\n\toptions.owner ??= ownerOption.value;\n\n\tif (!options.owner) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: ownerOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst repositoryOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: defaults.repository,\n\t\tmessage: \"What will the kebab-case name of the repository be?\",\n\t\tname: \"repository\",\n\t\tprovided: options.repository,\n\t});\n\n\toptions.repository ??= repositoryOption.value;\n\n\tif (!options.repository) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\terror: repositoryOption.error,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tconst { octokit, repository } = await ensureRepositoryExists(\n\t\toptions.skipGitHubApi\n\t\t\t? undefined\n\t\t\t: await withSpinner(\"Checking GitHub authentication\", async () =>\n\t\t\t\t\toctokitFromAuth(),\n\t\t\t\t),\n\t\t{\n\t\t\tmode,\n\t\t\towner: options.owner,\n\t\t\trepository: options.repository,\n\t\t},\n\t);\n\n\tif (!repository) {\n\t\treturn { cancelled: true, error: repositoryOption.error, options };\n\t}\n\n\tconst descriptionOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.description()) ?? \"A very lovely package. Hooray! 💖\",\n\t\tmessage: \"How would you describe the new package?\",\n\t\tname: \"description\",\n\t\tprovided: options.description,\n\t});\n\n\toptions.description ??= descriptionOption.value;\n\n\tif (!options.description) {\n\t\treturn { cancelled: true, error: descriptionOption.error, options };\n\t}\n\n\tconst titleOption = await getPrefillOrPromptedOption({\n\t\tauto: !!mappedOptions.auto,\n\t\tgetDefaultValue: async () =>\n\t\t\t(await defaults.title()) ?? titleCase(repository).replaceAll(\"-\", \" \"),\n\t\tmessage: \"What will the Title Case title of the repository be?\",\n\t\tname: \"title\",\n\t\tprovided: options.title,\n\t});\n\n\toptions.title ??= titleOption.value;\n\n\tif (!options.title) {\n\t\treturn { cancelled: true, error: titleOption.error, options };\n\t}\n\n\tlet guide: OptionsGuide | undefined;\n\n\tif (options.guide) {\n\t\tif (options.guideTitle) {\n\t\t\tguide = { href: options.guide, title: options.guideTitle };\n\t\t} else {\n\t\t\tconst titleOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the title text for the guide?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!titleOption.value) {\n\t\t\t\treturn { cancelled: true, error: titleOption.error, options };\n\t\t\t}\n\n\t\t\tguide = { href: options.guide, title: titleOption.value };\n\t\t}\n\t}\n\n\tlet logo: OptionsLogo | undefined;\n\n\tif (options.logo) {\n\t\tif (options.logoAlt) {\n\t\t\tlogo = { alt: options.logoAlt, src: options.logo };\n\t\t} else {\n\t\t\tconst logoAltOption = await getPrefillOrPromptedOption({\n\t\t\t\tauto: !!mappedOptions.auto,\n\t\t\t\tmessage: \"What is the alt text (non-visual description) of the logo?\",\n\t\t\t\tname: \"getPrefillOrPromptedOption\",\n\t\t\t});\n\n\t\t\tif (!logoAltOption.value) {\n\t\t\t\treturn { cancelled: true, error: logoAltOption.error, options };\n\t\t\t}\n\n\t\t\tlogo = { alt: logoAltOption.value, src: options.logo };\n\t\t}\n\n\t\tObject.assign(logo, readLogoSizing(logo.src));\n\t}\n\n\tlet email = options.email ?? (await defaults.email());\n\n\tif (!email) {\n\t\tconst emailOption = await getPrefillOrPromptedOption({\n\t\t\tauto: !!mappedOptions.auto,\n\t\t\tmessage: \"What email should be used in package.json and .md files?\",\n\t\t\tname: \"email\",\n\t\t});\n\n\t\tif (!emailOption.value) {\n\t\t\treturn { cancelled: true, error: emailOption.error, options };\n\t\t}\n\n\t\temail = { github: emailOption.value, npm: emailOption.value };\n\t}\n\n\tconst augmentedOptions = await augmentOptionsWithExcludes({\n\t\t...options,\n\t\taccess: options.access ?? \"public\",\n\t\tauthor:\n\t\t\toptions.author ?? (await defaults.author()) ?? (await defaults.owner()),\n\t\tbin: options.bin ?? (await defaults.bin()),\n\t\tdescription: options.description,\n\t\tdirectory:\n\t\t\toptions.directory ?? promptedOptions.directory ?? options.repository,\n\t\temail,\n\t\tfunding: options.funding ?? (await defaults.funding()),\n\t\tguide: guide ?? (await defaults.guide()),\n\t\tlogo: logo ?? (await defaults.logo()),\n\t\tmode,\n\t\towner: options.owner,\n\t\trepository,\n\t\ttitle: options.title,\n\t});\n\n\tif (!augmentedOptions) {\n\t\treturn {\n\t\t\tcancelled: true,\n\t\t\toptions,\n\t\t};\n\t}\n\n\tif (options.auto) {\n\t\tlogInferredOptions(augmentedOptions);\n\t}\n\n\treturn {\n\t\tcancelled: false,\n\t\toctokit,\n\t\toptions: augmentedOptions,\n\t};\n}\n"],"mappings":"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","names":["titleOption"]}
@@ -76,7 +76,7 @@ async function writePackageJson(options) {
76
76
  },
77
77
  repository: {
78
78
  type: "git",
79
- url: `https://github.com/${options.owner}/${options.repository}`
79
+ url: `git+https://github.com/${options.owner}/${options.repository}.git`
80
80
  },
81
81
  scripts: {
82
82
  ...existingPackageJson.scripts,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/steps/writing/creation/writePackageJson.ts"],"sourcesContent":["import { sortPackageJson } from \"sort-package-json\";\n\nimport { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { Options, PartialPackageData } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nconst devDependenciesToRemove = [\n\t\"@babel/core\",\n\t\"@babel/preset-env\",\n\t\"@babel/preset-react\",\n\t\"@babel/preset-typescript\",\n\t\"@swc/jest\",\n\t\"@vitest/coverage-istanbul\",\n\t\"ava\",\n\t\"babel-jest\",\n\t\"commitlint\",\n\t\"cson-parser\",\n\t\"esbuild\",\n\t\"eslint-config-prettier\",\n\t\"eslint-plugin-import\",\n\t\"eslint-plugin-jest\",\n\t\"eslint-plugin-prettier\",\n\t\"eslint-plugin-simple-import-sort\",\n\t\"eslint-plugin-typescript-sort-keys\",\n\t\"jasmine\",\n\t\"jest\",\n\t\"mocha\",\n\t\"npm-run-all\",\n\t\"pnpm-deduplicate\",\n\t\"pretty-quick\",\n\t\"ts-jest\",\n];\n\nexport async function writePackageJson(options: Options) {\n\tconst existingPackageJson =\n\t\t((await readFileSafeAsJson(\n\t\t\t\"./package.json\",\n\t\t)) as null | PartialPackageData) ?? {};\n\n\treturn sortPackageJson(\n\t\tawait formatJson({\n\t\t\t// If we didn't already have a version, set it to 0.0.0\n\t\t\tversion: \"0.0.0\",\n\n\t\t\t// To start, copy over all existing package fields (e.g. \"dependencies\")\n\t\t\t...existingPackageJson,\n\n\t\t\tauthor: { email: options.email.npm, name: options.author },\n\t\t\tbin: options.bin,\n\t\t\tdescription: options.description,\n\t\t\tkeywords: options.keywords?.length\n\t\t\t\t? options.keywords.flatMap((keyword) => keyword.split(/ /))\n\t\t\t\t: undefined,\n\n\t\t\t// We copy all existing dev dependencies except those we know are not used anymore\n\t\t\tdevDependencies: {\n\t\t\t\t...copyDevDependencies(existingPackageJson),\n\t\t\t\t// prettier is a special case of being switched to a devDependency\n\t\t\t\tprettier: existingPackageJson.dependencies?.prettier,\n\t\t\t},\n\n\t\t\t// Remove fields we know we don't want, such as old or redundant configs\n\t\t\teslintConfig: undefined,\n\t\t\thusky: undefined,\n\t\t\tjest: undefined,\n\t\t\tmocha: undefined,\n\t\t\tprettierConfig: undefined,\n\t\t\ttypes: undefined,\n\n\t\t\t// The rest of the fields are ones we know from our template\n\t\t\tengines: {\n\t\t\t\tnode: \">=18.3.0\",\n\t\t\t},\n\t\t\tfiles: [\n\t\t\t\toptions.bin?.replace(/^\\.\\//, \"\"),\n\t\t\t\t\"lib/\",\n\t\t\t\t\"package.json\",\n\t\t\t\t\"LICENSE.md\",\n\t\t\t\t\"README.md\",\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.sort(),\n\t\t\tlicense: \"MIT\",\n\t\t\t\"lint-staged\": {\n\t\t\t\t\"*\": \"prettier --ignore-unknown --write\",\n\t\t\t},\n\t\t\tmain: \"./lib/index.js\",\n\t\t\tname: options.repository,\n\t\t\tpublishConfig: {\n\t\t\t\tprovenance: true,\n\t\t\t},\n\t\t\trepository: {\n\t\t\t\ttype: \"git\",\n\t\t\t\turl: `https://github.com/${options.owner}/${options.repository}`,\n\t\t\t},\n\t\t\tscripts: {\n\t\t\t\t...existingPackageJson.scripts,\n\t\t\t\t...(!options.excludeBuild && {\n\t\t\t\t\tbuild: \"tsup\",\n\t\t\t\t}),\n\t\t\t\tformat: \"prettier .\",\n\t\t\t\tlint: \"eslint . --max-warnings 0\",\n\t\t\t\t...(!options.excludeLintKnip && {\n\t\t\t\t\t\"lint:knip\": \"knip\",\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintMd && {\n\t\t\t\t\t\"lint:md\":\n\t\t\t\t\t\t'markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line',\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintPackages && {\n\t\t\t\t\t\"lint:packages\": \"pnpm dedupe --check\",\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintSpelling && {\n\t\t\t\t\t\"lint:spelling\": 'cspell \"**\" \".github/**/*\"',\n\t\t\t\t}),\n\t\t\t\tprepare: \"husky\",\n\t\t\t\t...(!options.excludeTests && { test: \"vitest\" }),\n\t\t\t\ttsc: \"tsc\",\n\t\t\t},\n\t\t\ttype: \"module\",\n\t\t}),\n\t);\n}\n\nfunction copyDevDependencies(existingPackageJson: object) {\n\tconst devDependencies =\n\t\t\"devDependencies\" in existingPackageJson\n\t\t\t? (existingPackageJson.devDependencies as Record<string, string>)\n\t\t\t: {};\n\n\tfor (const devDependencyToRemove of devDependenciesToRemove) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete devDependencies[devDependencyToRemove];\n\t}\n\n\treturn devDependencies;\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAEhC,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,MAAM,0BAA0B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,eAAsB,iBAAiB,SAAkB;AACxD,QAAM,sBACH,MAAM;AAAA,IACP;AAAA,EACD,KAAoC,CAAC;AAEtC,SAAO;AAAA,IACN,MAAM,WAAW;AAAA;AAAA,MAEhB,SAAS;AAAA;AAAA,MAGT,GAAG;AAAA,MAEH,QAAQ,EAAE,OAAO,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO;AAAA,MACzD,KAAK,QAAQ;AAAA,MACb,aAAa,QAAQ;AAAA,MACrB,UAAU,QAAQ,UAAU,SACzB,QAAQ,SAAS,QAAQ,CAAC,YAAY,QAAQ,MAAM,GAAG,CAAC,IACxD;AAAA;AAAA,MAGH,iBAAiB;AAAA,QAChB,GAAG,oBAAoB,mBAAmB;AAAA;AAAA,QAE1C,UAAU,oBAAoB,cAAc;AAAA,MAC7C;AAAA;AAAA,MAGA,cAAc;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,OAAO;AAAA;AAAA,MAGP,SAAS;AAAA,QACR,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,QAAQ,KAAK,QAAQ,SAAS,EAAE;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,EACE,OAAO,OAAO,EACd,KAAK;AAAA,MACP,SAAS;AAAA,MACT,eAAe;AAAA,QACd,KAAK;AAAA,MACN;AAAA,MACA,MAAM;AAAA,MACN,MAAM,QAAQ;AAAA,MACd,eAAe;AAAA,QACd,YAAY;AAAA,MACb;AAAA,MACA,YAAY;AAAA,QACX,MAAM;AAAA,QACN,KAAK,sBAAsB,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,MAC/D;AAAA,MACA,SAAS;AAAA,QACR,GAAG,oBAAoB;AAAA,QACvB,GAAI,CAAC,QAAQ,gBAAgB;AAAA,UAC5B,OAAO;AAAA,QACR;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,GAAI,CAAC,QAAQ,mBAAmB;AAAA,UAC/B,aAAa;AAAA,QACd;AAAA,QACA,GAAI,CAAC,QAAQ,iBAAiB;AAAA,UAC7B,WACC;AAAA,QACF;AAAA,QACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,UACnC,iBAAiB;AAAA,QAClB;AAAA,QACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,UACnC,iBAAiB;AAAA,QAClB;AAAA,QACA,SAAS;AAAA,QACT,GAAI,CAAC,QAAQ,gBAAgB,EAAE,MAAM,SAAS;AAAA,QAC9C,KAAK;AAAA,MACN;AAAA,MACA,MAAM;AAAA,IACP,CAAC;AAAA,EACF;AACD;AAEA,SAAS,oBAAoB,qBAA6B;AACzD,QAAM,kBACL,qBAAqB,sBACjB,oBAAoB,kBACrB,CAAC;AAEL,aAAW,yBAAyB,yBAAyB;AAE5D,WAAO,gBAAgB,qBAAqB;AAAA,EAC7C;AAEA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../../src/steps/writing/creation/writePackageJson.ts"],"sourcesContent":["import { sortPackageJson } from \"sort-package-json\";\n\nimport { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { Options, PartialPackageData } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nconst devDependenciesToRemove = [\n\t\"@babel/core\",\n\t\"@babel/preset-env\",\n\t\"@babel/preset-react\",\n\t\"@babel/preset-typescript\",\n\t\"@swc/jest\",\n\t\"@vitest/coverage-istanbul\",\n\t\"ava\",\n\t\"babel-jest\",\n\t\"commitlint\",\n\t\"cson-parser\",\n\t\"esbuild\",\n\t\"eslint-config-prettier\",\n\t\"eslint-plugin-import\",\n\t\"eslint-plugin-jest\",\n\t\"eslint-plugin-prettier\",\n\t\"eslint-plugin-simple-import-sort\",\n\t\"eslint-plugin-typescript-sort-keys\",\n\t\"jasmine\",\n\t\"jest\",\n\t\"mocha\",\n\t\"npm-run-all\",\n\t\"pnpm-deduplicate\",\n\t\"pretty-quick\",\n\t\"ts-jest\",\n];\n\nexport async function writePackageJson(options: Options) {\n\tconst existingPackageJson =\n\t\t((await readFileSafeAsJson(\n\t\t\t\"./package.json\",\n\t\t)) as null | PartialPackageData) ?? {};\n\n\treturn sortPackageJson(\n\t\tawait formatJson({\n\t\t\t// If we didn't already have a version, set it to 0.0.0\n\t\t\tversion: \"0.0.0\",\n\n\t\t\t// To start, copy over all existing package fields (e.g. \"dependencies\")\n\t\t\t...existingPackageJson,\n\n\t\t\tauthor: { email: options.email.npm, name: options.author },\n\t\t\tbin: options.bin,\n\t\t\tdescription: options.description,\n\t\t\tkeywords: options.keywords?.length\n\t\t\t\t? options.keywords.flatMap((keyword) => keyword.split(/ /))\n\t\t\t\t: undefined,\n\n\t\t\t// We copy all existing dev dependencies except those we know are not used anymore\n\t\t\tdevDependencies: {\n\t\t\t\t...copyDevDependencies(existingPackageJson),\n\t\t\t\t// prettier is a special case of being switched to a devDependency\n\t\t\t\tprettier: existingPackageJson.dependencies?.prettier,\n\t\t\t},\n\n\t\t\t// Remove fields we know we don't want, such as old or redundant configs\n\t\t\teslintConfig: undefined,\n\t\t\thusky: undefined,\n\t\t\tjest: undefined,\n\t\t\tmocha: undefined,\n\t\t\tprettierConfig: undefined,\n\t\t\ttypes: undefined,\n\n\t\t\t// The rest of the fields are ones we know from our template\n\t\t\tengines: {\n\t\t\t\tnode: \">=18.3.0\",\n\t\t\t},\n\t\t\tfiles: [\n\t\t\t\toptions.bin?.replace(/^\\.\\//, \"\"),\n\t\t\t\t\"lib/\",\n\t\t\t\t\"package.json\",\n\t\t\t\t\"LICENSE.md\",\n\t\t\t\t\"README.md\",\n\t\t\t]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.sort(),\n\t\t\tlicense: \"MIT\",\n\t\t\t\"lint-staged\": {\n\t\t\t\t\"*\": \"prettier --ignore-unknown --write\",\n\t\t\t},\n\t\t\tmain: \"./lib/index.js\",\n\t\t\tname: options.repository,\n\t\t\tpublishConfig: {\n\t\t\t\tprovenance: true,\n\t\t\t},\n\t\t\trepository: {\n\t\t\t\ttype: \"git\",\n\t\t\t\turl: `git+https://github.com/${options.owner}/${options.repository}.git`,\n\t\t\t},\n\t\t\tscripts: {\n\t\t\t\t...existingPackageJson.scripts,\n\t\t\t\t...(!options.excludeBuild && {\n\t\t\t\t\tbuild: \"tsup\",\n\t\t\t\t}),\n\t\t\t\tformat: \"prettier .\",\n\t\t\t\tlint: \"eslint . --max-warnings 0\",\n\t\t\t\t...(!options.excludeLintKnip && {\n\t\t\t\t\t\"lint:knip\": \"knip\",\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintMd && {\n\t\t\t\t\t\"lint:md\":\n\t\t\t\t\t\t'markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line',\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintPackages && {\n\t\t\t\t\t\"lint:packages\": \"pnpm dedupe --check\",\n\t\t\t\t}),\n\t\t\t\t...(!options.excludeLintSpelling && {\n\t\t\t\t\t\"lint:spelling\": 'cspell \"**\" \".github/**/*\"',\n\t\t\t\t}),\n\t\t\t\tprepare: \"husky\",\n\t\t\t\t...(!options.excludeTests && { test: \"vitest\" }),\n\t\t\t\ttsc: \"tsc\",\n\t\t\t},\n\t\t\ttype: \"module\",\n\t\t}),\n\t);\n}\n\nfunction copyDevDependencies(existingPackageJson: object) {\n\tconst devDependencies =\n\t\t\"devDependencies\" in existingPackageJson\n\t\t\t? (existingPackageJson.devDependencies as Record<string, string>)\n\t\t\t: {};\n\n\tfor (const devDependencyToRemove of devDependenciesToRemove) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete devDependencies[devDependencyToRemove];\n\t}\n\n\treturn devDependencies;\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAEhC,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,MAAM,0BAA0B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,eAAsB,iBAAiB,SAAkB;AACxD,QAAM,sBACH,MAAM;AAAA,IACP;AAAA,EACD,KAAoC,CAAC;AAEtC,SAAO;AAAA,IACN,MAAM,WAAW;AAAA;AAAA,MAEhB,SAAS;AAAA;AAAA,MAGT,GAAG;AAAA,MAEH,QAAQ,EAAE,OAAO,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO;AAAA,MACzD,KAAK,QAAQ;AAAA,MACb,aAAa,QAAQ;AAAA,MACrB,UAAU,QAAQ,UAAU,SACzB,QAAQ,SAAS,QAAQ,CAAC,YAAY,QAAQ,MAAM,GAAG,CAAC,IACxD;AAAA;AAAA,MAGH,iBAAiB;AAAA,QAChB,GAAG,oBAAoB,mBAAmB;AAAA;AAAA,QAE1C,UAAU,oBAAoB,cAAc;AAAA,MAC7C;AAAA;AAAA,MAGA,cAAc;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,OAAO;AAAA;AAAA,MAGP,SAAS;AAAA,QACR,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,QAAQ,KAAK,QAAQ,SAAS,EAAE;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,EACE,OAAO,OAAO,EACd,KAAK;AAAA,MACP,SAAS;AAAA,MACT,eAAe;AAAA,QACd,KAAK;AAAA,MACN;AAAA,MACA,MAAM;AAAA,MACN,MAAM,QAAQ;AAAA,MACd,eAAe;AAAA,QACd,YAAY;AAAA,MACb;AAAA,MACA,YAAY;AAAA,QACX,MAAM;AAAA,QACN,KAAK,0BAA0B,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,MACnE;AAAA,MACA,SAAS;AAAA,QACR,GAAG,oBAAoB;AAAA,QACvB,GAAI,CAAC,QAAQ,gBAAgB;AAAA,UAC5B,OAAO;AAAA,QACR;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,GAAI,CAAC,QAAQ,mBAAmB;AAAA,UAC/B,aAAa;AAAA,QACd;AAAA,QACA,GAAI,CAAC,QAAQ,iBAAiB;AAAA,UAC7B,WACC;AAAA,QACF;AAAA,QACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,UACnC,iBAAiB;AAAA,QAClB;AAAA,QACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,UACnC,iBAAiB;AAAA,QAClB;AAAA,QACA,SAAS;AAAA,QACT,GAAI,CAAC,QAAQ,gBAAgB,EAAE,MAAM,SAAS;AAAA,QAC9C,KAAK;AAAA,MACN;AAAA,MACA,MAAM;AAAA,IACP,CAAC;AAAA,EACF;AACD;AAEA,SAAS,oBAAoB,qBAA6B;AACzD,QAAM,kBACL,qBAAqB,sBACjB,oBAAoB,kBACrB,CAAC;AAEL,aAAW,yBAAyB,yBAAyB;AAE5D,WAAO,gBAAgB,qBAAqB;AAAA,EAC7C;AAEA,SAAO;AACR;","names":[]}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "create-typescript-app",
3
- "version": "1.81.0",
4
- "description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️‍🔥",
3
+ "version": "1.83.0-beta.0",
4
+ "description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 🎁",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "https://github.com/JoshuaKGoldberg/create-typescript-app"
7
+ "url": "git+https://github.com/JoshuaKGoldberg/create-typescript-app.git"
8
8
  },
9
9
  "license": "MIT",
10
10
  "author": {
@@ -44,7 +44,7 @@
44
44
  "@clack/prompts": "^0.9.0",
45
45
  "@prettier/sync": "^0.5.2",
46
46
  "chalk": "^5.4.1",
47
- "create": "0.1.0-alpha.8",
47
+ "create": "0.1.0-alpha.11",
48
48
  "cspell-populate-words": "^0.3.0",
49
49
  "execa": "^9.5.2",
50
50
  "git-remote-origin-url": "^4.0.0",
@@ -89,7 +89,7 @@
89
89
  "all-contributors-cli": "6.26.1",
90
90
  "c8": "10.1.3",
91
91
  "console-fail-test": "0.5.0",
92
- "create-testers": "0.1.0-alpha.8",
92
+ "create-testers": "0.1.0-alpha.11",
93
93
  "cspell": "8.17.1",
94
94
  "eslint": "9.17.0",
95
95
  "eslint-plugin-jsdoc": "50.6.1",