create-typescript-app 2.6.1 → 2.7.1

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/lib/base.js CHANGED
@@ -3,6 +3,7 @@ import { inputFromFile } from "input-from-file";
3
3
  import { inputFromScript } from "input-from-script";
4
4
  import lazyValue from "lazy-value";
5
5
  import { z } from "zod";
6
+ import { readAccess } from "./options/readAccess.js";
6
7
  import { readAllContributors } from "./options/readAllContributors.js";
7
8
  import { readAuthor } from "./options/readAuthor.js";
8
9
  import { readDescription } from "./options/readDescription.js";
@@ -100,6 +101,9 @@ const base = createBase({
100
101
  version: z.string().optional().describe("package version to publish as and store in `package.json`")
101
102
  },
102
103
  prepare({ options, take }) {
104
+ const getAccess = lazyValue(
105
+ async () => await readAccess(getPackageDataFull)
106
+ );
103
107
  const getAllContributors = lazyValue(
104
108
  async () => await readAllContributors(take)
105
109
  );
@@ -133,7 +137,7 @@ const base = createBase({
133
137
  );
134
138
  const getExplainer = lazyValue(async () => await readExplainer(getReadme));
135
139
  const getFunding = lazyValue(async () => await readFunding(take));
136
- const getGitDefaults = lazyValue(async () => await readGitDefaults());
140
+ const getGitDefaults = lazyValue(async () => await readGitDefaults(take));
137
141
  const getGuide = lazyValue(async () => await readGuide(take));
138
142
  const getLogo = lazyValue(async () => await readLogo(getReadme));
139
143
  const getPackageData = lazyValue(
@@ -182,7 +186,7 @@ const base = createBase({
182
186
  async () => (await getPackageDataFull()).version
183
187
  );
184
188
  return {
185
- access: "public",
189
+ access: getAccess,
186
190
  author: getAuthor,
187
191
  bin: getBin,
188
192
  contributors: getAllContributors,
@@ -1,6 +1,11 @@
1
1
  import * as bingo_stratum from 'bingo-stratum';
2
2
 
3
3
  declare const blockESLint: bingo_stratum.BlockWithAddons<{
4
+ imports: {
5
+ source: string;
6
+ specifier: string;
7
+ types?: boolean | undefined;
8
+ }[];
4
9
  extensions: (string | {
5
10
  files?: string[] | undefined;
6
11
  rules?: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]> | {
@@ -15,11 +20,6 @@ declare const blockESLint: bingo_stratum.BlockWithAddons<{
15
20
  })[];
16
21
  ignores: string[];
17
22
  explanations: string[];
18
- imports: {
19
- source: string;
20
- specifier: string;
21
- types?: boolean | undefined;
22
- }[];
23
23
  rules?: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]> | {
24
24
  entries: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]>;
25
25
  comment?: string | undefined;
@@ -1,8 +1,8 @@
1
1
  import { parse as parsePackageName } from "parse-package-name";
2
+ import sortKeys from "sort-keys";
2
3
  import { z } from "zod";
3
4
  import { base } from "../base.js";
4
5
  import { getPackageDependencies } from "../data/packageData.js";
5
- import { sortObject } from "../utils/sortObject.js";
6
6
  import { blockCSpell } from "./blockCSpell.js";
7
7
  import { blockDevelopmentDocs } from "./blockDevelopmentDocs.js";
8
8
  import { blockGitHubActionsCI } from "./blockGitHubActionsCI.js";
@@ -218,7 +218,7 @@ function printExtension(extension) {
218
218
  extension.languageOptions && `languageOptions: ${JSON.stringify(extension.languageOptions).replace('"import.meta.dirname"', "import.meta.dirname")},`,
219
219
  extension.linterOptions && `linterOptions: ${JSON.stringify(extension.linterOptions)}`,
220
220
  extension.rules && `rules: ${printExtensionRules(extension.rules)},`,
221
- extension.settings && `settings: ${JSON.stringify(sortObject(extension.settings))},`,
221
+ extension.settings && `settings: ${JSON.stringify(sortKeys(extension.settings))},`,
222
222
  "}"
223
223
  ].filter(Boolean).join(" ");
224
224
  }
@@ -14,8 +14,8 @@ const blockExampleFiles = base.createBlock({
14
14
  }
15
15
  };
16
16
  },
17
- // TODO: Make produce() optional
18
- // This needs createBlock to be generic to know if block.produce({}) is ok
17
+ // TODO: Make produce() optional, so this empty-ish produce() can be removed
18
+ // https://github.com/JoshuaKGoldberg/bingo/issues/295
19
19
  produce() {
20
20
  return {};
21
21
  }
@@ -2,12 +2,80 @@ import * as bingo_stratum from 'bingo-stratum';
2
2
 
3
3
  declare const blockPackageJson: bingo_stratum.BlockWithAddons<{
4
4
  properties: {
5
+ type?: "module" | "commonjs" | undefined;
6
+ author?: string | {
7
+ name: string;
8
+ url?: string | undefined;
9
+ email?: string | undefined;
10
+ } | undefined;
11
+ bin?: string | Record<string, string> | undefined;
12
+ name?: string | undefined;
13
+ contributors?: (string | {
14
+ name: string;
15
+ url?: string | undefined;
16
+ email?: string | undefined;
17
+ })[] | undefined;
18
+ description?: string | undefined;
19
+ funding?: string | {
20
+ url: string;
21
+ type?: string | undefined;
22
+ } | (string | {
23
+ url: string;
24
+ type?: string | undefined;
25
+ })[] | undefined;
26
+ keywords?: string[] | undefined;
5
27
  dependencies?: Record<string, string> | undefined;
6
28
  devDependencies?: Record<string, string> | undefined;
7
29
  scripts?: Record<string, string> | undefined;
30
+ repository?: string | {
31
+ type: string;
32
+ url: string;
33
+ directory?: string | undefined;
34
+ } | undefined;
35
+ version?: string | undefined;
36
+ module?: string | undefined;
37
+ engines?: Record<string, string> | undefined;
38
+ packageManager?: string | undefined;
8
39
  files?: string[] | undefined;
40
+ license?: string | undefined;
41
+ config?: Record<string, unknown> | undefined;
42
+ private?: boolean | undefined;
43
+ homepage?: string | undefined;
44
+ maintainers?: (string | {
45
+ name: string;
46
+ url?: string | undefined;
47
+ email?: string | undefined;
48
+ })[] | undefined;
49
+ publishConfig?: Record<string, unknown> | undefined;
50
+ main?: string | undefined;
51
+ types?: string | undefined;
52
+ bugs?: string | {
53
+ url?: string | undefined;
54
+ email?: string | undefined;
55
+ } | undefined;
56
+ browser?: string | Record<string, string | boolean> | undefined;
57
+ man?: string | string[] | undefined;
58
+ directories?: Record<string, string> | undefined;
9
59
  peerDependencies?: Record<string, string> | undefined;
10
- } & Record<string, unknown>;
60
+ peerDependenciesMeta?: Record<string, {
61
+ optional: boolean;
62
+ }> | undefined;
63
+ bundleDependencies?: boolean | string[] | undefined;
64
+ bundledDependencies?: boolean | string[] | undefined;
65
+ optionalDependencies?: Record<string, string> | undefined;
66
+ overrides?: Record<string, unknown> | undefined;
67
+ os?: string[] | undefined;
68
+ cpu?: string[] | undefined;
69
+ workspaces?: string[] | undefined;
70
+ deprecated?: string | undefined;
71
+ typings?: string | undefined;
72
+ typesVersions?: Record<string, Record<string, string[]>> | undefined;
73
+ sideEffects?: boolean | string[] | undefined;
74
+ imports?: Record<string, unknown> | undefined;
75
+ exports?: string | string[] | Record<string, unknown> | null | undefined;
76
+ } & {
77
+ [k: string]: unknown;
78
+ };
11
79
  cleanupCommands: string[];
12
80
  }, {
13
81
  access: "public" | "restricted";
@@ -2,6 +2,7 @@ import * as htmlToText from "html-to-text";
2
2
  import removeUndefinedObjects from "remove-undefined-objects";
3
3
  import sortPackageJson from "sort-package-json";
4
4
  import { z } from "zod";
5
+ import { PackageJson } from "zod-package-json";
5
6
  import { base } from "../base.js";
6
7
  import { CommandPhase } from "./phases.js";
7
8
  const blockPackageJson = base.createBlock({
@@ -10,17 +11,7 @@ const blockPackageJson = base.createBlock({
10
11
  },
11
12
  addons: {
12
13
  cleanupCommands: z.array(z.string()).default([]),
13
- // TODO: Find a zod package for this?
14
- properties: z.intersection(
15
- z.object({
16
- dependencies: z.record(z.string(), z.string()).optional(),
17
- devDependencies: z.record(z.string(), z.string()).optional(),
18
- files: z.array(z.string()).optional(),
19
- peerDependencies: z.record(z.string(), z.string()).optional(),
20
- scripts: z.record(z.string(), z.string()).optional()
21
- }),
22
- z.record(z.string(), z.unknown())
23
- ).default({})
14
+ properties: PackageJson.partial().default({})
24
15
  },
25
16
  produce({ addons, offline, options }) {
26
17
  const dependencies = {
@@ -1,14 +1,14 @@
1
1
  import * as bingo_stratum from 'bingo-stratum';
2
2
 
3
3
  declare const blockPrettier: bingo_stratum.BlockWithAddons<{
4
- ignores: string[];
5
- plugins: string[];
6
4
  overrides: {
7
5
  options: {
8
6
  parser: string;
9
7
  };
10
8
  files: string;
11
9
  }[];
10
+ ignores: string[];
11
+ plugins: string[];
12
12
  }, {
13
13
  access: "public" | "restricted";
14
14
  description: string;
@@ -43,8 +43,8 @@ const blockRepositoryBranchRuleset = base.createBlock({
43
43
  ]
44
44
  };
45
45
  },
46
- // TODO: Make produce() optional
47
- // This needs createBlock to be generic to know if block.produce({}) is ok
46
+ // TODO: Make produce() optional, so this empty-ish produce() can be removed
47
+ // https://github.com/JoshuaKGoldberg/bingo/issues/295
48
48
  produce() {
49
49
  return {};
50
50
  }
@@ -1,6 +1,6 @@
1
+ import sortKeys from "sort-keys";
1
2
  import { z } from "zod";
2
3
  import { base } from "../base.js";
3
- import { sortObject } from "../utils/sortObject.js";
4
4
  import { blockDevelopmentDocs } from "./blockDevelopmentDocs.js";
5
5
  const blockVSCode = base.createBlock({
6
6
  about: {
@@ -70,7 +70,7 @@ To launch it, open a test file, then run _Debug Current Test File_ from the VS C
70
70
  version: "0.2.0"
71
71
  }),
72
72
  "settings.json": JSON.stringify(
73
- sortObject({
73
+ sortKeys({
74
74
  "editor.formatOnSave": true,
75
75
  "editor.rulers": [80],
76
76
  ...settings
@@ -443,6 +443,11 @@ declare const blocks: {
443
443
  version?: string | undefined;
444
444
  }>;
445
445
  blockESLint: bingo_stratum.BlockWithAddons<{
446
+ imports: {
447
+ source: string;
448
+ specifier: string;
449
+ types?: boolean | undefined;
450
+ }[];
446
451
  extensions: (string | {
447
452
  files?: string[] | undefined;
448
453
  rules?: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]> | {
@@ -457,11 +462,6 @@ declare const blocks: {
457
462
  })[];
458
463
  ignores: string[];
459
464
  explanations: string[];
460
- imports: {
461
- source: string;
462
- specifier: string;
463
- types?: boolean | undefined;
464
- }[];
465
465
  rules?: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]> | {
466
466
  entries: Record<string, "off" | "error" | "warn" | ["error" | "warn", unknown] | ["error" | "warn", unknown, unknown]>;
467
467
  comment?: string | undefined;
@@ -1569,12 +1569,80 @@ declare const blocks: {
1569
1569
  }>;
1570
1570
  blockPackageJson: bingo_stratum.BlockWithAddons<{
1571
1571
  properties: {
1572
+ type?: "module" | "commonjs" | undefined;
1573
+ author?: string | {
1574
+ name: string;
1575
+ url?: string | undefined;
1576
+ email?: string | undefined;
1577
+ } | undefined;
1578
+ bin?: string | Record<string, string> | undefined;
1579
+ name?: string | undefined;
1580
+ contributors?: (string | {
1581
+ name: string;
1582
+ url?: string | undefined;
1583
+ email?: string | undefined;
1584
+ })[] | undefined;
1585
+ description?: string | undefined;
1586
+ funding?: string | {
1587
+ url: string;
1588
+ type?: string | undefined;
1589
+ } | (string | {
1590
+ url: string;
1591
+ type?: string | undefined;
1592
+ })[] | undefined;
1593
+ keywords?: string[] | undefined;
1572
1594
  dependencies?: Record<string, string> | undefined;
1573
1595
  devDependencies?: Record<string, string> | undefined;
1574
1596
  scripts?: Record<string, string> | undefined;
1597
+ repository?: string | {
1598
+ type: string;
1599
+ url: string;
1600
+ directory?: string | undefined;
1601
+ } | undefined;
1602
+ version?: string | undefined;
1603
+ module?: string | undefined;
1604
+ engines?: Record<string, string> | undefined;
1605
+ packageManager?: string | undefined;
1575
1606
  files?: string[] | undefined;
1607
+ license?: string | undefined;
1608
+ config?: Record<string, unknown> | undefined;
1609
+ private?: boolean | undefined;
1610
+ homepage?: string | undefined;
1611
+ maintainers?: (string | {
1612
+ name: string;
1613
+ url?: string | undefined;
1614
+ email?: string | undefined;
1615
+ })[] | undefined;
1616
+ publishConfig?: Record<string, unknown> | undefined;
1617
+ main?: string | undefined;
1618
+ types?: string | undefined;
1619
+ bugs?: string | {
1620
+ url?: string | undefined;
1621
+ email?: string | undefined;
1622
+ } | undefined;
1623
+ browser?: string | Record<string, string | boolean> | undefined;
1624
+ man?: string | string[] | undefined;
1625
+ directories?: Record<string, string> | undefined;
1576
1626
  peerDependencies?: Record<string, string> | undefined;
1577
- } & Record<string, unknown>;
1627
+ peerDependenciesMeta?: Record<string, {
1628
+ optional: boolean;
1629
+ }> | undefined;
1630
+ bundleDependencies?: boolean | string[] | undefined;
1631
+ bundledDependencies?: boolean | string[] | undefined;
1632
+ optionalDependencies?: Record<string, string> | undefined;
1633
+ overrides?: Record<string, unknown> | undefined;
1634
+ os?: string[] | undefined;
1635
+ cpu?: string[] | undefined;
1636
+ workspaces?: string[] | undefined;
1637
+ deprecated?: string | undefined;
1638
+ typings?: string | undefined;
1639
+ typesVersions?: Record<string, Record<string, string[]>> | undefined;
1640
+ sideEffects?: boolean | string[] | undefined;
1641
+ imports?: Record<string, unknown> | undefined;
1642
+ exports?: string | string[] | Record<string, unknown> | null | undefined;
1643
+ } & {
1644
+ [k: string]: unknown;
1645
+ };
1578
1646
  cleanupCommands: string[];
1579
1647
  }, {
1580
1648
  access: "public" | "restricted";
@@ -1739,14 +1807,14 @@ declare const blocks: {
1739
1807
  version?: string | undefined;
1740
1808
  }>;
1741
1809
  blockPrettier: bingo_stratum.BlockWithAddons<{
1742
- ignores: string[];
1743
- plugins: string[];
1744
1810
  overrides: {
1745
1811
  options: {
1746
1812
  parser: string;
1747
1813
  };
1748
1814
  files: string;
1749
1815
  }[];
1816
+ ignores: string[];
1817
+ plugins: string[];
1750
1818
  }, {
1751
1819
  access: "public" | "restricted";
1752
1820
  description: string;
@@ -1,5 +1,5 @@
1
1
  var name = "create-typescript-app";
2
- var version = "2.6.0";
2
+ var version = "2.7.0";
3
3
  var description = "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 🎁";
4
4
  var repository = {
5
5
  type: "git",
@@ -38,7 +38,6 @@ var dependencies = {
38
38
  "bingo-stratum": "^0.5.5",
39
39
  "cspell-populate-words": "^0.3.0",
40
40
  execa: "^9.5.2",
41
- "git-remote-origin-url": "^4.0.0",
42
41
  "git-url-parse": "^16.0.1",
43
42
  "github-default-labels": "^0.1.0",
44
43
  "html-to-text": "^9.0.5",
@@ -56,9 +55,11 @@ var dependencies = {
56
55
  "remove-dependencies": "^0.1.0",
57
56
  "remove-undefined-objects": "^6.0.0",
58
57
  "set-github-repository-labels": "^0.2.0",
58
+ "sort-keys": "^5.1.0",
59
59
  "sort-package-json": "^3.0.0",
60
60
  "title-case": "^4.3.2",
61
- zod: "^3.24.2"
61
+ zod: "^3.24.2",
62
+ "zod-package-json": "^1.1.0"
62
63
  };
63
64
  var devDependencies = {
64
65
  "@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
@@ -73,7 +74,7 @@ var devDependencies = {
73
74
  "@types/node": "22.13.9",
74
75
  "@types/parse-author": "2.0.3",
75
76
  "@vitest/coverage-v8": "3.0.7",
76
- "@vitest/eslint-plugin": "1.1.36",
77
+ "@vitest/eslint-plugin": "1.1.38",
77
78
  "all-contributors-cli": "6.26.1",
78
79
  "bingo-requests": "^0.5.4",
79
80
  "bingo-stratum-testers": "0.5.6",
@@ -6,8 +6,7 @@ const inputFromOctokit = createInput({
6
6
  options: z.record(z.string(), z.unknown()).optional()
7
7
  },
8
8
  // TODO: Strongly type this, then push it upstream to Bingo
9
- // This will require smart types around GitHub endpoints, similar to:
10
- // https://github.com/JoshuaKGoldberg/bingo/issues/65
9
+ // https://github.com/JoshuaKGoldberg/bingo/issues/296
11
10
  async produce({ args, fetchers }) {
12
11
  try {
13
12
  const response = await fetchers.octokit.request(args.endpoint, {
@@ -0,0 +1,5 @@
1
+ import { PartialPackageData } from '../types.js';
2
+
3
+ declare function readAccess(getPackageDataFull: () => Promise<PartialPackageData | undefined>): Promise<"public" | "restricted">;
4
+
5
+ export { readAccess };
@@ -0,0 +1,6 @@
1
+ async function readAccess(getPackageDataFull) {
2
+ return (await getPackageDataFull())?.publishConfig?.access ?? "public";
3
+ }
4
+ export {
5
+ readAccess
6
+ };
@@ -1,5 +1,6 @@
1
+ import { TakeInput } from 'bingo';
1
2
  import gitUrlParse from 'git-url-parse';
2
3
 
3
- declare function readGitDefaults(): Promise<gitUrlParse.GitUrl | undefined>;
4
+ declare function readGitDefaults(take: TakeInput): Promise<gitUrlParse.GitUrl | undefined>;
4
5
 
5
6
  export { readGitDefaults };
@@ -1,11 +1,10 @@
1
- import gitRemoteOriginUrl from "git-remote-origin-url";
2
1
  import gitUrlParse from "git-url-parse";
3
- async function readGitDefaults() {
4
- try {
5
- return gitUrlParse(await gitRemoteOriginUrl());
6
- } catch {
7
- return void 0;
8
- }
2
+ import { inputFromScript } from "input-from-script";
3
+ async function readGitDefaults(take) {
4
+ const url = await take(inputFromScript, {
5
+ command: "git remote get-url origin"
6
+ });
7
+ return url.stdout ? gitUrlParse(url.stdout.toString()) : void 0;
9
8
  }
10
9
  export {
11
10
  readGitDefaults
package/lib/types.d.ts CHANGED
@@ -23,6 +23,7 @@ interface PartialPackageData {
23
23
  };
24
24
  name?: string;
25
25
  packageManager?: string;
26
+ publishConfig?: PartialPublishConfig;
26
27
  repository?: string | {
27
28
  type: string;
28
29
  url: string;
@@ -30,5 +31,8 @@ interface PartialPackageData {
30
31
  scripts?: Record<string, string>;
31
32
  version?: string;
32
33
  }
34
+ interface PartialPublishConfig {
35
+ access?: "public" | "restricted";
36
+ }
33
37
 
34
38
  export type { AllContributorContributor, AllContributorsData, PartialPackageData };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-typescript-app",
3
- "version": "2.6.1",
3
+ "version": "2.7.1",
4
4
  "description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 🎁",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,7 +42,6 @@
42
42
  "bingo-stratum": "^0.5.5",
43
43
  "cspell-populate-words": "^0.3.0",
44
44
  "execa": "^9.5.2",
45
- "git-remote-origin-url": "^4.0.0",
46
45
  "git-url-parse": "^16.0.1",
47
46
  "github-default-labels": "^0.1.0",
48
47
  "html-to-text": "^9.0.5",
@@ -60,9 +59,11 @@
60
59
  "remove-dependencies": "^0.1.0",
61
60
  "remove-undefined-objects": "^6.0.0",
62
61
  "set-github-repository-labels": "^0.2.0",
62
+ "sort-keys": "^5.1.0",
63
63
  "sort-package-json": "^3.0.0",
64
64
  "title-case": "^4.3.2",
65
- "zod": "^3.24.2"
65
+ "zod": "^3.24.2",
66
+ "zod-package-json": "^1.1.0"
66
67
  },
67
68
  "devDependencies": {
68
69
  "@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
@@ -77,7 +78,7 @@
77
78
  "@types/node": "22.13.9",
78
79
  "@types/parse-author": "2.0.3",
79
80
  "@vitest/coverage-v8": "3.0.7",
80
- "@vitest/eslint-plugin": "1.1.36",
81
+ "@vitest/eslint-plugin": "1.1.38",
81
82
  "all-contributors-cli": "6.26.1",
82
83
  "bingo-requests": "^0.5.4",
83
84
  "bingo-stratum-testers": "0.5.6",
@@ -1,5 +0,0 @@
1
- declare function sortObject(value: object | Record<string, unknown>): {
2
- [k: string]: any;
3
- };
4
-
5
- export { sortObject };
@@ -1,8 +0,0 @@
1
- function sortObject(value) {
2
- return Object.fromEntries(
3
- Object.entries(value).sort(([a], [b]) => a.localeCompare(b))
4
- );
5
- }
6
- export {
7
- sortObject
8
- };