Skip to content

Commit e5f59a2

Browse files
authored
Use pnpm catalogs for shared dependencies (#161)
* Use pnpm catalogs for shared dependencies Centralize 26 shared dependency versions in pnpm-workspace.yaml catalog and replace inline versions with catalog: references across all packages. - Add catalog section to pnpm-workspace.yaml (4 prod deps, 22 dev deps) - Normalize version inconsistencies across packages (11 deps had mismatches) - Replace @tony.ganchev/eslint-plugin-header with eslint-plugin-header in SDK - Add baseline-browser-mapping override to fix stale data warning in eslint * Add pnpm catalogs note to AGENTS.md Document that shared dependencies use pnpm catalogs so contributors know to update pnpm-workspace.yaml rather than individual package.json files.
1 parent 6d0199b commit e5f59a2

File tree

10 files changed

+349
-430
lines changed

10 files changed

+349
-430
lines changed

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ The header is enforced by eslint via `eslint-plugin-header`. The canonical defin
8282
## Setup/Packaging
8383

8484
- use `pnpm` over `npm` for package management
85+
- shared dependencies are managed via [pnpm catalogs](https://pnpm.io/catalogs) — versions are defined once in the `catalog:` section of `pnpm-workspace.yaml` and referenced as `"catalog:"` in each package.json. When adding or updating a dependency that is shared across packages, update the catalog entry rather than individual package.json files.
8586
- the `pnpm run test` commands also run the linter after tests
8687
- use `pnpm run -r format` (or individually in packages) to format code with prettier
8788
- use `exports` field in package.json files to define public API surface for packages; use `development` field for nodejs --conditions for development ergonomics (packages/b2c-cli/bin/dev.js will use this condition)

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
"devDependencies": {
3030
"@changesets/changelog-github": "^0.5.2",
3131
"@changesets/cli": "^2.29.8",
32-
"eslint-plugin-prettier": "^5.5.4",
33-
"prettier": "^3.6.2",
32+
"eslint-plugin-prettier": "catalog:",
33+
"prettier": "catalog:",
3434
"typedoc": "^0.28.14",
3535
"typedoc-plugin-markdown": "^4.9.0",
3636
"typedoc-vitepress-theme": "^1.1.2",

packages/b2c-cli/package.json

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,44 +13,44 @@
1313
},
1414
"dependencies": {
1515
"@inquirer/prompts": "8.2.0",
16-
"@oclif/core": "4.8.0",
16+
"@oclif/core": "catalog:",
1717
"@oclif/plugin-autocomplete": "3.2.39",
1818
"@oclif/plugin-help": "6.2.35",
1919
"@oclif/plugin-not-found": "3.2.72",
2020
"@oclif/plugin-plugins": "5.4.53",
2121
"@oclif/plugin-version": "2.2.36",
2222
"@oclif/plugin-warn-if-update-available": "3.1.52",
2323
"@salesforce/b2c-tooling-sdk": "workspace:*",
24-
"cliui": "9.0.1",
25-
"glob": "13.0.0",
24+
"cliui": "catalog:",
25+
"glob": "catalog:",
2626
"marked": "15.0.12",
2727
"marked-terminal": "7.3.0",
28-
"open": "11.0.0"
28+
"open": "catalog:"
2929
},
3030
"devDependencies": {
31-
"@eslint/compat": "^1",
32-
"@oclif/prettier-config": "^0.2.1",
33-
"@oclif/test": "^4",
34-
"@salesforce/dev-config": "^4.3.2",
35-
"@types/chai": "^4",
36-
"@types/mocha": "^10",
37-
"@types/node": "^22",
38-
"c8": "^10.1.3",
39-
"chai": "^4",
40-
"eslint": "^9",
41-
"eslint-config-oclif": "^6",
42-
"eslint-config-prettier": "^10",
43-
"eslint-plugin-header": "^3.1.1",
44-
"eslint-plugin-prettier": "^5.5.4",
31+
"@eslint/compat": "catalog:",
32+
"@oclif/prettier-config": "catalog:",
33+
"@oclif/test": "catalog:",
34+
"@salesforce/dev-config": "catalog:",
35+
"@types/chai": "catalog:",
36+
"@types/mocha": "catalog:",
37+
"@types/node": "catalog:",
38+
"c8": "catalog:",
39+
"chai": "catalog:",
40+
"eslint": "catalog:",
41+
"eslint-config-oclif": "catalog:",
42+
"eslint-config-prettier": "catalog:",
43+
"eslint-plugin-header": "catalog:",
44+
"eslint-plugin-prettier": "catalog:",
4545
"execa": "^9.6.1",
46-
"mocha": "^10",
47-
"msw": "^2.0.0",
48-
"oclif": "^4",
49-
"prettier": "^3.6.2",
50-
"shx": "^0.3.3",
51-
"sinon": "^21.0.1",
52-
"tsx": "^4.20.6",
53-
"typescript": "^5"
46+
"mocha": "catalog:",
47+
"msw": "catalog:",
48+
"oclif": "catalog:",
49+
"prettier": "catalog:",
50+
"shx": "catalog:",
51+
"sinon": "catalog:",
52+
"tsx": "catalog:",
53+
"typescript": "catalog:"
5454
},
5555
"engines": {
5656
"node": ">=22.16.0"

packages/b2c-dx-mcp/package.json

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -94,36 +94,36 @@
9494
},
9595
"dependencies": {
9696
"@modelcontextprotocol/sdk": "1.26.0",
97-
"@oclif/core": "4.8.0",
97+
"@oclif/core": "catalog:",
9898
"@salesforce/b2c-tooling-sdk": "workspace:*",
9999
"yaml": "2.8.1",
100100
"zod": "3.25.76"
101101
},
102102
"devDependencies": {
103-
"@eslint/compat": "^1",
103+
"@eslint/compat": "catalog:",
104104
"@eslint/js": "^9",
105105
"@modelcontextprotocol/inspector": "^0.18.0",
106-
"@oclif/prettier-config": "^0.2.1",
107-
"@salesforce/dev-config": "^4.3.2",
108-
"@types/chai": "^4",
109-
"@types/mocha": "^10",
110-
"@types/node": "^22.16.5",
111-
"@types/sinon": "^21.0.0",
112-
"c8": "^10.1.3",
113-
"chai": "^4",
114-
"eslint": "^9",
115-
"eslint-config-oclif": "^6",
116-
"eslint-config-prettier": "^10",
117-
"eslint-plugin-header": "^3.1.1",
118-
"eslint-plugin-prettier": "^5.5.4",
119-
"mocha": "^10",
120-
"oclif": "^4",
121-
"prettier": "^3.6.2",
122-
"shx": "^0.3.3",
123-
"sinon": "^21.0.1",
124-
"tsx": "^4",
125-
"typescript": "^5",
126-
"typescript-eslint": "^8"
106+
"@oclif/prettier-config": "catalog:",
107+
"@salesforce/dev-config": "catalog:",
108+
"@types/chai": "catalog:",
109+
"@types/mocha": "catalog:",
110+
"@types/node": "catalog:",
111+
"@types/sinon": "catalog:",
112+
"c8": "catalog:",
113+
"chai": "catalog:",
114+
"eslint": "catalog:",
115+
"eslint-config-oclif": "catalog:",
116+
"eslint-config-prettier": "catalog:",
117+
"eslint-plugin-header": "catalog:",
118+
"eslint-plugin-prettier": "catalog:",
119+
"mocha": "catalog:",
120+
"oclif": "catalog:",
121+
"prettier": "catalog:",
122+
"shx": "catalog:",
123+
"sinon": "catalog:",
124+
"tsx": "catalog:",
125+
"typescript": "catalog:",
126+
"typescript-eslint": "catalog:"
127127
},
128128
"engines": {
129129
"node": ">=22.16.0"

packages/b2c-plugin-example-config/package.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,17 @@
3232
"@oclif/core": "^4"
3333
},
3434
"devDependencies": {
35-
"@eslint/compat": "^1",
36-
"@oclif/core": "^4",
37-
"@salesforce/dev-config": "^4.3.2",
38-
"@types/node": "^22",
39-
"eslint": "^9",
40-
"eslint-config-oclif": "^6",
41-
"eslint-config-prettier": "^10",
42-
"eslint-plugin-header": "^3.1.1",
43-
"eslint-plugin-prettier": "^5.5.4",
44-
"prettier": "^3.6.2",
45-
"typescript": "^5"
35+
"@eslint/compat": "catalog:",
36+
"@oclif/core": "catalog:",
37+
"@salesforce/dev-config": "catalog:",
38+
"@types/node": "catalog:",
39+
"eslint": "catalog:",
40+
"eslint-config-oclif": "catalog:",
41+
"eslint-config-prettier": "catalog:",
42+
"eslint-plugin-header": "catalog:",
43+
"eslint-plugin-prettier": "catalog:",
44+
"prettier": "catalog:",
45+
"typescript": "catalog:"
4646
},
4747
"engines": {
4848
"node": ">=22.16.0"

packages/b2c-tooling-sdk/eslint.config.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
55
*/
66
import {includeIgnoreFile} from '@eslint/compat';
7-
import headerPlugin from '@tony.ganchev/eslint-plugin-header';
7+
import headerPlugin from 'eslint-plugin-header';
88
import tseslint from 'typescript-eslint';
99
import path from 'node:path';
1010
import {fileURLToPath} from 'node:url';
1111

1212
import {copyrightHeader, sharedRules, chaiTestRules, prettierPlugin} from '../../eslint.config.mjs';
1313

1414
const gitignorePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '.gitignore');
15+
headerPlugin.rules.header.meta.schema = false;
1516

1617
export default [
1718
includeIgnoreFile(gitignorePath),

packages/b2c-tooling-sdk/package.json

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -319,33 +319,33 @@
319319
"generate:docs-index": "tsx scripts/generate-docs-index.ts"
320320
},
321321
"devDependencies": {
322-
"@eslint/compat": "^1",
323-
"@oclif/core": "^4",
324-
"@oclif/prettier-config": "^0.2.1",
325-
"@oclif/test": "^4.1.14",
326-
"@salesforce/dev-config": "^4.3.2",
327-
"@tony.ganchev/eslint-plugin-header": "^3.1.11",
322+
"@eslint/compat": "catalog:",
323+
"@oclif/core": "catalog:",
324+
"@oclif/prettier-config": "catalog:",
325+
"@oclif/test": "catalog:",
326+
"@salesforce/dev-config": "catalog:",
328327
"@types/archiver": "^7.0.0",
329-
"@types/chai": "^4.3.20",
328+
"@types/chai": "catalog:",
330329
"@types/ejs": "^3.1.5",
331-
"@types/mocha": "^10.0.10",
332-
"@types/node": "^22",
333-
"@types/sinon": "^21.0.0",
330+
"@types/mocha": "catalog:",
331+
"@types/node": "catalog:",
332+
"@types/sinon": "catalog:",
334333
"@types/xml2js": "^0.4.14",
335-
"c8": "^10.1.3",
336-
"chai": "^4.5.0",
337-
"eslint": "^9",
338-
"eslint-config-prettier": "^10",
339-
"eslint-plugin-prettier": "^5.5.4",
340-
"mocha": "^10.8.2",
341-
"msw": "^2.12.4",
334+
"c8": "catalog:",
335+
"chai": "catalog:",
336+
"eslint": "catalog:",
337+
"eslint-config-prettier": "catalog:",
338+
"eslint-plugin-header": "catalog:",
339+
"eslint-plugin-prettier": "catalog:",
340+
"mocha": "catalog:",
341+
"msw": "catalog:",
342342
"openapi-typescript": "^7.10.1",
343-
"prettier": "^3.6.2",
344-
"shx": "^0.3.3",
345-
"sinon": "^21.0.1",
346-
"tsx": "^4.20.6",
347-
"typescript": "^5",
348-
"typescript-eslint": "^8"
343+
"prettier": "catalog:",
344+
"shx": "catalog:",
345+
"sinon": "catalog:",
346+
"tsx": "catalog:",
347+
"typescript": "catalog:",
348+
"typescript-eslint": "catalog:"
349349
},
350350
"peerDependencies": {
351351
"@oclif/core": "^4"
@@ -362,14 +362,14 @@
362362
"@salesforce/telemetry": "6.4.6",
363363
"archiver": "7.0.1",
364364
"chokidar": "5.0.0",
365-
"cliui": "9.0.1",
365+
"cliui": "catalog:",
366366
"ejs": "3.1.10",
367367
"fuse.js": "7.1.0",
368-
"glob": "13.0.0",
368+
"glob": "catalog:",
369369
"i18next": "25.7.4",
370370
"jszip": "3.10.1",
371371
"minimatch": "10.1.1",
372-
"open": "11.0.0",
372+
"open": "catalog:",
373373
"openapi-fetch": "0.15.0",
374374
"pino": "10.1.0",
375375
"pino-pretty": "13.1.2",

packages/b2c-vs-extension/package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,20 +77,20 @@
7777
"analyze": "ANALYZE_BUNDLE=1 node scripts/esbuild-bundle.mjs"
7878
},
7979
"devDependencies": {
80-
"@eslint/compat": "^1",
81-
"@types/mocha": "^10.0.10",
82-
"@types/node": "^22",
80+
"@eslint/compat": "catalog:",
81+
"@types/mocha": "catalog:",
82+
"@types/node": "catalog:",
8383
"@types/vscode": "^1.105.1",
8484
"@vscode/test-cli": "^0.0.12",
8585
"@vscode/test-electron": "^2.5.2",
8686
"@vscode/vsce": "^3.7.1",
8787
"esbuild": "^0.24.0",
88-
"eslint": "^9",
89-
"eslint-config-prettier": "^10",
90-
"eslint-plugin-header": "^3.1.1",
91-
"eslint-plugin-prettier": "^5.5.4",
92-
"prettier": "^3.6.2",
93-
"typescript": "^5.9.3",
94-
"typescript-eslint": "^8.54.0"
88+
"eslint": "catalog:",
89+
"eslint-config-prettier": "catalog:",
90+
"eslint-plugin-header": "catalog:",
91+
"eslint-plugin-prettier": "catalog:",
92+
"prettier": "catalog:",
93+
"typescript": "catalog:",
94+
"typescript-eslint": "catalog:"
9595
}
9696
}

0 commit comments

Comments
 (0)