@rtorcato/repo-tooling 2.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/AGENTS.md +113 -0
  2. package/LICENSE +21 -0
  3. package/README.md +201 -0
  4. package/dist/cli/commands/doctor.js +336 -0
  5. package/dist/cli/commands/fix-targets.js +192 -0
  6. package/dist/cli/commands/fix.js +440 -0
  7. package/dist/cli/commands/setup-presets.js +281 -0
  8. package/dist/cli/commands/setup.js +501 -0
  9. package/dist/cli/generators/agent-rules.js +103 -0
  10. package/dist/cli/generators/badges.js +88 -0
  11. package/dist/cli/generators/build.js +216 -0
  12. package/dist/cli/generators/bun.js +25 -0
  13. package/dist/cli/generators/community-health.js +145 -0
  14. package/dist/cli/generators/docs-site.js +436 -0
  15. package/dist/cli/generators/git.js +164 -0
  16. package/dist/cli/generators/github-actions.js +35 -0
  17. package/dist/cli/generators/github-workflows.js +24 -0
  18. package/dist/cli/generators/gitlab-ci.js +10 -0
  19. package/dist/cli/generators/index.js +123 -0
  20. package/dist/cli/generators/linting.js +54 -0
  21. package/dist/cli/generators/misc.js +298 -0
  22. package/dist/cli/generators/nx.js +16 -0
  23. package/dist/cli/generators/package-json.js +317 -0
  24. package/dist/cli/generators/pnpm-workspace.js +126 -0
  25. package/dist/cli/generators/postcss.js +24 -0
  26. package/dist/cli/generators/readme.js +268 -0
  27. package/dist/cli/generators/security.js +156 -0
  28. package/dist/cli/generators/skills-install.js +70 -0
  29. package/dist/cli/generators/tailwind.js +34 -0
  30. package/dist/cli/generators/testing.js +88 -0
  31. package/dist/cli/generators/treeshake.js +148 -0
  32. package/dist/cli/generators/tsconfig.js +27 -0
  33. package/dist/cli/generators/turborepo.js +35 -0
  34. package/dist/cli/generators/typedoc.js +40 -0
  35. package/dist/cli/index.js +332 -0
  36. package/dist/cli/utils/copy-preset.js +98 -0
  37. package/dist/cli/utils/detect-language.js +22 -0
  38. package/dist/cli/utils/format.js +32 -0
  39. package/dist/cli/utils/install.js +28 -0
  40. package/dist/cli/utils/lockfile.js +84 -0
  41. package/dist/languages/js/checks.js +949 -0
  42. package/dist/languages/js/ci.js +251 -0
  43. package/dist/languages/js/fixers.js +735 -0
  44. package/dist/languages/registry.js +37 -0
  45. package/dist/languages/swift/checks.js +127 -0
  46. package/dist/languages/swift/ci.js +165 -0
  47. package/dist/languages/swift/fixers.js +102 -0
  48. package/dist/languages/swift/git-hooks.js +63 -0
  49. package/dist/languages/swift/gitignore.js +43 -0
  50. package/dist/languages/swift/scaffold.js +244 -0
  51. package/package.json +461 -0
  52. package/tooling/biome/README.md +90 -0
  53. package/tooling/biome/biome.json +63 -0
  54. package/tooling/bun/bunfig.toml +14 -0
  55. package/tooling/changesets/README.md +35 -0
  56. package/tooling/changesets/config.json +11 -0
  57. package/tooling/claude/repo-tooling.md +87 -0
  58. package/tooling/commitlint/commitlint.d.mts +4 -0
  59. package/tooling/commitlint/commitlint.mjs +40 -0
  60. package/tooling/cypress/cypress.config.d.mts +4 -0
  61. package/tooling/cypress/cypress.config.mjs +11 -0
  62. package/tooling/docusaurus/index.d.mts +17 -0
  63. package/tooling/docusaurus/index.mjs +38 -0
  64. package/tooling/docusaurus/sync-changelog.mjs +42 -0
  65. package/tooling/docusaurus/theme-tokens.css +79 -0
  66. package/tooling/docusaurus/theme.css +378 -0
  67. package/tooling/esbuild/index.d.mts +6 -0
  68. package/tooling/esbuild/index.mjs +102 -0
  69. package/tooling/eslint/base.d.mts +6 -0
  70. package/tooling/eslint/base.mjs +122 -0
  71. package/tooling/eslint/nextjs.d.mts +4 -0
  72. package/tooling/eslint/nextjs.mjs +22 -0
  73. package/tooling/eslint/types.d.ts +58 -0
  74. package/tooling/github-actions/workflows/cloudflare-pages.yml +42 -0
  75. package/tooling/github-actions/workflows/docker-publish.yml +44 -0
  76. package/tooling/github-actions/workflows/preview-deployments.yml +54 -0
  77. package/tooling/github-actions/workflows/vercel-deploy.yml +40 -0
  78. package/tooling/jest-presets/browser/jest-preset.d.mts +4 -0
  79. package/tooling/jest-presets/browser/jest-preset.mjs +14 -0
  80. package/tooling/jest-presets/node/jest-preset.d.mts +4 -0
  81. package/tooling/jest-presets/node/jest-preset.mjs +13 -0
  82. package/tooling/mcp/mcp.json.example +27 -0
  83. package/tooling/nx/nx.json +24 -0
  84. package/tooling/oxlint/README.md +25 -0
  85. package/tooling/oxlint/oxlintrc.json +28 -0
  86. package/tooling/playwright/playwright.config.d.mts +4 -0
  87. package/tooling/playwright/playwright.config.mjs +19 -0
  88. package/tooling/prettier/index.d.mts +4 -0
  89. package/tooling/prettier/index.mjs +36 -0
  90. package/tooling/release-please/.release-please-manifest.json +3 -0
  91. package/tooling/release-please/release-please-config.json +9 -0
  92. package/tooling/rolldown/rolldown.config.d.mts +18 -0
  93. package/tooling/rolldown/rolldown.config.mjs +59 -0
  94. package/tooling/rollup/rollup.config.d.mts +20 -0
  95. package/tooling/rollup/rollup.config.mjs +70 -0
  96. package/tooling/semantic-release/docker.d.mts +4 -0
  97. package/tooling/semantic-release/docker.mjs +59 -0
  98. package/tooling/semantic-release/github.d.mts +4 -0
  99. package/tooling/semantic-release/github.mjs +79 -0
  100. package/tooling/semantic-release/index.d.mts +4 -0
  101. package/tooling/semantic-release/index.mjs +80 -0
  102. package/tooling/swift/periphery.yml +4 -0
  103. package/tooling/swift/swiftlint.yml +23 -0
  104. package/tooling/tests/exports-resolution.d.mts +14 -0
  105. package/tooling/tests/exports-resolution.mjs +68 -0
  106. package/tooling/tests/ssr-safety.d.mts +14 -0
  107. package/tooling/tests/ssr-safety.mjs +53 -0
  108. package/tooling/tsup/index.d.mts +8 -0
  109. package/tooling/tsup/index.mjs +33 -0
  110. package/tooling/typedoc/typedoc.json +7 -0
  111. package/tooling/typescript/README.md +49 -0
  112. package/tooling/typescript/reset.d.ts +9 -0
  113. package/tooling/typescript/tsconfig.base.json +84 -0
  114. package/tooling/typescript/tsconfig.build.json +11 -0
  115. package/tooling/typescript/tsconfig.bun.json +9 -0
  116. package/tooling/typescript/tsconfig.express.json +9 -0
  117. package/tooling/typescript/tsconfig.next.json +20 -0
  118. package/tooling/typescript/tsconfig.node.json +9 -0
  119. package/tooling/typescript/tsconfig.react.json +15 -0
  120. package/tooling/typescript/tsconfig.test.json +8 -0
  121. package/tooling/typescript/v1/tsconfig.base.json +81 -0
  122. package/tooling/typescript/v1/tsconfig.express.json +9 -0
  123. package/tooling/typescript/v1/tsconfig.next.json +19 -0
  124. package/tooling/typescript/v1/tsconfig.node.json +9 -0
  125. package/tooling/typescript/v1/tsconfig.react.json +14 -0
  126. package/tooling/typescript/v1/tsconfig.test.json +8 -0
  127. package/tooling/vite/vite.config.d.mts +4 -0
  128. package/tooling/vite/vite.config.mjs +18 -0
  129. package/tooling/vitest/jsdom-shims.d.mts +1 -0
  130. package/tooling/vitest/jsdom-shims.mjs +58 -0
  131. package/tooling/vitest/vitest.config.d.mts +4 -0
  132. package/tooling/vitest/vitest.config.mjs +25 -0
  133. package/tooling/vitest/vitest.config.react.d.mts +4 -0
  134. package/tooling/vitest/vitest.config.react.mjs +27 -0
  135. package/tooling/vitest/vitest.setup.d.mts +1 -0
  136. package/tooling/vitest/vitest.setup.mjs +3 -0
package/package.json ADDED
@@ -0,0 +1,461 @@
1
+ {
2
+ "name": "@rtorcato/repo-tooling",
3
+ "version": "2.59.0",
4
+ "description": "One CLI to scaffold, audit and fix your repo's whole toolchain — linting, tests, commits, releases & CI.",
5
+ "type": "module",
6
+ "keywords": [
7
+ "tooling",
8
+ "typescript",
9
+ "eslint"
10
+ ],
11
+ "author": "Richard Torcato",
12
+ "packageManager": "pnpm@11.1.3",
13
+ "sideEffects": false,
14
+ "license": "MIT",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/rtorcato/repo-tooling.git"
18
+ },
19
+ "homepage": "https://github.com/rtorcato/repo-tooling#readme",
20
+ "bugs": {
21
+ "url": "https://github.com/rtorcato/repo-tooling/issues"
22
+ },
23
+ "scripts": {
24
+ "build": "pnpm build-cli",
25
+ "build-cli": "rimraf ./dist && tsc --project src/cli/tsconfig.json",
26
+ "prepublishOnly": "./scripts/fix-bins.sh",
27
+ "dev": "pnpm --filter @rtorcato/docs dev",
28
+ "docs:build": "pnpm --filter @rtorcato/docs build",
29
+ "==================== Common ====================": "",
30
+ "lint": "pnpm exec biome lint --config-path=biome.json src scripts",
31
+ "format": "pnpm exec biome format --config-path=biome.json src scripts",
32
+ "check:fix": "pnpm exec biome check --config-path=biome.json --fix src scripts",
33
+ "check": "pnpm exec biome check --config-path=biome.json src scripts",
34
+ "prepare": "is-ci || husky",
35
+ "typecheck": "tsc --noEmit --project src/cli/tsconfig.json",
36
+ "test": "vitest",
37
+ "test:watch": "vitest --watch",
38
+ "test:integration": "pnpm build-cli && node scripts/integration/preset-lifecycle.mjs library",
39
+ "coverage": "vitest run --coverage",
40
+ "verify": "pnpm run check && pnpm run typecheck && pnpm test --run && pnpm run build-cli",
41
+ "dogfood": "node scripts/dogfood.mjs",
42
+ "knip": "knip",
43
+ "commit": "cz",
44
+ "================================================": ""
45
+ },
46
+ "files": [
47
+ "dist/cli/**/*.js",
48
+ "dist/languages/**/*.js",
49
+ "tooling/commitlint/commitlint.mjs",
50
+ "tooling/commitlint/commitlint.d.mts",
51
+ "tooling/esbuild/index.mjs",
52
+ "tooling/esbuild/index.d.mts",
53
+ "tooling/eslint/*.mjs",
54
+ "tooling/eslint/*.d.mts",
55
+ "tooling/eslint/types.d.ts",
56
+ "tooling/jest-presets/**",
57
+ "tooling/playwright/playwright.config.mjs",
58
+ "tooling/playwright/playwright.config.d.mts",
59
+ "tooling/cypress/cypress.config.mjs",
60
+ "tooling/cypress/cypress.config.d.mts",
61
+ "tooling/prettier/index.mjs",
62
+ "tooling/prettier/index.d.mts",
63
+ "tooling/typescript/*.json",
64
+ "tooling/typescript/v1/*.json",
65
+ "tooling/typescript/reset.d.ts",
66
+ "tooling/vite/vite.config.mjs",
67
+ "tooling/vite/vite.config.d.mts",
68
+ "tooling/vitest/vitest.config.mjs",
69
+ "tooling/vitest/vitest.config.d.mts",
70
+ "tooling/vitest/vitest.config.react.mjs",
71
+ "tooling/vitest/vitest.config.react.d.mts",
72
+ "tooling/vitest/vitest.setup.mjs",
73
+ "tooling/vitest/vitest.setup.d.mts",
74
+ "tooling/vitest/jsdom-shims.mjs",
75
+ "tooling/vitest/jsdom-shims.d.mts",
76
+ "tooling/tests/exports-resolution.mjs",
77
+ "tooling/tests/exports-resolution.d.mts",
78
+ "tooling/tests/ssr-safety.mjs",
79
+ "tooling/tests/ssr-safety.d.mts",
80
+ "tooling/tsup/index.mjs",
81
+ "tooling/tsup/index.d.mts",
82
+ "tooling/rollup/rollup.config.mjs",
83
+ "tooling/rollup/rollup.config.d.mts",
84
+ "tooling/rolldown/rolldown.config.mjs",
85
+ "tooling/rolldown/rolldown.config.d.mts",
86
+ "tooling/docusaurus/index.mjs",
87
+ "tooling/docusaurus/index.d.mts",
88
+ "tooling/docusaurus/sync-changelog.mjs",
89
+ "tooling/docusaurus/theme-tokens.css",
90
+ "tooling/docusaurus/theme.css",
91
+ "tooling/biome/biome.json",
92
+ "tooling/bun/bunfig.toml",
93
+ "tooling/nx/nx.json",
94
+ "tooling/changesets/config.json",
95
+ "tooling/release-please/release-please-config.json",
96
+ "tooling/release-please/.release-please-manifest.json",
97
+ "tooling/oxlint/oxlintrc.json",
98
+ "tooling/typedoc/typedoc.json",
99
+ "tooling/semantic-release/*.mjs",
100
+ "tooling/semantic-release/*.d.mts",
101
+ "tooling/claude/*.md",
102
+ "tooling/mcp/mcp.json.example",
103
+ "tooling/swift/*.yml",
104
+ "tooling/github-actions/workflows/*.yml",
105
+ "README.md",
106
+ "AGENTS.md"
107
+ ],
108
+ "exports": {
109
+ "./commitlint/config": {
110
+ "types": "./tooling/commitlint/commitlint.d.mts",
111
+ "import": "./tooling/commitlint/commitlint.mjs"
112
+ },
113
+ "./esbuild": {
114
+ "types": "./tooling/esbuild/index.d.mts",
115
+ "import": "./tooling/esbuild/index.mjs"
116
+ },
117
+ "./eslint/base": {
118
+ "types": "./tooling/eslint/base.d.mts",
119
+ "import": "./tooling/eslint/base.mjs"
120
+ },
121
+ "./eslint/nextjs": {
122
+ "types": "./tooling/eslint/nextjs.d.mts",
123
+ "import": "./tooling/eslint/nextjs.mjs"
124
+ },
125
+ "./jest-presets/browser/jest-preset": {
126
+ "types": "./tooling/jest-presets/browser/jest-preset.d.mts",
127
+ "import": "./tooling/jest-presets/browser/jest-preset.mjs"
128
+ },
129
+ "./jest-presets/node/jest-preset": {
130
+ "types": "./tooling/jest-presets/node/jest-preset.d.mts",
131
+ "import": "./tooling/jest-presets/node/jest-preset.mjs"
132
+ },
133
+ "./playwright": {
134
+ "types": "./tooling/playwright/playwright.config.d.mts",
135
+ "import": "./tooling/playwright/playwright.config.mjs"
136
+ },
137
+ "./cypress": {
138
+ "types": "./tooling/cypress/cypress.config.d.mts",
139
+ "import": "./tooling/cypress/cypress.config.mjs"
140
+ },
141
+ "./prettier": {
142
+ "types": "./tooling/prettier/index.d.mts",
143
+ "import": "./tooling/prettier/index.mjs"
144
+ },
145
+ "./typescript/base": "./tooling/typescript/tsconfig.base.json",
146
+ "./typescript/next": "./tooling/typescript/tsconfig.next.json",
147
+ "./typescript/express": "./tooling/typescript/tsconfig.express.json",
148
+ "./typescript/node": "./tooling/typescript/tsconfig.node.json",
149
+ "./typescript/bun": "./tooling/typescript/tsconfig.bun.json",
150
+ "./typescript/react": "./tooling/typescript/tsconfig.react.json",
151
+ "./typescript/test": "./tooling/typescript/tsconfig.test.json",
152
+ "./typescript/reset": "./tooling/typescript/reset.d.ts",
153
+ "./typescript/base@1": "./tooling/typescript/v1/tsconfig.base.json",
154
+ "./typescript/next@1": "./tooling/typescript/v1/tsconfig.next.json",
155
+ "./typescript/express@1": "./tooling/typescript/v1/tsconfig.express.json",
156
+ "./typescript/node@1": "./tooling/typescript/v1/tsconfig.node.json",
157
+ "./typescript/react@1": "./tooling/typescript/v1/tsconfig.react.json",
158
+ "./typescript/test@1": "./tooling/typescript/v1/tsconfig.test.json",
159
+ "./vite": {
160
+ "types": "./tooling/vite/vite.config.d.mts",
161
+ "import": "./tooling/vite/vite.config.mjs"
162
+ },
163
+ "./vitest/config": {
164
+ "types": "./tooling/vitest/vitest.config.d.mts",
165
+ "import": "./tooling/vitest/vitest.config.mjs"
166
+ },
167
+ "./vitest/react": {
168
+ "types": "./tooling/vitest/vitest.config.react.d.mts",
169
+ "import": "./tooling/vitest/vitest.config.react.mjs"
170
+ },
171
+ "./vitest/setup": {
172
+ "types": "./tooling/vitest/vitest.setup.d.mts",
173
+ "import": "./tooling/vitest/vitest.setup.mjs"
174
+ },
175
+ "./vitest/jsdom-shims": {
176
+ "types": "./tooling/vitest/jsdom-shims.d.mts",
177
+ "import": "./tooling/vitest/jsdom-shims.mjs"
178
+ },
179
+ "./tsup": {
180
+ "types": "./tooling/tsup/index.d.mts",
181
+ "import": "./tooling/tsup/index.mjs"
182
+ },
183
+ "./rollup": {
184
+ "types": "./tooling/rollup/rollup.config.d.mts",
185
+ "import": "./tooling/rollup/rollup.config.mjs"
186
+ },
187
+ "./rolldown": {
188
+ "types": "./tooling/rolldown/rolldown.config.d.mts",
189
+ "import": "./tooling/rolldown/rolldown.config.mjs"
190
+ },
191
+ "./docusaurus": {
192
+ "types": "./tooling/docusaurus/index.d.mts",
193
+ "import": "./tooling/docusaurus/index.mjs"
194
+ },
195
+ "./biome": "./tooling/biome/biome.json",
196
+ "./nx": "./tooling/nx/nx.json",
197
+ "./changesets": "./tooling/changesets/config.json",
198
+ "./release-please": "./tooling/release-please/release-please-config.json",
199
+ "./oxlint": "./tooling/oxlint/oxlintrc.json",
200
+ "./typedoc": "./tooling/typedoc/typedoc.json",
201
+ "./semantic-release": {
202
+ "types": "./tooling/semantic-release/index.d.mts",
203
+ "import": "./tooling/semantic-release/index.mjs"
204
+ },
205
+ "./semantic-release/github": {
206
+ "types": "./tooling/semantic-release/github.d.mts",
207
+ "import": "./tooling/semantic-release/github.mjs"
208
+ },
209
+ "./semantic-release/docker": {
210
+ "types": "./tooling/semantic-release/docker.d.mts",
211
+ "import": "./tooling/semantic-release/docker.mjs"
212
+ },
213
+ "./tests/exports-resolution": {
214
+ "types": "./tooling/tests/exports-resolution.d.mts",
215
+ "import": "./tooling/tests/exports-resolution.mjs"
216
+ },
217
+ "./tests/ssr-safety": {
218
+ "types": "./tooling/tests/ssr-safety.d.mts",
219
+ "import": "./tooling/tests/ssr-safety.mjs"
220
+ },
221
+ "./package.json": "./package.json"
222
+ },
223
+ "dependencies": {
224
+ "chalk": "^5.6.2",
225
+ "commander": "^15.0.0",
226
+ "diff": "^9.0.0",
227
+ "fs-extra": "^11.4.0",
228
+ "inquirer": "^14.0.2"
229
+ },
230
+ "devDependencies": {
231
+ "@biomejs/biome": "^2.5.5",
232
+ "@types/diff": "^8.0.0",
233
+ "@commitlint/cli": "^21.2.1",
234
+ "@commitlint/config-conventional": "^21.2.0",
235
+ "@commitlint/types": "^21.2.0",
236
+ "@eslint/js": "^10.0.1",
237
+ "@ianvs/prettier-plugin-sort-imports": "^4.4.2",
238
+ "@next/eslint-plugin-next": "^16.2.11",
239
+ "@playwright/test": "^1.62.0",
240
+ "@semantic-release/changelog": "^7.0.0",
241
+ "@rollup/plugin-typescript": "^12.0.0",
242
+ "@semantic-release/commit-analyzer": "^13.0.1",
243
+ "@semantic-release/exec": "^7.1.0",
244
+ "@semantic-release/git": "^11.0.1",
245
+ "@semantic-release/github": "^12.0.9",
246
+ "@semantic-release/npm": "^13.1.5",
247
+ "@semantic-release/release-notes-generator": "^14.1.1",
248
+ "@total-typescript/ts-reset": "0.6.1",
249
+ "@types/fs-extra": "^11.0.4",
250
+ "@types/node": "^26.1.1",
251
+ "@typescript-eslint/eslint-plugin": "^8.65.0",
252
+ "@typescript-eslint/parser": "^8.65.0",
253
+ "@vitejs/plugin-react": "^6.0.4",
254
+ "@vitest/coverage-v8": "^4.1.10",
255
+ "commitizen": "^4.3.1",
256
+ "conventional-changelog-conventionalcommits": "^10.2.1",
257
+ "cz-conventional-changelog": "^3.3.0",
258
+ "esbuild": "^0.28.0",
259
+ "esbuild-node-externals": "^1.23.1",
260
+ "eslint": "10.8.0",
261
+ "eslint-plugin-import": "^2.32.0",
262
+ "eslint-plugin-jest": "29.16.0",
263
+ "husky": "^9.1.7",
264
+ "is-ci": "^4.1.0",
265
+ "jest": "^30.4.2",
266
+ "jsdom": "^29.1.1",
267
+ "knip": "^6.29.0",
268
+ "prettier": "^3.9.6",
269
+ "rimraf": "6.1.3",
270
+ "rollup": "^4.62.0",
271
+ "semantic-release": "^25.0.8",
272
+ "ts-jest": "^29.4.12",
273
+ "tslib": "^2.8.0",
274
+ "tsup": "8.5.1",
275
+ "typescript": "^7.0.2",
276
+ "typescript-eslint": "^8.65.0",
277
+ "vitest": "^4.1.10"
278
+ },
279
+ "peerDependencies": {
280
+ "@biomejs/biome": "^2.0.0",
281
+ "@commitlint/cli": "^20.0.0 || ^21.0.0",
282
+ "@commitlint/config-conventional": "^21.2.0",
283
+ "@commitlint/types": "^21.2.0",
284
+ "@eslint/js": "^9.0.0",
285
+ "@ianvs/prettier-plugin-sort-imports": "^4.0.0",
286
+ "@next/eslint-plugin-next": "^16.2.11",
287
+ "@rollup/plugin-typescript": "^12.0.0",
288
+ "@semantic-release/changelog": "^6.0.0",
289
+ "@semantic-release/commit-analyzer": "^13.0.0",
290
+ "@semantic-release/exec": "^7.0.0",
291
+ "@semantic-release/git": "^10.0.0",
292
+ "@semantic-release/github": "^12.0.9",
293
+ "@semantic-release/npm": "^13.0.0",
294
+ "@semantic-release/release-notes-generator": "^14.0.0",
295
+ "@size-limit/preset-small-lib": "^12.0.0",
296
+ "@total-typescript/ts-reset": "^0.6.0",
297
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
298
+ "@typescript-eslint/parser": "^8.0.0",
299
+ "conventional-changelog-conventionalcommits": "^9.0.0",
300
+ "esbuild": "^0.25.0 || ^0.27.0 || ^0.28.0",
301
+ "esbuild-node-externals": "^1.0.0",
302
+ "eslint": ">=9.0.0",
303
+ "eslint-plugin-import": "^2.0.0",
304
+ "eslint-plugin-jest": "^29.0.0",
305
+ "jest": "^29.0.0",
306
+ "prettier": "^3.0.0",
307
+ "rollup": "^4.0.0",
308
+ "semantic-release": "^25.0.0",
309
+ "size-limit": "^12.0.0",
310
+ "ts-jest": "^29.0.0",
311
+ "tslib": "^2.0.0",
312
+ "tsup": "^8.0.0",
313
+ "typescript": ">=5.0.0",
314
+ "typescript-eslint": "^8.0.0",
315
+ "vitest": ">=3.0.0"
316
+ },
317
+ "peerDependenciesMeta": {
318
+ "@biomejs/biome": {
319
+ "optional": true
320
+ },
321
+ "@commitlint/cli": {
322
+ "optional": true
323
+ },
324
+ "@commitlint/config-conventional": {
325
+ "optional": true
326
+ },
327
+ "@commitlint/types": {
328
+ "optional": true
329
+ },
330
+ "@eslint/js": {
331
+ "optional": true
332
+ },
333
+ "@ianvs/prettier-plugin-sort-imports": {
334
+ "optional": true
335
+ },
336
+ "@next/eslint-plugin-next": {
337
+ "optional": true
338
+ },
339
+ "@semantic-release/changelog": {
340
+ "optional": true
341
+ },
342
+ "@semantic-release/commit-analyzer": {
343
+ "optional": true
344
+ },
345
+ "@semantic-release/exec": {
346
+ "optional": true
347
+ },
348
+ "@semantic-release/git": {
349
+ "optional": true
350
+ },
351
+ "@semantic-release/github": {
352
+ "optional": true
353
+ },
354
+ "@semantic-release/npm": {
355
+ "optional": true
356
+ },
357
+ "@semantic-release/release-notes-generator": {
358
+ "optional": true
359
+ },
360
+ "@total-typescript/ts-reset": {
361
+ "optional": true
362
+ },
363
+ "@typescript-eslint/eslint-plugin": {
364
+ "optional": true
365
+ },
366
+ "@typescript-eslint/parser": {
367
+ "optional": true
368
+ },
369
+ "conventional-changelog-conventionalcommits": {
370
+ "optional": true
371
+ },
372
+ "esbuild": {
373
+ "optional": true
374
+ },
375
+ "esbuild-node-externals": {
376
+ "optional": true
377
+ },
378
+ "eslint": {
379
+ "optional": true
380
+ },
381
+ "eslint-plugin-import": {
382
+ "optional": true
383
+ },
384
+ "eslint-plugin-jest": {
385
+ "optional": true
386
+ },
387
+ "jest": {
388
+ "optional": true
389
+ },
390
+ "prettier": {
391
+ "optional": true
392
+ },
393
+ "semantic-release": {
394
+ "optional": true
395
+ },
396
+ "size-limit": {
397
+ "optional": true
398
+ },
399
+ "@size-limit/preset-small-lib": {
400
+ "optional": true
401
+ },
402
+ "ts-jest": {
403
+ "optional": true
404
+ },
405
+ "@rollup/plugin-typescript": {
406
+ "optional": true
407
+ },
408
+ "rollup": {
409
+ "optional": true
410
+ },
411
+ "tslib": {
412
+ "optional": true
413
+ },
414
+ "tsup": {
415
+ "optional": true
416
+ },
417
+ "typescript": {
418
+ "optional": true
419
+ },
420
+ "typescript-eslint": {
421
+ "optional": true
422
+ },
423
+ "vitest": {
424
+ "optional": true
425
+ }
426
+ },
427
+ "knip": {
428
+ "entry": [
429
+ "src/cli/index.ts",
430
+ "src/cli/commands/doctor.ts",
431
+ "tooling/**/*.{mjs,ts}"
432
+ ],
433
+ "project": [
434
+ "src/**/*.ts",
435
+ "tooling/**/*.{mjs,ts}"
436
+ ],
437
+ "ignoreDependencies": [
438
+ "ts-jest",
439
+ "@semantic-release/commit-analyzer",
440
+ "@semantic-release/exec",
441
+ "@semantic-release/github",
442
+ "@semantic-release/npm",
443
+ "@semantic-release/release-notes-generator",
444
+ "conventional-changelog-conventionalcommits"
445
+ ]
446
+ },
447
+ "bin": {
448
+ "repo-tooling": "./dist/cli/index.js"
449
+ },
450
+ "config": {
451
+ "commitizen": {
452
+ "path": "cz-conventional-changelog"
453
+ }
454
+ },
455
+ "publishConfig": {
456
+ "access": "public"
457
+ },
458
+ "engines": {
459
+ "node": ">=22"
460
+ }
461
+ }
@@ -0,0 +1,90 @@
1
+ # Biome Configuration
2
+
3
+ This package provides a standardized Biome configuration for consistent code formatting and linting across projects.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -D @rtorcato/repo-tooling @biomejs/biome
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Option 1: CLI Copy Command (Recommended)
14
+
15
+ ```bash
16
+ npx @rtorcato/repo-tooling copy biome
17
+ ```
18
+
19
+ This will copy the base `biome.json` configuration to your project root.
20
+
21
+ ### Option 2: Manual Copy
22
+
23
+ ```bash
24
+ cp node_modules/@rtorcato/repo-tooling/tooling/biome/biome.json ./biome.json
25
+ ```
26
+
27
+ ### Option 3: Reference in package.json
28
+
29
+ ```json
30
+ {
31
+ "scripts": {
32
+ "lint": "biome lint .",
33
+ "format": "biome format .",
34
+ "check": "biome check .",
35
+ "check:fix": "biome check --fix ."
36
+ }
37
+ }
38
+ ```
39
+
40
+ ## Configuration Features
41
+
42
+ - **Formatter**: Tab indentation, 100 character line width, single quotes
43
+ - **Linter**: Recommended rules with sensible overrides
44
+ - **JavaScript**: ES5 trailing commas, semicolons as needed
45
+ - **Import organization**: Disabled to prevent conflicts
46
+ - **File patterns**: Excludes common build/config directories
47
+
48
+ ## Customization
49
+
50
+ After copying the configuration, you can customize it for your project:
51
+
52
+ ```json
53
+ {
54
+ // Add project-specific rules
55
+ "linter": {
56
+ "rules": {
57
+ "recommended": true,
58
+ "suspicious": {
59
+ "noExplicitAny": "error"
60
+ }
61
+ }
62
+ },
63
+ // Add project-specific file patterns
64
+ "files": {
65
+ "includes": [
66
+ "src/**/*",
67
+ "!src/generated/**"
68
+ ]
69
+ }
70
+ }
71
+ ```
72
+
73
+ ## VS Code Integration
74
+
75
+ Add to your `.vscode/settings.json`:
76
+
77
+ ```json
78
+ {
79
+ "editor.defaultFormatter": "biomejs.biome",
80
+ "editor.formatOnSave": true,
81
+ "editor.codeActionsOnSave": {
82
+ "quickfix.biome": "explicit",
83
+ "source.organizeImports.biome": "explicit"
84
+ }
85
+ }
86
+ ```
87
+
88
+ ## Why Biome Can't Extend Configurations
89
+
90
+ Unlike ESLint or TypeScript, Biome doesn't support configuration inheritance/extending. Each project needs its own complete `biome.json` file. This package provides a well-tested base configuration that you can copy and customize.
@@ -0,0 +1,63 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.0/schema.json",
3
+ "vcs": {
4
+ "enabled": false,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": true
7
+ },
8
+ "files": {
9
+ "ignoreUnknown": false,
10
+ "includes": [
11
+ "**",
12
+ "!**/node_modules",
13
+ "!**/package.json",
14
+ "!**/tsconfig*.json",
15
+ "!**/dist",
16
+ "!**/coverage",
17
+ "!**/.git",
18
+ "!**/.github",
19
+ "!**/.vscode"
20
+ ]
21
+ },
22
+ "formatter": {
23
+ "enabled": true,
24
+ "indentStyle": "tab",
25
+ "lineWidth": 100
26
+ },
27
+ "linter": {
28
+ "enabled": true,
29
+ "rules": {
30
+ "preset": "recommended",
31
+ "style": {
32
+ "noInferrableTypes": "off"
33
+ },
34
+ "complexity": {
35
+ "useLiteralKeys": "off"
36
+ },
37
+ "suspicious": {
38
+ "noExplicitAny": "off",
39
+ "noTemplateCurlyInString": "off"
40
+ }
41
+ }
42
+ },
43
+ "assist": {
44
+ "actions": {
45
+ "source": {
46
+ "organizeImports": "off"
47
+ }
48
+ }
49
+ },
50
+ "javascript": {
51
+ "formatter": {
52
+ "quoteStyle": "single",
53
+ "trailingCommas": "es5",
54
+ "semicolons": "asNeeded"
55
+ }
56
+ },
57
+ "json": {
58
+ "formatter": {
59
+ "indentStyle": "space",
60
+ "indentWidth": 2
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,14 @@
1
+ # Bun configuration — https://bun.sh/docs/runtime/bunfig
2
+ # Tune to taste; this is a minimal, Node-compatible-library-friendly default.
3
+
4
+ [install]
5
+ # Fail the install if the lockfile would change in CI (mirrors --frozen-lockfile).
6
+ frozenLockfile = false
7
+ # Pin exact versions on `bun add` for reproducible installs.
8
+ exact = true
9
+
10
+ [test]
11
+ # Enable coverage with `bun test --coverage`; leave off by default for speed.
12
+ coverage = false
13
+ # Directories/globs Bun's test runner discovers (matches the tests/ convention).
14
+ root = "."
@@ -0,0 +1,35 @@
1
+ # Changesets preset
2
+
3
+ Shared [Changesets](https://github.com/changesets/changesets) configuration for projects using `@rtorcato/repo-tooling`.
4
+
5
+ Changesets is a **monorepo-friendly alternative to semantic-release**. The release workflow is the same shape (CI bumps versions, generates a changelog, publishes to npm), but the *intent* is captured in changeset markdown files at PR time rather than parsed from commit messages.
6
+
7
+ Pick one — Changesets or semantic-release — per repo. The `doctor` check flags repos configured for both.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ npx @rtorcato/repo-tooling copy changesets
13
+ ```
14
+
15
+ This scaffolds `.changeset/config.json` from this preset. After that:
16
+
17
+ ```bash
18
+ pnpm changeset # interactive — author a changeset for the current change
19
+ pnpm changeset version # consume changesets, bump versions, write CHANGELOG.md
20
+ pnpm changeset publish # publish to npm
21
+ ```
22
+
23
+ CI typically runs the [Changesets release bot](https://github.com/changesets/action), which opens a "Version Packages" PR when changesets are present and publishes on merge.
24
+
25
+ ## Why pick this over semantic-release
26
+
27
+ - **Monorepos** — Changesets handles multi-package version bumps in a way semantic-release doesn't out of the box.
28
+ - **Explicit intent** — Authors declare a change's bump level in the changeset file rather than encoding it in commit message conventions, which is more forgiving for human commits.
29
+ - **Pre-release flows** — `--snapshot` and `pre enter <tag>` are first-class.
30
+
31
+ ## Why pick semantic-release instead
32
+
33
+ - **Single-package repos** — Less ceremony; nothing to author per change.
34
+ - **Strict conventional-commits discipline already in place.**
35
+ - **Existing CI built around the `npm run release` path.**
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://unpkg.com/@changesets/config@3.0.5/schema.json",
3
+ "changelog": "@changesets/cli/changelog",
4
+ "commit": false,
5
+ "fixed": [],
6
+ "linked": [],
7
+ "access": "public",
8
+ "baseBranch": "main",
9
+ "updateInternalDependencies": "patch",
10
+ "ignore": []
11
+ }