@monorepolint/rules 0.5.0-alpha.103 → 0.5.0-alpha.106

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 (71) hide show
  1. package/.turbo/turbo-lint.log +34 -31
  2. package/.turbo/turbo-test.log +173 -166
  3. package/.turbo/turbo-transpile-typescript.log +4 -8
  4. package/build/js/index.js +75 -91
  5. package/build/js/index.js.map +1 -1
  6. package/build/tsconfig.tsbuildinfo +1 -1
  7. package/build/types/alphabeticalDependencies.d.ts +1 -15
  8. package/build/types/alphabeticalDependencies.d.ts.map +1 -1
  9. package/build/types/alphabeticalScripts.d.ts +1 -15
  10. package/build/types/alphabeticalScripts.d.ts.map +1 -1
  11. package/build/types/bannedDependencies.d.ts +36 -104
  12. package/build/types/bannedDependencies.d.ts.map +1 -1
  13. package/build/types/consistentDependencies.d.ts +3 -23
  14. package/build/types/consistentDependencies.d.ts.map +1 -1
  15. package/build/types/consistentVersions.d.ts +8 -34
  16. package/build/types/consistentVersions.d.ts.map +1 -1
  17. package/build/types/fileContents.d.ts +17 -89
  18. package/build/types/fileContents.d.ts.map +1 -1
  19. package/build/types/index.d.ts +13 -13
  20. package/build/types/index.d.ts.map +1 -1
  21. package/build/types/mustSatisfyPeerDependencies.d.ts +189 -483
  22. package/build/types/mustSatisfyPeerDependencies.d.ts.map +1 -1
  23. package/build/types/nestedWorkspaces.d.ts +1 -15
  24. package/build/types/nestedWorkspaces.d.ts.map +1 -1
  25. package/build/types/packageEntry.d.ts +30 -91
  26. package/build/types/packageEntry.d.ts.map +1 -1
  27. package/build/types/packageOrder.d.ts +3 -23
  28. package/build/types/packageOrder.d.ts.map +1 -1
  29. package/build/types/packageScript.d.ts +16 -68
  30. package/build/types/packageScript.d.ts.map +1 -1
  31. package/build/types/public/util.d.ts +2 -0
  32. package/build/types/public/util.d.ts.map +1 -0
  33. package/build/types/requireDependency.d.ts +22 -86
  34. package/build/types/requireDependency.d.ts.map +1 -1
  35. package/build/types/standardTsconfig.d.ts +9 -69
  36. package/build/types/standardTsconfig.d.ts.map +1 -1
  37. package/build/types/util/makeRule.d.ts +13 -0
  38. package/build/types/util/makeRule.d.ts.map +1 -0
  39. package/package.json +18 -12
  40. package/src/__tests__/alphabeticalScripts.spec.ts +2 -2
  41. package/src/__tests__/bannedDependencies.spec.ts +1 -3
  42. package/src/__tests__/consistentDependencies.spec.ts +2 -2
  43. package/src/__tests__/consistentVersions.spec.ts +1 -1
  44. package/src/__tests__/fileContents.spec.ts +16 -12
  45. package/src/__tests__/mustSatisfyPeerDependencies.spec.ts +1 -1
  46. package/src/__tests__/nestedWorkspaces.spec.ts +1 -1
  47. package/src/__tests__/packageEntry.spec.ts +40 -30
  48. package/src/__tests__/packageOrder.spec.ts +20 -12
  49. package/src/__tests__/packageScript.spec.ts +55 -39
  50. package/src/__tests__/requireDependency.spec.ts +2 -2
  51. package/src/alphabeticalDependencies.ts +5 -7
  52. package/src/alphabeticalScripts.ts +5 -7
  53. package/src/bannedDependencies.ts +6 -8
  54. package/src/consistentDependencies.ts +6 -7
  55. package/src/consistentVersions.ts +5 -6
  56. package/src/fileContents.ts +7 -8
  57. package/src/index.ts +13 -13
  58. package/src/mustSatisfyPeerDependencies.ts +5 -9
  59. package/src/nestedWorkspaces.ts +6 -7
  60. package/src/packageEntry.ts +6 -7
  61. package/src/packageOrder.ts +6 -7
  62. package/src/packageScript.ts +5 -7
  63. package/src/public/util.ts +1 -0
  64. package/src/requireDependency.ts +6 -6
  65. package/src/standardTsconfig.ts +7 -9
  66. package/src/util/makeRule.ts +29 -0
  67. package/build/js/index.cjs +0 -1491
  68. package/build/js/index.cjs.map +0 -1
  69. package/build/types/util/createNewRuleConversion.d.ts +0 -30
  70. package/build/types/util/createNewRuleConversion.d.ts.map +0 -1
  71. package/src/util/createNewRuleConversion.ts +0 -38
@@ -6,13 +6,9 @@
6
6
  CLI Using tsconfig: tsconfig.json
7
7
  CLI tsup v6.5.0
8
8
  CLI Using tsup config: /home/runner/work/monorepolint/monorepolint/tsup.config.cjs
9
- CLI Target: es2020
9
+ CLI Target: node16
10
10
  CLI Cleaning output folder
11
- CJS Build start
12
11
  ESM Build start
13
- CJS build/js/index.cjs 54.95 KB
14
- CJS build/js/index.cjs.map 104.74 KB
15
- CJS ⚡️ Build success in 118ms
16
- ESM build/js/index.js 51.54 KB
17
- ESM build/js/index.js.map 103.37 KB
18
- ESM ⚡️ Build success in 118ms
12
+ ESM build/js/index.js 50.14 KB
13
+ ESM build/js/index.js.map 100.26 KB
14
+ ESM ⚡️ Build success in 80ms
package/build/js/index.js CHANGED
@@ -41,58 +41,58 @@ function createIncorrectOrderErrorMessage(block, packageName) {
41
41
  return `Incorrect order of ${block} in ${packageName}'s package.json`;
42
42
  }
43
43
 
44
- // src/util/createNewRuleConversion.ts
45
- var id = 0;
46
- var NewRuleConverterBase = class {
47
- constructor(name, checkFunc, optionsRuntype, ruleEntry) {
48
- this.name = name;
49
- this.checkFunc = checkFunc;
50
- this.optionsRuntype = optionsRuntype;
51
- this.ruleEntry = ruleEntry;
52
- this.check = (context) => this.checkFunc(context, this.ruleEntry.options, { id: this.id });
53
- this.options = ruleEntry.options;
54
- this.id = `${this.name} :: ${id++}`;
55
- }
56
- };
57
- function createNewRuleConversion(name, old) {
58
- return class NewRule extends NewRuleConverterBase {
59
- constructor(ruleEntry) {
60
- super(name, old.check, old.optionsRuntype, ruleEntry);
61
- }
44
+ // src/util/makeRule.ts
45
+ var globalId = 0;
46
+ function makeRule({
47
+ name,
48
+ check,
49
+ optionsRuntype,
50
+ printStats
51
+ }) {
52
+ return function(ruleEntry) {
53
+ const id = `${name} :: ${globalId++}`;
54
+ return {
55
+ id,
56
+ check: (context) => check(context, ruleEntry.options, { id }),
57
+ name,
58
+ optionsRuntype,
59
+ ruleEntry,
60
+ printStats
61
+ };
62
62
  };
63
63
  }
64
64
 
65
65
  // src/alphabeticalDependencies.ts
66
66
  var Options = r.Undefined;
67
- var alphabeticalDependencies = {
68
- check: function expectAlphabeticalDependencies(context) {
67
+ var alphabeticalDependencies = makeRule({
68
+ name: "alphabeticalDependencies",
69
+ check: (context) => {
69
70
  checkAlpha(context, "dependencies");
70
71
  checkAlpha(context, "devDependencies");
71
72
  checkAlpha(context, "peerDependencies");
72
73
  },
73
74
  optionsRuntype: Options
74
- };
75
- var AlphabeticalDependencies = createNewRuleConversion("AlphabetialDependencies", alphabeticalDependencies);
75
+ });
76
76
 
77
77
  // src/alphabeticalScripts.ts
78
78
  import * as r2 from "runtypes";
79
79
  var Options2 = r2.Undefined;
80
- var alphabeticalScripts = {
81
- check: function expectAlphabeticalScripts(context) {
80
+ var alphabeticalScripts = makeRule({
81
+ name: "alphabeticalScripts",
82
+ check: (context) => {
82
83
  checkAlpha(context, "scripts");
83
84
  },
84
85
  optionsRuntype: Options2
85
- };
86
- var AlphabeticalScripts = createNewRuleConversion("AlphabeticalScripts", alphabeticalScripts);
86
+ });
87
87
 
88
88
  // src/bannedDependencies.ts
89
89
  import { matchesAnyGlob } from "@monorepolint/utils";
90
90
  import { AggregateTiming } from "@monorepolint/utils";
91
- import * as path2 from "path";
91
+ import * as path2 from "node:path";
92
92
  import * as r3 from "runtypes";
93
93
 
94
94
  // src/util/packageDependencyGraphService.ts
95
- import * as path from "path";
95
+ import * as path from "node:path";
96
96
  import resolvePackagePath from "resolve-package-path";
97
97
  var PackageDependencyGraphService = class {
98
98
  buildDependencyGraph(startPackageJsonPath, host, maxDepth) {
@@ -170,9 +170,10 @@ var Options3 = r3.Union(
170
170
  );
171
171
  var setCache = /* @__PURE__ */ new Map();
172
172
  var aggregateTiming = new AggregateTiming(":bannedDependencies stats");
173
- var bannedDependencies = {
174
- check: function expectAllowedDependencies(context, opts, extra) {
175
- aggregateTiming.start(extra?.id ?? "unknown id");
173
+ var bannedDependencies = makeRule({
174
+ name: "bannedDependencies",
175
+ check: (context, opts, extra) => {
176
+ aggregateTiming.start((extra == null ? void 0 : extra.id) ?? "unknown id");
176
177
  const packageJson = context.getPackageJson();
177
178
  const packagePath = context.getPackageJsonPath();
178
179
  const curDeps = packageJson.dependencies && Object.keys(packageJson.dependencies);
@@ -224,8 +225,7 @@ var bannedDependencies = {
224
225
  printStats: () => {
225
226
  aggregateTiming.printResults();
226
227
  }
227
- };
228
- var BannedDependencies = createNewRuleConversion("BannedDependencies", bannedDependencies);
228
+ });
229
229
  function populateProblemsExact(banned, dependencies, violations) {
230
230
  for (const dependency of dependencies) {
231
231
  if (banned.has(dependency)) {
@@ -267,21 +267,21 @@ var Options4 = r4.Record({
267
267
  ignoredDependencies: r4.Array(r4.String).Or(r4.Undefined)
268
268
  }).Or(r4.Undefined);
269
269
  var skippedVersions = ["*", "latest"];
270
- var consistentDependencies = {
271
- check: function expectConsistentDependencies(context, args) {
270
+ var consistentDependencies = makeRule({
271
+ name: "consistentDependencies",
272
+ check: (context, args) => {
272
273
  checkDeps(context, args, "dependencies");
273
274
  checkDeps(context, args, "devDependencies");
274
275
  },
275
276
  optionsRuntype: Options4
276
- };
277
- var ConsistentDependencies = createNewRuleConversion("ConsistentDependencies", consistentDependencies);
277
+ });
278
278
  function checkDeps(context, args, block) {
279
279
  const packageJson = context.getPackageJson();
280
280
  const packagePath = context.getPackageJsonPath();
281
281
  const dependencies = packageJson[block];
282
282
  const workspacePackageJson = context.getWorkspaceContext().getPackageJson();
283
283
  const workspaceDependencies = workspacePackageJson[block];
284
- const ignoredDeps = args?.ignoredDependencies ?? [];
284
+ const ignoredDeps = (args == null ? void 0 : args.ignoredDependencies) ?? [];
285
285
  const depsToCheck = workspaceDependencies == null || ignoredDeps.length === 0 ? workspaceDependencies : omit(workspaceDependencies, ignoredDeps);
286
286
  if (dependencies === void 0 || depsToCheck === void 0) {
287
287
  return;
@@ -328,10 +328,11 @@ import { coerce } from "semver";
328
328
  var Options5 = r5.Record({
329
329
  matchDependencyVersions: r5.Dictionary(r5.Union(r5.String, r5.Array(r5.String)))
330
330
  });
331
- var consistentVersions = {
331
+ var consistentVersions = makeRule({
332
+ name: "consistentVersions",
332
333
  check: checkConsistentVersions,
333
334
  optionsRuntype: Options5
334
- };
335
+ });
335
336
  function checkConsistentVersions(context, options) {
336
337
  for (const [dependencyPackageName, expectedPackageDependencyValue] of Object.entries(
337
338
  options.matchDependencyVersions
@@ -416,7 +417,6 @@ var ensurePackageMatchesSomeVersion = (context, dependencyPackageName, acceptedP
416
417
  });
417
418
  }
418
419
  };
419
- var ConsistentVersions = createNewRuleConversion("ConsistentVersions", consistentVersions);
420
420
 
421
421
  // src/fileContents.ts
422
422
  import { diff as diff3 } from "jest-diff";
@@ -442,8 +442,9 @@ var Options6 = r6.Union(
442
442
  templateFile: r6.String
443
443
  })
444
444
  );
445
- var fileContents = {
446
- check: function expectFileContents(context, opts) {
445
+ var fileContents = makeRule({
446
+ name: "fileContents",
447
+ check: (context, opts) => {
447
448
  const fullPath = path3.join(context.packageDir, opts.file);
448
449
  const expectedContent = getExpectedContents(context, opts);
449
450
  const pathExists = context.host.exists(fullPath);
@@ -466,7 +467,7 @@ var fileContents = {
466
467
  }
467
468
  },
468
469
  optionsRuntype: Options6
469
- };
470
+ });
470
471
  var optionsCache = /* @__PURE__ */ new Map();
471
472
  function getExpectedContents(context, opts) {
472
473
  if (optionsCache.has(opts)) {
@@ -490,11 +491,10 @@ function getExpectedContents(context, opts) {
490
491
  return opts.template;
491
492
  }
492
493
  }
493
- var FileContents = createNewRuleConversion("FileContents", fileContents);
494
494
 
495
495
  // src/mustSatisfyPeerDependencies.ts
496
496
  import { mutateJson as mutateJson2 } from "@monorepolint/utils";
497
- import * as path4 from "path";
497
+ import * as path4 from "node:path";
498
498
  import * as r7 from "runtypes";
499
499
  import { coerce as coerce2 } from "semver";
500
500
  import resolvePackagePath2 from "resolve-package-path";
@@ -638,14 +638,11 @@ var Options7 = r7.Union(
638
638
  enforceForDevDependencies: r7.Boolean
639
639
  })
640
640
  );
641
- var mustSatisfyPeerDependencies = {
641
+ var mustSatisfyPeerDependencies = makeRule({
642
+ name: "mustSatisfyPeerDependencies",
642
643
  check: checkSatisfyPeerDependencies,
643
644
  optionsRuntype: Options7
644
- };
645
- var MustSatisfyPeerDependencies = createNewRuleConversion(
646
- "MustSatisfyPeerDependencies",
647
- mustSatisfyPeerDependencies
648
- );
645
+ });
649
646
  var MATCH_ANY_VERSION_RANGE = /^(\*|x)$/;
650
647
  var MATCH_GREATER_OR_EQUAL_VERSION_RANGE = /^>= ?\d+(?:\.\d+|\.\d+\.\d+(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)?$/;
651
648
  var MATCH_MAJOR_VERSION_RANGE = /^(?:\^?\d+|\^?\d+\.x|\^?\d+\.x\.x|\^\d+\.\d+|\^\d+\.\d+\.x|\^\d+\.\d+\.\d+(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)$/;
@@ -989,8 +986,9 @@ var defaultKeyOrder = [
989
986
  "optionalDependencies",
990
987
  "publishConfig"
991
988
  ];
992
- var packageOrder = {
993
- check: function expectPackageOrder(context, opts) {
989
+ var packageOrder = makeRule({
990
+ name: "packageOrder",
991
+ check: (context, opts) => {
994
992
  const packageJson = context.getPackageJson();
995
993
  const packagePath = context.getPackageJsonPath();
996
994
  const order = opts === void 0 ? defaultKeyOrder : opts.order;
@@ -1013,8 +1011,7 @@ var packageOrder = {
1013
1011
  }
1014
1012
  },
1015
1013
  optionsRuntype: Options8
1016
- };
1017
- var PackageOrder = createNewRuleConversion("PackageOrder", packageOrder);
1014
+ });
1018
1015
  function arrayOrderCompare2(a, b) {
1019
1016
  for (let index = 0; index < a.length; index++) {
1020
1017
  if (a[index] !== b[index]) {
@@ -1068,8 +1065,9 @@ var Options9 = r9.Union(
1068
1065
  entriesExist: r9.Array(r9.String)
1069
1066
  })
1070
1067
  );
1071
- var packageEntry = {
1072
- check: function expectPackageEntry(context, options) {
1068
+ var packageEntry = makeRule({
1069
+ name: "packageEntry",
1070
+ check: (context, options) => {
1073
1071
  const packageJson = context.getPackageJson();
1074
1072
  if (options.entries) {
1075
1073
  for (const key of Object.keys(options.entries)) {
@@ -1102,8 +1100,7 @@ var packageEntry = {
1102
1100
  }
1103
1101
  },
1104
1102
  optionsRuntype: Options9
1105
- };
1106
- var PackageEntry = createNewRuleConversion("PackageEntry", packageEntry);
1103
+ });
1107
1104
  function createStandardizedEntryErrorMessage(key) {
1108
1105
  return `Expected standardized entry for '${key}'`;
1109
1106
  }
@@ -1127,8 +1124,9 @@ var Options10 = r10.Record({
1127
1124
  )
1128
1125
  });
1129
1126
  var MSG_NO_SCRIPTS_BLOCK = "No scripts block in package.json";
1130
- var packageScript = {
1131
- check: function expectPackageScript(context, options) {
1127
+ var packageScript = makeRule({
1128
+ name: "packageScript",
1129
+ check: (context, options) => {
1132
1130
  const packageJson = context.getPackageJson();
1133
1131
  if (packageJson.scripts === void 0) {
1134
1132
  context.addError({
@@ -1188,8 +1186,7 @@ var packageScript = {
1188
1186
  }
1189
1187
  },
1190
1188
  optionsRuntype: Options10
1191
- };
1192
- var PackageScript = createNewRuleConversion("PackageScript", packageScript);
1189
+ });
1193
1190
 
1194
1191
  // src/standardTsconfig.ts
1195
1192
  import { matchesAnyGlob as matchesAnyGlob2 } from "@monorepolint/utils";
@@ -1218,8 +1215,9 @@ var Options11 = r11.Partial({
1218
1215
  }
1219
1216
  return count === 1 || "Expect one of { generator, template, templateFile }";
1220
1217
  });
1221
- var standardTsconfig = {
1222
- check: async function expectStandardTsconfig(context, opts) {
1218
+ var standardTsconfig = makeRule({
1219
+ name: "standardTsconfig",
1220
+ check: async (context, opts) => {
1223
1221
  const tsconfigFileName = opts.file ?? DEFAULT_TSCONFIG_FILENAME;
1224
1222
  const fullPath = path5.resolve(context.packageDir, tsconfigFileName);
1225
1223
  const generator = getGenerator(context, opts);
@@ -1246,8 +1244,7 @@ var standardTsconfig = {
1246
1244
  }
1247
1245
  },
1248
1246
  optionsRuntype: Options11
1249
- };
1250
- var StandardTsConfig = createNewRuleConversion("StandardTsconfig", standardTsconfig);
1247
+ });
1251
1248
  function getGenerator(context, opts) {
1252
1249
  if (opts.generator) {
1253
1250
  return opts.generator;
@@ -1273,7 +1270,7 @@ function makeGenerator(template, excludedReferences, additionalReferences, tscon
1273
1270
  const deps = [...Object.keys(packageJson.dependencies || {}), ...Object.keys(packageJson.devDependencies || {})];
1274
1271
  for (const dep of deps) {
1275
1272
  const packageDir = nameToDirectory.get(dep);
1276
- if (packageDir !== void 0 && (excludedReferences === void 0 || matchesAnyGlob2(dep, excludedReferences))) {
1273
+ if (packageDir !== void 0 && (excludedReferences === void 0 || !matchesAnyGlob2(dep, excludedReferences))) {
1277
1274
  const absoluteReferencePath = tsconfigReferenceFile !== void 0 ? path5.join(packageDir, tsconfigReferenceFile) : packageDir;
1278
1275
  template.references.push({
1279
1276
  path: path5.relative(context.packageDir, absoluteReferencePath)
@@ -1293,10 +1290,11 @@ function makeGenerator(template, excludedReferences, additionalReferences, tscon
1293
1290
 
1294
1291
  // src/nestedWorkspaces.ts
1295
1292
  import * as globby from "globby";
1296
- import * as path6 from "path";
1293
+ import * as path6 from "node:path";
1297
1294
  import * as r12 from "runtypes";
1298
1295
  var Options12 = r12.Undefined;
1299
- var nestedWorkspaces = {
1296
+ var nestedWorkspaces = makeRule({
1297
+ name: "nestedWorkspaces",
1300
1298
  check: (context) => {
1301
1299
  const rootPackageJson = context.getWorkspaceContext().getPackageJson();
1302
1300
  const packageJsonPaths = globby.globbySync(["*/**/package.json", "!**/node_modules/**"]);
@@ -1320,8 +1318,7 @@ var nestedWorkspaces = {
1320
1318
  }
1321
1319
  },
1322
1320
  optionsRuntype: Options12
1323
- };
1324
- var NestedWorkspaces = createNewRuleConversion("NestedWorkspaces", nestedWorkspaces);
1321
+ });
1325
1322
 
1326
1323
  // src/requireDependency.ts
1327
1324
  import { mutateJson as mutateJson5 } from "@monorepolint/utils";
@@ -1333,8 +1330,9 @@ var Options13 = r13.Partial({
1333
1330
  peerDependencies: r13.Dictionary(r13.String),
1334
1331
  optionalDependencies: r13.Dictionary(r13.String)
1335
1332
  });
1336
- var requireDependency = {
1337
- check: function expectPackageEntry2(context, options) {
1333
+ var requireDependency = makeRule({
1334
+ name: "requireDependency",
1335
+ check: function expectPackageEntry(context, options) {
1338
1336
  const packageJson = context.getPackageJson();
1339
1337
  const packageJsonPath = context.getPackageJsonPath();
1340
1338
  [
@@ -1379,22 +1377,8 @@ var requireDependency = {
1379
1377
  });
1380
1378
  },
1381
1379
  optionsRuntype: Options13
1382
- };
1383
- var RequireDependency = createNewRuleConversion("RequireDependency", requireDependency);
1380
+ });
1384
1381
  export {
1385
- AlphabeticalDependencies,
1386
- AlphabeticalScripts,
1387
- BannedDependencies,
1388
- ConsistentDependencies,
1389
- ConsistentVersions,
1390
- FileContents,
1391
- MustSatisfyPeerDependencies,
1392
- NestedWorkspaces,
1393
- PackageEntry,
1394
- PackageOrder,
1395
- PackageScript,
1396
- RequireDependency,
1397
- StandardTsConfig,
1398
1382
  alphabeticalDependencies,
1399
1383
  alphabeticalScripts,
1400
1384
  bannedDependencies,
@@ -1422,7 +1406,7 @@ export {
1422
1406
  *
1423
1407
  */
1424
1408
  /*!
1425
- * Copyright 2022 Palantir Technologies, Inc.
1409
+ * Copyright 2023 Palantir Technologies, Inc.
1426
1410
  *
1427
1411
  * Licensed under the MIT license. See LICENSE file in the project root for details.
1428
1412
  *