diff --git a/websites/api.rushstack.io/data/api_nav.json b/websites/api.rushstack.io/data/api_nav.json index 34f9b3d36..f4a231e4c 100644 --- a/websites/api.rushstack.io/data/api_nav.json +++ b/websites/api.rushstack.io/data/api_nav.json @@ -4778,6 +4778,11 @@ "label": "rushAlerts", "id": "pages/rush-lib.iexperimentsjson.rushalerts" }, + { + "type": "doc", + "label": "strictChangefileValidation", + "id": "pages/rush-lib.iexperimentsjson.strictchangefilevalidation" + }, { "type": "doc", "label": "useIPCScriptsInWatchMode", @@ -6422,6 +6427,11 @@ "label": "minimumReleaseAgeExclude", "id": "pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageexclude" }, + { + "type": "doc", + "label": "minimumReleaseAgeMinutes", + "id": "pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageminutes" + }, { "type": "doc", "label": "pnpmLockfilePolicies", @@ -13687,6 +13697,21 @@ "type": "doc", "label": "areDeepEqual", "id": "pages/node-core-library.objects.aredeepequal" + }, + { + "type": "doc", + "label": "isRecord", + "id": "pages/node-core-library.objects.isrecord" + }, + { + "type": "doc", + "label": "mergeWith", + "id": "pages/node-core-library.objects.mergewith" + }, + { + "type": "doc", + "label": "MergeWithCustomizer", + "id": "pages/node-core-library.objects.mergewithcustomizer" } ] }, diff --git a/websites/api.rushstack.io/docs/pages/node-core-library.objects.isrecord.md b/websites/api.rushstack.io/docs/pages/node-core-library.objects.isrecord.md new file mode 100644 index 000000000..fd9f7a30a --- /dev/null +++ b/websites/api.rushstack.io/docs/pages/node-core-library.objects.isrecord.md @@ -0,0 +1,58 @@ +--- +hide_title: true +custom_edit_url: null +pagination_prev: null +pagination_next: null +--- + + +[Home](./index.md) > [@rushstack/node-core-library](./node-core-library.md) > [Objects](./node-core-library.objects.md) > [isRecord](./node-core-library.objects.isrecord.md) + +## Objects.isRecord() function + +Returns `true` if `value` is a non-null, non-array plain object (i.e. assignable to `Record`<>), narrowing the type accordingly. + +**Signature:** + +```typescript +export declare function isRecord(value: unknown): value is Record; +``` + +## Parameters + + + +
+ +Parameter + + + + +Type + + + + +Description + + +
+ +value + + + + +unknown + + + + + +
+ +**Returns:** + +value is Record<string, unknown> + diff --git a/websites/api.rushstack.io/docs/pages/node-core-library.objects.md b/websites/api.rushstack.io/docs/pages/node-core-library.objects.md index 2ae1a85df..dfd4e354e 100644 --- a/websites/api.rushstack.io/docs/pages/node-core-library.objects.md +++ b/websites/api.rushstack.io/docs/pages/node-core-library.objects.md @@ -33,6 +33,54 @@ Description Determines if two objects are deeply equal. + + + +[isRecord(value)](./node-core-library.objects.isrecord.md) + + + + +Returns `true` if `value` is a non-null, non-array plain object (i.e. assignable to `Record`<>), narrowing the type accordingly. + + + + + +[mergeWith(target, source, customizer)](./node-core-library.objects.mergewith.md) + + + + +Recursively merges own enumerable string-keyed properties of `source` into `target`<>, invoking `customizer` for each property. Mutates and returns `target`<>. + + + + + +## Type Aliases + + +
+ +Type Alias + + + + +Description + + +
+ +[MergeWithCustomizer](./node-core-library.objects.mergewithcustomizer.md) + + + + +Customizer function for use with `mergeWith`<>. Return `undefined` to fall back to the default deep-merge behavior for that property. + +
diff --git a/websites/api.rushstack.io/docs/pages/node-core-library.objects.mergewith.md b/websites/api.rushstack.io/docs/pages/node-core-library.objects.mergewith.md new file mode 100644 index 000000000..e199ca75e --- /dev/null +++ b/websites/api.rushstack.io/docs/pages/node-core-library.objects.mergewith.md @@ -0,0 +1,92 @@ +--- +hide_title: true +custom_edit_url: null +pagination_prev: null +pagination_next: null +--- + + +[Home](./index.md) > [@rushstack/node-core-library](./node-core-library.md) > [Objects](./node-core-library.objects.md) > [mergeWith](./node-core-library.objects.mergewith.md) + +## Objects.mergeWith() function + +Recursively merges own enumerable string-keyed properties of `source` into `target`<>, invoking `customizer` for each property. Mutates and returns `target`<>. + +**Signature:** + +```typescript +export declare function mergeWith(target: TTarget, source: TSource, customizer?: MergeWithCustomizer): TTarget; +``` + +## Parameters + + + + + +
+ +Parameter + + + + +Type + + + + +Description + + +
+ +target + + + + +TTarget + + + + + +
+ +source + + + + +TSource + + + + + +
+ +customizer + + + + +[MergeWithCustomizer](./node-core-library.objects.mergewithcustomizer.md) + + + + +_(Optional)_ + + +
+ +**Returns:** + +TTarget + +## Remarks + +For each property in `source`<>, `customizer` is called with `(targetValue, sourceValue, key)`<>. If the customizer returns a value other than `undefined`<>, that value is assigned directly. Otherwise the default behavior applies: plain objects are merged recursively; all other values (arrays, primitives, `null`<>) overwrite the corresponding target property. + diff --git a/websites/api.rushstack.io/docs/pages/node-core-library.objects.mergewithcustomizer.md b/websites/api.rushstack.io/docs/pages/node-core-library.objects.mergewithcustomizer.md new file mode 100644 index 000000000..14d0c7f42 --- /dev/null +++ b/websites/api.rushstack.io/docs/pages/node-core-library.objects.mergewithcustomizer.md @@ -0,0 +1,19 @@ +--- +hide_title: true +custom_edit_url: null +pagination_prev: null +pagination_next: null +--- + + +[Home](./index.md) > [@rushstack/node-core-library](./node-core-library.md) > [Objects](./node-core-library.objects.md) > [MergeWithCustomizer](./node-core-library.objects.mergewithcustomizer.md) + +## Objects.MergeWithCustomizer type + +Customizer function for use with `mergeWith`<>. Return `undefined` to fall back to the default deep-merge behavior for that property. + +**Signature:** + +```typescript +export type MergeWithCustomizer = (objValue: unknown, srcValue: unknown, key: string) => unknown; +``` diff --git a/websites/api.rushstack.io/docs/pages/rush-lib.iexperimentsjson.md b/websites/api.rushstack.io/docs/pages/rush-lib.iexperimentsjson.md index 7ca888d8e..4faa50065 100644 --- a/websites/api.rushstack.io/docs/pages/rush-lib.iexperimentsjson.md +++ b/websites/api.rushstack.io/docs/pages/rush-lib.iexperimentsjson.md @@ -290,6 +290,25 @@ boolean **_(BETA)_** _(Optional)_ (UNDER DEVELOPMENT) The Rush alerts feature provides a way to send announcements to engineers working in the monorepo, by printing directly in the user's shell window when they invoke Rush commands. This ensures that important notices will be seen by anyone doing active development, since people often ignore normal discussion group messages or don't know to subscribe. + + + +[strictChangefileValidation?](./rush-lib.iexperimentsjson.strictchangefilevalidation.md) + + + + + + + +boolean + + + + +**_(BETA)_** _(Optional)_ If true, `rush change --verify` will perform additional validation of change files. Specifically, it will report errors if change files reference projects that do not exist in the Rush configuration, or if change files target a project that belongs to a lockstepped version policy but is not the policy's main project. + + diff --git a/websites/api.rushstack.io/docs/pages/rush-lib.iexperimentsjson.strictchangefilevalidation.md b/websites/api.rushstack.io/docs/pages/rush-lib.iexperimentsjson.strictchangefilevalidation.md new file mode 100644 index 000000000..b091ffe62 --- /dev/null +++ b/websites/api.rushstack.io/docs/pages/rush-lib.iexperimentsjson.strictchangefilevalidation.md @@ -0,0 +1,22 @@ +--- +hide_title: true +custom_edit_url: null +pagination_prev: null +pagination_next: null +--- + + +[Home](./index.md) > [@microsoft/rush-lib](./rush-lib.md) > [IExperimentsJson](./rush-lib.iexperimentsjson.md) > [strictChangefileValidation](./rush-lib.iexperimentsjson.strictchangefilevalidation.md) + +## IExperimentsJson.strictChangefileValidation property + +> This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +If true, `rush change --verify` will perform additional validation of change files. Specifically, it will report errors if change files reference projects that do not exist in the Rush configuration, or if change files target a project that belongs to a lockstepped version policy but is not the policy's main project. + +**Signature:** + +```typescript +strictChangefileValidation?: boolean; +``` diff --git a/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.md b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.md index bfb307e9a..1592f3858 100644 --- a/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.md +++ b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.md @@ -370,8 +370,6 @@ number \| undefined -The minimum number of minutes that must pass after a version is published before pnpm will install it. This setting helps reduce the risk of installing compromised packages, as malicious releases are typically discovered and removed within a short time frame. - @@ -391,7 +389,28 @@ string\[\] \| undefined -List of package names or patterns that are excluded from the minimumReleaseAge check. These packages will always install the newest version immediately, even if minimumReleaseAge is set. +List of package names or patterns that are excluded from the minimumReleaseAge check. These packages will always install the newest version immediately, even if minimumReleaseAgeMinutes is set. + + + + + +[minimumReleaseAgeMinutes](./rush-lib.pnpmoptionsconfiguration.minimumreleaseageminutes.md) + + + + +`readonly` + + + + +number \| undefined + + + + +The minimum number of minutes that must pass after a version is published before pnpm will install it. This setting helps reduce the risk of installing compromised packages, as malicious releases are typically discovered and removed within a short time frame. diff --git a/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseage.md b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseage.md index d0c6aab32..ecae7b9c2 100644 --- a/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseage.md +++ b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseage.md @@ -10,19 +10,13 @@ pagination_next: null ## PnpmOptionsConfiguration.minimumReleaseAge property -The minimum number of minutes that must pass after a version is published before pnpm will install it. This setting helps reduce the risk of installing compromised packages, as malicious releases are typically discovered and removed within a short time frame. +> Warning: This API is now obsolete. +> +> Use [PnpmOptionsConfiguration.minimumReleaseAgeMinutes](./rush-lib.pnpmoptionsconfiguration.minimumreleaseageminutes.md) instead. +> **Signature:** ```typescript -readonly minimumReleaseAge: number | undefined; +get minimumReleaseAge(): number | undefined; ``` - -## Remarks - -(SUPPORTED ONLY IN PNPM 10.16.0 AND NEWER) - -PNPM documentation: https://pnpm.io/settings\#minimumreleaseage - -The default value is 0 (disabled). - diff --git a/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageexclude.md b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageexclude.md index bda1fef41..03e07923c 100644 --- a/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageexclude.md +++ b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageexclude.md @@ -10,7 +10,7 @@ pagination_next: null ## PnpmOptionsConfiguration.minimumReleaseAgeExclude property -List of package names or patterns that are excluded from the minimumReleaseAge check. These packages will always install the newest version immediately, even if minimumReleaseAge is set. +List of package names or patterns that are excluded from the minimumReleaseAge check. These packages will always install the newest version immediately, even if minimumReleaseAgeMinutes is set. **Signature:** diff --git a/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageminutes.md b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageminutes.md new file mode 100644 index 000000000..88d731451 --- /dev/null +++ b/websites/api.rushstack.io/docs/pages/rush-lib.pnpmoptionsconfiguration.minimumreleaseageminutes.md @@ -0,0 +1,28 @@ +--- +hide_title: true +custom_edit_url: null +pagination_prev: null +pagination_next: null +--- + + +[Home](./index.md) > [@microsoft/rush-lib](./rush-lib.md) > [PnpmOptionsConfiguration](./rush-lib.pnpmoptionsconfiguration.md) > [minimumReleaseAgeMinutes](./rush-lib.pnpmoptionsconfiguration.minimumreleaseageminutes.md) + +## PnpmOptionsConfiguration.minimumReleaseAgeMinutes property + +The minimum number of minutes that must pass after a version is published before pnpm will install it. This setting helps reduce the risk of installing compromised packages, as malicious releases are typically discovered and removed within a short time frame. + +**Signature:** + +```typescript +readonly minimumReleaseAgeMinutes: number | undefined; +``` + +## Remarks + +(SUPPORTED ONLY IN PNPM 10.16.0 AND NEWER) + +PNPM documentation: https://pnpm.io/settings\#minimumreleaseage + +The default value is 0 (disabled). +