@rushstack/rush-sdk 5.147.2 → 5.148.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.
@@ -1476,6 +1476,14 @@ export declare interface IExperimentsJson {
1476
1476
  * When this toggle is enabled, Rush will only scan specific paths, significantly speeding up Git operations.
1477
1477
  */
1478
1478
  enableSubpathScan?: boolean;
1479
+ /**
1480
+ * Rush has a policy that normally requires Rush projects to specify `workspace:*` in package.json when depending
1481
+ * on other projects in the workspace, unless they are explicitly declared as `decoupledLocalDependencies`
1482
+ * in rush.json. Enabling this experiment will remove that requirement for dependencies belonging to a different
1483
+ * subspace. This is useful for large product groups who work in separate subspaces and generally prefer to consume
1484
+ * each other's packages via the NPM registry.
1485
+ */
1486
+ exemptDecoupledDependenciesBetweenSubspaces?: boolean;
1479
1487
  }
1480
1488
 
1481
1489
  /**
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.48.1"
8
+ "packageVersion": "7.49.1"
9
9
  }
10
10
  ]
11
11
  }
@@ -94,6 +94,14 @@ export interface IExperimentsJson {
94
94
  * When this toggle is enabled, Rush will only scan specific paths, significantly speeding up Git operations.
95
95
  */
96
96
  enableSubpathScan?: boolean;
97
+ /**
98
+ * Rush has a policy that normally requires Rush projects to specify `workspace:*` in package.json when depending
99
+ * on other projects in the workspace, unless they are explicitly declared as `decoupledLocalDependencies`
100
+ * in rush.json. Enabling this experiment will remove that requirement for dependencies belonging to a different
101
+ * subspace. This is useful for large product groups who work in separate subspaces and generally prefer to consume
102
+ * each other's packages via the NPM registry.
103
+ */
104
+ exemptDecoupledDependenciesBetweenSubspaces?: boolean;
97
105
  }
98
106
  /**
99
107
  * Use this class to load the "common/config/rush/experiments.json" config file.
@@ -1,32 +1,35 @@
1
1
  import type { ITerminal } from '@rushstack/terminal';
2
2
  import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
3
3
  import type { BuildCacheConfiguration } from '../../api/BuildCacheConfiguration';
4
- export interface IProjectBuildCacheOptions {
4
+ import type { OperationExecutionRecord } from '../operations/OperationExecutionRecord';
5
+ export interface IOperationBuildCacheOptions {
5
6
  /**
6
7
  * The repo-wide configuration for the build cache.
7
8
  */
8
9
  buildCacheConfiguration: BuildCacheConfiguration;
9
10
  /**
10
- * The project to be cached.
11
+ * The terminal to use for logging.
11
12
  */
12
- project: RushConfigurationProject;
13
+ terminal: ITerminal;
14
+ }
15
+ export type IProjectBuildCacheOptions = IOperationBuildCacheOptions & {
13
16
  /**
14
17
  * Value from rush-project.json
15
18
  */
16
19
  projectOutputFolderNames: ReadonlyArray<string>;
17
20
  /**
18
- * The hash of all relevant inputs and configuration that uniquely identifies this execution.
21
+ * The project to be cached.
19
22
  */
20
- operationStateHash: string;
23
+ project: RushConfigurationProject;
21
24
  /**
22
- * The terminal to use for logging.
25
+ * The hash of all relevant inputs and configuration that uniquely identifies this execution.
23
26
  */
24
- terminal: ITerminal;
27
+ operationStateHash: string;
25
28
  /**
26
29
  * The name of the phase that is being cached.
27
30
  */
28
31
  phaseName: string;
29
- }
32
+ };
30
33
  export declare class ProjectBuildCache {
31
34
  private static _tarUtilityPromise;
32
35
  private readonly _project;
@@ -40,6 +43,7 @@ export declare class ProjectBuildCache {
40
43
  private static _tryGetTarUtility;
41
44
  get cacheId(): string | undefined;
42
45
  static getProjectBuildCache(options: IProjectBuildCacheOptions): ProjectBuildCache;
46
+ static forOperation(operation: OperationExecutionRecord, options: IOperationBuildCacheOptions): ProjectBuildCache;
43
47
  tryRestoreFromCacheAsync(terminal: ITerminal, specifiedCacheId?: string): Promise<boolean>;
44
48
  trySetCacheEntryAsync(terminal: ITerminal, specifiedCacheId?: string): Promise<boolean>;
45
49
  /**
@@ -9,6 +9,8 @@ import type { IPhase } from '../../api/CommandLineConfiguration';
9
9
  import type { RushConfigurationProject } from '../../api/RushConfigurationProject';
10
10
  import { type ILogFilePaths } from './ProjectLogWritable';
11
11
  import type { IOperationExecutionResult } from './IOperationExecutionResult';
12
+ import type { IInputsSnapshot } from '../incremental/InputsSnapshot';
13
+ import type { BuildCacheConfiguration } from '../../api/BuildCacheConfiguration';
12
14
  export interface IOperationExecutionRecordContext {
13
15
  streamCollator: StreamCollator;
14
16
  onOperationStatusChanged?: (record: OperationExecutionRecord) => void;
@@ -80,6 +82,7 @@ export declare class OperationExecutionRecord implements IOperationRunnerContext
80
82
  private readonly _context;
81
83
  private _collatedWriter;
82
84
  private _status;
85
+ private _stateHash;
83
86
  constructor(operation: Operation, context: IOperationExecutionRecordContext);
84
87
  get name(): string;
85
88
  get weight(): number;
@@ -99,6 +102,7 @@ export declare class OperationExecutionRecord implements IOperationRunnerContext
99
102
  get status(): OperationStatus;
100
103
  set status(newStatus: OperationStatus);
101
104
  get silent(): boolean;
105
+ get stateHash(): string;
102
106
  /**
103
107
  * {@inheritdoc IOperationRunnerContext.runWithTerminalAsync}
104
108
  */
@@ -110,5 +114,9 @@ export declare class OperationExecutionRecord implements IOperationRunnerContext
110
114
  onStart: (record: OperationExecutionRecord) => Promise<OperationStatus | undefined>;
111
115
  onResult: (record: OperationExecutionRecord) => Promise<void>;
112
116
  }): Promise<void>;
117
+ calculateStateHash(options: {
118
+ inputsSnapshot: IInputsSnapshot;
119
+ buildCacheConfiguration: BuildCacheConfiguration;
120
+ }): string;
113
121
  }
114
122
  //# sourceMappingURL=OperationExecutionRecord.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/rush-sdk",
3
- "version": "5.147.2",
3
+ "version": "5.148.0",
4
4
  "description": "An API for interacting with the Rush engine",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,22 +35,22 @@
35
35
  "dependencies": {
36
36
  "@pnpm/lockfile.types": "~1.0.3",
37
37
  "tapable": "2.2.1",
38
- "@rushstack/lookup-by-path": "0.5.0",
39
- "@rushstack/package-deps-hash": "4.3.1",
40
- "@rushstack/node-core-library": "5.10.1",
41
- "@rushstack/terminal": "0.14.4"
38
+ "@rushstack/lookup-by-path": "0.5.2",
39
+ "@rushstack/node-core-library": "5.10.2",
40
+ "@rushstack/package-deps-hash": "4.3.3",
41
+ "@rushstack/terminal": "0.14.5"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/semver": "7.5.0",
45
45
  "@types/webpack-env": "1.18.0",
46
46
  "webpack": "~5.95.0",
47
- "@rushstack/heft": "0.68.11",
48
- "@microsoft/rush-lib": "5.147.2",
49
- "@rushstack/stream-collator": "4.1.79",
47
+ "@microsoft/rush-lib": "5.148.0",
48
+ "@rushstack/heft": "0.68.13",
49
+ "@rushstack/heft-webpack5-plugin": "0.11.11",
50
+ "@rushstack/stream-collator": "4.1.81",
50
51
  "local-node-rig": "1.0.0",
51
- "@rushstack/heft-webpack5-plugin": "0.11.9",
52
- "@rushstack/webpack-preserve-dynamic-require-plugin": "0.11.78",
53
- "@rushstack/ts-command-line": "4.23.2"
52
+ "@rushstack/webpack-preserve-dynamic-require-plugin": "0.11.80",
53
+ "@rushstack/ts-command-line": "4.23.3"
54
54
  },
55
55
  "scripts": {
56
56
  "build": "heft build --clean",