syncpack 12.4.0 → 13.0.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 (98) hide show
  1. package/dist/bin-fix-mismatches/fix-mismatches.d.ts +2 -2
  2. package/dist/bin-fix-mismatches/fix-mismatches.js +13 -8
  3. package/dist/bin-fix-mismatches/index.js +1 -32
  4. package/dist/bin-format/format.d.ts +2 -2
  5. package/dist/bin-format/format.js +7 -5
  6. package/dist/bin-format/index.js +1 -26
  7. package/dist/bin-lint/index.js +1 -22
  8. package/dist/bin-lint/lint.d.ts +1 -1
  9. package/dist/bin-lint/lint.js +23 -23
  10. package/dist/bin-lint-semver-ranges/index.js +1 -36
  11. package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -2
  12. package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +5 -4
  13. package/dist/bin-list/index.js +1 -31
  14. package/dist/bin-list/list.d.ts +1 -1
  15. package/dist/bin-list/list.js +9 -5
  16. package/dist/bin-list-mismatches/index.js +1 -31
  17. package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -2
  18. package/dist/bin-list-mismatches/list-mismatches.js +15 -9
  19. package/dist/bin-prompt/index.js +1 -33
  20. package/dist/bin-prompt/prompt.d.ts +2 -2
  21. package/dist/bin-prompt/prompt.js +13 -11
  22. package/dist/bin-set-semver-ranges/index.js +1 -38
  23. package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +2 -2
  24. package/dist/bin-set-semver-ranges/set-semver-ranges.js +8 -5
  25. package/dist/bin-update/effects.js +43 -28
  26. package/dist/bin-update/index.js +1 -31
  27. package/dist/bin-update/update.d.ts +1 -1
  28. package/dist/bin-update/update.js +4 -4
  29. package/dist/bin.js +3 -3
  30. package/dist/config/get-custom-types.js +20 -13
  31. package/dist/config/get-enabled-types.js +27 -12
  32. package/dist/config/get-sort-exports.js +2 -1
  33. package/dist/error-handlers/default-error-handlers.js +2 -2
  34. package/dist/get-context/index.d.ts +2 -2
  35. package/dist/get-context/index.js +1 -1
  36. package/dist/get-instances/index.js +6 -6
  37. package/dist/get-instances/instance.js +6 -2
  38. package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +4 -2
  39. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +1 -1
  40. package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +2 -2
  41. package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +2 -2
  42. package/dist/get-package-json-files/get-patterns/index.js +3 -3
  43. package/dist/get-package-json-files/index.js +1 -1
  44. package/dist/get-package-json-files/package-json-file.d.ts +7 -0
  45. package/dist/get-package-json-files/package-json-file.js +18 -3
  46. package/dist/guards/can-add-to-group.js +15 -9
  47. package/dist/guards/is-semver.js +3 -1
  48. package/dist/io/ask-for-choice.js +3 -3
  49. package/dist/io/ask-for-input.js +2 -2
  50. package/dist/io/exit-if-invalid.js +1 -1
  51. package/dist/io/glob-sync.js +1 -1
  52. package/dist/io/index.d.ts +1 -1
  53. package/dist/io/index.js +1 -1
  54. package/dist/io/read-config-file.js +5 -3
  55. package/dist/io/read-file-sync.js +1 -1
  56. package/dist/io/read-json-file-sync.d.ts +2 -1
  57. package/dist/io/read-json-file-sync.js +9 -5
  58. package/dist/io/read-yaml-file-sync.js +1 -1
  59. package/dist/io/{to-json.d.ts → to-formatted-json.d.ts} +1 -1
  60. package/dist/io/{to-json.js → to-formatted-json.js} +11 -8
  61. package/dist/io/write-file-sync.js +2 -2
  62. package/dist/io/write-if-changed.js +3 -4
  63. package/dist/lib/format-repository-url.js +8 -5
  64. package/dist/lib/get-group-header.js +3 -1
  65. package/dist/lib/get.js +20 -12
  66. package/dist/lib/ring-buffer.js +1 -1
  67. package/dist/lib/set-semver-range.js +8 -4
  68. package/dist/lib/with-logger.js +1 -2
  69. package/dist/option.js +4 -1
  70. package/dist/semver-group/create-semver-groups.js +7 -3
  71. package/dist/semver-group/disabled.js +1 -1
  72. package/dist/semver-group/filtered-out.js +1 -1
  73. package/dist/semver-group/ignored.js +1 -1
  74. package/dist/semver-group/with-range.js +3 -3
  75. package/dist/specifier/alias.js +3 -2
  76. package/dist/specifier/exact.js +1 -1
  77. package/dist/specifier/hosted-git.js +5 -3
  78. package/dist/specifier/index.js +27 -15
  79. package/dist/specifier/latest.js +1 -1
  80. package/dist/specifier/lib/parse-specifier.js +3 -1
  81. package/dist/specifier/range.js +1 -1
  82. package/dist/specifier/workspace-protocol.js +2 -1
  83. package/dist/strategy/lib/get-non-empty-string-prop.js +1 -1
  84. package/dist/strategy/name-and-version-props.js +7 -7
  85. package/dist/strategy/named-version-string.js +11 -8
  86. package/dist/strategy/unnamed-version-string.js +6 -6
  87. package/dist/strategy/versions-by-name.js +4 -2
  88. package/dist/version-group/banned.js +1 -1
  89. package/dist/version-group/create-version-groups.js +11 -7
  90. package/dist/version-group/filtered-out.js +1 -1
  91. package/dist/version-group/ignored.js +1 -1
  92. package/dist/version-group/lib/get-preferred-version.js +22 -13
  93. package/dist/version-group/lib/get-range-score.js +3 -1
  94. package/dist/version-group/pinned.js +2 -2
  95. package/dist/version-group/same-range.js +6 -6
  96. package/dist/version-group/snapped-to.js +7 -5
  97. package/dist/version-group/standard.js +19 -16
  98. package/package.json +22 -25
@@ -14,13 +14,13 @@ export class PinnedVersionGroup extends Data.TaggedClass('Pinned') {
14
14
  return true;
15
15
  }
16
16
  inspectAll() {
17
- return Effect.all(Object.entries(groupBy('name', this.instances)).map(([name, instances]) => pipe(instances, Effect.forEach((instance) => pipe(Effect.succeed(Specifier.create(instance, this.config.pinVersion)), Effect.map((expected) => instance.rawSpecifier.raw === expected.raw
17
+ return Effect.all(Object.entries(groupBy('name', this.instances)).map(([name, instances]) => pipe(instances, Effect.forEach(instance => pipe(Effect.succeed(Specifier.create(instance, this.config.pinVersion)), Effect.map(expected => instance.rawSpecifier.raw === expected.raw
18
18
  ? // ✓ pinned takes precedence over any semver group
19
19
  // ✓ current version matches expected
20
20
  new Report.Valid(expected)
21
21
  : // ✓ pinned takes precedence over any semver group
22
22
  // ✘ current version mismatches expected
23
23
  // ✓ is a mismatch we can auto-fix
24
- new Report.PinnedMismatch(expected)))), Effect.map((reports) => ({ name, reports })))));
24
+ new Report.PinnedMismatch(expected)))), Effect.map(reports => ({ name, reports })))));
25
25
  }
26
26
  }
@@ -17,7 +17,7 @@ export class SameRangeVersionGroup extends Data.TaggedClass('SameRange') {
17
17
  return true;
18
18
  }
19
19
  inspectAll() {
20
- return Effect.all(Object.entries(groupBy('name', this.instances)).flatMap(([name, instances]) => pipe(instances, Effect.partition((instance) => pipe(Effect.succeed(Specifier.create(instance, instance.rawSpecifier.raw)), Effect.flatMap((specifier) => pipe(specifier.getSemver(), Effect.matchEffect({
20
+ return Effect.all(Object.entries(groupBy('name', this.instances)).flatMap(([name, instances]) => pipe(instances, Effect.partition(instance => pipe(Effect.succeed(Specifier.create(instance, instance.rawSpecifier.raw)), Effect.flatMap(specifier => pipe(specifier.getSemver(), Effect.matchEffect({
21
21
  onFailure: () => Effect.fail(
22
22
  // ✘ expected version is not semver
23
23
  // ✘ is a mismatch we can't auto-fix
@@ -28,7 +28,7 @@ export class SameRangeVersionGroup extends Data.TaggedClass('SameRange') {
28
28
  // ✘ expected version is not fixable by its semver group
29
29
  // ✘ is a mismatch we can't auto-fix
30
30
  new Report.UnsupportedMismatch(specifier.instance)),
31
- onSuccess: (valid) => specifier.instance.rawSpecifier.raw === valid.raw
31
+ onSuccess: valid => specifier.instance.rawSpecifier.raw === valid.raw
32
32
  ? Effect.succeed(
33
33
  // ✓ expected version is semver
34
34
  // ✓ expected version matches its semver group
@@ -42,7 +42,7 @@ export class SameRangeVersionGroup extends Data.TaggedClass('SameRange') {
42
42
  new Report.SemverRangeMismatch(valid)),
43
43
  })),
44
44
  }))))), Effect.map(([allMismatches, allMatches]) => allMismatches.length === 0
45
- ? allMatches.map((thisMatch) => {
45
+ ? allMatches.map(thisMatch => {
46
46
  if (thisMatch.specifier.instance.strategy.name === 'local') {
47
47
  // ✓ every instance is valid on its own
48
48
  // ✓ expected version is semver
@@ -66,18 +66,18 @@ export class SameRangeVersionGroup extends Data.TaggedClass('SameRange') {
66
66
  // ✓ current version matches expected
67
67
  // ! is not the original local package
68
68
  // ✘ current specifier does not match every other specifier
69
- return new Report.SameRangeMismatch(thisMatch.specifier.instance, uniq(mismatches.map((report) => String(report.specifier.instance.rawSpecifier.raw))));
69
+ return new Report.SameRangeMismatch(thisMatch.specifier.instance, uniq(mismatches.map(report => String(report.specifier.instance.rawSpecifier.raw))));
70
70
  })
71
71
  : // ✘ not every instance is valid on its own
72
72
  // ! report on their validity individually ! when all are valid
73
73
  // they can progress to being checked for having compatible
74
74
  // ranges
75
- [...allMatches, ...allMismatches]), Effect.map((reports) => ({ name, reports })))));
75
+ [...allMatches, ...allMismatches]), Effect.map(reports => ({ name, reports })))));
76
76
  }
77
77
  }
78
78
  /** Find all ranges/versions which this semver version does not cover */
79
79
  function getRangeMismatches(ctx, report, others) {
80
- return others.filter((other) => !matchesRange(ctx, report, other));
80
+ return others.filter(other => !matchesRange(ctx, report, other));
81
81
  }
82
82
  /** Does semver version `a` match semver version `b`? */
83
83
  function matchesRange(ctx, a, b) {
@@ -15,18 +15,19 @@ export class SnappedToVersionGroup extends Data.TaggedClass('SnappedTo') {
15
15
  }
16
16
  inspectAll() {
17
17
  return Effect.all(Object.entries(groupBy('name', this.instances)).flatMap(([name, instances]) => pipe(findSnappedToInstance(name, this.config.snapTo, instances), Effect.matchEffect({
18
- onFailure: () => Effect.succeed(instances.map((instance) =>
18
+ onFailure: () => Effect.succeed(instances.map(instance =>
19
19
  // ✘ none of the snapTo packages contain this dependency
20
20
  // ✘ is a user configuration error we can't auto-fix
21
21
  new Report.MissingSnappedToMismatch(instance))),
22
- onSuccess: (expected) => pipe(instances, Effect.forEach((instance) => pipe(Effect.Do, Effect.bind('specifier', () => Effect.succeed(Specifier.create(instance, instance.rawSpecifier.raw))), Effect.bind('expected', () => Effect.succeed(Specifier.create(instance, expected.rawSpecifier.raw))), Effect.flatMap(({ expected, specifier }) => pipe(expected.getSemver(), Effect.matchEffect({
22
+ onSuccess: expected => pipe(instances, Effect.forEach(instance => pipe(Effect.Do, Effect.bind('specifier', () => Effect.succeed(Specifier.create(instance, instance.rawSpecifier.raw))), Effect.bind('expected', () => Effect.succeed(Specifier.create(instance, expected.rawSpecifier.raw))), Effect.flatMap(({ expected, specifier }) => pipe(expected.getSemver(), Effect.matchEffect({
23
23
  onFailure: () => pipe(specifier.replaceWith(expected), specifier.instance.semverGroup.getFixed, Effect.match({
24
24
  onFailure: () =>
25
25
  // ✘ expected version is not semver
26
26
  // ✘ semver group expects semver
27
27
  // ✘ is a mismatch we can't auto-fix
28
28
  new Report.UnsupportedMismatch(specifier.instance),
29
- onSuccess: (valid) => specifier.instance.rawSpecifier.raw === valid.raw
29
+ onSuccess: valid => specifier.instance.rawSpecifier.raw ===
30
+ valid.raw
30
31
  ? // ! expected version is not semver
31
32
  // ✓ semver group is disabled/ignored
32
33
  // ✓ current version matches expected
@@ -44,7 +45,8 @@ export class SnappedToVersionGroup extends Data.TaggedClass('SnappedTo') {
44
45
  // ✘ is a mismatch we can't auto-fix
45
46
  // ✘ this should be impossible - we already proved the local version is exact semver
46
47
  new Report.UnsupportedMismatch(specifier.instance),
47
- onSuccess: (valid) => specifier.instance.rawSpecifier.raw === valid.raw
48
+ onSuccess: valid => specifier.instance.rawSpecifier.raw ===
49
+ valid.raw
48
50
  ? // ✓ expected version is semver
49
51
  // ✓ expected version matches its semver group
50
52
  // ✓ current version matches expected
@@ -56,7 +58,7 @@ export class SnappedToVersionGroup extends Data.TaggedClass('SnappedTo') {
56
58
  new Report.SnappedToMismatch(valid, expected.instance),
57
59
  })),
58
60
  })))))),
59
- }), Effect.map((reports) => ({ name, reports })))));
61
+ }), Effect.map(reports => ({ name, reports })))));
60
62
  }
61
63
  }
62
64
  function findSnappedToInstance(name, snapTo, instances) {
@@ -21,15 +21,15 @@ export class StandardVersionGroup extends Data.TaggedClass('Standard') {
21
21
  const localInstance = getLocalInstance(instances);
22
22
  if (localInstance) {
23
23
  const localVersion = localInstance?.rawSpecifier.raw;
24
- return pipe(Effect.succeed(Specifier.create(localInstance, localVersion)), Effect.flatMap((local) => Effect.all(local._tag !== 'Exact' && instances.length > 1
25
- ? instances.map((instance) =>
24
+ return pipe(Effect.succeed(Specifier.create(localInstance, localVersion)), Effect.flatMap(local => Effect.all(local._tag !== 'Exact' && instances.length > 1
25
+ ? instances.map(instance =>
26
26
  // ! dependency is a package developed in this repo
27
27
  // ✘ local package has an invalid .version property
28
28
  // ✘ is a mismatch we can't auto-fix
29
29
  Effect.succeed(new Report.MissingLocalVersion(instance, localInstance)))
30
- : instances.flatMap((instance) =>
30
+ : instances.flatMap(instance =>
31
31
  // instances.flatMap((instance) =>
32
- pipe(Effect.succeed(Specifier.create(instance, instance.rawSpecifier.raw)), Effect.flatMap((specifier) => specifier.instance === localInstance
32
+ pipe(Effect.succeed(Specifier.create(instance, instance.rawSpecifier.raw)), Effect.flatMap(specifier => specifier.instance === localInstance
33
33
  ? // ✓ this is the local package which the others should match
34
34
  // ! its version must always remain as exact semver
35
35
  // ! other instances need to be adjusted for their semver groups
@@ -41,12 +41,14 @@ export class StandardVersionGroup extends Data.TaggedClass('Standard') {
41
41
  // ✘ is a mismatch we can't auto-fix
42
42
  // ✘ this should be impossible - we already proved the local version is exact semver
43
43
  new Report.UnsupportedMismatch(specifier.instance),
44
- onSuccess: (valid) => specifier.instance.rawSpecifier.raw === valid.raw
44
+ onSuccess: valid => specifier.instance.rawSpecifier.raw ===
45
+ valid.raw
45
46
  ? // ! is not the local package instance
46
47
  // ✓ local version matches this semver group
47
48
  // ✓ current version matches local
48
49
  new Report.Valid(specifier)
49
- : localVersion === 'PACKAGE_JSON_HAS_NO_VERSION'
50
+ : localVersion ===
51
+ 'PACKAGE_JSON_HAS_NO_VERSION'
50
52
  ? // ! is not the local package instance
51
53
  // ✘ local package has a version defined
52
54
  // ✓ local version matches this semver group
@@ -57,37 +59,38 @@ export class StandardVersionGroup extends Data.TaggedClass('Standard') {
57
59
  // ✓ local version matches this semver group
58
60
  // ✘ current version mismatches local
59
61
  new Report.LocalPackageMismatch(valid, localInstance),
60
- }))))))), Effect.map((reports) => ({ name, reports })));
62
+ }))))))), Effect.map(reports => ({ name, reports })));
61
63
  }
62
64
  const PreferredMismatch = this.config.preferVersion === 'lowestSemver'
63
65
  ? Report.LowestSemverMismatch
64
66
  : Report.HighestSemverMismatch;
65
- return pipe(Effect.succeed(instances.map((instance) => Specifier.create(instance, instance.rawSpecifier.raw))), Effect.flatMap((specifiers) => pipe(getPreferredVersion(this.config.preferVersion, specifiers), Effect.matchEffect({
66
- onFailure: () => Effect.succeed(uniq(specifiers.map((specifier) => specifier.instance.rawSpecifier.raw))
67
- .length === 1
68
- ? specifiers.map((specifier) =>
67
+ return pipe(Effect.succeed(instances.map(instance => Specifier.create(instance, instance.rawSpecifier.raw))), Effect.flatMap(specifiers => pipe(getPreferredVersion(this.config.preferVersion, specifiers), Effect.matchEffect({
68
+ onFailure: () => Effect.succeed(uniq(specifiers.map(specifier => specifier.instance.rawSpecifier.raw)).length === 1
69
+ ? specifiers.map(specifier =>
69
70
  // ✘ not every version is semver
70
71
  // ✓ every version is identical
71
72
  // ✓ is a match
72
73
  new Report.Valid(specifier))
73
- : instances.map((instance) =>
74
+ : instances.map(instance =>
74
75
  // ✘ not every version is semver
75
76
  // ✘ some versions are not identical
76
77
  // ✘ is a mismatch we can't auto-fix
77
78
  new Report.UnsupportedMismatch(instance))),
78
- onSuccess: (expectedVersion) => pipe(specifiers, Effect.forEach((current) => pipe(current.replaceWith(expectedVersion), current.instance.semverGroup.getFixed, Effect.match({
79
+ onSuccess: expectedVersion => pipe(specifiers, Effect.forEach(current => pipe(current.replaceWith(expectedVersion), current.instance.semverGroup.getFixed, Effect.match({
79
80
  onFailure: /* istanbul ignore next */ () =>
80
81
  // ✓ every version is semver
81
82
  // ✘ expected version is not fixable by its semver group
82
83
  // ✘ is a mismatch we can't auto-fix
83
84
  // ✘ this should be impossible - any valid semver is fixable by a semver group
84
85
  new Report.UnsupportedMismatch(current.instance),
85
- onSuccess: (expectedRange) => current.instance.rawSpecifier.raw === expectedRange.raw
86
+ onSuccess: expectedRange => current.instance.rawSpecifier.raw ===
87
+ expectedRange.raw
86
88
  ? // ✓ every version is semver
87
89
  // ✓ current version matches expected semver
88
90
  // ✓ current version matches expected version
89
91
  new Report.Valid(current)
90
- : current.instance.rawSpecifier.raw === expectedVersion.raw
92
+ : current.instance.rawSpecifier.raw ===
93
+ expectedVersion.raw
91
94
  ? // ✓ every version is semver
92
95
  // ✓ current version matches expected version
93
96
  // ✘ current version does not match expected semver
@@ -99,7 +102,7 @@ export class StandardVersionGroup extends Data.TaggedClass('Standard') {
99
102
  // ✓ is a mismatch we can auto-fix
100
103
  new PreferredMismatch(expectedRange),
101
104
  })))),
102
- }))), Effect.map((reports) => ({ name, reports })));
105
+ }))), Effect.map(reports => ({ name, reports })));
103
106
  }));
104
107
  }
105
108
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "syncpack",
3
3
  "description": "Consistent dependency versions in large JavaScript Monorepos",
4
- "version": "12.4.0",
4
+ "version": "13.0.0",
5
5
  "author": "Jamie Mason <jamie@foldleft.io> (https://github.com/JamieMason)",
6
6
  "bin": {
7
7
  "syncpack": "dist/bin.js",
@@ -41,19 +41,21 @@
41
41
  "Michał Warać (https://github.com/auto200)",
42
42
  "Nick Saunders (https://github.com/nsaunders)",
43
43
  "Siraj (https://github.com/Syhner)",
44
+ "Stuart Knightley (https://github.com/Stuk)",
44
45
  "Tom Fletcher (https://github.com/tom-fletcher)"
45
46
  ],
46
47
  "dependencies": {
47
- "@effect/schema": "0.69.0",
48
+ "@effect/schema": "0.71.1",
48
49
  "chalk": "5.3.0",
49
50
  "chalk-template": "1.1.0",
50
51
  "commander": "12.1.0",
51
52
  "cosmiconfig": "9.0.0",
52
- "effect": "3.5.7",
53
+ "effect": "3.6.5",
53
54
  "enquirer": "2.4.1",
54
- "fast-check": "3.20.0",
55
+ "fast-check": "3.21.0",
55
56
  "globby": "14.0.2",
56
- "minimatch": "10.0.1",
57
+ "jsonc-parser": "3.3.1",
58
+ "minimatch": "9.0.5",
57
59
  "npm-package-arg": "11.0.3",
58
60
  "ora": "8.0.1",
59
61
  "prompts": "2.4.2",
@@ -63,32 +65,26 @@
63
65
  "ts-toolbelt": "9.6.0"
64
66
  },
65
67
  "devDependencies": {
68
+ "@biomejs/biome": "1.8.3",
66
69
  "@release-it/conventional-changelog": "8.0.1",
67
70
  "@tsconfig/node18": "18.2.4",
68
- "@types/node": "20.14.12",
71
+ "@types/node": "22.5.0",
69
72
  "@types/npm-package-arg": "6.1.4",
70
73
  "@types/prompts": "2.4.9",
71
74
  "@types/semver": "7.5.8",
72
- "@typescript-eslint/eslint-plugin": "7.17.0",
73
- "@typescript-eslint/parser": "7.17.0",
74
- "@vitest/coverage-v8": "2.0.4",
75
+ "@vitest/coverage-v8": "2.0.5",
75
76
  "auto-changelog": "2.4.0",
76
- "eslint": "8.56.0",
77
- "eslint-plugin-import": "2.29.1",
78
- "memfs": "4.9.4",
77
+ "memfs": "4.11.1",
79
78
  "prettier": "3.3.3",
80
79
  "prettier-plugin-astro": "0.14.1",
81
- "quill-delta": "5.1.0",
82
80
  "release-it": "17.6.0",
83
- "rxjs": "7.8.1",
84
81
  "ts-node": "10.9.2",
85
- "tslib": "2.6.3",
86
82
  "typescript": "5.5.4",
87
- "typescript-json-schema": "0.64.0",
88
- "vitest": "2.0.4"
83
+ "typescript-json-schema": "0.65.1",
84
+ "vitest": "2.0.5"
89
85
  },
90
86
  "engines": {
91
- "node": ">=16"
87
+ "node": ">=18.18.0"
92
88
  },
93
89
  "exports": "./dist/index.js",
94
90
  "files": [
@@ -122,15 +118,16 @@
122
118
  "build:json-schema": "typescript-json-schema --esModuleInterop --noExtraProps --ignoreErrors src/index.ts RcFile --out dist/schema.json",
123
119
  "build:source": "tsc --project tsconfig.build.json",
124
120
  "clean": "rm -rf ./dist",
125
- "format": "pnpm run format:lint && pnpm run format:source",
126
- "format:lint": "eslint --ext .ts . --fix",
127
- "format:source": "prettier --write .",
128
- "lint": "pnpm run lint:ts && pnpm run lint:eslint",
129
- "lint:eslint": "eslint --ext .ts .",
130
- "lint:ts": "tsc --noEmit --project tsconfig.json",
121
+ "format": "pnpm run format:source && pnpm run format:astro",
122
+ "format:astro": "prettier --write site/src",
123
+ "format:source": "biome check --write --unsafe",
124
+ "lint": "npm run lint:source && npm run lint:engines",
125
+ "lint:engines": "node scripts/check-engines.mjs",
126
+ "lint:source": "biome check && tsc --noEmit",
131
127
  "prepack": "pnpm run build",
132
128
  "release": "release-it",
133
- "test": "vitest run --config vitest.config.ts"
129
+ "test": "vitest run --coverage src",
130
+ "test:watch": "vitest run --no-coverage --watch"
134
131
  },
135
132
  "type": "module",
136
133
  "types": "./dist/index.d.ts"