create-typescript-app 1.80.0 → 1.81.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.
- package/README.md +3 -2
- package/lib/next/base.d.ts +2 -1
- package/lib/next/base.js +10 -6
- package/lib/next/base.js.map +1 -1
- package/lib/next/blocks/blockAllContributors.d.ts +2 -1
- package/lib/next/blocks/blockAllContributors.js +1 -5
- package/lib/next/blocks/blockAllContributors.js.map +1 -1
- package/lib/next/blocks/blockAreTheTypesWrong.d.ts +2 -1
- package/lib/next/blocks/blockCSpell.d.ts +2 -1
- package/lib/next/blocks/blockContributingDocs.d.ts +2 -1
- package/lib/next/blocks/blockContributorCovenant.d.ts +2 -1
- package/lib/next/blocks/blockDevelopmentDocs.d.ts +2 -1
- package/lib/next/blocks/blockESLint.d.ts +2 -1
- package/lib/next/blocks/blockESLint.js +4 -2
- package/lib/next/blocks/blockESLint.js.map +1 -1
- package/lib/next/blocks/blockESLintComments.d.ts +2 -1
- package/lib/next/blocks/blockESLintJSDoc.d.ts +2 -1
- package/lib/next/blocks/blockESLintJSONC.d.ts +2 -1
- package/lib/next/blocks/blockESLintMarkdown.d.ts +2 -1
- package/lib/next/blocks/blockESLintMoreStyling.d.ts +2 -1
- package/lib/next/blocks/blockESLintNode.d.ts +2 -1
- package/lib/next/blocks/blockESLintPackageJson.d.ts +2 -1
- package/lib/next/blocks/blockESLintPerfectionist.d.ts +2 -1
- package/lib/next/blocks/blockESLintRegexp.d.ts +2 -1
- package/lib/next/blocks/blockESLintYML.d.ts +2 -1
- package/lib/next/blocks/blockExampleFiles.d.ts +2 -1
- package/lib/next/blocks/blockFunding.d.ts +2 -1
- package/lib/next/blocks/blockGitHubActionsCI.d.ts +3 -1
- package/lib/next/blocks/blockGitHubActionsCI.js +1 -0
- package/lib/next/blocks/blockGitHubActionsCI.js.map +1 -1
- package/lib/next/blocks/blockGitHubApps.d.ts +2 -1
- package/lib/next/blocks/blockGitHubIssueTemplates.d.ts +2 -1
- package/lib/next/blocks/blockGitHubPRTemplate.d.ts +2 -1
- package/lib/next/blocks/blockGitignore.d.ts +2 -1
- package/lib/next/blocks/blockKnip.d.ts +2 -1
- package/lib/next/blocks/blockKnip.js +11 -0
- package/lib/next/blocks/blockKnip.js.map +1 -1
- package/lib/next/blocks/blockMITLicense.d.ts +2 -1
- package/lib/next/blocks/blockMarkdownlint.d.ts +2 -1
- package/lib/next/blocks/blockNvmrc.d.ts +2 -1
- package/lib/next/blocks/blockPRCompliance.d.ts +2 -1
- package/lib/next/blocks/blockPackageJson.d.ts +2 -1
- package/lib/next/blocks/blockPackageJson.js +3 -1
- package/lib/next/blocks/blockPackageJson.js.map +1 -1
- package/lib/next/blocks/blockPnpmDedupe.d.ts +2 -1
- package/lib/next/blocks/blockPrettier.d.ts +2 -1
- package/lib/next/blocks/blockPrettier.js +2 -2
- package/lib/next/blocks/blockPrettier.js.map +1 -1
- package/lib/next/blocks/blockPrettierPluginCurly.d.ts +2 -1
- package/lib/next/blocks/blockPrettierPluginPackageJson.d.ts +2 -1
- package/lib/next/blocks/blockPrettierPluginSh.d.ts +2 -1
- package/lib/next/blocks/blockREADME.d.ts +2 -1
- package/lib/next/blocks/blockREADME.js +1 -8
- package/lib/next/blocks/blockREADME.js.map +1 -1
- package/lib/next/blocks/blockReleaseIt.d.ts +2 -1
- package/lib/next/blocks/blockReleaseIt.js +13 -1
- package/lib/next/blocks/blockReleaseIt.js.map +1 -1
- package/lib/next/blocks/blockRenovate.d.ts +2 -1
- package/lib/next/blocks/blockRepositoryBranchRuleset.d.ts +2 -1
- package/lib/next/blocks/blockRepositoryLabels.d.ts +2 -1
- package/lib/next/blocks/blockRepositorySecrets.d.ts +2 -1
- package/lib/next/blocks/blockRepositorySettings.d.ts +2 -1
- package/lib/next/blocks/blockRepositorySettings.js +3 -1
- package/lib/next/blocks/blockRepositorySettings.js.map +1 -1
- package/lib/next/blocks/blockSecurityDocs.d.ts +2 -1
- package/lib/next/blocks/blockTSup.d.ts +2 -1
- package/lib/next/blocks/blockTemplatedBy.d.ts +2 -1
- package/lib/next/blocks/blockTypeScript.d.ts +2 -1
- package/lib/next/blocks/blockTypeScript.js +1 -4
- package/lib/next/blocks/blockTypeScript.js.map +1 -1
- package/lib/next/blocks/blockVSCode.d.ts +2 -1
- package/lib/next/blocks/blockVitest.d.ts +8 -4
- package/lib/next/blocks/blockVitest.js +18 -14
- package/lib/next/blocks/blockVitest.js.map +1 -1
- package/lib/next/blocks/sourcePackageJson.d.ts +3 -1
- package/lib/next/presets/presetCommon.d.ts +2 -1
- package/lib/next/presets/presetEverything.d.ts +2 -1
- package/lib/next/presets/presetMinimal.d.ts +2 -1
- package/lib/next/readDescription.d.ts +1 -1
- package/lib/next/readDescription.js +9 -1
- package/lib/next/readDescription.js.map +1 -1
- package/lib/next/readDescriptionFromReadme.d.ts +3 -0
- package/lib/next/readDescriptionFromReadme.js +18 -0
- package/lib/next/readDescriptionFromReadme.js.map +1 -0
- package/lib/next/template.d.ts +2 -1
- package/lib/shared/options/createOptionDefaults/getUsageFromReadme.d.ts +3 -0
- package/lib/shared/options/createOptionDefaults/getUsageFromReadme.js +21 -0
- package/lib/shared/options/createOptionDefaults/getUsageFromReadme.js.map +1 -0
- package/lib/shared/options/createOptionDefaults/index.d.ts +1 -0
- package/lib/shared/options/createOptionDefaults/index.js +4 -2
- package/lib/shared/options/createOptionDefaults/index.js.map +1 -1
- package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.d.ts +2 -1
- package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js +12 -3
- package/lib/shared/options/createOptionDefaults/readDefaultsFromReadme.js.map +1 -1
- package/lib/steps/uninstallPackages.js +2 -0
- package/lib/steps/uninstallPackages.js.map +1 -1
- package/lib/steps/writing/creation/rootFiles.js +13 -3
- package/lib/steps/writing/creation/rootFiles.js.map +1 -1
- package/package.json +3 -1
|
@@ -19,18 +19,21 @@ const blockVitest = base.createBlock({
|
|
|
19
19
|
},
|
|
20
20
|
addons: {
|
|
21
21
|
coverage: z.object({
|
|
22
|
-
directory: z.string(),
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
directory: z.string().optional(),
|
|
23
|
+
exclude: z.array(z.string()).optional(),
|
|
24
|
+
flags: z.string().optional(),
|
|
25
|
+
include: z.array(z.string()).optional()
|
|
26
|
+
}).default({}),
|
|
27
|
+
env: z.record(z.string(), z.string()).default({}),
|
|
25
28
|
exclude: z.array(z.string()).default([]),
|
|
26
|
-
|
|
29
|
+
flags: z.array(z.string()).default([])
|
|
27
30
|
},
|
|
28
31
|
migrate() {
|
|
29
32
|
return {
|
|
30
33
|
scripts: [
|
|
31
34
|
{
|
|
32
35
|
commands: [
|
|
33
|
-
"rm .github/codecov.yml .mocha* codecov.yml jest.config.*"
|
|
36
|
+
"rm .github/codecov.yml .mocha* codecov.yml jest.config.* vitest.config.*"
|
|
34
37
|
],
|
|
35
38
|
phase: CommandPhase.Migrations
|
|
36
39
|
}
|
|
@@ -38,13 +41,13 @@ const blockVitest = base.createBlock({
|
|
|
38
41
|
};
|
|
39
42
|
},
|
|
40
43
|
produce({ addons }) {
|
|
41
|
-
const { coverage, exclude = [],
|
|
44
|
+
const { coverage, env, exclude = [], flags } = addons;
|
|
45
|
+
const coverageDirectory = coverage.directory ?? "coverage";
|
|
42
46
|
const excludeText = JSON.stringify(exclude);
|
|
43
|
-
const includeText = JSON.stringify(include);
|
|
44
47
|
return {
|
|
45
48
|
addons: [
|
|
46
49
|
blockCSpell({
|
|
47
|
-
ignores: [
|
|
50
|
+
ignores: [coverageDirectory]
|
|
48
51
|
}),
|
|
49
52
|
blockDevelopmentDocs({
|
|
50
53
|
sections: {
|
|
@@ -85,7 +88,7 @@ Calls to \`console.log\`, \`console.warn\`, and other console methods will cause
|
|
|
85
88
|
]
|
|
86
89
|
}
|
|
87
90
|
],
|
|
88
|
-
ignores: [
|
|
91
|
+
ignores: [coverageDirectory, "**/*.snap"],
|
|
89
92
|
imports: [{ source: "@vitest/eslint-plugin", specifier: "vitest" }]
|
|
90
93
|
}),
|
|
91
94
|
blockExampleFiles({
|
|
@@ -138,7 +141,7 @@ describe("greet", () => {
|
|
|
138
141
|
}
|
|
139
142
|
}),
|
|
140
143
|
blockGitignore({
|
|
141
|
-
ignores: [`/${
|
|
144
|
+
ignores: [`/${coverageDirectory}`]
|
|
142
145
|
}),
|
|
143
146
|
blockGitHubActionsCI({
|
|
144
147
|
jobs: [
|
|
@@ -147,6 +150,7 @@ describe("greet", () => {
|
|
|
147
150
|
steps: [
|
|
148
151
|
{ run: "pnpm run test --coverage" },
|
|
149
152
|
{
|
|
153
|
+
...Object.keys(env).length && { env },
|
|
150
154
|
if: "always()",
|
|
151
155
|
uses: "codecov/codecov-action@v3",
|
|
152
156
|
...coverage.flags && { with: { flags: coverage.flags } }
|
|
@@ -172,12 +176,12 @@ describe("greet", () => {
|
|
|
172
176
|
"vitest"
|
|
173
177
|
),
|
|
174
178
|
scripts: {
|
|
175
|
-
test:
|
|
179
|
+
test: `vitest ${flags.join(" ")}`.trim()
|
|
176
180
|
}
|
|
177
181
|
}
|
|
178
182
|
}),
|
|
179
183
|
blockPrettier({
|
|
180
|
-
ignores: [`/${
|
|
184
|
+
ignores: [`/${coverageDirectory}`]
|
|
181
185
|
}),
|
|
182
186
|
blockTSup({
|
|
183
187
|
entry: ["!src/**/*.test.*"]
|
|
@@ -207,8 +211,8 @@ export default defineConfig({
|
|
|
207
211
|
clearMocks: true,
|
|
208
212
|
coverage: {
|
|
209
213
|
all: true,
|
|
210
|
-
exclude: ${
|
|
211
|
-
include: ${
|
|
214
|
+
${coverage.exclude?.length ? `exclude: ${JSON.stringify(coverage.exclude)},
|
|
215
|
+
` : ""}include: ${JSON.stringify(coverage.include)},
|
|
212
216
|
reporter: ["html", "lcov"],
|
|
213
217
|
},
|
|
214
218
|
exclude: [${excludeText.slice(1, excludeText.length - 1)}, "node_modules"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/next/blocks/blockVitest.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockESLint } from \"./blockESLint.js\";\nimport { blockExampleFiles } from \"./blockExampleFiles.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockGitHubApps } from \"./blockGitHubApps.js\";\nimport { blockGitignore } from \"./blockGitignore.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockPrettier } from \"./blockPrettier.js\";\nimport { blockTSup } from \"./blockTSup.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { getPackageDependencies } from \"./packageData.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockVitest = base.createBlock({\n\tabout: {\n\t\tname: \"Vitest\",\n\t},\n\taddons: {\n\t\tcoverage: z\n\t\t\t.object({\n\t\t\t\tdirectory: z.string(),\n\t\t\t\tflags: z.string().optional(),\n\t\t\t})\n\t\t\t.default({ directory: \"coverage\" }),\n\t\texclude: z.array(z.string()).default([]),\n\t\tinclude: z.array(z.string()).default([]),\n\t},\n\tmigrate() {\n\t\treturn {\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\n\t\t\t\t\t\t\"rm .github/codecov.yml .mocha* codecov.yml jest.config.*\",\n\t\t\t\t\t],\n\t\t\t\t\tphase: CommandPhase.Migrations,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tproduce({ addons }) {\n\t\tconst { coverage, exclude = [], include = [] } = addons;\n\t\tconst excludeText = JSON.stringify(exclude);\n\t\tconst includeText = JSON.stringify(include);\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\tignores: [coverage.directory],\n\t\t\t\t}),\n\t\t\t\tblockDevelopmentDocs({\n\t\t\t\t\tsections: {\n\t\t\t\t\t\tTesting: {\n\t\t\t\t\t\t\tcontents: `\n[Vitest](https://vitest.dev) is used for tests.\nYou can run it locally on the command-line:\n\n\\`\\`\\`shell\npnpm run test\n\\`\\`\\`\n\nAdd the \\`--coverage\\` flag to compute test coverage and place reports in the \\`coverage/\\` directory:\n\n\\`\\`\\`shell\npnpm run test --coverage\n\\`\\`\\`\n\nNote that [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test) is enabled for all test runs.\nCalls to \\`console.log\\`, \\`console.warn\\`, and other console methods will cause a test to fail.\n\n\n\t\t`,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\textends: [\"vitest.configs.recommended\"],\n\t\t\t\t\t\t\tfiles: [\"**/*.test.*\"],\n\t\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentries: {\n\t\t\t\t\t\t\t\t\t\t\"@typescript-eslint/no-unsafe-assignment\": \"off\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tignores: [coverage.directory, \"**/*.snap\"],\n\t\t\t\t\timports: [{ source: \"@vitest/eslint-plugin\", specifier: \"vitest\" }],\n\t\t\t\t}),\n\t\t\t\tblockExampleFiles({\n\t\t\t\t\tfiles: {\n\t\t\t\t\t\t\"greet.test.ts\": `import { describe, expect, it, vi } from \"vitest\";\n\nimport { greet } from \"./greet.js\";\n\nconst message = \"Yay, testing!\";\n\ndescribe(\"greet\", () => {\n\tit(\"logs to the console once when message is provided as a string\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet(message);\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs to the console once when message is provided as an object\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet({ message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs once when times is not provided in an object\", () => {\n\t\tconst logger = vi.fn();\n\n\t\tgreet({ logger, message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs a specified number of times when times is provided\", () => {\n\t\tconst logger = vi.fn();\n\t\tconst times = 7;\n\n\t\tgreet({ logger, message, times });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(7);\n\t});\n});\n`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockGitignore({\n\t\t\t\t\tignores: [`/${coverage.directory}`],\n\t\t\t\t}),\n\t\t\t\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Test\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t{ run: \"pnpm run test --coverage\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif: \"always()\",\n\t\t\t\t\t\t\t\t\tuses: \"codecov/codecov-action@v3\",\n\t\t\t\t\t\t\t\t\t...(coverage.flags && { with: { flags: coverage.flags } }),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockGitHubApps({\n\t\t\t\t\tapps: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Codecov\",\n\t\t\t\t\t\t\turl: \"https://github.com/apps/codecov\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockPackageJson({\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdevDependencies: getPackageDependencies(\n\t\t\t\t\t\t\t\"@vitest/coverage-v8\",\n\t\t\t\t\t\t\t\"@vitest/eslint-plugin\",\n\t\t\t\t\t\t\t\"console-fail-test\",\n\t\t\t\t\t\t\t\"vitest\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\ttest: \"vitest\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockPrettier({\n\t\t\t\t\tignores: [`/${coverage.directory}`],\n\t\t\t\t}),\n\t\t\t\tblockTSup({\n\t\t\t\t\tentry: [\"!src/**/*.test.*\"],\n\t\t\t\t}),\n\t\t\t\tblockVSCode({\n\t\t\t\t\tdebuggers: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\targs: [\"run\", \"${relativeFile}\"],\n\t\t\t\t\t\t\tautoAttachChildProcesses: true,\n\t\t\t\t\t\t\tconsole: \"integratedTerminal\",\n\t\t\t\t\t\t\tname: \"Debug Current Test File\",\n\t\t\t\t\t\t\tprogram: \"${workspaceRoot}/node_modules/vitest/vitest.mjs\",\n\t\t\t\t\t\t\trequest: \"launch\",\n\t\t\t\t\t\t\tskipFiles: [\"<node_internals>/**\", \"**/node_modules/**\"],\n\t\t\t\t\t\t\tsmartStep: true,\n\t\t\t\t\t\t\ttype: \"node\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\textensions: [\"vitest.explorer\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t\"vitest.config.ts\": `import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tclearMocks: true,\n\t\tcoverage: {\n\t\t\tall: true,\n\t\t\texclude: ${excludeText},\n\t\t\tinclude: ${includeText},\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [${excludeText.slice(1, excludeText.length - 1)}, \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n\t`,\n\t\t\t},\n\t\t};\n\t},\n});\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/next/blocks/blockVitest.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { base } from \"../base.js\";\nimport { blockCSpell } from \"./blockCSpell.js\";\nimport { blockDevelopmentDocs } from \"./blockDevelopmentDocs.js\";\nimport { blockESLint } from \"./blockESLint.js\";\nimport { blockExampleFiles } from \"./blockExampleFiles.js\";\nimport { blockGitHubActionsCI } from \"./blockGitHubActionsCI.js\";\nimport { blockGitHubApps } from \"./blockGitHubApps.js\";\nimport { blockGitignore } from \"./blockGitignore.js\";\nimport { blockPackageJson } from \"./blockPackageJson.js\";\nimport { blockPrettier } from \"./blockPrettier.js\";\nimport { blockTSup } from \"./blockTSup.js\";\nimport { blockVSCode } from \"./blockVSCode.js\";\nimport { getPackageDependencies } from \"./packageData.js\";\nimport { CommandPhase } from \"./phases.js\";\n\nexport const blockVitest = base.createBlock({\n\tabout: {\n\t\tname: \"Vitest\",\n\t},\n\taddons: {\n\t\tcoverage: z\n\t\t\t.object({\n\t\t\t\tdirectory: z.string().optional(),\n\t\t\t\texclude: z.array(z.string()).optional(),\n\t\t\t\tflags: z.string().optional(),\n\t\t\t\tinclude: z.array(z.string()).optional(),\n\t\t\t})\n\t\t\t.default({}),\n\t\tenv: z.record(z.string(), z.string()).default({}),\n\t\texclude: z.array(z.string()).default([]),\n\t\tflags: z.array(z.string()).default([]),\n\t},\n\tmigrate() {\n\t\treturn {\n\t\t\tscripts: [\n\t\t\t\t{\n\t\t\t\t\tcommands: [\n\t\t\t\t\t\t\"rm .github/codecov.yml .mocha* codecov.yml jest.config.* vitest.config.*\",\n\t\t\t\t\t],\n\t\t\t\t\tphase: CommandPhase.Migrations,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tproduce({ addons }) {\n\t\tconst { coverage, env, exclude = [], flags } = addons;\n\t\tconst coverageDirectory = coverage.directory ?? \"coverage\";\n\t\tconst excludeText = JSON.stringify(exclude);\n\n\t\treturn {\n\t\t\taddons: [\n\t\t\t\tblockCSpell({\n\t\t\t\t\tignores: [coverageDirectory],\n\t\t\t\t}),\n\t\t\t\tblockDevelopmentDocs({\n\t\t\t\t\tsections: {\n\t\t\t\t\t\tTesting: {\n\t\t\t\t\t\t\tcontents: `\n[Vitest](https://vitest.dev) is used for tests.\nYou can run it locally on the command-line:\n\n\\`\\`\\`shell\npnpm run test\n\\`\\`\\`\n\nAdd the \\`--coverage\\` flag to compute test coverage and place reports in the \\`coverage/\\` directory:\n\n\\`\\`\\`shell\npnpm run test --coverage\n\\`\\`\\`\n\nNote that [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test) is enabled for all test runs.\nCalls to \\`console.log\\`, \\`console.warn\\`, and other console methods will cause a test to fail.\n\n\n\t\t`,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockESLint({\n\t\t\t\t\textensions: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\textends: [\"vitest.configs.recommended\"],\n\t\t\t\t\t\t\tfiles: [\"**/*.test.*\"],\n\t\t\t\t\t\t\trules: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentries: {\n\t\t\t\t\t\t\t\t\t\t\"@typescript-eslint/no-unsafe-assignment\": \"off\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tignores: [coverageDirectory, \"**/*.snap\"],\n\t\t\t\t\timports: [{ source: \"@vitest/eslint-plugin\", specifier: \"vitest\" }],\n\t\t\t\t}),\n\t\t\t\tblockExampleFiles({\n\t\t\t\t\tfiles: {\n\t\t\t\t\t\t\"greet.test.ts\": `import { describe, expect, it, vi } from \"vitest\";\n\nimport { greet } from \"./greet.js\";\n\nconst message = \"Yay, testing!\";\n\ndescribe(\"greet\", () => {\n\tit(\"logs to the console once when message is provided as a string\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet(message);\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs to the console once when message is provided as an object\", () => {\n\t\tconst logger = vi.spyOn(console, \"log\").mockImplementation(() => undefined);\n\n\t\tgreet({ message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs once when times is not provided in an object\", () => {\n\t\tconst logger = vi.fn();\n\n\t\tgreet({ logger, message });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(1);\n\t});\n\n\tit(\"logs a specified number of times when times is provided\", () => {\n\t\tconst logger = vi.fn();\n\t\tconst times = 7;\n\n\t\tgreet({ logger, message, times });\n\n\t\texpect(logger).toHaveBeenCalledWith(message);\n\t\texpect(logger).toHaveBeenCalledTimes(7);\n\t});\n});\n`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockGitignore({\n\t\t\t\t\tignores: [`/${coverageDirectory}`],\n\t\t\t\t}),\n\t\t\t\tblockGitHubActionsCI({\n\t\t\t\t\tjobs: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Test\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t{ run: \"pnpm run test --coverage\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t...(Object.keys(env).length && { env }),\n\t\t\t\t\t\t\t\t\tif: \"always()\",\n\t\t\t\t\t\t\t\t\tuses: \"codecov/codecov-action@v3\",\n\t\t\t\t\t\t\t\t\t...(coverage.flags && { with: { flags: coverage.flags } }),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockGitHubApps({\n\t\t\t\t\tapps: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"Codecov\",\n\t\t\t\t\t\t\turl: \"https://github.com/apps/codecov\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\tblockPackageJson({\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tdevDependencies: getPackageDependencies(\n\t\t\t\t\t\t\t\"@vitest/coverage-v8\",\n\t\t\t\t\t\t\t\"@vitest/eslint-plugin\",\n\t\t\t\t\t\t\t\"console-fail-test\",\n\t\t\t\t\t\t\t\"vitest\",\n\t\t\t\t\t\t),\n\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\ttest: `vitest ${flags.join(\" \")}`.trim(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tblockPrettier({\n\t\t\t\t\tignores: [`/${coverageDirectory}`],\n\t\t\t\t}),\n\t\t\t\tblockTSup({\n\t\t\t\t\tentry: [\"!src/**/*.test.*\"],\n\t\t\t\t}),\n\t\t\t\tblockVSCode({\n\t\t\t\t\tdebuggers: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\targs: [\"run\", \"${relativeFile}\"],\n\t\t\t\t\t\t\tautoAttachChildProcesses: true,\n\t\t\t\t\t\t\tconsole: \"integratedTerminal\",\n\t\t\t\t\t\t\tname: \"Debug Current Test File\",\n\t\t\t\t\t\t\tprogram: \"${workspaceRoot}/node_modules/vitest/vitest.mjs\",\n\t\t\t\t\t\t\trequest: \"launch\",\n\t\t\t\t\t\t\tskipFiles: [\"<node_internals>/**\", \"**/node_modules/**\"],\n\t\t\t\t\t\t\tsmartStep: true,\n\t\t\t\t\t\t\ttype: \"node\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\textensions: [\"vitest.explorer\"],\n\t\t\t\t}),\n\t\t\t],\n\t\t\tfiles: {\n\t\t\t\t\"vitest.config.ts\": `import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tclearMocks: true,\n\t\tcoverage: {\n\t\t\tall: true,\n\t\t\t${\n\t\t\t\tcoverage.exclude?.length\n\t\t\t\t\t? `exclude: ${JSON.stringify(coverage.exclude)},\n\t\t\t`\n\t\t\t\t\t: \"\"\n\t\t\t}include: ${JSON.stringify(coverage.include)},\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [${excludeText.slice(1, excludeText.length - 1)}, \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n\t`,\n\t\t\t},\n\t\t};\n\t},\n});\n"],"mappings":"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","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "create-typescript-app";
|
|
2
|
-
var version = "1.
|
|
2
|
+
var version = "1.80.0";
|
|
3
3
|
var description = "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️🔥";
|
|
4
4
|
var repository = {
|
|
5
5
|
type: "git",
|
|
@@ -45,6 +45,7 @@ var dependencies = {
|
|
|
45
45
|
execa: "^9.5.2",
|
|
46
46
|
"git-remote-origin-url": "^4.0.0",
|
|
47
47
|
"git-url-parse": "^16.0.0",
|
|
48
|
+
"html-to-text": "^9.0.5",
|
|
48
49
|
"image-size": "^1.2.0",
|
|
49
50
|
"input-from-file": "0.1.0-alpha.4",
|
|
50
51
|
"input-from-file-json": "0.1.0-alpha.4",
|
|
@@ -75,6 +76,7 @@ var devDependencies = {
|
|
|
75
76
|
"@release-it/conventional-changelog": "9.0.3",
|
|
76
77
|
"@types/eslint-plugin-markdown": "2.0.2",
|
|
77
78
|
"@types/git-url-parse": "9.0.3",
|
|
79
|
+
"@types/html-to-text": "^9.0.4",
|
|
78
80
|
"@types/js-yaml": "4.0.9",
|
|
79
81
|
"@types/node": "22.10.2",
|
|
80
82
|
"@types/parse-author": "2.0.3",
|
|
@@ -2,7 +2,7 @@ import * as create from 'create';
|
|
|
2
2
|
import * as zod from 'zod';
|
|
3
3
|
|
|
4
4
|
declare const presetCommon: create.Preset<{
|
|
5
|
-
access: zod.
|
|
5
|
+
access: zod.ZodUnion<[zod.ZodLiteral<"public">, zod.ZodLiteral<"restricted">]>;
|
|
6
6
|
author: zod.ZodOptional<zod.ZodString>;
|
|
7
7
|
bin: zod.ZodOptional<zod.ZodString>;
|
|
8
8
|
contributors: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
|
|
@@ -98,6 +98,7 @@ declare const presetCommon: create.Preset<{
|
|
|
98
98
|
}>>;
|
|
99
99
|
repository: zod.ZodString;
|
|
100
100
|
title: zod.ZodString;
|
|
101
|
+
usage: zod.ZodOptional<zod.ZodString>;
|
|
101
102
|
version: zod.ZodOptional<zod.ZodString>;
|
|
102
103
|
}>;
|
|
103
104
|
|
|
@@ -2,7 +2,7 @@ import * as create from 'create';
|
|
|
2
2
|
import * as zod from 'zod';
|
|
3
3
|
|
|
4
4
|
declare const presetEverything: create.Preset<{
|
|
5
|
-
access: zod.
|
|
5
|
+
access: zod.ZodUnion<[zod.ZodLiteral<"public">, zod.ZodLiteral<"restricted">]>;
|
|
6
6
|
author: zod.ZodOptional<zod.ZodString>;
|
|
7
7
|
bin: zod.ZodOptional<zod.ZodString>;
|
|
8
8
|
contributors: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
|
|
@@ -98,6 +98,7 @@ declare const presetEverything: create.Preset<{
|
|
|
98
98
|
}>>;
|
|
99
99
|
repository: zod.ZodString;
|
|
100
100
|
title: zod.ZodString;
|
|
101
|
+
usage: zod.ZodOptional<zod.ZodString>;
|
|
101
102
|
version: zod.ZodOptional<zod.ZodString>;
|
|
102
103
|
}>;
|
|
103
104
|
|
|
@@ -2,7 +2,7 @@ import * as create from 'create';
|
|
|
2
2
|
import * as zod from 'zod';
|
|
3
3
|
|
|
4
4
|
declare const presetMinimal: create.Preset<{
|
|
5
|
-
access: zod.
|
|
5
|
+
access: zod.ZodUnion<[zod.ZodLiteral<"public">, zod.ZodLiteral<"restricted">]>;
|
|
6
6
|
author: zod.ZodOptional<zod.ZodString>;
|
|
7
7
|
bin: zod.ZodOptional<zod.ZodString>;
|
|
8
8
|
contributors: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
|
|
@@ -98,6 +98,7 @@ declare const presetMinimal: create.Preset<{
|
|
|
98
98
|
}>>;
|
|
99
99
|
repository: zod.ZodString;
|
|
100
100
|
title: zod.ZodString;
|
|
101
|
+
usage: zod.ZodOptional<zod.ZodString>;
|
|
101
102
|
version: zod.ZodOptional<zod.ZodString>;
|
|
102
103
|
}>;
|
|
103
104
|
|
|
@@ -2,6 +2,6 @@ import { PartialPackageData } from '../shared/types.js';
|
|
|
2
2
|
import 'zod';
|
|
3
3
|
import '../shared/codes.js';
|
|
4
4
|
|
|
5
|
-
declare function readDescription(getPackageData: () => Promise<PartialPackageData>): Promise<string | undefined>;
|
|
5
|
+
declare function readDescription(getPackageData: () => Promise<PartialPackageData>, getReadme: () => Promise<string>): Promise<string | undefined>;
|
|
6
6
|
|
|
7
7
|
export { readDescription };
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { sourcePackageJson } from "./blocks/sourcePackageJson.js";
|
|
2
|
-
|
|
2
|
+
import { readDescriptionFromReadme } from "./readDescriptionFromReadme.js";
|
|
3
|
+
async function readDescription(getPackageData, getReadme) {
|
|
3
4
|
const { description: inferred } = await getPackageData();
|
|
5
|
+
if (!inferred) {
|
|
6
|
+
return void 0;
|
|
7
|
+
}
|
|
4
8
|
const { description: existing } = sourcePackageJson;
|
|
9
|
+
const fromReadme = await readDescriptionFromReadme(getReadme);
|
|
10
|
+
if (fromReadme?.replaceAll(/<\s*(?:\/\s*)?\w+\s*>/gu, "") === inferred) {
|
|
11
|
+
return fromReadme;
|
|
12
|
+
}
|
|
5
13
|
return existing === inferred ? void 0 : inferred;
|
|
6
14
|
}
|
|
7
15
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/next/readDescription.ts"],"sourcesContent":["import { PartialPackageData } from \"../shared/types.js\";\nimport { sourcePackageJson } from \"./blocks/sourcePackageJson.js\";\n\nexport async function readDescription(\n\tgetPackageData: () => Promise<PartialPackageData>,\n) {\n\tconst { description: inferred } = await getPackageData();\n\tconst { description: existing } = sourcePackageJson;\n\n\treturn existing === inferred ? undefined : inferred;\n}\n"],"mappings":"AACA,SAAS,yBAAyB;
|
|
1
|
+
{"version":3,"sources":["../../src/next/readDescription.ts"],"sourcesContent":["import { PartialPackageData } from \"../shared/types.js\";\nimport { sourcePackageJson } from \"./blocks/sourcePackageJson.js\";\nimport { readDescriptionFromReadme } from \"./readDescriptionFromReadme.js\";\n\nexport async function readDescription(\n\tgetPackageData: () => Promise<PartialPackageData>,\n\tgetReadme: () => Promise<string>,\n) {\n\tconst { description: inferred } = await getPackageData();\n\tif (!inferred) {\n\t\treturn undefined;\n\t}\n\n\tconst { description: existing } = sourcePackageJson;\n\tconst fromReadme = await readDescriptionFromReadme(getReadme);\n\n\tif (fromReadme?.replaceAll(/<\\s*(?:\\/\\s*)?\\w+\\s*>/gu, \"\") === inferred) {\n\t\treturn fromReadme;\n\t}\n\n\treturn existing === inferred ? undefined : inferred;\n}\n"],"mappings":"AACA,SAAS,yBAAyB;AAClC,SAAS,iCAAiC;AAE1C,eAAsB,gBACrB,gBACA,WACC;AACD,QAAM,EAAE,aAAa,SAAS,IAAI,MAAM,eAAe;AACvD,MAAI,CAAC,UAAU;AACd,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,aAAa,SAAS,IAAI;AAClC,QAAM,aAAa,MAAM,0BAA0B,SAAS;AAE5D,MAAI,YAAY,WAAW,2BAA2B,EAAE,MAAM,UAAU;AACvE,WAAO;AAAA,EACR;AAEA,SAAO,aAAa,WAAW,SAAY;AAC5C;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const paragraphCloser = "</p>";
|
|
2
|
+
const paragraphStarter = `<p align="center">`;
|
|
3
|
+
async function readDescriptionFromReadme(getReadme) {
|
|
4
|
+
const readme = await getReadme();
|
|
5
|
+
const paragraphStart = readme.indexOf(paragraphStarter);
|
|
6
|
+
if (paragraphStart === -1) {
|
|
7
|
+
return void 0;
|
|
8
|
+
}
|
|
9
|
+
const paragraphEnd = readme.indexOf(paragraphCloser);
|
|
10
|
+
if (paragraphEnd < paragraphStart + paragraphStarter.length + 2) {
|
|
11
|
+
return void 0;
|
|
12
|
+
}
|
|
13
|
+
return readme.slice(paragraphStart + paragraphStarter.length, paragraphEnd).replaceAll(/\s+/gu, " ").trim();
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
readDescriptionFromReadme
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=readDescriptionFromReadme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/next/readDescriptionFromReadme.ts"],"sourcesContent":["const paragraphCloser = \"</p>\";\nconst paragraphStarter = `<p align=\"center\">`;\n\nexport async function readDescriptionFromReadme(\n\tgetReadme: () => Promise<string>,\n) {\n\tconst readme = await getReadme();\n\n\tconst paragraphStart = readme.indexOf(paragraphStarter);\n\tif (paragraphStart === -1) {\n\t\treturn undefined;\n\t}\n\n\tconst paragraphEnd = readme.indexOf(paragraphCloser);\n\tif (paragraphEnd < paragraphStart + paragraphStarter.length + 2) {\n\t\treturn undefined;\n\t}\n\n\treturn readme\n\t\t.slice(paragraphStart + paragraphStarter.length, paragraphEnd)\n\t\t.replaceAll(/\\s+/gu, \" \")\n\t\t.trim();\n}\n"],"mappings":"AAAA,MAAM,kBAAkB;AACxB,MAAM,mBAAmB;AAEzB,eAAsB,0BACrB,WACC;AACD,QAAM,SAAS,MAAM,UAAU;AAE/B,QAAM,iBAAiB,OAAO,QAAQ,gBAAgB;AACtD,MAAI,mBAAmB,IAAI;AAC1B,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,OAAO,QAAQ,eAAe;AACnD,MAAI,eAAe,iBAAiB,iBAAiB,SAAS,GAAG;AAChE,WAAO;AAAA,EACR;AAEA,SAAO,OACL,MAAM,iBAAiB,iBAAiB,QAAQ,YAAY,EAC5D,WAAW,SAAS,GAAG,EACvB,KAAK;AACR;","names":[]}
|
package/lib/next/template.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as create from 'create';
|
|
|
2
2
|
import * as zod from 'zod';
|
|
3
3
|
|
|
4
4
|
declare const template: create.Template<{
|
|
5
|
-
access: zod.
|
|
5
|
+
access: zod.ZodUnion<[zod.ZodLiteral<"public">, zod.ZodLiteral<"restricted">]>;
|
|
6
6
|
author: zod.ZodOptional<zod.ZodString>;
|
|
7
7
|
bin: zod.ZodOptional<zod.ZodString>;
|
|
8
8
|
contributors: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
|
|
@@ -98,6 +98,7 @@ declare const template: create.Template<{
|
|
|
98
98
|
}>>;
|
|
99
99
|
repository: zod.ZodString;
|
|
100
100
|
title: zod.ZodString;
|
|
101
|
+
usage: zod.ZodOptional<zod.ZodString>;
|
|
101
102
|
version: zod.ZodOptional<zod.ZodString>;
|
|
102
103
|
}>;
|
|
103
104
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const startDevelopment = "## Development";
|
|
2
|
+
const startUsage = "## Usage";
|
|
3
|
+
function getUsageFromReadme(readme) {
|
|
4
|
+
const indexOfUsage = readme.indexOf(startUsage);
|
|
5
|
+
if (indexOfUsage === -1) {
|
|
6
|
+
return void 0;
|
|
7
|
+
}
|
|
8
|
+
const indexOfDevelopment = readme.indexOf(
|
|
9
|
+
startDevelopment,
|
|
10
|
+
indexOfUsage + startUsage.length
|
|
11
|
+
);
|
|
12
|
+
if (indexOfDevelopment === -1) {
|
|
13
|
+
return void 0;
|
|
14
|
+
}
|
|
15
|
+
const usage = readme.slice(indexOfUsage + startUsage.length, indexOfDevelopment).trim();
|
|
16
|
+
return usage ? usage : void 0;
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
getUsageFromReadme
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=getUsageFromReadme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/getUsageFromReadme.ts"],"sourcesContent":["const startDevelopment = \"## Development\";\nconst startUsage = \"## Usage\";\n\nexport function getUsageFromReadme(readme: string) {\n\tconst indexOfUsage = readme.indexOf(startUsage);\n\tif (indexOfUsage === -1) {\n\t\treturn undefined;\n\t}\n\n\tconst indexOfDevelopment = readme.indexOf(\n\t\tstartDevelopment,\n\t\tindexOfUsage + startUsage.length,\n\t);\n\tif (indexOfDevelopment === -1) {\n\t\treturn undefined;\n\t}\n\n\tconst usage = readme\n\t\t.slice(indexOfUsage + startUsage.length, indexOfDevelopment)\n\t\t.trim();\n\n\treturn usage ? usage : undefined;\n}\n"],"mappings":"AAAA,MAAM,mBAAmB;AACzB,MAAM,aAAa;AAEZ,SAAS,mBAAmB,QAAgB;AAClD,QAAM,eAAe,OAAO,QAAQ,UAAU;AAC9C,MAAI,iBAAiB,IAAI;AACxB,WAAO;AAAA,EACR;AAEA,QAAM,qBAAqB,OAAO;AAAA,IACjC;AAAA,IACA,eAAe,WAAW;AAAA,EAC3B;AACA,MAAI,uBAAuB,IAAI;AAC9B,WAAO;AAAA,EACR;AAEA,QAAM,QAAQ,OACZ,MAAM,eAAe,WAAW,QAAQ,kBAAkB,EAC1D,KAAK;AAEP,SAAO,QAAQ,QAAQ;AACxB;","names":[]}
|
|
@@ -11,6 +11,7 @@ declare function createOptionDefaults(promptedOptions?: PromptedOptions): {
|
|
|
11
11
|
src: string;
|
|
12
12
|
} | undefined>;
|
|
13
13
|
title: () => Promise<string | undefined>;
|
|
14
|
+
usage: () => Promise<string>;
|
|
14
15
|
author: () => Promise<string | undefined>;
|
|
15
16
|
bin: () => Promise<string | undefined>;
|
|
16
17
|
description: () => Promise<string | undefined>;
|
|
@@ -6,6 +6,7 @@ import * as fs from "node:fs/promises";
|
|
|
6
6
|
import npmUser from "npm-user";
|
|
7
7
|
import { readDescription } from "../../../next/readDescription.js";
|
|
8
8
|
import { readPackageData } from "../../packages.js";
|
|
9
|
+
import { readFileSafe } from "../../readFileSafe.js";
|
|
9
10
|
import { tryCatchAsync } from "../../tryCatchAsync.js";
|
|
10
11
|
import { tryCatchLazyValueAsync } from "../../tryCatchLazyValueAsync.js";
|
|
11
12
|
import { parsePackageAuthor } from "./parsePackageAuthor.js";
|
|
@@ -24,10 +25,11 @@ function createOptionDefaults(promptedOptions) {
|
|
|
24
25
|
const packageAuthor = lazyValue(
|
|
25
26
|
async () => parsePackageAuthor(await packageData())
|
|
26
27
|
);
|
|
28
|
+
const readme = lazyValue(async () => await readFileSafe("README.md", ""));
|
|
27
29
|
return {
|
|
28
30
|
author: async () => (await packageAuthor()).author ?? (await npmDefaults())?.name,
|
|
29
31
|
bin: async () => (await packageData()).bin,
|
|
30
|
-
description: async () => await readDescription(packageData),
|
|
32
|
+
description: async () => await readDescription(packageData, readme),
|
|
31
33
|
email: async () => readEmails(npmDefaults, packageAuthor),
|
|
32
34
|
funding: async () => await tryCatchAsync(
|
|
33
35
|
async () => (await fs.readFile(".github/FUNDING.yml")).toString().split(":")[1]?.trim()
|
|
@@ -35,7 +37,7 @@ function createOptionDefaults(promptedOptions) {
|
|
|
35
37
|
guide: readGuide,
|
|
36
38
|
owner: async () => (await gitDefaults())?.organization ?? (await packageAuthor()).author,
|
|
37
39
|
repository: async () => promptedOptions?.repository ?? (await gitDefaults())?.name ?? (await packageData()).name,
|
|
38
|
-
...readDefaultsFromReadme()
|
|
40
|
+
...readDefaultsFromReadme(readme, promptedOptions?.repository)
|
|
39
41
|
};
|
|
40
42
|
}
|
|
41
43
|
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 { 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\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),\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(),\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,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,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,
|
|
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,4 +1,4 @@
|
|
|
1
|
-
declare function readDefaultsFromReadme(): {
|
|
1
|
+
declare function readDefaultsFromReadme(readme: () => Promise<string>, repository: string | undefined): {
|
|
2
2
|
logo: () => Promise<{
|
|
3
3
|
height?: number;
|
|
4
4
|
width?: number;
|
|
@@ -6,6 +6,7 @@ declare function readDefaultsFromReadme(): {
|
|
|
6
6
|
src: string;
|
|
7
7
|
} | undefined>;
|
|
8
8
|
title: () => Promise<string | undefined>;
|
|
9
|
+
usage: () => Promise<string>;
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
export { readDefaultsFromReadme };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import lazyValue from "lazy-value";
|
|
2
|
-
import { readFileSafe } from "../../readFileSafe.js";
|
|
3
2
|
import { readLogoSizing } from "../readLogoSizing.js";
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { getUsageFromReadme } from "./getUsageFromReadme.js";
|
|
4
|
+
function readDefaultsFromReadme(readme, repository) {
|
|
6
5
|
const imageTag = lazyValue(
|
|
7
6
|
async () => /\n<img.+src=.+>/.exec(await readme())?.[0]
|
|
8
7
|
);
|
|
@@ -25,6 +24,16 @@ function readDefaultsFromReadme() {
|
|
|
25
24
|
title: async () => {
|
|
26
25
|
const text = await readme();
|
|
27
26
|
return (/^<h1\s+align="center">(.+)<\/h1>/.exec(text) ?? /^# (.+)/.exec(text))?.[1];
|
|
27
|
+
},
|
|
28
|
+
usage: async () => {
|
|
29
|
+
return getUsageFromReadme(await readme()) ?? `\`\`\`shell
|
|
30
|
+
npm i ${repository}
|
|
31
|
+
\`\`\`
|
|
32
|
+
\`\`\`ts
|
|
33
|
+
import { greet } from "${repository}";
|
|
34
|
+
|
|
35
|
+
greet("Hello, world! \u{1F496}");
|
|
36
|
+
\`\`\``;
|
|
28
37
|
}
|
|
29
38
|
};
|
|
30
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/shared/options/createOptionDefaults/readDefaultsFromReadme.ts"],"sourcesContent":["import lazyValue from \"lazy-value\";\n\nimport {
|
|
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":[]}
|
|
@@ -13,6 +13,7 @@ async function uninstallPackages(offline) {
|
|
|
13
13
|
"execa",
|
|
14
14
|
"git-remote-origin-url",
|
|
15
15
|
"git-url-parse",
|
|
16
|
+
"html-to-text",
|
|
16
17
|
"image-size",
|
|
17
18
|
"input-from-file",
|
|
18
19
|
"input-from-file-json",
|
|
@@ -42,6 +43,7 @@ async function uninstallPackages(offline) {
|
|
|
42
43
|
[
|
|
43
44
|
"@octokit/request-error",
|
|
44
45
|
"@types/git-url-parse",
|
|
46
|
+
"@types/html-to-text",
|
|
45
47
|
"@types/js-yaml",
|
|
46
48
|
"@types/parse-author",
|
|
47
49
|
"all-contributors-cli",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/steps/uninstallPackages.ts"],"sourcesContent":["import { $ } from \"execa\";\n\nimport { readPackageData, removeDependencies } from \"../shared/packages.js\";\n\nexport async function uninstallPackages(offline: boolean | undefined) {\n\tconst packageData = await readPackageData();\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@clack/prompts\",\n\t\t\t\"@prettier/sync\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"chalk\",\n\t\t\t\"create\",\n\t\t\t\"cspell-populate-words\",\n\t\t\t\"execa\",\n\t\t\t\"git-remote-origin-url\",\n\t\t\t\"git-url-parse\",\n\t\t\t\"image-size\",\n\t\t\t\"input-from-file\",\n\t\t\t\"input-from-file-json\",\n\t\t\t\"input-from-script\",\n\t\t\t\"js-yaml\",\n\t\t\t\"lazy-value\",\n\t\t\t\"npm-user\",\n\t\t\t\"object-strings-deep\",\n\t\t\t\"octokit\",\n\t\t\t\"octokit-from-auth\",\n\t\t\t\"parse-author\",\n\t\t\t\"parse-package-name\",\n\t\t\t\"populate-all-contributors-for-repository\",\n\t\t\t\"prettier\",\n\t\t\t\"remove-undefined-objects\",\n\t\t\t\"replace-in-file\",\n\t\t\t\"rimraf\",\n\t\t\t\"set-github-repository-labels\",\n\t\t\t\"sort-package-json\",\n\t\t\t\"title-case\",\n\t\t\t\"zod\",\n\t\t\t\"zod-validation-error\",\n\t\t],\n\t\tpackageData.dependencies,\n\t);\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@octokit/request-error\",\n\t\t\t\"@types/git-url-parse\",\n\t\t\t\"@types/js-yaml\",\n\t\t\t\"@types/parse-author\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"c8\",\n\t\t\t\"create-testers\",\n\t\t\t\"eslint-config-prettier\",\n\t\t\t\"globby\",\n\t\t\t\"tsx\",\n\t\t],\n\t\tpackageData.devDependencies,\n\t\t\"-D\",\n\t);\n\n\tawait $`pnpm add prettier -D${offline ? \" --offline\" : \"\"}`;\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,0BAA0B;AAEpD,eAAsB,kBAAkB,SAA8B;AACrE,QAAM,cAAc,MAAM,gBAAgB;AAE1C,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,EACb;AAEA,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,EACD;AAEA,QAAM,wBAAwB,UAAU,eAAe,EAAE;AAC1D;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/steps/uninstallPackages.ts"],"sourcesContent":["import { $ } from \"execa\";\n\nimport { readPackageData, removeDependencies } from \"../shared/packages.js\";\n\nexport async function uninstallPackages(offline: boolean | undefined) {\n\tconst packageData = await readPackageData();\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@clack/prompts\",\n\t\t\t\"@prettier/sync\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"chalk\",\n\t\t\t\"create\",\n\t\t\t\"cspell-populate-words\",\n\t\t\t\"execa\",\n\t\t\t\"git-remote-origin-url\",\n\t\t\t\"git-url-parse\",\n\t\t\t\"html-to-text\",\n\t\t\t\"image-size\",\n\t\t\t\"input-from-file\",\n\t\t\t\"input-from-file-json\",\n\t\t\t\"input-from-script\",\n\t\t\t\"js-yaml\",\n\t\t\t\"lazy-value\",\n\t\t\t\"npm-user\",\n\t\t\t\"object-strings-deep\",\n\t\t\t\"octokit\",\n\t\t\t\"octokit-from-auth\",\n\t\t\t\"parse-author\",\n\t\t\t\"parse-package-name\",\n\t\t\t\"populate-all-contributors-for-repository\",\n\t\t\t\"prettier\",\n\t\t\t\"remove-undefined-objects\",\n\t\t\t\"replace-in-file\",\n\t\t\t\"rimraf\",\n\t\t\t\"set-github-repository-labels\",\n\t\t\t\"sort-package-json\",\n\t\t\t\"title-case\",\n\t\t\t\"zod\",\n\t\t\t\"zod-validation-error\",\n\t\t],\n\t\tpackageData.dependencies,\n\t);\n\n\tawait removeDependencies(\n\t\t[\n\t\t\t\"@octokit/request-error\",\n\t\t\t\"@types/git-url-parse\",\n\t\t\t\"@types/html-to-text\",\n\t\t\t\"@types/js-yaml\",\n\t\t\t\"@types/parse-author\",\n\t\t\t\"all-contributors-cli\",\n\t\t\t\"c8\",\n\t\t\t\"create-testers\",\n\t\t\t\"eslint-config-prettier\",\n\t\t\t\"globby\",\n\t\t\t\"tsx\",\n\t\t],\n\t\tpackageData.devDependencies,\n\t\t\"-D\",\n\t);\n\n\tawait $`pnpm add prettier -D${offline ? \" --offline\" : \"\"}`;\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,0BAA0B;AAEpD,eAAsB,kBAAkB,SAA8B;AACrE,QAAM,cAAc,MAAM,gBAAgB;AAE1C,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,EACb;AAEA,QAAM;AAAA,IACL;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,EACD;AAEA,QAAM,wBAAwB,UAAU,eAAe,EAAE;AAC1D;","names":[]}
|
|
@@ -28,7 +28,6 @@ async function createRootFiles(options) {
|
|
|
28
28
|
".nvmrc": `20.18.0
|
|
29
29
|
`,
|
|
30
30
|
".prettierignore": formatIgnoreFile([
|
|
31
|
-
...options.excludeAllContributors ? [] : ["/.all-contributorsrc"],
|
|
32
31
|
"/.husky",
|
|
33
32
|
...options.excludeTests ? [] : ["/coverage"],
|
|
34
33
|
"/lib",
|
|
@@ -66,7 +65,19 @@ async function createRootFiles(options) {
|
|
|
66
65
|
plugins: {
|
|
67
66
|
"@release-it/conventional-changelog": {
|
|
68
67
|
infile: "CHANGELOG.md",
|
|
69
|
-
preset: "angular"
|
|
68
|
+
preset: "angular",
|
|
69
|
+
types: [
|
|
70
|
+
{ section: "Features", type: "feat" },
|
|
71
|
+
{ section: "Bug Fixes", type: "fix" },
|
|
72
|
+
{ section: "Performance Improvements", type: "perf" },
|
|
73
|
+
{ hidden: true, type: "build" },
|
|
74
|
+
{ hidden: true, type: "chore" },
|
|
75
|
+
{ hidden: true, type: "ci" },
|
|
76
|
+
{ hidden: true, type: "docs" },
|
|
77
|
+
{ hidden: true, type: "refactor" },
|
|
78
|
+
{ hidden: true, type: "style" },
|
|
79
|
+
{ hidden: true, type: "test" }
|
|
80
|
+
]
|
|
70
81
|
}
|
|
71
82
|
}
|
|
72
83
|
})
|
|
@@ -124,7 +135,6 @@ export default defineConfig({
|
|
|
124
135
|
clearMocks: true,
|
|
125
136
|
coverage: {
|
|
126
137
|
all: true,
|
|
127
|
-
exclude: ["lib"],
|
|
128
138
|
include: ["src"],
|
|
129
139
|
reporter: ["html", "lcov"],
|
|
130
140
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/writing/creation/rootFiles.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { createCSpellConfig } from \"./createCSpellConfig.js\";\nimport { createDotGitignore } from \"./createDotGitignore.js\";\nimport { createESLintConfig } from \"./createESLintConfig.js\";\nimport { createKnipConfig } from \"./createKnipConfig.js\";\nimport { createTsupConfig } from \"./createTsupConfig.js\";\nimport { formatIgnoreFile } from \"./formatters/formatIgnoreFile.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\nimport { writeAllContributorsRC } from \"./writeAllContributorsRC.js\";\nimport { writePackageJson } from \"./writePackageJson.js\";\n\nexport async function createRootFiles(options: Options) {\n\treturn {\n\t\t\".all-contributorsrc\": await writeAllContributorsRC(options),\n\t\t\".gitignore\": createDotGitignore(options),\n\t\t\"eslint.config.js\": await createESLintConfig(options),\n\t\t...(!options.excludeLintMd && {\n\t\t\t\".markdownlint.json\": await formatJson({\n\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\"no-inline-html\": false,\n\t\t\t}),\n\t\t\t\".markdownlintignore\": formatIgnoreFile([\n\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\"lib/\",\n\t\t\t\t\"node_modules/\",\n\t\t\t]),\n\t\t}),\n\t\t\".nvmrc\": `20.18.0\\n`,\n\t\t\".prettierignore\": formatIgnoreFile([\n\t\t\t
|
|
1
|
+
{"version":3,"sources":["../../../../src/steps/writing/creation/rootFiles.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { createCSpellConfig } from \"./createCSpellConfig.js\";\nimport { createDotGitignore } from \"./createDotGitignore.js\";\nimport { createESLintConfig } from \"./createESLintConfig.js\";\nimport { createKnipConfig } from \"./createKnipConfig.js\";\nimport { createTsupConfig } from \"./createTsupConfig.js\";\nimport { formatIgnoreFile } from \"./formatters/formatIgnoreFile.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\nimport { writeAllContributorsRC } from \"./writeAllContributorsRC.js\";\nimport { writePackageJson } from \"./writePackageJson.js\";\n\nexport async function createRootFiles(options: Options) {\n\treturn {\n\t\t\".all-contributorsrc\": await writeAllContributorsRC(options),\n\t\t\".gitignore\": createDotGitignore(options),\n\t\t\"eslint.config.js\": await createESLintConfig(options),\n\t\t...(!options.excludeLintMd && {\n\t\t\t\".markdownlint.json\": await formatJson({\n\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\"no-inline-html\": false,\n\t\t\t}),\n\t\t\t\".markdownlintignore\": formatIgnoreFile([\n\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\"lib/\",\n\t\t\t\t\"node_modules/\",\n\t\t\t]),\n\t\t}),\n\t\t\".nvmrc\": `20.18.0\\n`,\n\t\t\".prettierignore\": formatIgnoreFile([\n\t\t\t\"/.husky\",\n\t\t\t...(options.excludeTests ? [] : [\"/coverage\"]),\n\t\t\t\"/lib\",\n\t\t\t\"/pnpm-lock.yaml\",\n\t\t]),\n\t\t\".prettierrc.json\": await formatJson({\n\t\t\t$schema: \"http://json.schemastore.org/prettierrc\",\n\t\t\toverrides: [\n\t\t\t\t{\n\t\t\t\t\tfiles: \".nvmrc\",\n\t\t\t\t\toptions: { parser: \"yaml\" },\n\t\t\t\t},\n\t\t\t],\n\t\t\tplugins: [\n\t\t\t\t\"prettier-plugin-curly\",\n\t\t\t\t\"prettier-plugin-packagejson\",\n\t\t\t\t\"prettier-plugin-sh\",\n\t\t\t],\n\t\t\tuseTabs: true,\n\t\t}),\n\t\t...(!options.excludeReleases && {\n\t\t\t\".release-it.json\": await formatJson({\n\t\t\t\tgit: {\n\t\t\t\t\tcommitMessage: \"chore: release v${version}\",\n\t\t\t\t\trequireCommits: true,\n\t\t\t\t},\n\t\t\t\tgithub: {\n\t\t\t\t\tautoGenerate: true,\n\t\t\t\t\trelease: true,\n\t\t\t\t\treleaseName: \"v${version}\",\n\t\t\t\t},\n\t\t\t\tnpm: {\n\t\t\t\t\tpublishArgs: [`--access ${options.access}`, \"--provenance\"],\n\t\t\t\t},\n\t\t\t\tplugins: {\n\t\t\t\t\t\"@release-it/conventional-changelog\": {\n\t\t\t\t\t\tinfile: \"CHANGELOG.md\",\n\t\t\t\t\t\tpreset: \"angular\",\n\t\t\t\t\t\ttypes: [\n\t\t\t\t\t\t\t{ section: \"Features\", type: \"feat\" },\n\t\t\t\t\t\t\t{ section: \"Bug Fixes\", type: \"fix\" },\n\t\t\t\t\t\t\t{ section: \"Performance Improvements\", type: \"perf\" },\n\t\t\t\t\t\t\t{ hidden: true, type: \"build\" },\n\t\t\t\t\t\t\t{ hidden: true, type: \"chore\" },\n\t\t\t\t\t\t\t{ hidden: true, type: \"ci\" },\n\t\t\t\t\t\t\t{ hidden: true, type: \"docs\" },\n\t\t\t\t\t\t\t{ hidden: true, type: \"refactor\" },\n\t\t\t\t\t\t\t{ hidden: true, type: \"style\" },\n\t\t\t\t\t\t\t{ hidden: true, type: \"test\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t}),\n\t\t\"LICENSE.md\": `# MIT License\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n`,\n\t\t...(!options.excludeLintSpelling && {\n\t\t\t\"cspell.json\": await createCSpellConfig(options),\n\t\t}),\n\t\t...(!options.excludeLintKnip && {\n\t\t\t\"knip.json\": await createKnipConfig(),\n\t\t}),\n\t\t\"package.json\": await writePackageJson(options),\n\t\t\"tsconfig.json\": await formatJson({\n\t\t\tcompilerOptions: {\n\t\t\t\tdeclaration: true,\n\t\t\t\tdeclarationMap: true,\n\t\t\t\tesModuleInterop: true,\n\t\t\t\tmodule: \"NodeNext\",\n\t\t\t\tmoduleResolution: \"NodeNext\",\n\t\t\t\tnoEmit: true,\n\t\t\t\tresolveJsonModule: true,\n\t\t\t\tskipLibCheck: true,\n\t\t\t\tsourceMap: true,\n\t\t\t\tstrict: true,\n\t\t\t\ttarget: \"ES2022\",\n\t\t\t},\n\t\t\tinclude: [\"src\"],\n\t\t}),\n\t\t\"tsup.config.ts\": await createTsupConfig(options),\n\t\t...(!options.excludeTests && {\n\t\t\t\"vitest.config.ts\": `import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tclearMocks: true,\n\t\tcoverage: {\n\t\t\tall: true,\n\t\t\tinclude: [\"src\"],\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [\"lib\", \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n`,\n\t\t}),\n\t};\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-typescript-app",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.81.0",
|
|
4
4
|
"description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️🔥",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
"execa": "^9.5.2",
|
|
50
50
|
"git-remote-origin-url": "^4.0.0",
|
|
51
51
|
"git-url-parse": "^16.0.0",
|
|
52
|
+
"html-to-text": "^9.0.5",
|
|
52
53
|
"image-size": "^1.2.0",
|
|
53
54
|
"input-from-file": "0.1.0-alpha.4",
|
|
54
55
|
"input-from-file-json": "0.1.0-alpha.4",
|
|
@@ -79,6 +80,7 @@
|
|
|
79
80
|
"@release-it/conventional-changelog": "9.0.3",
|
|
80
81
|
"@types/eslint-plugin-markdown": "2.0.2",
|
|
81
82
|
"@types/git-url-parse": "9.0.3",
|
|
83
|
+
"@types/html-to-text": "^9.0.4",
|
|
82
84
|
"@types/js-yaml": "4.0.9",
|
|
83
85
|
"@types/node": "22.10.2",
|
|
84
86
|
"@types/parse-author": "2.0.3",
|