syncpack 14.3.1 → 15.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.
package/README.md CHANGED
@@ -6,7 +6,20 @@
6
6
  <br><a href="https://syncpack.dev">https://syncpack.dev</a>
7
7
  </p>
8
8
 
9
- Syncpack is used by [AWS](https://github.com/aws/aws-pdk), [Cloudflare](https://github.com/cloudflare/mcp-server-cloudflare), [DataDog](https://github.com/DataDog/datadog-ci), [Electron](https://github.com/electron/forge), [GoDaddy](https://github.com/godaddy/gasket), [LiveStore](https://github.com/livestorejs/livestore), [Lottie](https://github.com/LottieFiles/dotlottie-web), [Microsoft](https://github.com/microsoft/fluentui), [PostHog](https://github.com/PostHog/posthog), [Qwik](https://github.com/QwikDev/qwik), [Raycast](https://github.com/raycast/extensions), [Salesforce](https://github.com/SalesforceCommerceCloud/pwa-kit), [TopTal](https://github.com/toptal/picasso), [Vercel](https://github.com/vercel/vercel), [VoltAgent](https://github.com/VoltAgent/voltagent), [WooCommerce](https://github.com/woocommerce/woocommerce) and others.
9
+ Syncpack is used by [AWS](https://github.com/aws/aws-pdk), [Cloudflare](https://github.com/cloudflare/mcp-server-cloudflare), [DataDog](https://github.com/DataDog/datadog-ci), [Electron](https://github.com/electron/forge), [GoDaddy](https://github.com/godaddy/gasket), [Lottie](https://github.com/LottieFiles/dotlottie-web), [Microsoft](https://github.com/microsoft/fluentui), [PostHog](https://github.com/PostHog/posthog), [Qwik](https://github.com/QwikDev/qwik), [Raycast](https://github.com/raycast/extensions), [Salesforce](https://github.com/SalesforceCommerceCloud/pwa-kit), [TopTal](https://github.com/toptal/picasso), [Vercel](https://github.com/vercel/vercel), [VoltAgent](https://github.com/VoltAgent/voltagent), [WooCommerce](https://github.com/woocommerce/woocommerce) and others.
10
+
11
+ Some of the things it can do are:
12
+
13
+ - Find and fix dependency version mismatches.
14
+ - Enforce a single version policy, or create partitions with separate policies.
15
+ - Find and bump outdated versions from the npm registry.
16
+ - Ensure some dependencies always remain pinned at a specific version.
17
+ - Ban some dependencies from being used: anywhere, or in specific places.
18
+ - Define rules for where exact or loose semver ranges should be used, including in catalogs.
19
+ - Assign packages as the source of truth for specific dependencies' versions.
20
+ - Sort and format package.json files consistently.
21
+ - Auto-migrate all or parts of your repo to [pnpm catalogs](https://pnpm.io/catalogs) or [bun catalogs](https://bun.sh/docs/pm/catalogs).
22
+ - Bump outdated versions in catalogs.
10
23
 
11
24
  ## Installation
12
25
 
@@ -71,7 +84,7 @@ syncpack fix -h
71
84
 
72
85
  ### [update](https://syncpack.dev/command/update)
73
86
 
74
- Update packages to the latest versions from the npm registry, wherever they are in your monorepo.<br/>Semver range preferences are preserved when updating.
87
+ Update packages to the latest versions from the npm registry, wherever they are in your monorepo, including pnpm catalog entries in `pnpm-workspace.yaml`.<br/>Semver range preferences are preserved when updating.
75
88
 
76
89
  #### Examples
77
90
 
@@ -86,6 +99,10 @@ syncpack update --target patch
86
99
  syncpack update --check --source 'packages/pingu/package.json'
87
100
  # Update dependencies and devDependencies in the whole monorepo
88
101
  syncpack update --dependency-types dev,prod
102
+ # Update only pnpm catalog entries in pnpm-workspace.yaml
103
+ syncpack update --dependency-types pnpmCatalog
104
+ # Update only the named pnpm catalog 'react18'
105
+ syncpack update --dependency-types 'pnpmCatalog:react18'
89
106
  # Only update dependencies with a semver range specifier (^, ~, etc.)
90
107
  syncpack update --specifier-types range
91
108
  # Update dependencies where name exactly matches 'react'
package/index.cjs CHANGED
@@ -6,7 +6,8 @@ const { dirname, join } = require('node:path');
6
6
  const args = process.argv.slice(2);
7
7
  const arch = process.arch;
8
8
  const [os, extension] = ['win32', 'cygwin'].includes(process.platform) ? ['windows', '.exe'] : [process.platform, ''];
9
- const optionalDep = `syncpack-${os}-${arch}`;
9
+ const libc = isMusl() ? '-musl' : '';
10
+ const optionalDep = `syncpack-${os}-${arch}${libc}`;
10
11
  const binaryName = `syncpack${extension}`;
11
12
 
12
13
  const pathToBinary = resolveBinaryPath();
@@ -19,6 +20,16 @@ process.exit(
19
20
  }).status || 0,
20
21
  );
21
22
 
23
+ function isMusl() {
24
+ try {
25
+ if (process.platform !== 'linux') return false;
26
+ const { sharedObjects } = process.report.getReport();
27
+ return sharedObjects.some(obj => obj.includes('musl'));
28
+ } catch (_) {
29
+ return false;
30
+ }
31
+ }
32
+
22
33
  function resolveBinaryPath() {
23
34
  // Strategy 1: Resolve via package.json for pnpm Plug'n'Play
24
35
  try {
@@ -33,6 +44,6 @@ function resolveBinaryPath() {
33
44
  } catch (_) {}
34
45
 
35
46
  throw new Error(
36
- `Failed to resolve binary for ${os}-${arch}. Please ensure ${optionalDep} is installed as an optional dependency.`,
47
+ `Failed to resolve binary for ${os}-${arch}${libc}. Please ensure ${optionalDep} is installed as an optional dependency.`,
37
48
  );
38
49
  }
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": "14.3.1",
4
+ "version": "15.0.0",
5
5
  "author": "Jamie Mason <jamie@foldleft.io> (https://github.com/JamieMason)",
6
6
  "bugs": "https://github.com/JamieMason/syncpack/issues",
7
7
  "contributors": [
@@ -73,14 +73,14 @@
73
73
  "syncpack": "./index.cjs"
74
74
  },
75
75
  "optionalDependencies": {
76
- "syncpack-linux-x64": "14.3.1",
77
- "syncpack-linux-x64-musl": "14.3.1",
78
- "syncpack-linux-arm64": "14.3.1",
79
- "syncpack-linux-arm64-musl": "14.3.1",
80
- "syncpack-darwin-x64": "14.3.1",
81
- "syncpack-darwin-arm64": "14.3.1",
82
- "syncpack-windows-x64": "14.3.1",
83
- "syncpack-windows-arm64": "14.3.1"
76
+ "syncpack-linux-x64": "15.0.0",
77
+ "syncpack-linux-x64-musl": "15.0.0",
78
+ "syncpack-linux-arm64": "15.0.0",
79
+ "syncpack-linux-arm64-musl": "15.0.0",
80
+ "syncpack-darwin-x64": "15.0.0",
81
+ "syncpack-darwin-arm64": "15.0.0",
82
+ "syncpack-windows-x64": "15.0.0",
83
+ "syncpack-windows-arm64": "15.0.0"
84
84
  },
85
85
  "types": "./syncpack.d.ts"
86
86
  }
package/schema.json CHANGED
@@ -218,6 +218,11 @@
218
218
  "see": "https://syncpack.dev/config/max-concurrent-requests",
219
219
  "type": "number"
220
220
  },
221
+ "minimumReleaseAge": {
222
+ "description": "Skip dependency updates published less than this many minutes ago. `0` disables the filter. When omitted, the value from the project's `pnpm-workspace.yaml` is used; if neither is set, defaults to `1440` (one day). Setting it here always overrides the pnpm value.",
223
+ "see": "https://pnpm.io/settings#minimumreleaseage",
224
+ "type": "number"
225
+ },
221
226
  "semverGroups": {
222
227
  "items": {
223
228
  "$ref": "#/definitions/SemverGroup.Any"
package/syncpack.d.ts CHANGED
@@ -15,6 +15,14 @@ export interface RcFile {
15
15
  indent?: string;
16
16
  /** @see https://syncpack.dev/config/max-concurrent-requests */
17
17
  maxConcurrentRequests?: number;
18
+ /**
19
+ * Skip dependency updates published less than this many minutes ago.
20
+ * `0` disables the filter. When omitted, the value from the project's
21
+ * `pnpm-workspace.yaml` is used; if neither is set, defaults to `1440`
22
+ * (one day). Setting it here always overrides the pnpm value.
23
+ * @see https://pnpm.io/settings#minimumreleaseage
24
+ */
25
+ minimumReleaseAge?: number;
18
26
  /** @see https://syncpack.dev/semver-groups */
19
27
  semverGroups?: SemverGroup.Any[];
20
28
  /** @see https://syncpack.dev/config/sort-az */