create-typescript-app 2.67.4 → 2.68.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/dist/blocks/blockCSpell.mjs +5 -3
- package/dist/blocks/blockCTATransitions.mjs +10 -1
- package/dist/blocks/blockContributingDocs.mjs +1 -1
- package/dist/blocks/blockESLint.mjs +1 -1
- package/dist/blocks/blockESLintPlugin.mjs +1 -1
- package/dist/blocks/blockExports.mjs +1 -1
- package/dist/blocks/blockFunding.mjs +5 -1
- package/dist/blocks/blockGitHubActionsCI.d.mts +1 -0
- package/dist/blocks/blockGitHubActionsCI.mjs +2 -1
- package/dist/blocks/blockKnip.mjs +2 -2
- package/dist/blocks/blockNcc.mjs +13 -2
- package/dist/blocks/blockOctoGuide.mjs +40 -36
- package/dist/blocks/blockPackageJson.d.mts +2 -0
- package/dist/blocks/blockPackageJson.mjs +32 -3
- package/dist/blocks/blockPrettier.mjs +1 -1
- package/dist/blocks/blockReleaseIt.mjs +2 -0
- package/dist/blocks/blockTSDown.mjs +3 -2
- package/dist/blocks/blockTypeScript.mjs +2 -2
- package/dist/blocks/blockVitest.mjs +1 -1
- package/dist/blocks/blockWebExt.mjs +1 -1
- package/dist/blocks/files/createMultiWorkflowFile.d.mts +7 -0
- package/dist/blocks/files/createMultiWorkflowFile.mjs +8 -1
- package/dist/blocks/index.d.mts +3 -0
- package/dist/blocks/index.mjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/presets/minimal.mjs +1 -1
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@ import { resolveBin } from "../utils/resolveBin.mjs";
|
|
|
5
5
|
import { CommandPhase } from "./phases.mjs";
|
|
6
6
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
7
7
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
8
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
9
8
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
9
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
10
10
|
import { blockRemoveWorkflows } from "./blockRemoveWorkflows.mjs";
|
|
11
11
|
import { blockVSCode } from "./blockVSCode.mjs";
|
|
12
12
|
import { z } from "zod";
|
|
@@ -27,7 +27,10 @@ const blockCSpell = base.createBlock({
|
|
|
27
27
|
if (!cspellJson) return;
|
|
28
28
|
const { data } = zAddons.safeParse(JSON5.parse(cspellJson[0]));
|
|
29
29
|
if (!data) return;
|
|
30
|
-
return
|
|
30
|
+
return {
|
|
31
|
+
...data,
|
|
32
|
+
ignorePaths: data.ignorePaths.filter((ignorePath) => ignorePath !== ".github")
|
|
33
|
+
};
|
|
31
34
|
},
|
|
32
35
|
produce({ addons, options }) {
|
|
33
36
|
const { ignorePaths, words } = addons;
|
|
@@ -52,7 +55,6 @@ const blockCSpell = base.createBlock({
|
|
|
52
55
|
"typescript"
|
|
53
56
|
],
|
|
54
57
|
ignorePaths: Array.from(/* @__PURE__ */ new Set([
|
|
55
|
-
".github",
|
|
56
58
|
"CHANGELOG.md",
|
|
57
59
|
"dist",
|
|
58
60
|
"node_modules",
|
|
@@ -6,12 +6,21 @@ import { formatYaml } from "./files/formatYaml.mjs";
|
|
|
6
6
|
import { createSoloWorkflowFile } from "./files/createSoloWorkflowFile.mjs";
|
|
7
7
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
8
8
|
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
9
|
+
import { blockCSpell } from "./blockCSpell.mjs";
|
|
9
10
|
//#region src/blocks/blockCTATransitions.ts
|
|
10
11
|
const blockCTATransitions = base.createBlock({
|
|
11
12
|
about: { name: "CTA Transitions" },
|
|
12
13
|
produce({ options }) {
|
|
13
14
|
return {
|
|
14
|
-
addons: [
|
|
15
|
+
addons: [
|
|
16
|
+
blockCSpell({ words: [
|
|
17
|
+
"mshick",
|
|
18
|
+
options.owner,
|
|
19
|
+
"stefanzweifel"
|
|
20
|
+
] }),
|
|
21
|
+
blockPackageJson({ properties: { devDependencies: { "create-typescript-app": packageData.version } } }),
|
|
22
|
+
blockRepositoryBranchRuleset({ requiredStatusChecks: ["Transition"] })
|
|
23
|
+
],
|
|
15
24
|
files: { ".github": {
|
|
16
25
|
actions: { transition: { "action.yaml": withPreviously(formatYaml({
|
|
17
26
|
description: "Runs create-typescript-app in transition mode",
|
|
@@ -31,7 +31,7 @@ There are two steps involved:
|
|
|
31
31
|
|
|
32
32
|
With the exception of very small typos, all changes to this repository generally need to correspond to an [unassigned open issue marked as \`status: accepting prs\` on the issue tracker](https://github.com/${options.owner}/${options.repository}/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+accepting+prs%22+no%3Aassignee+).
|
|
33
33
|
If this is your first time contributing, consider searching for [unassigned issues that also have the \`good first issue\` label](https://github.com/${options.owner}/${options.repository}/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22+label%3A%22status%3A+accepting+prs%22+no%3Aassignee+).
|
|
34
|
-
If the issue you'd like to fix isn't found on the issue, see [Reporting Issues](#reporting-issues) for filing your own (please do!).
|
|
34
|
+
If the issue you'd like to fix isn't found on the issue tracker, see [Reporting Issues](#reporting-issues) for filing your own (please do!).
|
|
35
35
|
|
|
36
36
|
#### Issue Claiming
|
|
37
37
|
|
|
@@ -6,8 +6,8 @@ import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
|
6
6
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
7
7
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
8
8
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
9
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
10
9
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
10
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
11
11
|
import { blockRemoveWorkflows } from "./blockRemoveWorkflows.mjs";
|
|
12
12
|
import { blockVSCode } from "./blockVSCode.mjs";
|
|
13
13
|
import { blockRemoveDependencies } from "./blockRemoveDependencies.mjs";
|
|
@@ -3,8 +3,8 @@ import { base } from "../base.mjs";
|
|
|
3
3
|
import { CommandPhase } from "./phases.mjs";
|
|
4
4
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
5
5
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
6
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
7
6
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
7
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
8
8
|
import { blockCSpell } from "./blockCSpell.mjs";
|
|
9
9
|
import { getScriptFileExtension } from "./eslint/getScriptFileExtension.mjs";
|
|
10
10
|
import { zConfigEmoji } from "./eslint/schemas.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { base } from "../base.mjs";
|
|
2
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
3
2
|
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
3
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
4
4
|
import { blockTSDown } from "./blockTSDown.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/blocks/blockExports.ts
|
|
@@ -2,11 +2,15 @@ import { base } from "../base.mjs";
|
|
|
2
2
|
import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
3
3
|
import { formatYaml } from "./files/formatYaml.mjs";
|
|
4
4
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
5
|
+
import { blockCSpell } from "./blockCSpell.mjs";
|
|
5
6
|
//#region src/blocks/blockFunding.ts
|
|
6
7
|
const blockFunding = base.createBlock({
|
|
7
8
|
about: { name: "Funding" },
|
|
8
9
|
produce({ options }) {
|
|
9
|
-
return {
|
|
10
|
+
return {
|
|
11
|
+
addons: options.funding ? [blockCSpell({ words: [options.funding] })] : [],
|
|
12
|
+
files: { ".github": { "FUNDING.yaml": withPreviously(options.funding && formatYaml({ github: options.funding }), ["FUNDING.yml"]) } }
|
|
13
|
+
};
|
|
10
14
|
},
|
|
11
15
|
transition() {
|
|
12
16
|
return { addons: [blockRemoveFiles({ files: [".github/FUNDING.yml"] })] };
|
|
@@ -13,6 +13,7 @@ export declare const blockGitHubActionsCI: import("bingo-stratum").BlockWithAddo
|
|
|
13
13
|
}))[];
|
|
14
14
|
checkoutWith?: Record<string, string> | undefined;
|
|
15
15
|
if?: string | undefined;
|
|
16
|
+
permissions?: Record<string, "write" | "none" | "read"> | undefined;
|
|
16
17
|
}[] | undefined;
|
|
17
18
|
}, {
|
|
18
19
|
access: "public" | "restricted";
|
|
@@ -4,7 +4,7 @@ import { resolveUses } from "./actions/resolveUses.mjs";
|
|
|
4
4
|
import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
5
5
|
import { blockRepositoryBranchRuleset } from "./blockRepositoryBranchRuleset.mjs";
|
|
6
6
|
import { formatYaml } from "./files/formatYaml.mjs";
|
|
7
|
-
import { createMultiWorkflowFile } from "./files/createMultiWorkflowFile.mjs";
|
|
7
|
+
import { createMultiWorkflowFile, zMultiWorkflowJobPermissions } from "./files/createMultiWorkflowFile.mjs";
|
|
8
8
|
import { createSoloWorkflowFile } from "./files/createSoloWorkflowFile.mjs";
|
|
9
9
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
@@ -15,6 +15,7 @@ const blockGitHubActionsCI = base.createBlock({
|
|
|
15
15
|
checkoutWith: z.record(z.string(), z.string()).optional(),
|
|
16
16
|
if: z.string().optional(),
|
|
17
17
|
name: z.string(),
|
|
18
|
+
permissions: zMultiWorkflowJobPermissions.optional(),
|
|
18
19
|
steps: z.array(zActionStep)
|
|
19
20
|
})).optional() },
|
|
20
21
|
produce({ addons, options }) {
|
|
@@ -4,11 +4,11 @@ import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
|
4
4
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
5
5
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
6
6
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
7
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
8
7
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
8
|
+
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
9
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
9
10
|
import { blockRemoveWorkflows } from "./blockRemoveWorkflows.mjs";
|
|
10
11
|
import { blockVSCode } from "./blockVSCode.mjs";
|
|
11
|
-
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
12
12
|
import { intakeFileExportObject } from "./intake/intakeFileExportObject.mjs";
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
import removeUndefinedObjects from "remove-undefined-objects";
|
package/dist/blocks/blockNcc.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { base } from "../base.mjs";
|
|
2
2
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
3
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
4
3
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
4
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
5
5
|
import { blockCSpell } from "./blockCSpell.mjs";
|
|
6
6
|
import { blockESLint } from "./blockESLint.mjs";
|
|
7
7
|
import { blockPrettier } from "./blockPrettier.mjs";
|
|
@@ -38,6 +38,10 @@ Run [\`@vercel/ncc\`](https://github.com/vercel/ncc) to create an output \`dist/
|
|
|
38
38
|
\`\`\`shell
|
|
39
39
|
pnpm build:release
|
|
40
40
|
\`\`\`
|
|
41
|
+
|
|
42
|
+
CI fails if the committed \`dist/\` doesn't match what \`pnpm build:release\` produces, not counting \`.d.ts\` files.
|
|
43
|
+
If that happens, run \`pnpm build:release\` and commit the changed files under \`dist/\`.
|
|
44
|
+
Renovate PRs that update bundled dependencies need the same: rebuild and commit \`dist/\` on their branch before they can merge.
|
|
41
45
|
`,
|
|
42
46
|
heading: "Building for Release"
|
|
43
47
|
}]
|
|
@@ -48,7 +52,14 @@ pnpm build:release
|
|
|
48
52
|
steps: [{ run: "pnpm build" }]
|
|
49
53
|
}, {
|
|
50
54
|
name: "Build (Release)",
|
|
51
|
-
steps: [{ run: "pnpm build:release" }
|
|
55
|
+
steps: [{ run: "pnpm build:release" }, { run: `# Verify dist/ is up to date
|
|
56
|
+
changes=$(git status --porcelain --untracked-files=all --ignored -- dist ':!*.d.ts' ':!*.d.ts.map')
|
|
57
|
+
if [ -n "$changes" ]; then
|
|
58
|
+
echo "$changes"
|
|
59
|
+
echo "::error::dist/ is out of date. Run 'pnpm build:release', then commit the files listed above. Files marked !! are gitignored and need 'git add --force'."
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
62
|
+
` }]
|
|
52
63
|
}] }),
|
|
53
64
|
blockPackageJson({ properties: {
|
|
54
65
|
devDependencies: { "@vercel/ncc": "^0.38.3" },
|
|
@@ -4,6 +4,7 @@ import { resolveUses } from "./actions/resolveUses.mjs";
|
|
|
4
4
|
import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
5
5
|
import { createSoloWorkflowFile } from "./files/createSoloWorkflowFile.mjs";
|
|
6
6
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
7
|
+
import { blockCSpell } from "./blockCSpell.mjs";
|
|
7
8
|
import { z } from "zod";
|
|
8
9
|
//#region src/blocks/blockOctoGuide.ts
|
|
9
10
|
const blockOctoGuide = base.createBlock({
|
|
@@ -25,42 +26,45 @@ const blockOctoGuide = base.createBlock({
|
|
|
25
26
|
return { config: runOctoGuideStep.with?.config };
|
|
26
27
|
},
|
|
27
28
|
produce({ addons, options }) {
|
|
28
|
-
return {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"created",
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
29
|
+
return {
|
|
30
|
+
addons: [blockCSpell({ words: ["octoguide"] })],
|
|
31
|
+
files: { ".github": { workflows: { "octoguide.yaml": withPreviously(createSoloWorkflowFile({
|
|
32
|
+
if: "${{ !endsWith(github.actor, '[bot]') }}",
|
|
33
|
+
name: "OctoGuide",
|
|
34
|
+
on: {
|
|
35
|
+
discussion: { types: ["created", "edited"] },
|
|
36
|
+
discussion_comment: { types: [
|
|
37
|
+
"created",
|
|
38
|
+
"deleted",
|
|
39
|
+
"edited"
|
|
40
|
+
] },
|
|
41
|
+
issue_comment: { types: [
|
|
42
|
+
"created",
|
|
43
|
+
"deleted",
|
|
44
|
+
"edited"
|
|
45
|
+
] },
|
|
46
|
+
issues: { types: ["edited", "opened"] },
|
|
47
|
+
pull_request_review_comment: { types: [
|
|
48
|
+
"created",
|
|
49
|
+
"deleted",
|
|
50
|
+
"edited"
|
|
51
|
+
] },
|
|
52
|
+
pull_request_target: { types: ["edited", "opened"] }
|
|
53
|
+
},
|
|
54
|
+
permissions: {
|
|
55
|
+
discussions: "write",
|
|
56
|
+
issues: "write",
|
|
57
|
+
"pull-requests": "write"
|
|
58
|
+
},
|
|
59
|
+
steps: [{
|
|
60
|
+
uses: resolveUses("JoshuaKGoldberg/octoguide", "0.11.1", options.workflowsVersions),
|
|
61
|
+
with: {
|
|
62
|
+
config: addons.config ?? "recommended",
|
|
63
|
+
"github-token": "${{ secrets.GITHUB_TOKEN }}"
|
|
64
|
+
}
|
|
65
|
+
}]
|
|
66
|
+
}), ["octoguide.yml"]) } } }
|
|
67
|
+
};
|
|
64
68
|
},
|
|
65
69
|
transition() {
|
|
66
70
|
return { addons: [blockRemoveFiles({ files: [".github/workflows/accessibility-alt-text-bot.{yaml,yml}", ".github/workflows/compliance.{yaml,yml}"] })] };
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
//#region src/blocks/blockPackageJson.d.ts
|
|
2
2
|
export declare const blockPackageJson: import("bingo-stratum").BlockWithAddons<{
|
|
3
3
|
cleanupCommands: string[];
|
|
4
|
+
existingFiles: string[];
|
|
5
|
+
outdatedFiles: string[];
|
|
4
6
|
properties: {
|
|
5
7
|
[x: string]: unknown;
|
|
6
8
|
name?: string | undefined;
|
|
@@ -4,6 +4,7 @@ import { CommandPhase } from "./phases.mjs";
|
|
|
4
4
|
import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
5
5
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
6
6
|
import { resolveEmails } from "../utils/resolveEmails.mjs";
|
|
7
|
+
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
7
8
|
import { z } from "zod";
|
|
8
9
|
import semver from "semver";
|
|
9
10
|
import removeUndefinedObjects from "remove-undefined-objects";
|
|
@@ -15,8 +16,15 @@ const blockPackageJson = base.createBlock({
|
|
|
15
16
|
about: { name: "Package JSON" },
|
|
16
17
|
addons: {
|
|
17
18
|
cleanupCommands: z.array(z.string()).default([]),
|
|
19
|
+
existingFiles: z.array(z.string()).default([]),
|
|
20
|
+
outdatedFiles: z.array(z.string()).default([]),
|
|
18
21
|
properties: PackageJsonWithNullableScripts.default({})
|
|
19
22
|
},
|
|
23
|
+
intake({ files }) {
|
|
24
|
+
const packageData = intakeFileAsJson(files, ["package.json"]);
|
|
25
|
+
if (!Array.isArray(packageData?.files)) return;
|
|
26
|
+
return { existingFiles: packageData.files.filter((file) => typeof file === "string") };
|
|
27
|
+
},
|
|
20
28
|
produce({ addons, offline, options }) {
|
|
21
29
|
const dependencies = useLargerVersions(options.packageData?.dependencies, {
|
|
22
30
|
...options.packageData?.dependencies,
|
|
@@ -41,7 +49,7 @@ const blockPackageJson = base.createBlock({
|
|
|
41
49
|
devDependencies: Object.keys(devDependencies).length ? devDependencies : void 0,
|
|
42
50
|
engines: { node: /^\d/u.test(options.node.minimum) ? `>=${options.node.minimum}` : options.node.minimum },
|
|
43
51
|
...options.pnpm && { packageManager: `pnpm@${options.pnpm}` },
|
|
44
|
-
files: processFiles(addons.properties.files),
|
|
52
|
+
files: mergeFiles(processFiles(addons.properties.files), addons.existingFiles, addons.outdatedFiles, options.bin),
|
|
45
53
|
keywords: options.keywords,
|
|
46
54
|
name: options.repository,
|
|
47
55
|
repository: {
|
|
@@ -65,8 +73,29 @@ const blockPackageJson = base.createBlock({
|
|
|
65
73
|
return { addons: [blockRemoveFiles({ files: ["package-lock.json yarn.lock"] })] };
|
|
66
74
|
}
|
|
67
75
|
});
|
|
68
|
-
function
|
|
69
|
-
|
|
76
|
+
function mergeFiles(addonFiles, existingFiles, outdatedFiles, bin) {
|
|
77
|
+
const removals = new Set([
|
|
78
|
+
...outdatedFiles,
|
|
79
|
+
...typeof bin === "object" ? Object.values(bin) : [bin],
|
|
80
|
+
"LICENSE.md",
|
|
81
|
+
"package.json",
|
|
82
|
+
"README.md"
|
|
83
|
+
].filter((file) => file !== void 0).map(normalizeFile));
|
|
84
|
+
const seen = new Set(addonFiles.map(normalizeFile));
|
|
85
|
+
const files = [...addonFiles];
|
|
86
|
+
for (const file of existingFiles) {
|
|
87
|
+
const normalized = normalizeFile(file);
|
|
88
|
+
if (normalized && !removals.has(normalized) && !seen.has(normalized)) {
|
|
89
|
+
files.push(file);
|
|
90
|
+
seen.add(normalized);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return files.length ? files : void 0;
|
|
94
|
+
}
|
|
95
|
+
function normalizeFile(file) {
|
|
96
|
+
return file.replace(/^(!?)\.?\//u, "$1").replace(/\/$/u, "");
|
|
97
|
+
}
|
|
98
|
+
function processFiles(files = []) {
|
|
70
99
|
const sortedByLength = files.filter(Boolean).sort((a, b) => a.length - b.length);
|
|
71
100
|
return sortedByLength.filter((file, i) => !sortedByLength.slice(0, i).some((earlier) => earlier.endsWith("/") && file.startsWith(earlier))).sort();
|
|
72
101
|
}
|
|
@@ -5,8 +5,8 @@ import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
|
5
5
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
6
6
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
7
7
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
8
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
9
8
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
9
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
10
10
|
import { blockRemoveWorkflows } from "./blockRemoveWorkflows.mjs";
|
|
11
11
|
import { blockVSCode } from "./blockVSCode.mjs";
|
|
12
12
|
import { blockCSpell } from "./blockCSpell.mjs";
|
|
@@ -5,6 +5,7 @@ import { createSoloWorkflowFile } from "./files/createSoloWorkflowFile.mjs";
|
|
|
5
5
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
6
6
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
7
7
|
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
8
|
+
import { blockCSpell } from "./blockCSpell.mjs";
|
|
8
9
|
import { blockREADME } from "./blockREADME.mjs";
|
|
9
10
|
import { blockRepositorySecrets } from "./blockRepositorySecrets.mjs";
|
|
10
11
|
import { z } from "zod";
|
|
@@ -19,6 +20,7 @@ const blockReleaseIt = base.createBlock({
|
|
|
19
20
|
const { builders } = addons;
|
|
20
21
|
return {
|
|
21
22
|
addons: [
|
|
23
|
+
blockCSpell({ words: ["apexskier"] }),
|
|
22
24
|
blockPackageJson({ properties: {
|
|
23
25
|
devDependencies: getPackageDependencies("@release-it/conventional-changelog", "release-it"),
|
|
24
26
|
scripts: { "should-semantic-release": void 0 }
|
|
@@ -5,13 +5,13 @@ import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
|
5
5
|
import { withPreviously } from "./files/withPreviously.mjs";
|
|
6
6
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
7
7
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
8
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
9
8
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
9
|
+
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
10
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
10
11
|
import { blockRemoveWorkflows } from "./blockRemoveWorkflows.mjs";
|
|
11
12
|
import { blockRemoveDependencies } from "./blockRemoveDependencies.mjs";
|
|
12
13
|
import { blockESLint } from "./blockESLint.mjs";
|
|
13
14
|
import { blockGitignore } from "./blockGitignore.mjs";
|
|
14
|
-
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
15
15
|
import { blockReleaseIt } from "./blockReleaseIt.mjs";
|
|
16
16
|
import { intakeFileDefineConfig } from "./intake/intakeFileDefineConfig.mjs";
|
|
17
17
|
import { z } from "zod";
|
|
@@ -104,6 +104,7 @@ export default defineConfig(${JSON.stringify({
|
|
|
104
104
|
transition() {
|
|
105
105
|
return { addons: [
|
|
106
106
|
blockGitignore({ removals: ["/lib", "lib/"] }),
|
|
107
|
+
blockPackageJson({ outdatedFiles: ["lib/"] }),
|
|
107
108
|
blockRemoveDependencies({ dependencies: [
|
|
108
109
|
"@babel/cli",
|
|
109
110
|
"@babel/core",
|
|
@@ -2,14 +2,14 @@ import { getPackageDependencies } from "../data/packageData.mjs";
|
|
|
2
2
|
import { base } from "../base.mjs";
|
|
3
3
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
4
4
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
5
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
6
5
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
6
|
+
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
7
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
7
8
|
import { blockRemoveWorkflows } from "./blockRemoveWorkflows.mjs";
|
|
8
9
|
import { getPrimaryBin } from "./bin/getPrimaryBin.mjs";
|
|
9
10
|
import { blockVSCode } from "./blockVSCode.mjs";
|
|
10
11
|
import { blockExampleFiles } from "./blockExampleFiles.mjs";
|
|
11
12
|
import { blockGitignore } from "./blockGitignore.mjs";
|
|
12
|
-
import { intakeFileAsJson } from "./intake/intakeFileAsJson.mjs";
|
|
13
13
|
import { blockKnip } from "./blockKnip.mjs";
|
|
14
14
|
import { blockVitest } from "./blockVitest.mjs";
|
|
15
15
|
import sortKeys from "sort-keys";
|
|
@@ -4,8 +4,8 @@ import { base } from "../base.mjs";
|
|
|
4
4
|
import { blockRemoveFiles } from "./blockRemoveFiles.mjs";
|
|
5
5
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
6
6
|
import { formatFile } from "../utils/formatFile.mjs";
|
|
7
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
8
7
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
8
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
9
9
|
import { blockRemoveWorkflows } from "./blockRemoveWorkflows.mjs";
|
|
10
10
|
import { blockVSCode } from "./blockVSCode.mjs";
|
|
11
11
|
import { blockCSpell } from "./blockCSpell.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { base } from "../base.mjs";
|
|
2
2
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
3
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
4
3
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
4
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
5
5
|
import { blockCSpell } from "./blockCSpell.mjs";
|
|
6
6
|
import { blockESLint } from "./blockESLint.mjs";
|
|
7
7
|
import { blockGitignore } from "./blockGitignore.mjs";
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { WorkflowsVersions } from "../../schemas.mjs";
|
|
2
|
+
import { z } from "zod";
|
|
2
3
|
//#region src/blocks/files/createMultiWorkflowFile.d.ts
|
|
4
|
+
export declare const zMultiWorkflowJobPermissions: z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
5
|
+
write: "write";
|
|
6
|
+
none: "none";
|
|
7
|
+
read: "read";
|
|
8
|
+
}>>;
|
|
3
9
|
export interface MultiWorkflowFileOptions {
|
|
4
10
|
jobs: MultiWorkflowJobOptions[];
|
|
5
11
|
name: string;
|
|
@@ -9,6 +15,7 @@ export interface MultiWorkflowJobOptions {
|
|
|
9
15
|
checkoutWith?: Record<string, string>;
|
|
10
16
|
if?: string;
|
|
11
17
|
name: string;
|
|
18
|
+
permissions?: z.infer<typeof zMultiWorkflowJobPermissions>;
|
|
12
19
|
steps: MultiWorkflowJobStep[];
|
|
13
20
|
}
|
|
14
21
|
export type MultiWorkflowJobStep = {
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { resolveUses } from "../actions/resolveUses.mjs";
|
|
2
2
|
import { createJobName } from "./createJobName.mjs";
|
|
3
3
|
import { formatWorkflowYaml } from "./formatWorkflowYaml.mjs";
|
|
4
|
+
import { z } from "zod";
|
|
4
5
|
//#region src/blocks/files/createMultiWorkflowFile.ts
|
|
6
|
+
const zMultiWorkflowJobPermissions = z.record(z.string(), z.enum([
|
|
7
|
+
"none",
|
|
8
|
+
"read",
|
|
9
|
+
"write"
|
|
10
|
+
]));
|
|
5
11
|
function createMultiWorkflowFile({ jobs, name, workflowsVersions }) {
|
|
6
12
|
return formatWorkflowYaml({
|
|
7
13
|
jobs: Object.fromEntries(jobs.map((job) => [createJobName(job.name), {
|
|
8
14
|
if: job.if,
|
|
9
15
|
name: job.name,
|
|
16
|
+
permissions: job.permissions,
|
|
10
17
|
"runs-on": "ubuntu-latest",
|
|
11
18
|
steps: [
|
|
12
19
|
{
|
|
@@ -25,4 +32,4 @@ function createMultiWorkflowFile({ jobs, name, workflowsVersions }) {
|
|
|
25
32
|
});
|
|
26
33
|
}
|
|
27
34
|
//#endregion
|
|
28
|
-
export { createMultiWorkflowFile };
|
|
35
|
+
export { createMultiWorkflowFile, zMultiWorkflowJobPermissions };
|
package/dist/blocks/index.d.mts
CHANGED
|
@@ -1749,6 +1749,7 @@ export declare const blocks: {
|
|
|
1749
1749
|
}))[];
|
|
1750
1750
|
checkoutWith?: Record<string, string> | undefined;
|
|
1751
1751
|
if?: string | undefined;
|
|
1752
|
+
permissions?: Record<string, "write" | "none" | "read"> | undefined;
|
|
1752
1753
|
}[] | undefined;
|
|
1753
1754
|
}, {
|
|
1754
1755
|
access: "public" | "restricted";
|
|
@@ -2474,6 +2475,8 @@ export declare const blocks: {
|
|
|
2474
2475
|
}>;
|
|
2475
2476
|
blockPackageJson: import("bingo-stratum").BlockWithAddons<{
|
|
2476
2477
|
cleanupCommands: string[];
|
|
2478
|
+
existingFiles: string[];
|
|
2479
|
+
outdatedFiles: string[];
|
|
2477
2480
|
properties: {
|
|
2478
2481
|
[x: string]: unknown;
|
|
2479
2482
|
name?: string | undefined;
|
package/dist/blocks/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { blockGitHubActionsCI } from "./blockGitHubActionsCI.mjs";
|
|
2
2
|
import { blockAreTheTypesWrong } from "./blockAreTheTypesWrong.mjs";
|
|
3
|
-
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
4
|
-
import { blockCTATransitions } from "./blockCTATransitions.mjs";
|
|
5
3
|
import { blockDevelopmentDocs } from "./blockDevelopmentDocs.mjs";
|
|
4
|
+
import { blockPackageJson } from "./blockPackageJson.mjs";
|
|
6
5
|
import { blockVSCode } from "./blockVSCode.mjs";
|
|
7
6
|
import { blockCSpell } from "./blockCSpell.mjs";
|
|
7
|
+
import { blockCTATransitions } from "./blockCTATransitions.mjs";
|
|
8
8
|
import { blockESLintMoreStyling } from "./blockESLintMoreStyling.mjs";
|
|
9
9
|
import { blockESLint } from "./blockESLint.mjs";
|
|
10
10
|
import { blockREADME } from "./blockREADME.mjs";
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { base } from "./base.mjs";
|
|
2
2
|
import { blockGitHubActionsCI } from "./blocks/blockGitHubActionsCI.mjs";
|
|
3
3
|
import { blockAreTheTypesWrong } from "./blocks/blockAreTheTypesWrong.mjs";
|
|
4
|
-
import { blockPackageJson } from "./blocks/blockPackageJson.mjs";
|
|
5
|
-
import { blockCTATransitions } from "./blocks/blockCTATransitions.mjs";
|
|
6
4
|
import { blockDevelopmentDocs } from "./blocks/blockDevelopmentDocs.mjs";
|
|
5
|
+
import { blockPackageJson } from "./blocks/blockPackageJson.mjs";
|
|
7
6
|
import { blockVSCode } from "./blocks/blockVSCode.mjs";
|
|
8
7
|
import { blockCSpell } from "./blocks/blockCSpell.mjs";
|
|
8
|
+
import { blockCTATransitions } from "./blocks/blockCTATransitions.mjs";
|
|
9
9
|
import { blockESLintMoreStyling } from "./blocks/blockESLintMoreStyling.mjs";
|
|
10
10
|
import { blockESLint } from "./blocks/blockESLint.mjs";
|
|
11
11
|
import { blockREADME } from "./blocks/blockREADME.mjs";
|
package/dist/presets/minimal.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { base } from "../base.mjs";
|
|
|
2
2
|
import { blockRemoveFiles } from "../blocks/blockRemoveFiles.mjs";
|
|
3
3
|
import { blockRepositoryBranchRuleset } from "../blocks/blockRepositoryBranchRuleset.mjs";
|
|
4
4
|
import { blockGitHubActionsCI } from "../blocks/blockGitHubActionsCI.mjs";
|
|
5
|
-
import { blockPackageJson } from "../blocks/blockPackageJson.mjs";
|
|
6
5
|
import { blockDevelopmentDocs } from "../blocks/blockDevelopmentDocs.mjs";
|
|
6
|
+
import { blockPackageJson } from "../blocks/blockPackageJson.mjs";
|
|
7
7
|
import { blockRemoveWorkflows } from "../blocks/blockRemoveWorkflows.mjs";
|
|
8
8
|
import { blockRemoveDependencies } from "../blocks/blockRemoveDependencies.mjs";
|
|
9
9
|
import { blockESLint } from "../blocks/blockESLint.mjs";
|