@useinsider/eslint-config 1.13.0-beta.8 → 1.14.0-beta.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.
Files changed (70) hide show
  1. package/README.md +2 -2
  2. package/dist/builders/scopeBlocks.d.ts +9 -5
  3. package/dist/{chunk-C2EiDwsr.cjs → chunk-CKQMccvm.cjs} +0 -7
  4. package/dist/cli.cjs +158 -114
  5. package/dist/cli.cjs.map +1 -1
  6. package/dist/configs/config/dependencies.d.ts +1 -1
  7. package/dist/configs/javascript/dependencies.d.ts +1 -1
  8. package/dist/configs/javascript-dom/dependencies.d.ts +1 -1
  9. package/dist/configs/javascript-node/dependencies.d.ts +1 -1
  10. package/dist/configs/jest/dependencies.d.ts +3 -1
  11. package/dist/configs/jsdoc-based-ts/dependencies.d.ts +6 -1
  12. package/dist/configs/strict/dependencies.d.ts +3 -1
  13. package/dist/configs/typescript/dependencies.d.ts +6 -1
  14. package/dist/configs/typescript-dom/dependencies.d.ts +6 -1
  15. package/dist/configs/typescript-node/dependencies.d.ts +6 -1
  16. package/dist/configs/vitest/dependencies.d.ts +3 -1
  17. package/dist/configs/vue2/dependencies.d.ts +5 -1
  18. package/dist/configs/vue2-options-api/dependencies.d.ts +5 -1
  19. package/dist/configs/vue2-typescript/dependencies.d.ts +9 -1
  20. package/dist/configs/vue2-typescript-options-api/dependencies.d.ts +9 -1
  21. package/dist/configs/vue3/dependencies.d.ts +5 -1
  22. package/dist/configs/vue3-options-api/dependencies.d.ts +5 -1
  23. package/dist/configs/vue3-typescript/dependencies.d.ts +9 -1
  24. package/dist/configs/vue3-typescript-options-api/dependencies.d.ts +9 -1
  25. package/dist/{javascript-5-Y3S7Ai.cjs → javascript-CrNAuq8X.cjs} +5 -5
  26. package/dist/{javascript-5-Y3S7Ai.cjs.map → javascript-CrNAuq8X.cjs.map} +1 -1
  27. package/dist/{javascript-dom-mQsJpeOi.cjs → javascript-dom-qddIl6lD.cjs} +4 -4
  28. package/dist/{javascript-dom-mQsJpeOi.cjs.map → javascript-dom-qddIl6lD.cjs.map} +1 -1
  29. package/dist/{javascript-node-Djjq7GiI.cjs → javascript-node-CymkpeIN.cjs} +4 -4
  30. package/dist/{javascript-node-Djjq7GiI.cjs.map → javascript-node-CymkpeIN.cjs.map} +1 -1
  31. package/dist/{jest-BJBmD0AY.cjs → jest-Ct_2c2e5.cjs} +2 -2
  32. package/dist/{jest-BJBmD0AY.cjs.map → jest-Ct_2c2e5.cjs.map} +1 -1
  33. package/dist/main.cjs +70 -332
  34. package/dist/main.cjs.map +1 -1
  35. package/dist/main.js +54 -319
  36. package/dist/main.js.map +1 -1
  37. package/dist/{merge-BvnXuTFh.cjs → merge-9BZzhd4u.cjs} +2 -2
  38. package/dist/{merge-BvnXuTFh.cjs.map → merge-9BZzhd4u.cjs.map} +1 -1
  39. package/dist/{mergeAllConfig-D8LMTmMy.cjs → mergeAllConfig-B2TWh9bP.cjs} +2 -2
  40. package/dist/{mergeAllConfig-D8LMTmMy.cjs.map → mergeAllConfig-B2TWh9bP.cjs.map} +1 -1
  41. package/dist/{strict-BvDi46-I.cjs → strict-TbDHFSQX.cjs} +3 -3
  42. package/dist/{strict-BvDi46-I.cjs.map → strict-TbDHFSQX.cjs.map} +1 -1
  43. package/dist/{stylistic-Cfukq7XJ.cjs → stylistic-_qagyIah.cjs} +3 -3
  44. package/dist/{stylistic-Cfukq7XJ.cjs.map → stylistic-_qagyIah.cjs.map} +1 -1
  45. package/dist/{typescript-QHQoQWA9.cjs → typescript-Cm5y5BRu.cjs} +5 -5
  46. package/dist/{typescript-QHQoQWA9.cjs.map → typescript-Cm5y5BRu.cjs.map} +1 -1
  47. package/dist/{typescript-dom-CJOUQmKp.cjs → typescript-dom-B5cwc97i.cjs} +4 -4
  48. package/dist/{typescript-dom-CJOUQmKp.cjs.map → typescript-dom-B5cwc97i.cjs.map} +1 -1
  49. package/dist/{typescript-node-DZaR2hcl.cjs → typescript-node-BPHyiIve.cjs} +4 -4
  50. package/dist/{typescript-node-DZaR2hcl.cjs.map → typescript-node-BPHyiIve.cjs.map} +1 -1
  51. package/dist/utils/ensureConfigStructure.d.ts +5 -1
  52. package/dist/{vitest-BhP2TSgq.cjs → vitest-Cxe6To8m.cjs} +2 -2
  53. package/dist/{vitest-BhP2TSgq.cjs.map → vitest-Cxe6To8m.cjs.map} +1 -1
  54. package/dist/{vue2-DpVbDKkJ.cjs → vue2-XNhU8qvc.cjs} +5 -5
  55. package/dist/{vue2-DpVbDKkJ.cjs.map → vue2-XNhU8qvc.cjs.map} +1 -1
  56. package/dist/{vue2-options-api-DX3bvecY.cjs → vue2-options-api-zm_Ppsnb.cjs} +5 -5
  57. package/dist/{vue2-options-api-DX3bvecY.cjs.map → vue2-options-api-zm_Ppsnb.cjs.map} +1 -1
  58. package/dist/{vue2-typescript-options-api-B3_Gjydu.cjs → vue2-typescript-options-api-Tj8_pTDc.cjs} +5 -5
  59. package/dist/{vue2-typescript-options-api-B3_Gjydu.cjs.map → vue2-typescript-options-api-Tj8_pTDc.cjs.map} +1 -1
  60. package/dist/{vue2-typescript-Cv7aZ0WD.cjs → vue2-typescript-qUvTF_0O.cjs} +5 -5
  61. package/dist/{vue2-typescript-Cv7aZ0WD.cjs.map → vue2-typescript-qUvTF_0O.cjs.map} +1 -1
  62. package/dist/{vue3-BrMrQh1n.cjs → vue3-Dexa-ftV.cjs} +5 -5
  63. package/dist/{vue3-BrMrQh1n.cjs.map → vue3-Dexa-ftV.cjs.map} +1 -1
  64. package/dist/{vue3-options-api-B2m_tOZf.cjs → vue3-options-api-Fl27U2nN.cjs} +5 -5
  65. package/dist/{vue3-options-api-B2m_tOZf.cjs.map → vue3-options-api-Fl27U2nN.cjs.map} +1 -1
  66. package/dist/{vue3-typescript-D-kRjG-E.cjs → vue3-typescript-CzR7L5ep.cjs} +5 -5
  67. package/dist/{vue3-typescript-D-kRjG-E.cjs.map → vue3-typescript-CzR7L5ep.cjs.map} +1 -1
  68. package/dist/{vue3-typescript-options-api-DXrU7vz5.cjs → vue3-typescript-options-api-D56mHjp4.cjs} +5 -5
  69. package/dist/{vue3-typescript-options-api-DXrU7vz5.cjs.map → vue3-typescript-options-api-D56mHjp4.cjs.map} +1 -1
  70. package/package.json +23 -6
package/README.md CHANGED
@@ -84,8 +84,8 @@ pins):
84
84
  - `typescript-eslint`
85
85
 
86
86
  Vue, Jest, or Vitest answers add the matching plugin set (e.g. `eslint-plugin-vue`,
87
- `vue-eslint-parser`, `eslint-plugin-vue-scoped-css`, `@vue/eslint-config-typescript`,
88
- `@rushstack/eslint-patch`, `eslint-plugin-jest`, or `@vitest/eslint-plugin`).
87
+ `vue-eslint-parser`, `eslint-plugin-vue-scoped-css`, `eslint-plugin-jest`,
88
+ or `@vitest/eslint-plugin`).
89
89
 
90
90
  ## Manual setup
91
91
 
@@ -1,21 +1,25 @@
1
1
  import type { Linter } from 'eslint';
2
- export interface JsEntry {
2
+ export interface CommonEntryFields {
3
+ ignores?: string[];
4
+ globals?: Linter.Globals;
5
+ }
6
+ export interface JsEntry extends CommonEntryFields {
3
7
  files: string[];
4
8
  }
5
- export interface TsEntry {
9
+ export interface TsEntry extends CommonEntryFields {
6
10
  files: string[];
7
11
  tsconfigPaths: string[];
8
12
  }
9
- export interface VueEntry {
13
+ export interface VueEntry extends CommonEntryFields {
10
14
  files: string[];
11
15
  globalComponents?: string[];
12
16
  }
13
- export interface VueTsEntry {
17
+ export interface VueTsEntry extends CommonEntryFields {
14
18
  files: string[];
15
19
  globalComponents?: string[];
16
20
  tsconfigPaths: string[];
17
21
  }
18
- export interface TestEntry {
22
+ export interface TestEntry extends CommonEntryFields {
19
23
  files: string[];
20
24
  }
21
25
  export type ScopeEntry = JsEntry | TsEntry | VueEntry | VueTsEntry | TestEntry;
@@ -5,7 +5,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
9
8
  var __copyProps = (to, from, except, desc) => {
10
9
  if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
10
  key = keys[i];
@@ -21,12 +20,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
20
  enumerable: true
22
21
  }) : target, mod));
23
22
  //#endregion
24
- Object.defineProperty(exports, "__commonJSMin", {
25
- enumerable: true,
26
- get: function() {
27
- return __commonJSMin;
28
- }
29
- });
30
23
  Object.defineProperty(exports, "__toESM", {
31
24
  enumerable: true,
32
25
  get: function() {
package/dist/cli.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const require_chunk = require("./chunk-C2EiDwsr.cjs");
3
+ const require_chunk = require("./chunk-CKQMccvm.cjs");
4
4
  let globals = require("globals");
5
5
  globals = require_chunk.__toESM(globals, 1);
6
6
  let node_fs = require("node:fs");
@@ -355,6 +355,56 @@ async function dispatch(argv, cwd, deps) {
355
355
  return 1;
356
356
  }
357
357
  //#endregion
358
+ //#region src/configs/jest/dependencies.ts
359
+ var dependencies$14 = { "eslint-plugin-jest": true };
360
+ //#endregion
361
+ //#region src/configs/typescript/dependencies.ts
362
+ var dependencies$13 = {
363
+ typescript: false,
364
+ "typescript-eslint": false,
365
+ "@typescript-eslint/parser": false,
366
+ "@typescript-eslint/eslint-plugin": false
367
+ };
368
+ //#endregion
369
+ //#region src/configs/vitest/dependencies.ts
370
+ var dependencies$12 = { "@vitest/eslint-plugin": true };
371
+ //#endregion
372
+ //#region src/configs/vue2/dependencies.ts
373
+ var dependencies$11 = {
374
+ "eslint-plugin-vue": true,
375
+ "eslint-plugin-vue-scoped-css": true,
376
+ "vue-eslint-parser": true
377
+ };
378
+ //#endregion
379
+ //#region src/configs/vue2-typescript/dependencies.ts
380
+ var dependencies$10 = {
381
+ "eslint-plugin-vue": true,
382
+ "eslint-plugin-vue-scoped-css": true,
383
+ "vue-eslint-parser": true,
384
+ typescript: false,
385
+ "typescript-eslint": false,
386
+ "@typescript-eslint/parser": false,
387
+ "@typescript-eslint/eslint-plugin": false
388
+ };
389
+ //#endregion
390
+ //#region src/configs/vue3/dependencies.ts
391
+ var dependencies$9 = {
392
+ "eslint-plugin-vue": true,
393
+ "eslint-plugin-vue-scoped-css": true,
394
+ "vue-eslint-parser": true
395
+ };
396
+ //#endregion
397
+ //#region src/configs/vue3-typescript/dependencies.ts
398
+ var dependencies$8 = {
399
+ "eslint-plugin-vue": true,
400
+ "eslint-plugin-vue-scoped-css": true,
401
+ "vue-eslint-parser": true,
402
+ typescript: false,
403
+ "typescript-eslint": false,
404
+ "@typescript-eslint/parser": false,
405
+ "@typescript-eslint/eslint-plugin": false
406
+ };
407
+ //#endregion
358
408
  //#region src/cli/resolveEslintConfigManifest.ts
359
409
  function tryReadManifest(candidate) {
360
410
  try {
@@ -391,17 +441,27 @@ function toRequiredManifest(manifest) {
391
441
  version: manifest.version ?? "0.0.0",
392
442
  dependencies: manifest.dependencies ?? {},
393
443
  devDependencies: manifest.devDependencies ?? {},
444
+ peerDependencies: manifest.peerDependencies ?? {},
394
445
  optionalDependencies: manifest.optionalDependencies ?? {}
395
446
  };
396
447
  }
397
448
  function lookup(manifest, name) {
398
- return manifest.dependencies[name] ?? manifest.devDependencies[name] ?? manifest.optionalDependencies[name];
449
+ return manifest.dependencies[name] ?? manifest.devDependencies[name] ?? manifest.peerDependencies[name] ?? manifest.optionalDependencies[name];
399
450
  }
400
451
  function pinned(manifest, name) {
401
452
  const version = lookup(manifest, name);
402
453
  if (!version) throw new Error(`Unable to resolve pinned version for ${name} from @useinsider/eslint-config manifest`);
403
454
  return `${name}@${version.replace(/^(?:\^|~|>=|<=|>|<|=)/u, "")}`;
404
455
  }
456
+ function vueDepsFor(major, wantsTypescript) {
457
+ if (wantsTypescript) return major === 2 ? dependencies$10 : dependencies$8;
458
+ return major === 2 ? dependencies$11 : dependencies$9;
459
+ }
460
+ function applyRecord(deps, manifest, record) {
461
+ Object.entries(record).forEach(([name, install]) => {
462
+ if (install) deps.add(pinned(manifest, name));
463
+ });
464
+ }
405
465
  function buildDependencyList(answers, rawManifest = readOwnEslintConfigManifest$1()) {
406
466
  const manifest = toRequiredManifest(rawManifest);
407
467
  const deps = /* @__PURE__ */ new Set();
@@ -409,21 +469,10 @@ function buildDependencyList(answers, rawManifest = readOwnEslintConfigManifest$
409
469
  deps.add(pinned(manifest, "eslint"));
410
470
  deps.add(pinned(manifest, "globals"));
411
471
  const wantsTypescript = answers.languages.includes("typescript");
412
- if (wantsTypescript) {
413
- deps.add(pinned(manifest, "typescript"));
414
- deps.add(pinned(manifest, "typescript-eslint"));
415
- }
416
- if (answers.framework === "vue") {
417
- deps.add(pinned(manifest, "eslint-plugin-vue"));
418
- deps.add(pinned(manifest, "vue-eslint-parser"));
419
- deps.add(pinned(manifest, "eslint-plugin-vue-scoped-css"));
420
- if (wantsTypescript) {
421
- deps.add(pinned(manifest, "@vue/eslint-config-typescript"));
422
- deps.add(pinned(manifest, "@rushstack/eslint-patch"));
423
- }
424
- }
425
- if (answers.testFramework === "jest") deps.add(pinned(manifest, "eslint-plugin-jest"));
426
- if (answers.testFramework === "vitest") deps.add(pinned(manifest, "@vitest/eslint-plugin"));
472
+ if (answers.framework === "vue") applyRecord(deps, manifest, vueDepsFor(answers.vueMajor ?? 3, wantsTypescript));
473
+ else if (wantsTypescript) applyRecord(deps, manifest, dependencies$13);
474
+ if (answers.testFramework === "jest") applyRecord(deps, manifest, dependencies$14);
475
+ if (answers.testFramework === "vitest") applyRecord(deps, manifest, dependencies$12);
427
476
  return [...deps];
428
477
  }
429
478
  async function installDependencies(deps) {
@@ -1325,97 +1374,48 @@ function clearSession(options) {
1325
1374
  }
1326
1375
  /* v8 ignore stop */
1327
1376
  //#endregion
1377
+ //#region src/configs/config/dependencies.ts
1378
+ var dependencies$7 = {};
1379
+ //#endregion
1328
1380
  //#region src/configs/javascript/dependencies.ts
1329
- var dependencies$12 = [];
1381
+ var dependencies$6 = {};
1330
1382
  //#endregion
1331
1383
  //#region src/configs/javascript-dom/dependencies.ts
1332
- var dependencies$11 = [];
1384
+ var dependencies$5 = {};
1333
1385
  //#endregion
1334
1386
  //#region src/configs/javascript-node/dependencies.ts
1335
- var dependencies$10 = [];
1336
- //#endregion
1337
- //#region src/configs/jest/dependencies.ts
1338
- var dependencies$9 = ["eslint-plugin-jest", "globals"];
1387
+ var dependencies$4 = {};
1339
1388
  //#endregion
1340
1389
  //#region src/configs/jsdoc-based-ts/dependencies.ts
1341
- var dependencies$8 = [
1342
- "typescript",
1343
- "typescript-eslint",
1344
- "@typescript-eslint/parser",
1345
- "@typescript-eslint/eslint-plugin"
1346
- ];
1390
+ var dependencies$3 = {
1391
+ typescript: false,
1392
+ "typescript-eslint": false,
1393
+ "@typescript-eslint/parser": false,
1394
+ "@typescript-eslint/eslint-plugin": false
1395
+ };
1347
1396
  //#endregion
1348
- //#region src/configs/typescript/dependencies.ts
1349
- var dependencies$7 = [
1350
- "typescript",
1351
- "typescript-eslint",
1352
- "@typescript-eslint/parser",
1353
- "@typescript-eslint/eslint-plugin"
1354
- ];
1397
+ //#region src/configs/strict/dependencies.ts
1398
+ var dependencies$2 = { "eslint-plugin-sonarjs": false };
1355
1399
  //#endregion
1356
1400
  //#region src/configs/typescript-dom/dependencies.ts
1357
- var dependencies$6 = [
1358
- "typescript",
1359
- "typescript-eslint",
1360
- "@typescript-eslint/parser",
1361
- "@typescript-eslint/eslint-plugin"
1362
- ];
1401
+ var dependencies$1 = {
1402
+ typescript: false,
1403
+ "typescript-eslint": false,
1404
+ "@typescript-eslint/parser": false,
1405
+ "@typescript-eslint/eslint-plugin": false
1406
+ };
1363
1407
  //#endregion
1364
1408
  //#region src/configs/typescript-node/dependencies.ts
1365
- var dependencies$5 = [
1366
- "typescript",
1367
- "typescript-eslint",
1368
- "@typescript-eslint/parser",
1369
- "@typescript-eslint/eslint-plugin"
1370
- ];
1371
- //#endregion
1372
- //#region src/configs/vitest/dependencies.ts
1373
- var dependencies$4 = ["@vitest/eslint-plugin", "globals"];
1374
- //#endregion
1375
- //#region src/configs/vue2/dependencies.ts
1376
- var dependencies$3 = [
1377
- "eslint-plugin-vue",
1378
- "eslint-plugin-vue-scoped-css",
1379
- "vue-eslint-parser"
1380
- ];
1381
- //#endregion
1382
- //#region src/configs/vue2-typescript/dependencies.ts
1383
- var dependencies$2 = [
1384
- "eslint-plugin-vue",
1385
- "eslint-plugin-vue-scoped-css",
1386
- "vue-eslint-parser",
1387
- "typescript",
1388
- "typescript-eslint",
1389
- "@typescript-eslint/parser",
1390
- "@typescript-eslint/eslint-plugin",
1391
- "@vue/eslint-config-typescript",
1392
- "@rushstack/eslint-patch"
1393
- ];
1394
- //#endregion
1395
- //#region src/configs/vue3/dependencies.ts
1396
- var dependencies$1 = [
1397
- "eslint-plugin-vue",
1398
- "eslint-plugin-vue-scoped-css",
1399
- "vue-eslint-parser"
1400
- ];
1401
- //#endregion
1402
- //#region src/configs/vue3-typescript/dependencies.ts
1403
- var dependencies = [
1404
- "eslint-plugin-vue",
1405
- "eslint-plugin-vue-scoped-css",
1406
- "vue-eslint-parser",
1407
- "typescript",
1408
- "typescript-eslint",
1409
- "@typescript-eslint/parser",
1410
- "@typescript-eslint/eslint-plugin",
1411
- "@vue/eslint-config-typescript",
1412
- "@rushstack/eslint-patch"
1413
- ];
1409
+ var dependencies = {
1410
+ typescript: false,
1411
+ "typescript-eslint": false,
1412
+ "@typescript-eslint/parser": false,
1413
+ "@typescript-eslint/eslint-plugin": false
1414
+ };
1414
1415
  //#endregion
1415
1416
  //#region src/cli/migrate/dependencies.ts
1416
1417
  var EXACT_PATTERNS = new Set([
1417
1418
  "eslint",
1418
- "prettier",
1419
1419
  "@useinsider/eslint-config",
1420
1420
  "globals",
1421
1421
  "vue-eslint-parser",
@@ -1431,23 +1431,30 @@ var PREFIX_PATTERNS = [
1431
1431
  var SCOPED_ESLINT_PATTERNS = [/^@[^/]+\/eslint-/u, /^@typescript-eslint\//u];
1432
1432
  var SAFELIST = new Set(["typescript", "@types/eslint"]);
1433
1433
  var SCOPE_TO_DEPS = {
1434
- javascript: dependencies$12,
1435
- javascriptDom: dependencies$11,
1436
- javascriptNode: dependencies$10,
1437
- typescript: dependencies$7,
1438
- typescriptDom: dependencies$6,
1439
- typescriptNode: dependencies$5,
1440
- vue2: dependencies$3,
1441
- vue3: dependencies$1,
1442
- vue2Typescript: dependencies$2,
1443
- vue3Typescript: dependencies,
1444
- jest: dependencies$9,
1445
- vitest: dependencies$4,
1446
- jsdocBasedTs: dependencies$8
1434
+ javascript: dependencies$6,
1435
+ javascriptDom: dependencies$5,
1436
+ javascriptNode: dependencies$4,
1437
+ typescript: dependencies$13,
1438
+ typescriptDom: dependencies$1,
1439
+ typescriptNode: dependencies,
1440
+ vue2: dependencies$11,
1441
+ vue3: dependencies$9,
1442
+ vue2Typescript: dependencies$10,
1443
+ vue3Typescript: dependencies$8,
1444
+ jest: dependencies$14,
1445
+ vitest: dependencies$12,
1446
+ jsdocBasedTs: dependencies$3
1447
1447
  };
1448
+ var ALL_PRESET_DEPS = [
1449
+ dependencies$7,
1450
+ dependencies$2,
1451
+ ...Object.values(SCOPE_TO_DEPS)
1452
+ ];
1453
+ var PRESET_DEPENDENCY_KEYS = new Set(ALL_PRESET_DEPS.flatMap((record) => Object.keys(record)));
1448
1454
  function isEslintRelatedDependency(name) {
1449
1455
  if (SAFELIST.has(name)) return false;
1450
1456
  if (EXACT_PATTERNS.has(name)) return true;
1457
+ if (PRESET_DEPENDENCY_KEYS.has(name)) return true;
1451
1458
  if (SCOPED_ESLINT_PATTERNS.some((pattern) => pattern.test(name))) return true;
1452
1459
  return PREFIX_PATTERNS.some((prefix) => name.startsWith(prefix));
1453
1460
  }
@@ -1469,20 +1476,57 @@ function pruneSection(record, removed) {
1469
1476
  });
1470
1477
  return sortRecord(kept);
1471
1478
  }
1479
+ function parseOverrideKey(key) {
1480
+ if (key.length === 0) return { baseName: key };
1481
+ const searchFrom = key.startsWith("@") ? 1 : 0;
1482
+ const atIndex = key.indexOf("@", searchFrom);
1483
+ if (atIndex === -1) return { baseName: key };
1484
+ return { baseName: key.slice(0, atIndex) };
1485
+ }
1486
+ function sortOverrides(record) {
1487
+ return Object.keys(record).sort((left, right) => left.localeCompare(right)).reduce((accumulator, key) => {
1488
+ accumulator[key] = record[key];
1489
+ return accumulator;
1490
+ }, {});
1491
+ }
1492
+ function pruneOverridesSection(record, removed) {
1493
+ if (!record) return record;
1494
+ const kept = {};
1495
+ Object.entries(record).forEach(([key, value]) => {
1496
+ if (!(typeof value === "string")) {
1497
+ kept[key] = value;
1498
+ return;
1499
+ }
1500
+ const { baseName } = parseOverrideKey(key);
1501
+ if (isEslintRelatedDependency(baseName)) {
1502
+ if (!removed.includes(baseName)) removed.push(baseName);
1503
+ return;
1504
+ }
1505
+ kept[key] = value;
1506
+ });
1507
+ return sortOverrides(kept);
1508
+ }
1472
1509
  function pruneEslintDependencies(manifest) {
1473
1510
  const removed = [];
1474
1511
  const next = { ...manifest };
1475
- const prunedDeps = pruneSection(manifest.dependencies, removed);
1476
- const prunedDev = pruneSection(manifest.devDependencies, removed);
1477
- if (manifest.dependencies) next.dependencies = prunedDeps;
1478
- if (manifest.devDependencies) next.devDependencies = prunedDev;
1512
+ if (manifest.dependencies) next.dependencies = pruneSection(manifest.dependencies, removed);
1513
+ if (manifest.devDependencies) next.devDependencies = pruneSection(manifest.devDependencies, removed);
1514
+ if (manifest.peerDependencies) next.peerDependencies = pruneSection(manifest.peerDependencies, removed);
1515
+ if (manifest.optionalDependencies) next.optionalDependencies = pruneSection(manifest.optionalDependencies, removed);
1516
+ if (manifest.overrides) next.overrides = pruneOverridesSection(manifest.overrides, removed);
1517
+ if (manifest.pnpm && typeof manifest.pnpm === "object") {
1518
+ const nextPnpm = { ...manifest.pnpm };
1519
+ if (manifest.pnpm.overrides) nextPnpm.overrides = pruneOverridesSection(manifest.pnpm.overrides, removed);
1520
+ next.pnpm = nextPnpm;
1521
+ }
1522
+ if (manifest.resolutions) next.resolutions = pruneSection(manifest.resolutions, removed);
1479
1523
  return {
1480
1524
  manifest: next,
1481
1525
  removed
1482
1526
  };
1483
1527
  }
1484
1528
  function lookupVersion(manifest, name) {
1485
- return manifest.dependencies?.[name] ?? manifest.devDependencies?.[name] ?? manifest.optionalDependencies?.[name];
1529
+ return manifest.dependencies?.[name] ?? manifest.devDependencies?.[name] ?? manifest.peerDependencies?.[name] ?? manifest.optionalDependencies?.[name];
1486
1530
  }
1487
1531
  function stripRange(version) {
1488
1532
  return version.replace(/^(?:\^|~|>=|<=|>|<|=)/u, "");
@@ -1504,10 +1548,10 @@ function buildInstallList(scopes, manifest) {
1504
1548
  appendSpec(specs, "@useinsider/eslint-config@latest");
1505
1549
  appendSpec(specs, resolveSpec("eslint", manifest, fallbacks));
1506
1550
  [...scopes].forEach((scope) => {
1507
- const list = SCOPE_TO_DEPS[scope];
1508
- if (!list) return;
1509
- list.forEach((packageName) => {
1510
- appendSpec(specs, resolveSpec(packageName, manifest, fallbacks));
1551
+ const record = SCOPE_TO_DEPS[scope];
1552
+ if (!record) return;
1553
+ Object.entries(record).forEach(([packageName, shouldInstall]) => {
1554
+ if (shouldInstall) appendSpec(specs, resolveSpec(packageName, manifest, fallbacks));
1511
1555
  });
1512
1556
  });
1513
1557
  return {