create-typescript-app 1.77.0 → 1.78.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 +5 -4
- package/lib/bin/promptForMode.js +2 -1
- package/lib/bin/promptForMode.js.map +1 -1
- package/lib/create/createWithOptions.d.ts +3 -4
- package/lib/create/createWithOptions.js +19 -11
- package/lib/create/createWithOptions.js.map +1 -1
- package/lib/initialize/initializeWithOptions.d.ts +3 -4
- package/lib/initialize/initializeWithOptions.js +4 -4
- package/lib/initialize/initializeWithOptions.js.map +1 -1
- package/lib/migrate/migrateWithOptions.d.ts +3 -4
- package/lib/migrate/migrateWithOptions.js +8 -5
- package/lib/migrate/migrateWithOptions.js.map +1 -1
- package/lib/next/base.js +4 -0
- package/lib/next/base.js.map +1 -1
- package/lib/next/blocks/blockAllContributors.js +12 -11
- package/lib/next/blocks/blockAllContributors.js.map +1 -1
- package/lib/next/blocks/blockCSpell.js +2 -7
- package/lib/next/blocks/blockCSpell.js.map +1 -1
- package/lib/next/blocks/blockContributingDocs.js +11 -0
- package/lib/next/blocks/blockContributingDocs.js.map +1 -1
- package/lib/next/blocks/blockContributorCovenant.js +11 -0
- package/lib/next/blocks/blockContributorCovenant.js.map +1 -1
- package/lib/next/blocks/blockDevelopmentDocs.js +15 -9
- package/lib/next/blocks/blockDevelopmentDocs.js.map +1 -1
- package/lib/next/blocks/blockESLint.js +18 -1
- package/lib/next/blocks/blockESLint.js.map +1 -1
- package/lib/next/blocks/blockExampleFiles.d.ts +50 -0
- package/lib/next/blocks/blockExampleFiles.js +25 -0
- package/lib/next/blocks/blockExampleFiles.js.map +1 -0
- package/lib/next/blocks/blockGitHubActionsCI.js +11 -0
- package/lib/next/blocks/blockGitHubActionsCI.js.map +1 -1
- package/lib/next/blocks/blockPackageJson.d.ts +1 -0
- package/lib/next/blocks/blockPackageJson.js +18 -7
- package/lib/next/blocks/blockPackageJson.js.map +1 -1
- package/lib/next/blocks/blockPnpmDedupe.js +1 -6
- package/lib/next/blocks/blockPnpmDedupe.js.map +1 -1
- package/lib/next/blocks/blockPrettier.js +18 -8
- package/lib/next/blocks/blockPrettier.js.map +1 -1
- package/lib/next/blocks/blockReleaseIt.js +5 -0
- package/lib/next/blocks/blockReleaseIt.js.map +1 -1
- package/lib/next/blocks/blockRepositoryBranchRuleset.d.ts +50 -0
- package/lib/next/blocks/blockRepositoryBranchRuleset.js +62 -0
- package/lib/next/blocks/blockRepositoryBranchRuleset.js.map +1 -0
- package/lib/next/blocks/blockRepositoryLabels.d.ts +48 -0
- package/lib/next/blocks/blockRepositoryLabels.js +18 -0
- package/lib/next/blocks/blockRepositoryLabels.js.map +1 -0
- package/lib/next/blocks/blockRepositorySettings.d.ts +48 -0
- package/lib/next/blocks/blockRepositorySettings.js +42 -0
- package/lib/next/blocks/blockRepositorySettings.js.map +1 -0
- package/lib/next/blocks/blockTSup.js +19 -2
- package/lib/next/blocks/blockTSup.js.map +1 -1
- package/lib/next/blocks/blockTemplatedBy.d.ts +1 -3
- package/lib/next/blocks/blockTemplatedBy.js +0 -4
- package/lib/next/blocks/blockTemplatedBy.js.map +1 -1
- package/lib/next/blocks/blockTypeScript.js +28 -0
- package/lib/next/blocks/blockTypeScript.js.map +1 -1
- package/lib/next/blocks/blockVSCode.js +4 -0
- package/lib/next/blocks/blockVSCode.js.map +1 -1
- package/lib/next/blocks/blockVitest.js +63 -0
- package/lib/next/blocks/blockVitest.js.map +1 -1
- package/lib/next/blocks/packageData.js.map +1 -1
- package/lib/next/blocks/phases.d.ts +9 -0
- package/lib/next/blocks/phases.js +11 -0
- package/lib/next/blocks/phases.js.map +1 -0
- package/lib/next/presetMinimal.js +8 -0
- package/lib/next/presetMinimal.js.map +1 -1
- package/lib/next/runCreateEnginePreset.d.ts +7 -0
- package/lib/next/runCreateEnginePreset.js +20 -0
- package/lib/next/runCreateEnginePreset.js.map +1 -0
- package/lib/shared/options/ensureRepositoryExists.d.ts +3 -4
- package/lib/shared/options/ensureRepositoryExists.js +9 -8
- package/lib/shared/options/ensureRepositoryExists.js.map +1 -1
- package/lib/shared/options/readOptions.d.ts +5 -6
- package/lib/shared/options/readOptions.js +7 -4
- package/lib/shared/options/readOptions.js.map +1 -1
- package/lib/steps/finalizeDependencies.js +43 -48
- package/lib/steps/finalizeDependencies.js.map +1 -1
- package/lib/steps/initializeGitHubRepository/index.js +7 -2
- package/lib/steps/initializeGitHubRepository/index.js.map +1 -1
- package/lib/steps/initializeGitHubRepository/initializeBranchProtectionSettings.js +44 -31
- package/lib/steps/initializeGitHubRepository/initializeBranchProtectionSettings.js.map +1 -1
- package/lib/steps/initializeGitHubRepository/outcomeLabels.d.ts +13 -0
- package/lib/steps/initializeGitHubRepository/{labels/outcomeLabels.js → outcomeLabels.js} +4 -1
- package/lib/steps/initializeGitHubRepository/outcomeLabels.js.map +1 -0
- package/lib/steps/uninstallPackages.js +4 -2
- package/lib/steps/uninstallPackages.js.map +1 -1
- package/lib/steps/writing/creation/index.js +4 -5
- package/lib/steps/writing/creation/index.js.map +1 -1
- package/lib/steps/writing/creation/writeAllContributorsRC.js +1 -9
- package/lib/steps/writing/creation/writeAllContributorsRC.js.map +1 -1
- package/package.json +27 -25
- package/lib/next/utils/removeTrailingSlash.d.ts +0 -3
- package/lib/next/utils/removeTrailingSlash.js +0 -7
- package/lib/next/utils/removeTrailingSlash.js.map +0 -1
- package/lib/shared/options/getGitHub.d.ts +0 -9
- package/lib/shared/options/getGitHub.js +0 -17
- package/lib/shared/options/getGitHub.js.map +0 -1
- package/lib/steps/detectExistingContributors.d.ts +0 -7
- package/lib/steps/detectExistingContributors.js +0 -19
- package/lib/steps/detectExistingContributors.js.map +0 -1
- package/lib/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.d.ts +0 -8
- package/lib/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.js +0 -14
- package/lib/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.js.map +0 -1
- package/lib/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.d.ts +0 -8
- package/lib/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.js +0 -63
- package/lib/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.js.map +0 -1
- package/lib/steps/initializeGitHubRepository/labels/outcomeLabels.d.ts +0 -7
- package/lib/steps/initializeGitHubRepository/labels/outcomeLabels.js.map +0 -1
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import { setGitHubRepositoryLabels } from "set-github-repository-labels";
|
|
1
2
|
import { initializeGitRemote } from "../initializeGitRemote.js";
|
|
2
3
|
import { initializeRepositorySettings } from "../initializeRepositorySettings.js";
|
|
3
4
|
import { initializeBranchProtectionSettings } from "./initializeBranchProtectionSettings.js";
|
|
4
|
-
import {
|
|
5
|
+
import { outcomeLabels } from "./outcomeLabels.js";
|
|
5
6
|
async function initializeGitHubRepository(octokit, options) {
|
|
6
7
|
await initializeGitRemote(options);
|
|
7
8
|
await initializeRepositorySettings(octokit, options);
|
|
8
9
|
await initializeBranchProtectionSettings(octokit, options);
|
|
9
|
-
await
|
|
10
|
+
await setGitHubRepositoryLabels({
|
|
11
|
+
labels: outcomeLabels,
|
|
12
|
+
owner: options.owner,
|
|
13
|
+
repository: options.repository
|
|
14
|
+
});
|
|
10
15
|
}
|
|
11
16
|
export {
|
|
12
17
|
initializeGitHubRepository
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/steps/initializeGitHubRepository/index.ts"],"sourcesContent":["import { Octokit } from \"octokit\";\n\nimport { Options } from \"../../shared/types.js\";\nimport { initializeGitRemote } from \"../initializeGitRemote.js\";\nimport { initializeRepositorySettings } from \"../initializeRepositorySettings.js\";\nimport { initializeBranchProtectionSettings } from \"./initializeBranchProtectionSettings.js\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/steps/initializeGitHubRepository/index.ts"],"sourcesContent":["import { Octokit } from \"octokit\";\nimport { setGitHubRepositoryLabels } from \"set-github-repository-labels\";\n\nimport { Options } from \"../../shared/types.js\";\nimport { initializeGitRemote } from \"../initializeGitRemote.js\";\nimport { initializeRepositorySettings } from \"../initializeRepositorySettings.js\";\nimport { initializeBranchProtectionSettings } from \"./initializeBranchProtectionSettings.js\";\nimport { outcomeLabels } from \"./outcomeLabels.js\";\n\nexport async function initializeGitHubRepository(\n\toctokit: Octokit,\n\toptions: Options,\n) {\n\tawait initializeGitRemote(options);\n\tawait initializeRepositorySettings(octokit, options);\n\tawait initializeBranchProtectionSettings(octokit, options);\n\tawait setGitHubRepositoryLabels({\n\t\tlabels: outcomeLabels,\n\t\towner: options.owner,\n\t\trepository: options.repository,\n\t});\n}\n"],"mappings":"AACA,SAAS,iCAAiC;AAG1C,SAAS,2BAA2B;AACpC,SAAS,oCAAoC;AAC7C,SAAS,0CAA0C;AACnD,SAAS,qBAAqB;AAE9B,eAAsB,2BACrB,SACA,SACC;AACD,QAAM,oBAAoB,OAAO;AACjC,QAAM,6BAA6B,SAAS,OAAO;AACnD,QAAM,mCAAmC,SAAS,OAAO;AACzD,QAAM,0BAA0B;AAAA,IAC/B,QAAQ;AAAA,IACR,OAAO,QAAQ;AAAA,IACf,YAAY,QAAQ;AAAA,EACrB,CAAC;AACF;","names":[]}
|
|
@@ -1,37 +1,50 @@
|
|
|
1
1
|
async function initializeBranchProtectionSettings(octokit, options) {
|
|
2
2
|
try {
|
|
3
|
-
await octokit.request(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{ context: "Prettier" },
|
|
28
|
-
...options.excludeTests ? [] : [{ context: "Test" }]
|
|
29
|
-
],
|
|
30
|
-
strict: false
|
|
3
|
+
await octokit.request("POST /repos/{owner}/{repo}/rulesets", {
|
|
4
|
+
conditions: {
|
|
5
|
+
ref_name: {
|
|
6
|
+
exclude: [],
|
|
7
|
+
include: ["refs/heads/main"]
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
enforcement: "active",
|
|
11
|
+
name: "Branch protection for main",
|
|
12
|
+
owner: options.owner,
|
|
13
|
+
repo: options.repository,
|
|
14
|
+
rules: [
|
|
15
|
+
{ type: "deletion" },
|
|
16
|
+
{
|
|
17
|
+
parameters: {
|
|
18
|
+
// @ts-expect-error -- https://github.com/github/rest-api-description/issues/4405
|
|
19
|
+
allowed_merge_methods: ["squash"],
|
|
20
|
+
dismiss_stale_reviews_on_push: false,
|
|
21
|
+
require_code_owner_review: false,
|
|
22
|
+
require_last_push_approval: false,
|
|
23
|
+
required_approving_review_count: 0,
|
|
24
|
+
required_review_thread_resolution: false
|
|
25
|
+
},
|
|
26
|
+
type: "pull_request"
|
|
31
27
|
},
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
{
|
|
29
|
+
parameters: {
|
|
30
|
+
required_status_checks: [
|
|
31
|
+
{ context: "Build" },
|
|
32
|
+
...options.excludeCompliance ? [] : [{ context: "Compliance" }],
|
|
33
|
+
{ context: "Lint" },
|
|
34
|
+
...options.excludeLintKnip ? [] : [{ context: "Lint Knip" }],
|
|
35
|
+
...options.excludeLintMd ? [] : [{ context: "Lint Markdown" }],
|
|
36
|
+
...options.excludeLintPackages ? [] : [{ context: "Lint Packages" }],
|
|
37
|
+
...options.excludeLintSpelling ? [] : [{ context: "Lint Spelling" }],
|
|
38
|
+
{ context: "Prettier" },
|
|
39
|
+
...options.excludeTests ? [] : [{ context: "Test" }]
|
|
40
|
+
],
|
|
41
|
+
strict_required_status_checks_policy: false
|
|
42
|
+
},
|
|
43
|
+
type: "required_status_checks"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
target: "branch"
|
|
47
|
+
});
|
|
35
48
|
} catch (error) {
|
|
36
49
|
if (error.status === 403) {
|
|
37
50
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/steps/initializeGitHubRepository/initializeBranchProtectionSettings.ts"],"sourcesContent":["import { RequestError } from \"@octokit/request-error\";\nimport { Octokit } from \"octokit\";\n\nimport { Options } from \"../../shared/types.js\";\n\nexport async function initializeBranchProtectionSettings(\n\toctokit: Octokit,\n\toptions: Options,\n) {\n\ttry {\n\t\tawait octokit.request(\
|
|
1
|
+
{"version":3,"sources":["../../../src/steps/initializeGitHubRepository/initializeBranchProtectionSettings.ts"],"sourcesContent":["import { RequestError } from \"@octokit/request-error\";\nimport { Octokit } from \"octokit\";\n\nimport { Options } from \"../../shared/types.js\";\n\nexport async function initializeBranchProtectionSettings(\n\toctokit: Octokit,\n\toptions: Options,\n) {\n\ttry {\n\t\tawait octokit.request(\"POST /repos/{owner}/{repo}/rulesets\", {\n\t\t\tconditions: {\n\t\t\t\tref_name: {\n\t\t\t\t\texclude: [],\n\t\t\t\t\tinclude: [\"refs/heads/main\"],\n\t\t\t\t},\n\t\t\t},\n\t\t\tenforcement: \"active\",\n\t\t\tname: \"Branch protection for main\",\n\t\t\towner: options.owner,\n\t\t\trepo: options.repository,\n\t\t\trules: [\n\t\t\t\t{ type: \"deletion\" },\n\t\t\t\t{\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\t// @ts-expect-error -- https://github.com/github/rest-api-description/issues/4405\n\t\t\t\t\t\tallowed_merge_methods: [\"squash\"],\n\t\t\t\t\t\tdismiss_stale_reviews_on_push: false,\n\t\t\t\t\t\trequire_code_owner_review: false,\n\t\t\t\t\t\trequire_last_push_approval: false,\n\t\t\t\t\t\trequired_approving_review_count: 0,\n\t\t\t\t\t\trequired_review_thread_resolution: false,\n\t\t\t\t\t},\n\t\t\t\t\ttype: \"pull_request\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\trequired_status_checks: [\n\t\t\t\t\t\t\t{ context: \"Build\" },\n\t\t\t\t\t\t\t...(options.excludeCompliance ? [] : [{ context: \"Compliance\" }]),\n\t\t\t\t\t\t\t{ context: \"Lint\" },\n\t\t\t\t\t\t\t...(options.excludeLintKnip ? [] : [{ context: \"Lint Knip\" }]),\n\t\t\t\t\t\t\t...(options.excludeLintMd ? [] : [{ context: \"Lint Markdown\" }]),\n\t\t\t\t\t\t\t...(options.excludeLintPackages\n\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t: [{ context: \"Lint Packages\" }]),\n\t\t\t\t\t\t\t...(options.excludeLintSpelling\n\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t: [{ context: \"Lint Spelling\" }]),\n\t\t\t\t\t\t\t{ context: \"Prettier\" },\n\t\t\t\t\t\t\t...(options.excludeTests ? [] : [{ context: \"Test\" }]),\n\t\t\t\t\t\t],\n\t\t\t\t\t\tstrict_required_status_checks_policy: false,\n\t\t\t\t\t},\n\t\t\t\t\ttype: \"required_status_checks\",\n\t\t\t\t},\n\t\t\t],\n\t\t\ttarget: \"branch\",\n\t\t});\n\t} catch (error) {\n\t\tif ((error as RequestError).status === 403) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n"],"mappings":"AAKA,eAAsB,mCACrB,SACA,SACC;AACD,MAAI;AACH,UAAM,QAAQ,QAAQ,uCAAuC;AAAA,MAC5D,YAAY;AAAA,QACX,UAAU;AAAA,UACT,SAAS,CAAC;AAAA,UACV,SAAS,CAAC,iBAAiB;AAAA,QAC5B;AAAA,MACD;AAAA,MACA,aAAa;AAAA,MACb,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,OAAO;AAAA,QACN,EAAE,MAAM,WAAW;AAAA,QACnB;AAAA,UACC,YAAY;AAAA;AAAA,YAEX,uBAAuB,CAAC,QAAQ;AAAA,YAChC,+BAA+B;AAAA,YAC/B,2BAA2B;AAAA,YAC3B,4BAA4B;AAAA,YAC5B,iCAAiC;AAAA,YACjC,mCAAmC;AAAA,UACpC;AAAA,UACA,MAAM;AAAA,QACP;AAAA,QACA;AAAA,UACC,YAAY;AAAA,YACX,wBAAwB;AAAA,cACvB,EAAE,SAAS,QAAQ;AAAA,cACnB,GAAI,QAAQ,oBAAoB,CAAC,IAAI,CAAC,EAAE,SAAS,aAAa,CAAC;AAAA,cAC/D,EAAE,SAAS,OAAO;AAAA,cAClB,GAAI,QAAQ,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,YAAY,CAAC;AAAA,cAC5D,GAAI,QAAQ,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,cAC9D,GAAI,QAAQ,sBACT,CAAC,IACD,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,cAChC,GAAI,QAAQ,sBACT,CAAC,IACD,CAAC,EAAE,SAAS,gBAAgB,CAAC;AAAA,cAChC,EAAE,SAAS,WAAW;AAAA,cACtB,GAAI,QAAQ,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,CAAC;AAAA,YACrD;AAAA,YACA,sCAAsC;AAAA,UACvC;AAAA,UACA,MAAM;AAAA,QACP;AAAA,MACD;AAAA,MACA,QAAQ;AAAA,IACT,CAAC;AAAA,EACF,SAAS,OAAO;AACf,QAAK,MAAuB,WAAW,KAAK;AAC3C,aAAO;AAAA,IACR;AAEA,UAAM;AAAA,EACP;AACD;","names":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const outcomeLabels = [
|
|
2
2
|
{
|
|
3
|
+
aliases: ["docs"],
|
|
3
4
|
color: "0075ca",
|
|
4
5
|
description: "Improvements or additions to docs \u{1F4DD}",
|
|
5
6
|
name: "area: documentation"
|
|
@@ -25,6 +26,7 @@ const outcomeLabels = [
|
|
|
25
26
|
name: "invalid"
|
|
26
27
|
},
|
|
27
28
|
{
|
|
29
|
+
aliases: ["help wanted"],
|
|
28
30
|
color: "0E8A16",
|
|
29
31
|
description: "Please, send a pull request to resolve this! \u{1F64F}",
|
|
30
32
|
name: "status: accepting prs"
|
|
@@ -66,10 +68,11 @@ const outcomeLabels = [
|
|
|
66
68
|
},
|
|
67
69
|
{
|
|
68
70
|
color: "d73a4a",
|
|
69
|
-
description: "Something isn't working
|
|
71
|
+
description: "Something isn't working \u{1F41B}",
|
|
70
72
|
name: "type: bug"
|
|
71
73
|
},
|
|
72
74
|
{
|
|
75
|
+
aliases: ["enhancement"],
|
|
73
76
|
color: "a2eeef",
|
|
74
77
|
description: "New enhancement or request \u{1F680}",
|
|
75
78
|
name: "type: feature"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/steps/initializeGitHubRepository/outcomeLabels.ts"],"sourcesContent":["/* spellchecker: disable */\nexport const outcomeLabels = [\n\t{\n\t\taliases: [\"docs\"],\n\t\tcolor: \"0075ca\",\n\t\tdescription: \"Improvements or additions to docs 📝\",\n\t\tname: \"area: documentation\",\n\t},\n\t{\n\t\tcolor: \"1177aa\",\n\t\tdescription:\n\t\t\t\"Improving how the repository's tests are run and/or code is tested 🧪\",\n\t\tname: \"area: testing\",\n\t},\n\t{\n\t\tcolor: \"f9d0c4\",\n\t\tdescription: \"Managing the repository's maintenance 🛠️\",\n\t\tname: \"area: tooling\",\n\t},\n\t{\n\t\tcolor: \"5319E7\",\n\t\tdescription: \"Good for newcomers, please hop on! 🙌\",\n\t\tname: \"good first issue\",\n\t},\n\t{\n\t\tcolor: \"7a5901\",\n\t\tdescription: \"This doesn't seem right\",\n\t\tname: \"invalid\",\n\t},\n\t{\n\t\taliases: [\"help wanted\"],\n\t\tcolor: \"0E8A16\",\n\t\tdescription: \"Please, send a pull request to resolve this! 🙏\",\n\t\tname: \"status: accepting prs\",\n\t},\n\t{\n\t\tcolor: \"eeeeee\",\n\t\tdescription: \"Issue is stale and/or no longer valid\",\n\t\tname: \"status: aged away\",\n\t},\n\t{\n\t\tcolor: \"#ddcccc\",\n\t\tdescription: \"Waiting for something else to be resolved 🙅\",\n\t\tname: \"status: blocked\",\n\t},\n\t{\n\t\tcolor: \"cfd3d7\",\n\t\tdescription: \"This issue or pull request already exists\",\n\t\tname: \"status: duplicate\",\n\t},\n\t{\n\t\tcolor: \"#05104F\",\n\t\tdescription: \"Not yet ready for implementation or a pull request\",\n\t\tname: \"status: in discussion\",\n\t},\n\t{\n\t\tcolor: \"D3F82D\",\n\t\tdescription: \"Further research required...? 🔎\",\n\t\tname: \"status: needs investigation\",\n\t},\n\t{\n\t\tcolor: \"E4BC82\",\n\t\tdescription: \"Needs an action taken by the original poster\",\n\t\tname: \"status: waiting for author\",\n\t},\n\t{\n\t\tcolor: \"ffffff\",\n\t\tdescription: \"This will not be worked on\",\n\t\tname: \"status: wontfix\",\n\t},\n\t{\n\t\tcolor: \"d73a4a\",\n\t\tdescription: \"Something isn't working 🐛\",\n\t\tname: \"type: bug\",\n\t},\n\t{\n\t\taliases: [\"enhancement\"],\n\t\tcolor: \"a2eeef\",\n\t\tdescription: \"New enhancement or request 🚀\",\n\t\tname: \"type: feature\",\n\t},\n\t{\n\t\tcolor: \"d876e3\",\n\t\tdescription: \"Further information is requested\",\n\t\tname: \"type: question\",\n\t},\n\t{\n\t\tcolor: \"fde282\",\n\t\tdescription: \"Tech debt or other code/repository cleanups 🧹\",\n\t\tname: \"type: cleanup\",\n\t},\n];\n"],"mappings":"AACO,MAAM,gBAAgB;AAAA,EAC5B;AAAA,IACC,SAAS,CAAC,MAAM;AAAA,IAChB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aACC;AAAA,IACD,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,SAAS,CAAC,aAAa;AAAA,IACvB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,SAAS,CAAC,aAAa;AAAA,IACvB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACP;AACD;","names":[]}
|
|
@@ -6,11 +6,10 @@ async function uninstallPackages(offline) {
|
|
|
6
6
|
[
|
|
7
7
|
"@clack/prompts",
|
|
8
8
|
"@prettier/sync",
|
|
9
|
-
"all-contributors-
|
|
9
|
+
"all-contributors-cli",
|
|
10
10
|
"chalk",
|
|
11
11
|
"create",
|
|
12
12
|
"execa",
|
|
13
|
-
"get-github-auth-token",
|
|
14
13
|
"git-remote-origin-url",
|
|
15
14
|
"git-url-parse",
|
|
16
15
|
"input-from-file",
|
|
@@ -19,11 +18,14 @@ async function uninstallPackages(offline) {
|
|
|
19
18
|
"lazy-value",
|
|
20
19
|
"npm-user",
|
|
21
20
|
"octokit",
|
|
21
|
+
"octokit-from-auth",
|
|
22
22
|
"parse-author",
|
|
23
23
|
"parse-package-name",
|
|
24
|
+
"populate-all-contributors-for-repository",
|
|
24
25
|
"prettier",
|
|
25
26
|
"replace-in-file",
|
|
26
27
|
"rimraf",
|
|
28
|
+
"set-github-repository-labels",
|
|
27
29
|
"sort-package-json",
|
|
28
30
|
"title-case",
|
|
29
31
|
"zod",
|
|
@@ -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-
|
|
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\"execa\",\n\t\t\t\"git-remote-origin-url\",\n\t\t\t\"git-url-parse\",\n\t\t\t\"input-from-file\",\n\t\t\t\"input-from-file-json\",\n\t\t\t\"js-yaml\",\n\t\t\t\"lazy-value\",\n\t\t\t\"npm-user\",\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\"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,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":[]}
|
|
@@ -16,12 +16,11 @@ const presets = {
|
|
|
16
16
|
async function createStructure(options, useNextEngine) {
|
|
17
17
|
const preset = useNextEngine && options.base && options.base !== "prompt" && presets[options.base];
|
|
18
18
|
if (preset) {
|
|
19
|
-
const creation = await producePreset(preset, {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// TODO: Add a "starting files" option in create Presets/Templates?
|
|
23
|
-
src: await createSrc(options)
|
|
19
|
+
const { creation } = await producePreset(preset, {
|
|
20
|
+
mode: "initialize",
|
|
21
|
+
options
|
|
24
22
|
});
|
|
23
|
+
return await recursivelyFormat(creation.files);
|
|
25
24
|
}
|
|
26
25
|
return {
|
|
27
26
|
".github": await createDotGitHub(options),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/writing/creation/index.ts"],"sourcesContent":["import { CreatedFiles, producePreset } from \"create\";\nimport prettier from \"prettier\";\n\nimport { presetCommon } from \"../../../next/presetCommon.js\";\nimport { presetEverything } from \"../../../next/presetEverything.js\";\nimport { presetMinimal } from \"../../../next/presetMinimal.js\";\nimport { Options } from \"../../../shared/types.js\";\nimport { Structure } from \"../types.js\";\nimport { createDotGitHub } from \"./dotGitHub/index.js\";\nimport { createDotHusky } from \"./dotHusky.js\";\nimport { createDotVSCode } from \"./dotVSCode.js\";\nimport { createRootFiles } from \"./rootFiles.js\";\nimport { createSrc } from \"./src.js\";\n\nconst presets = {\n\tcommon: presetCommon,\n\teverything: presetEverything,\n\tminimal: presetMinimal,\n};\n\nexport async function createStructure(\n\toptions: Options,\n\tuseNextEngine: boolean,\n): Promise<Structure> {\n\tconst preset =\n\t\tuseNextEngine &&\n\t\toptions.base &&\n\t\toptions.base !== \"prompt\" &&\n\t\tpresets[options.base];\n\n\tif (preset) {\n\t\tconst creation = await producePreset(preset, {
|
|
1
|
+
{"version":3,"sources":["../../../../src/steps/writing/creation/index.ts"],"sourcesContent":["import { CreatedFiles, producePreset } from \"create\";\nimport prettier from \"prettier\";\n\nimport { presetCommon } from \"../../../next/presetCommon.js\";\nimport { presetEverything } from \"../../../next/presetEverything.js\";\nimport { presetMinimal } from \"../../../next/presetMinimal.js\";\nimport { Options } from \"../../../shared/types.js\";\nimport { Structure } from \"../types.js\";\nimport { createDotGitHub } from \"./dotGitHub/index.js\";\nimport { createDotHusky } from \"./dotHusky.js\";\nimport { createDotVSCode } from \"./dotVSCode.js\";\nimport { createRootFiles } from \"./rootFiles.js\";\nimport { createSrc } from \"./src.js\";\n\nconst presets = {\n\tcommon: presetCommon,\n\teverything: presetEverything,\n\tminimal: presetMinimal,\n};\n\nexport async function createStructure(\n\toptions: Options,\n\tuseNextEngine: boolean,\n): Promise<Structure> {\n\tconst preset =\n\t\tuseNextEngine &&\n\t\toptions.base &&\n\t\toptions.base !== \"prompt\" &&\n\t\tpresets[options.base];\n\n\tif (preset) {\n\t\tconst { creation } = await producePreset(preset, {\n\t\t\tmode: \"initialize\",\n\t\t\toptions,\n\t\t});\n\n\t\treturn await recursivelyFormat(creation.files);\n\t}\n\n\treturn {\n\t\t\".github\": await createDotGitHub(options),\n\t\t\".husky\": createDotHusky(),\n\t\t\".vscode\": await createDotVSCode(options),\n\t\t...(options.mode !== \"migrate\" && { src: await createSrc(options) }),\n\t\t...(await createRootFiles(options)),\n\t};\n}\n\nasync function recursivelyFormat(files: CreatedFiles): Promise<Structure> {\n\tconst result: Structure = {};\n\n\tfor (const [key, value] of Object.entries(files)) {\n\t\tif (Array.isArray(value)) {\n\t\t\tresult[key] = await formatCreatedFile(key, value[0]);\n\t\t} else if (typeof value === \"string\") {\n\t\t\tresult[key] = await formatCreatedFile(key, value);\n\t\t} else if (typeof value === \"object\") {\n\t\t\tresult[key] = await recursivelyFormat(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nconst asYaml = new Set([\n\t\".gitignore\",\n\t\".markdownlintignore\",\n\t\".nvmrc\",\n\t\".prettierignore\",\n\t\"pre-commit\",\n]);\n\nasync function formatCreatedFile(filepath: string, entry: string) {\n\t// For now, explicit yml files internally already have formatting applied\n\tif (filepath.endsWith(\".yml\")) {\n\t\treturn entry;\n\t}\n\n\treturn await prettier.format(entry, {\n\t\tuseTabs: true,\n\t\t...(asYaml.has(filepath) ? { parser: \"yaml\" } : { filepath }),\n\t});\n}\n"],"mappings":"AAAA,SAAuB,qBAAqB;AAC5C,OAAO,cAAc;AAErB,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAG9B,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAE1B,MAAM,UAAU;AAAA,EACf,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AACV;AAEA,eAAsB,gBACrB,SACA,eACqB;AACrB,QAAM,SACL,iBACA,QAAQ,QACR,QAAQ,SAAS,YACjB,QAAQ,QAAQ,IAAI;AAErB,MAAI,QAAQ;AACX,UAAM,EAAE,SAAS,IAAI,MAAM,cAAc,QAAQ;AAAA,MAChD,MAAM;AAAA,MACN;AAAA,IACD,CAAC;AAED,WAAO,MAAM,kBAAkB,SAAS,KAAK;AAAA,EAC9C;AAEA,SAAO;AAAA,IACN,WAAW,MAAM,gBAAgB,OAAO;AAAA,IACxC,UAAU,eAAe;AAAA,IACzB,WAAW,MAAM,gBAAgB,OAAO;AAAA,IACxC,GAAI,QAAQ,SAAS,aAAa,EAAE,KAAK,MAAM,UAAU,OAAO,EAAE;AAAA,IAClE,GAAI,MAAM,gBAAgB,OAAO;AAAA,EAClC;AACD;AAEA,eAAe,kBAAkB,OAAyC;AACzE,QAAM,SAAoB,CAAC;AAE3B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACjD,QAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK,MAAM,CAAC,CAAC;AAAA,IACpD,WAAW,OAAO,UAAU,UAAU;AACrC,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK,KAAK;AAAA,IACjD,WAAW,OAAO,UAAU,UAAU;AACrC,aAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK;AAAA,IAC5C;AAAA,EACD;AAEA,SAAO;AACR;AAEA,MAAM,SAAS,oBAAI,IAAI;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,eAAe,kBAAkB,UAAkB,OAAe;AAEjE,MAAI,SAAS,SAAS,MAAM,GAAG;AAC9B,WAAO;AAAA,EACR;AAEA,SAAO,MAAM,SAAS,OAAO,OAAO;AAAA,IACnC,SAAS;AAAA,IACT,GAAI,OAAO,IAAI,QAAQ,IAAI,EAAE,QAAQ,OAAO,IAAI,EAAE,SAAS;AAAA,EAC5D,CAAC;AACF;","names":[]}
|
|
@@ -6,18 +6,10 @@ async function writeAllContributorsRC(options) {
|
|
|
6
6
|
);
|
|
7
7
|
return await formatJson({
|
|
8
8
|
badgeTemplate: ' <a href="#contributors" target="_blank"><img alt="\u{1F46A} All Contributors: <%= contributors.length %>" src="https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-<%= contributors.length %>-21bb42.svg" /></a>',
|
|
9
|
-
commit: false,
|
|
10
|
-
commitConvention: "angular",
|
|
11
|
-
commitType: "docs",
|
|
12
9
|
contributors: existing?.contributors ?? [],
|
|
13
|
-
contributorsPerLine: 7,
|
|
14
10
|
contributorsSortAlphabetically: true,
|
|
15
|
-
files: ["README.md"],
|
|
16
|
-
imageSize: 100,
|
|
17
11
|
projectName: options.repository,
|
|
18
|
-
projectOwner: options.owner
|
|
19
|
-
repoHost: "https://github.com",
|
|
20
|
-
repoType: "github"
|
|
12
|
+
projectOwner: options.owner
|
|
21
13
|
});
|
|
22
14
|
}
|
|
23
15
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/writing/creation/writeAllContributorsRC.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { AllContributorsData, Options } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nexport async function writeAllContributorsRC(options: Options) {\n\tconst existing = (await readFileSafeAsJson(\n\t\t\".all-contributorsrc\",\n\t)) as AllContributorsData | null;\n\n\treturn await formatJson({\n\t\tbadgeTemplate:\n\t\t\t'\t<a href=\"#contributors\" target=\"_blank\"><img alt=\"👪 All Contributors: <%= contributors.length %>\" src=\"https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-<%= contributors.length %>-21bb42.svg\" /></a>',\n\t\
|
|
1
|
+
{"version":3,"sources":["../../../../src/steps/writing/creation/writeAllContributorsRC.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { AllContributorsData, Options } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nexport async function writeAllContributorsRC(options: Options) {\n\tconst existing = (await readFileSafeAsJson(\n\t\t\".all-contributorsrc\",\n\t)) as AllContributorsData | null;\n\n\treturn await formatJson({\n\t\tbadgeTemplate:\n\t\t\t'\t<a href=\"#contributors\" target=\"_blank\"><img alt=\"👪 All Contributors: <%= contributors.length %>\" src=\"https://img.shields.io/badge/%F0%9F%91%AA_all_contributors-<%= contributors.length %>-21bb42.svg\" /></a>',\n\t\tcontributors: existing?.contributors ?? [],\n\t\tcontributorsSortAlphabetically: true,\n\t\tprojectName: options.repository,\n\t\tprojectOwner: options.owner,\n\t});\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,eAAsB,uBAAuB,SAAkB;AAC9D,QAAM,WAAY,MAAM;AAAA,IACvB;AAAA,EACD;AAEA,SAAO,MAAM,WAAW;AAAA,IACvB,eACC;AAAA,IACD,cAAc,UAAU,gBAAgB,CAAC;AAAA,IACzC,gCAAgC;AAAA,IAChC,aAAa,QAAQ;AAAA,IACrB,cAAc,QAAQ;AAAA,EACvB,CAAC;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-typescript-app",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.78.0",
|
|
4
4
|
"description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. ❤️🔥",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -43,69 +43,71 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@clack/prompts": "^0.8.2",
|
|
45
45
|
"@prettier/sync": "^0.5.2",
|
|
46
|
-
"all-contributors-for-repository": "^0.3.0",
|
|
47
46
|
"chalk": "^5.3.0",
|
|
48
|
-
"create": "0.1.0-alpha.
|
|
49
|
-
"execa": "^9.5.
|
|
50
|
-
"get-github-auth-token": "^0.1.0",
|
|
47
|
+
"create": "0.1.0-alpha.7",
|
|
48
|
+
"execa": "^9.5.2",
|
|
51
49
|
"git-remote-origin-url": "^4.0.0",
|
|
52
50
|
"git-url-parse": "^16.0.0",
|
|
53
|
-
"input-from-file": "0.1.0-alpha.
|
|
54
|
-
"input-from-file-json": "0.1.0-alpha.
|
|
51
|
+
"input-from-file": "0.1.0-alpha.2",
|
|
52
|
+
"input-from-file-json": "0.1.0-alpha.2",
|
|
55
53
|
"js-yaml": "^4.1.0",
|
|
56
54
|
"lazy-value": "^3.0.0",
|
|
57
55
|
"npm-user": "^6.1.1",
|
|
58
56
|
"octokit": "^4.0.2",
|
|
57
|
+
"octokit-from-auth": "^0.3.0",
|
|
59
58
|
"parse-author": "^2.0.0",
|
|
60
59
|
"parse-package-name": "^1.0.0",
|
|
61
|
-
"
|
|
62
|
-
"
|
|
60
|
+
"populate-all-contributors-for-repository": "^0.1.2",
|
|
61
|
+
"prettier": "^3.4.2",
|
|
62
|
+
"replace-in-file": "^8.3.0",
|
|
63
63
|
"rimraf": "^6.0.1",
|
|
64
|
+
"set-github-repository-labels": "^0.1.0",
|
|
64
65
|
"sort-package-json": "^2.12.0",
|
|
65
66
|
"title-case": "^4.3.2",
|
|
66
|
-
"zod": "^3.
|
|
67
|
+
"zod": "^3.24.1",
|
|
67
68
|
"zod-validation-error": "^3.4.0"
|
|
68
69
|
},
|
|
69
70
|
"devDependencies": {
|
|
70
71
|
"@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
|
|
71
|
-
"@eslint/js": "9.
|
|
72
|
+
"@eslint/js": "9.17.0",
|
|
72
73
|
"@octokit/request-error": "6.1.5",
|
|
73
74
|
"@release-it/conventional-changelog": "9.0.3",
|
|
74
75
|
"@types/eslint-plugin-markdown": "2.0.2",
|
|
75
76
|
"@types/git-url-parse": "9.0.3",
|
|
76
77
|
"@types/js-yaml": "4.0.9",
|
|
77
|
-
"@types/node": "22.10.
|
|
78
|
+
"@types/node": "22.10.2",
|
|
78
79
|
"@types/parse-author": "2.0.3",
|
|
79
80
|
"@vitest/coverage-v8": "2.1.8",
|
|
80
|
-
"@vitest/eslint-plugin": "1.1.
|
|
81
|
-
"
|
|
81
|
+
"@vitest/eslint-plugin": "1.1.18",
|
|
82
|
+
"all-contributors-cli": "6.26.1",
|
|
83
|
+
"c8": "10.1.3",
|
|
82
84
|
"console-fail-test": "0.5.0",
|
|
83
|
-
"create-testers": "0.1.0-alpha.
|
|
84
|
-
"cspell": "8.
|
|
85
|
-
"eslint": "9.
|
|
86
|
-
"eslint-plugin-jsdoc": "50.6.
|
|
85
|
+
"create-testers": "0.1.0-alpha.7",
|
|
86
|
+
"cspell": "8.17.1",
|
|
87
|
+
"eslint": "9.17.0",
|
|
88
|
+
"eslint-plugin-jsdoc": "50.6.1",
|
|
87
89
|
"eslint-plugin-jsonc": "2.18.2",
|
|
88
90
|
"eslint-plugin-markdown": "5.1.0",
|
|
89
|
-
"eslint-plugin-n": "17.
|
|
91
|
+
"eslint-plugin-n": "17.15.0",
|
|
90
92
|
"eslint-plugin-package-json": "0.18.0",
|
|
91
|
-
"eslint-plugin-perfectionist": "4.
|
|
93
|
+
"eslint-plugin-perfectionist": "4.3.0",
|
|
92
94
|
"eslint-plugin-regexp": "2.7.0",
|
|
93
95
|
"eslint-plugin-yml": "1.16.0",
|
|
94
96
|
"globby": "14.0.2",
|
|
95
97
|
"husky": "9.1.7",
|
|
96
|
-
"knip": "5.
|
|
97
|
-
"lint-staged": "15.2.
|
|
98
|
-
"markdownlint": "0.
|
|
98
|
+
"knip": "5.41.0",
|
|
99
|
+
"lint-staged": "15.2.11",
|
|
100
|
+
"markdownlint": "0.37.1",
|
|
99
101
|
"markdownlint-cli": "0.43.0",
|
|
100
102
|
"prettier-plugin-curly": "0.3.1",
|
|
101
103
|
"prettier-plugin-packagejson": "2.5.6",
|
|
102
104
|
"prettier-plugin-sh": "0.14.0",
|
|
103
105
|
"release-it": "17.10.0",
|
|
104
|
-
"sentences-per-line": "0.
|
|
106
|
+
"sentences-per-line": "0.3.0",
|
|
105
107
|
"tsup": "8.3.5",
|
|
106
108
|
"tsx": "4.19.2",
|
|
107
109
|
"typescript": "5.7.2",
|
|
108
|
-
"typescript-eslint": "8.
|
|
110
|
+
"typescript-eslint": "8.18.1",
|
|
109
111
|
"vitest": "2.1.8"
|
|
110
112
|
},
|
|
111
113
|
"engines": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/next/utils/removeTrailingSlash.ts"],"sourcesContent":["export function removeTrailingSlash(text: string) {\n\treturn text.replace(/\\/$/, \"\");\n}\n"],"mappings":"AAAO,SAAS,oBAAoB,MAAc;AACjD,SAAO,KAAK,QAAQ,OAAO,EAAE;AAC9B;","names":[]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { getGitHubAuthToken } from "get-github-auth-token";
|
|
2
|
-
import { Octokit } from "octokit";
|
|
3
|
-
async function getGitHub() {
|
|
4
|
-
const auth = await getGitHubAuthToken();
|
|
5
|
-
if (!auth.succeeded) {
|
|
6
|
-
throw new Error(
|
|
7
|
-
"Couldn't authenticate with GitHub. Either log in with `gh auth login` (https://cli.github.com) or set a GH_TOKEN environment variable.",
|
|
8
|
-
{ cause: auth.error }
|
|
9
|
-
);
|
|
10
|
-
}
|
|
11
|
-
const octokit = new Octokit({ auth: auth.token });
|
|
12
|
-
return { auth: auth.token, octokit };
|
|
13
|
-
}
|
|
14
|
-
export {
|
|
15
|
-
getGitHub
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=getGitHub.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/shared/options/getGitHub.ts"],"sourcesContent":["import { getGitHubAuthToken } from \"get-github-auth-token\";\nimport { Octokit } from \"octokit\";\n\nexport interface GitHub {\n\tauth: string;\n\toctokit: Octokit;\n}\n\nexport async function getGitHub(): Promise<GitHub | undefined> {\n\tconst auth = await getGitHubAuthToken();\n\n\tif (!auth.succeeded) {\n\t\tthrow new Error(\n\t\t\t\"Couldn't authenticate with GitHub. Either log in with `gh auth login` (https://cli.github.com) or set a GH_TOKEN environment variable.\",\n\t\t\t{ cause: auth.error },\n\t\t);\n\t}\n\n\tconst octokit = new Octokit({ auth: auth.token });\n\n\treturn { auth: auth.token, octokit };\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AACnC,SAAS,eAAe;AAOxB,eAAsB,YAAyC;AAC9D,QAAM,OAAO,MAAM,mBAAmB;AAEtC,MAAI,CAAC,KAAK,WAAW;AACpB,UAAM,IAAI;AAAA,MACT;AAAA,MACA,EAAE,OAAO,KAAK,MAAM;AAAA,IACrB;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhD,SAAO,EAAE,MAAM,KAAK,OAAO,QAAQ;AACpC;","names":[]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Options } from '../shared/types.js';
|
|
2
|
-
import 'zod';
|
|
3
|
-
import '../shared/codes.js';
|
|
4
|
-
|
|
5
|
-
declare function detectExistingContributors(auth: string | undefined, options: Pick<Options, "owner" | "repository">): Promise<void>;
|
|
6
|
-
|
|
7
|
-
export { detectExistingContributors };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { getAllContributorsForRepository } from "all-contributors-for-repository";
|
|
2
|
-
import { $ } from "execa";
|
|
3
|
-
async function detectExistingContributors(auth, options) {
|
|
4
|
-
const contributors = await getAllContributorsForRepository({
|
|
5
|
-
auth,
|
|
6
|
-
owner: options.owner,
|
|
7
|
-
repo: options.repository
|
|
8
|
-
});
|
|
9
|
-
for (const [contributor, contributions] of Object.entries(contributors)) {
|
|
10
|
-
const contributionTypes = Object.keys(contributions).join(",");
|
|
11
|
-
await $({
|
|
12
|
-
env: { PRIVATE_TOKEN: auth }
|
|
13
|
-
})`npx -y all-contributors-cli add ${contributor} ${contributionTypes}`;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export {
|
|
17
|
-
detectExistingContributors
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=detectExistingContributors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/steps/detectExistingContributors.ts"],"sourcesContent":["import { getAllContributorsForRepository } from \"all-contributors-for-repository\";\nimport { $ } from \"execa\";\n\nimport { Options } from \"../shared/types.js\";\n\nexport async function detectExistingContributors(\n\tauth: string | undefined,\n\toptions: Pick<Options, \"owner\" | \"repository\">,\n) {\n\tconst contributors = await getAllContributorsForRepository({\n\t\tauth,\n\t\towner: options.owner,\n\t\trepo: options.repository,\n\t});\n\n\tfor (const [contributor, contributions] of Object.entries(contributors)) {\n\t\tconst contributionTypes = Object.keys(contributions).join(\",\");\n\t\tawait $({\n\t\t\tenv: { PRIVATE_TOKEN: auth },\n\t\t})`npx -y all-contributors-cli add ${contributor} ${contributionTypes}`;\n\t}\n}\n"],"mappings":"AAAA,SAAS,uCAAuC;AAChD,SAAS,SAAS;AAIlB,eAAsB,2BACrB,MACA,SACC;AACD,QAAM,eAAe,MAAM,gCAAgC;AAAA,IAC1D;AAAA,IACA,OAAO,QAAQ;AAAA,IACf,MAAM,QAAQ;AAAA,EACf,CAAC;AAED,aAAW,CAAC,aAAa,aAAa,KAAK,OAAO,QAAQ,YAAY,GAAG;AACxE,UAAM,oBAAoB,OAAO,KAAK,aAAa,EAAE,KAAK,GAAG;AAC7D,UAAM,EAAE;AAAA,MACP,KAAK,EAAE,eAAe,KAAK;AAAA,IAC5B,CAAC,oCAAoC,WAAW,IAAI,iBAAiB;AAAA,EACtE;AACD;","names":[]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
interface GhLabelData {
|
|
2
|
-
color: string;
|
|
3
|
-
description: null | string;
|
|
4
|
-
name: string;
|
|
5
|
-
}
|
|
6
|
-
declare function getExistingEquivalentLabels(existingLabels: GhLabelData[], outcomeLabelName: string): GhLabelData[];
|
|
7
|
-
|
|
8
|
-
export { type GhLabelData, getExistingEquivalentLabels };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const aliases = /* @__PURE__ */ new Map([
|
|
2
|
-
["enhancement", "type: feature"],
|
|
3
|
-
["help wanted", "status: accepting prs"]
|
|
4
|
-
]);
|
|
5
|
-
function getExistingEquivalentLabels(existingLabels, outcomeLabelName) {
|
|
6
|
-
const outcomeTrimmed = outcomeLabelName.replace(/\w+: (\w+)/, "$1");
|
|
7
|
-
return existingLabels.filter(({ name: existingName }) => {
|
|
8
|
-
return existingName === outcomeLabelName || existingName === outcomeTrimmed || aliases.get(existingName) === outcomeLabelName || existingName.replace(/\w+: (\w+)/, "$1") === outcomeLabelName;
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
export {
|
|
12
|
-
getExistingEquivalentLabels
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=getExistingEquivalentLabels.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/initializeGitHubRepository/labels/getExistingEquivalentLabels.ts"],"sourcesContent":["const aliases = new Map([\n\t[\"enhancement\", \"type: feature\"],\n\t[\"help wanted\", \"status: accepting prs\"],\n]);\n\nexport interface GhLabelData {\n\tcolor: string;\n\tdescription: null | string;\n\tname: string;\n}\n\nexport function getExistingEquivalentLabels(\n\texistingLabels: GhLabelData[],\n\toutcomeLabelName: string,\n) {\n\tconst outcomeTrimmed = outcomeLabelName.replace(/\\w+: (\\w+)/, \"$1\");\n\n\treturn existingLabels.filter(({ name: existingName }) => {\n\t\treturn (\n\t\t\texistingName === outcomeLabelName ||\n\t\t\texistingName === outcomeTrimmed ||\n\t\t\taliases.get(existingName) === outcomeLabelName ||\n\t\t\texistingName.replace(/\\w+: (\\w+)/, \"$1\") === outcomeLabelName\n\t\t);\n\t});\n}\n"],"mappings":"AAAA,MAAM,UAAU,oBAAI,IAAI;AAAA,EACvB,CAAC,eAAe,eAAe;AAAA,EAC/B,CAAC,eAAe,uBAAuB;AACxC,CAAC;AAQM,SAAS,4BACf,gBACA,kBACC;AACD,QAAM,iBAAiB,iBAAiB,QAAQ,cAAc,IAAI;AAElE,SAAO,eAAe,OAAO,CAAC,EAAE,MAAM,aAAa,MAAM;AACxD,WACC,iBAAiB,oBACjB,iBAAiB,kBACjB,QAAQ,IAAI,YAAY,MAAM,oBAC9B,aAAa,QAAQ,cAAc,IAAI,MAAM;AAAA,EAE/C,CAAC;AACF;","names":[]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Octokit } from 'octokit';
|
|
2
|
-
import { Options } from '../../../shared/types.js';
|
|
3
|
-
import 'zod';
|
|
4
|
-
import '../../../shared/codes.js';
|
|
5
|
-
|
|
6
|
-
declare function initializeRepositoryLabels(octokit: Octokit, options: Pick<Options, "owner" | "repository">): Promise<void>;
|
|
7
|
-
|
|
8
|
-
export { initializeRepositoryLabels };
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { getExistingEquivalentLabels } from "./getExistingEquivalentLabels.js";
|
|
2
|
-
import { outcomeLabels } from "./outcomeLabels.js";
|
|
3
|
-
async function initializeRepositoryLabels(octokit, options) {
|
|
4
|
-
const { data: existingLabels } = await octokit.request(
|
|
5
|
-
"GET /repos/{owner}/{repo}/labels",
|
|
6
|
-
{
|
|
7
|
-
headers: {
|
|
8
|
-
"X-GitHub-Api-Version": "2022-11-28"
|
|
9
|
-
},
|
|
10
|
-
owner: options.owner,
|
|
11
|
-
repo: options.repository
|
|
12
|
-
}
|
|
13
|
-
);
|
|
14
|
-
for (const outcome of outcomeLabels) {
|
|
15
|
-
const existingEquivalents = getExistingEquivalentLabels(
|
|
16
|
-
existingLabels,
|
|
17
|
-
outcome.name
|
|
18
|
-
);
|
|
19
|
-
if (!existingEquivalents.length) {
|
|
20
|
-
await octokit.request("POST /repos/{owner}/{repo}/labels", {
|
|
21
|
-
color: outcome.color.replace("#", ""),
|
|
22
|
-
description: outcome.description,
|
|
23
|
-
headers: {
|
|
24
|
-
"X-GitHub-Api-Version": "2022-11-28"
|
|
25
|
-
},
|
|
26
|
-
name: outcome.name,
|
|
27
|
-
owner: options.owner,
|
|
28
|
-
repo: options.repository
|
|
29
|
-
});
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
for (const existingEquivalent of existingEquivalents) {
|
|
33
|
-
if (existingEquivalent.name !== outcome.name && existingLabels.some((existing) => existing.name === outcome.name)) {
|
|
34
|
-
await octokit.request("DELETE /repos/{owner}/{repo}/labels/{name}", {
|
|
35
|
-
headers: {
|
|
36
|
-
"X-GitHub-Api-Version": "2022-11-28"
|
|
37
|
-
},
|
|
38
|
-
name: existingEquivalent.name,
|
|
39
|
-
owner: options.owner,
|
|
40
|
-
repo: options.repository
|
|
41
|
-
});
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
if (outcome.color !== existingEquivalent.color || outcome.description !== existingEquivalent.description || outcome.name !== existingEquivalent.name) {
|
|
45
|
-
await octokit.request("PATCH /repos/{owner}/{repo}/labels/{name}", {
|
|
46
|
-
color: outcome.color.replace("#", ""),
|
|
47
|
-
description: outcome.description,
|
|
48
|
-
headers: {
|
|
49
|
-
"X-GitHub-Api-Version": "2022-11-28"
|
|
50
|
-
},
|
|
51
|
-
name: existingEquivalent.name,
|
|
52
|
-
new_name: outcome.name,
|
|
53
|
-
owner: options.owner,
|
|
54
|
-
repo: options.repository
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
export {
|
|
61
|
-
initializeRepositoryLabels
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=initializeRepositoryLabels.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/initializeGitHubRepository/labels/initializeRepositoryLabels.ts"],"sourcesContent":["import { Octokit } from \"octokit\";\n\nimport { Options } from \"../../../shared/types.js\";\nimport { getExistingEquivalentLabels } from \"./getExistingEquivalentLabels.js\";\nimport { outcomeLabels } from \"./outcomeLabels.js\";\n\nexport async function initializeRepositoryLabels(\n\toctokit: Octokit,\n\toptions: Pick<Options, \"owner\" | \"repository\">,\n) {\n\tconst { data: existingLabels } = await octokit.request(\n\t\t\"GET /repos/{owner}/{repo}/labels\",\n\t\t{\n\t\t\theaders: {\n\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t},\n\t\t\towner: options.owner,\n\t\t\trepo: options.repository,\n\t\t},\n\t);\n\n\tfor (const outcome of outcomeLabels) {\n\t\tconst existingEquivalents = getExistingEquivalentLabels(\n\t\t\texistingLabels,\n\t\t\toutcome.name,\n\t\t);\n\n\t\t// Case: the repo has neither of the two label types\n\t\tif (!existingEquivalents.length) {\n\t\t\tawait octokit.request(\"POST /repos/{owner}/{repo}/labels\", {\n\t\t\t\tcolor: outcome.color.replace(\"#\", \"\"),\n\t\t\t\tdescription: outcome.description,\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t\t},\n\t\t\t\tname: outcome.name,\n\t\t\t\towner: options.owner,\n\t\t\t\trepo: options.repository,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const existingEquivalent of existingEquivalents) {\n\t\t\t// Case: the repo already has both prefixed and non-prefixed label name types\n\t\t\t// E.g. both \"area: documentation\" and \"documentation\"\n\t\t\tif (\n\t\t\t\texistingEquivalent.name !== outcome.name &&\n\t\t\t\texistingLabels.some((existing) => existing.name === outcome.name)\n\t\t\t) {\n\t\t\t\tawait octokit.request(\"DELETE /repos/{owner}/{repo}/labels/{name}\", {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t\t\t},\n\t\t\t\t\tname: existingEquivalent.name,\n\t\t\t\t\towner: options.owner,\n\t\t\t\t\trepo: options.repository,\n\t\t\t\t});\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Case: the repo has one of the two label types, with >=1 different property\n\t\t\t// E.g. \"documentation\" and the same color and description\n\t\t\t// E.g. \"area: documentation\" but with a different color\n\t\t\tif (\n\t\t\t\toutcome.color !== existingEquivalent.color ||\n\t\t\t\toutcome.description !== existingEquivalent.description ||\n\t\t\t\toutcome.name !== existingEquivalent.name\n\t\t\t) {\n\t\t\t\tawait octokit.request(\"PATCH /repos/{owner}/{repo}/labels/{name}\", {\n\t\t\t\t\tcolor: outcome.color.replace(\"#\", \"\"),\n\t\t\t\t\tdescription: outcome.description,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"X-GitHub-Api-Version\": \"2022-11-28\",\n\t\t\t\t\t},\n\t\t\t\t\tname: existingEquivalent.name,\n\t\t\t\t\tnew_name: outcome.name,\n\t\t\t\t\towner: options.owner,\n\t\t\t\t\trepo: options.repository,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"AAGA,SAAS,mCAAmC;AAC5C,SAAS,qBAAqB;AAE9B,eAAsB,2BACrB,SACA,SACC;AACD,QAAM,EAAE,MAAM,eAAe,IAAI,MAAM,QAAQ;AAAA,IAC9C;AAAA,IACA;AAAA,MACC,SAAS;AAAA,QACR,wBAAwB;AAAA,MACzB;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,IACf;AAAA,EACD;AAEA,aAAW,WAAW,eAAe;AACpC,UAAM,sBAAsB;AAAA,MAC3B;AAAA,MACA,QAAQ;AAAA,IACT;AAGA,QAAI,CAAC,oBAAoB,QAAQ;AAChC,YAAM,QAAQ,QAAQ,qCAAqC;AAAA,QAC1D,OAAO,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAAA,QACpC,aAAa,QAAQ;AAAA,QACrB,SAAS;AAAA,UACR,wBAAwB;AAAA,QACzB;AAAA,QACA,MAAM,QAAQ;AAAA,QACd,OAAO,QAAQ;AAAA,QACf,MAAM,QAAQ;AAAA,MACf,CAAC;AACD;AAAA,IACD;AAEA,eAAW,sBAAsB,qBAAqB;AAGrD,UACC,mBAAmB,SAAS,QAAQ,QACpC,eAAe,KAAK,CAAC,aAAa,SAAS,SAAS,QAAQ,IAAI,GAC/D;AACD,cAAM,QAAQ,QAAQ,8CAA8C;AAAA,UACnE,SAAS;AAAA,YACR,wBAAwB;AAAA,UACzB;AAAA,UACA,MAAM,mBAAmB;AAAA,UACzB,OAAO,QAAQ;AAAA,UACf,MAAM,QAAQ;AAAA,QACf,CAAC;AAED;AAAA,MACD;AAKA,UACC,QAAQ,UAAU,mBAAmB,SACrC,QAAQ,gBAAgB,mBAAmB,eAC3C,QAAQ,SAAS,mBAAmB,MACnC;AACD,cAAM,QAAQ,QAAQ,6CAA6C;AAAA,UAClE,OAAO,QAAQ,MAAM,QAAQ,KAAK,EAAE;AAAA,UACpC,aAAa,QAAQ;AAAA,UACrB,SAAS;AAAA,YACR,wBAAwB;AAAA,UACzB;AAAA,UACA,MAAM,mBAAmB;AAAA,UACzB,UAAU,QAAQ;AAAA,UAClB,OAAO,QAAQ;AAAA,UACf,MAAM,QAAQ;AAAA,QACf,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
|