@rushstack/rush-resolver-cache-plugin 5.135.0-pr4927.0 → 5.135.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.
|
@@ -4,8 +4,7 @@ import type { RushSession, RushConfiguration, ILogger, Subspace } from '@rushsta
|
|
|
4
4
|
* @param rushSession - The Rush Session
|
|
5
5
|
* @param rushConfiguration - The Rush Configuration
|
|
6
6
|
* @param subspace - The subspace that was just installed
|
|
7
|
-
* @param variant - The variant that was just installed
|
|
8
7
|
* @param logger - The initialized logger
|
|
9
8
|
*/
|
|
10
|
-
export declare function afterInstallAsync(rushSession: RushSession, rushConfiguration: RushConfiguration, subspace: Subspace,
|
|
9
|
+
export declare function afterInstallAsync(rushSession: RushSession, rushConfiguration: RushConfiguration, subspace: Subspace, logger: ILogger): Promise<void>;
|
|
11
10
|
//# sourceMappingURL=afterInstallAsync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"afterInstallAsync.d.ts","sourceRoot":"","sources":["../src/afterInstallAsync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAEjB,OAAO,EAEP,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAgC7B
|
|
1
|
+
{"version":3,"file":"afterInstallAsync.d.ts","sourceRoot":"","sources":["../src/afterInstallAsync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAEjB,OAAO,EAEP,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAgC7B;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CA2Gf"}
|
package/lib/afterInstallAsync.js
CHANGED
|
@@ -28,13 +28,12 @@ function getPlatformInfo() {
|
|
|
28
28
|
* @param rushSession - The Rush Session
|
|
29
29
|
* @param rushConfiguration - The Rush Configuration
|
|
30
30
|
* @param subspace - The subspace that was just installed
|
|
31
|
-
* @param variant - The variant that was just installed
|
|
32
31
|
* @param logger - The initialized logger
|
|
33
32
|
*/
|
|
34
|
-
async function afterInstallAsync(rushSession, rushConfiguration, subspace,
|
|
33
|
+
async function afterInstallAsync(rushSession, rushConfiguration, subspace, logger) {
|
|
35
34
|
const { terminal } = logger;
|
|
36
35
|
const rushRoot = `${rushConfiguration.rushJsonFolder}/`;
|
|
37
|
-
const lockFilePath = subspace.
|
|
36
|
+
const lockFilePath = subspace.getCommittedShrinkwrapFilename();
|
|
38
37
|
const workspaceRoot = subspace.getSubspaceTempFolderPath();
|
|
39
38
|
const projectByImporterPath = rushConfiguration.getProjectLookupForRoot(workspaceRoot);
|
|
40
39
|
const pnpmStoreDir = `${rushConfiguration.pnpmOptions.pnpmStorePath}/v3/files/`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"afterInstallAsync.js","sourceRoot":"","sources":["../src/afterInstallAsync.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type {\n RushSession,\n RushConfiguration,\n RushConfigurationProject,\n ILogger,\n LookupByPath,\n Subspace\n} from '@rushstack/rush-sdk';\nimport type { IResolverCacheFile } from '@rushstack/webpack-workspace-resolve-plugin';\n\nimport { Async, FileSystem, PnpmShrinkwrapFile } from './externals';\nimport {\n computeResolverCacheFromLockfileAsync,\n type IPlatformInfo\n} from './computeResolverCacheFromLockfileAsync';\nimport type { IResolverContext } from './types';\n\n/**\n * Gets information used to determine compatibility of optional dependencies.\n * @returns Information about the platform Rush is running on\n */\nfunction getPlatformInfo(): IPlatformInfo {\n // Acquiring the libc version is a bit more obnoxious than platform and arch,\n // but all of them are ultimately on the same object.\n const {\n platform: os,\n arch: cpu,\n glibcVersionRuntime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } = (process.report?.getReport() as any)?.header ?? process;\n const libc: 'glibc' | 'musl' = glibcVersionRuntime ? 'glibc' : 'musl';\n\n return {\n os,\n cpu,\n libc\n };\n}\n\n/**\n * Plugin entry point for after install.\n * @param rushSession - The Rush Session\n * @param rushConfiguration - The Rush Configuration\n * @param subspace - The subspace that was just installed\n * @param variant - The variant that was just installed\n * @param logger - The initialized logger\n */\nexport async function afterInstallAsync(\n rushSession: RushSession,\n rushConfiguration: RushConfiguration,\n subspace: Subspace,\n variant: string | undefined,\n logger: ILogger\n): Promise<void> {\n const { terminal } = logger;\n const rushRoot: string = `${rushConfiguration.rushJsonFolder}/`;\n\n const lockFilePath: string = subspace.getCommittedShrinkwrapFilePath(variant);\n const workspaceRoot: string = subspace.getSubspaceTempFolderPath();\n\n const projectByImporterPath: LookupByPath<RushConfigurationProject> =\n rushConfiguration.getProjectLookupForRoot(workspaceRoot);\n\n const pnpmStoreDir: string = `${rushConfiguration.pnpmOptions.pnpmStorePath}/v3/files/`;\n\n terminal.writeLine(`Using pnpm-lock from: ${lockFilePath}`);\n terminal.writeLine(`Using pnpm store folder: ${pnpmStoreDir}`);\n\n const lockFile: PnpmShrinkwrapFile | undefined = PnpmShrinkwrapFile.loadFromFile(lockFilePath, {\n withCaching: true\n });\n if (!lockFile) {\n throw new Error(`Failed to load shrinkwrap file: ${lockFilePath}`);\n }\n\n const cacheFilePath: string = `${workspaceRoot}/resolver-cache.json`;\n\n terminal.writeLine(`Resolver cache will be written at ${cacheFilePath}`);\n\n async function afterExternalPackagesAsync(\n contexts: Map<string, IResolverContext>,\n missingOptionalDependencies: Set<string>\n ): Promise<void> {\n /**\n * Loads the index file from the pnpm store to discover nested package.json files in an external package\n * For internal packages, assumes there are no nested package.json files.\n * @param context - The context to find nested package.json files for\n * @returns A promise that resolves when the nested package.json files are found, if applicable\n */\n async function findNestedPackageJsonsForContextAsync(context: IResolverContext): Promise<void> {\n const { descriptionFileRoot, descriptionFileHash } = context;\n\n if (descriptionFileHash === undefined) {\n // Assume this package has no nested package json files for now.\n terminal.writeDebugLine(\n `Package at ${descriptionFileRoot} does not having a file list. Assuming no nested \"package.json\" files.`\n );\n return;\n }\n\n // Convert an integrity hash like\n // sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==\n // To its hex representation, e.g.\n // 0baba219027e1ade11c875d762dfaff5ff92375bfcdf1ebc511c20c4d43df1cbc7f24c62bb2c1618fe1778d675a5a3b367adda6377137220844093455258e52f\n const prefixIndex: number = descriptionFileHash.indexOf('-');\n const hash: string = Buffer.from(descriptionFileHash.slice(prefixIndex + 1), 'base64').toString('hex');\n\n // The pnpm store directory has index files of package contents at paths:\n // <store>/v3/files/<hash (0-2)>/<hash (2-)>-index.json\n // See https://github.com/pnpm/pnpm/blob/f394cfccda7bc519ceee8c33fc9b68a0f4235532/store/cafs/src/getFilePathInCafs.ts#L33\n const indexPath: string = `${pnpmStoreDir}${hash.slice(0, 2)}/${hash.slice(2)}-index.json`;\n\n try {\n const indexContent: string = await FileSystem.readFileAsync(indexPath);\n const { files } = JSON.parse(indexContent);\n\n const filteredFiles: string[] = Object.keys(files).filter((file) => file.endsWith('/package.json'));\n if (filteredFiles.length > 0) {\n const nestedPackageDirs: string[] = filteredFiles.map((x) =>\n x.slice(0, /* -'/package.json'.length */ -13)\n );\n\n if (nestedPackageDirs.length > 0) {\n // eslint-disable-next-line require-atomic-updates\n context.nestedPackageDirs = nestedPackageDirs;\n }\n }\n } catch (error) {\n if (!context.optional) {\n throw new Error(\n `Error reading index file for: \"${context.descriptionFileRoot}\" (${descriptionFileHash})`\n );\n } else {\n terminal.writeLine(`Trimming missing optional dependency at: ${descriptionFileRoot}`);\n contexts.delete(descriptionFileRoot);\n missingOptionalDependencies.add(descriptionFileRoot);\n }\n }\n }\n\n // For external packages, update the contexts with data from the pnpm store\n // This gives us the list of nested package.json files, as well as the actual package name\n // We could also cache package.json contents, but that proves to be inefficient.\n await Async.forEachAsync(contexts.values(), findNestedPackageJsonsForContextAsync, {\n concurrency: 20\n });\n }\n\n const cacheFile: IResolverCacheFile = await computeResolverCacheFromLockfileAsync({\n workspaceRoot,\n commonPrefixToTrim: rushRoot,\n platformInfo: getPlatformInfo(),\n projectByImporterPath,\n lockfile: lockFile,\n afterExternalPackagesAsync\n });\n\n const serialized: string = JSON.stringify(cacheFile);\n\n await FileSystem.writeFileAsync(cacheFilePath, serialized, {\n ensureFolderExists: true\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"afterInstallAsync.js","sourceRoot":"","sources":["../src/afterInstallAsync.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type {\n RushSession,\n RushConfiguration,\n RushConfigurationProject,\n ILogger,\n LookupByPath,\n Subspace\n} from '@rushstack/rush-sdk';\nimport type { IResolverCacheFile } from '@rushstack/webpack-workspace-resolve-plugin';\n\nimport { Async, FileSystem, PnpmShrinkwrapFile } from './externals';\nimport {\n computeResolverCacheFromLockfileAsync,\n type IPlatformInfo\n} from './computeResolverCacheFromLockfileAsync';\nimport type { IResolverContext } from './types';\n\n/**\n * Gets information used to determine compatibility of optional dependencies.\n * @returns Information about the platform Rush is running on\n */\nfunction getPlatformInfo(): IPlatformInfo {\n // Acquiring the libc version is a bit more obnoxious than platform and arch,\n // but all of them are ultimately on the same object.\n const {\n platform: os,\n arch: cpu,\n glibcVersionRuntime\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } = (process.report?.getReport() as any)?.header ?? process;\n const libc: 'glibc' | 'musl' = glibcVersionRuntime ? 'glibc' : 'musl';\n\n return {\n os,\n cpu,\n libc\n };\n}\n\n/**\n * Plugin entry point for after install.\n * @param rushSession - The Rush Session\n * @param rushConfiguration - The Rush Configuration\n * @param subspace - The subspace that was just installed\n * @param logger - The initialized logger\n */\nexport async function afterInstallAsync(\n rushSession: RushSession,\n rushConfiguration: RushConfiguration,\n subspace: Subspace,\n logger: ILogger\n): Promise<void> {\n const { terminal } = logger;\n const rushRoot: string = `${rushConfiguration.rushJsonFolder}/`;\n\n const lockFilePath: string = subspace.getCommittedShrinkwrapFilename();\n const workspaceRoot: string = subspace.getSubspaceTempFolderPath();\n\n const projectByImporterPath: LookupByPath<RushConfigurationProject> =\n rushConfiguration.getProjectLookupForRoot(workspaceRoot);\n\n const pnpmStoreDir: string = `${rushConfiguration.pnpmOptions.pnpmStorePath}/v3/files/`;\n\n terminal.writeLine(`Using pnpm-lock from: ${lockFilePath}`);\n terminal.writeLine(`Using pnpm store folder: ${pnpmStoreDir}`);\n\n const lockFile: PnpmShrinkwrapFile | undefined = PnpmShrinkwrapFile.loadFromFile(lockFilePath, {\n withCaching: true\n });\n if (!lockFile) {\n throw new Error(`Failed to load shrinkwrap file: ${lockFilePath}`);\n }\n\n const cacheFilePath: string = `${workspaceRoot}/resolver-cache.json`;\n\n terminal.writeLine(`Resolver cache will be written at ${cacheFilePath}`);\n\n async function afterExternalPackagesAsync(\n contexts: Map<string, IResolverContext>,\n missingOptionalDependencies: Set<string>\n ): Promise<void> {\n /**\n * Loads the index file from the pnpm store to discover nested package.json files in an external package\n * For internal packages, assumes there are no nested package.json files.\n * @param context - The context to find nested package.json files for\n * @returns A promise that resolves when the nested package.json files are found, if applicable\n */\n async function findNestedPackageJsonsForContextAsync(context: IResolverContext): Promise<void> {\n const { descriptionFileRoot, descriptionFileHash } = context;\n\n if (descriptionFileHash === undefined) {\n // Assume this package has no nested package json files for now.\n terminal.writeDebugLine(\n `Package at ${descriptionFileRoot} does not having a file list. Assuming no nested \"package.json\" files.`\n );\n return;\n }\n\n // Convert an integrity hash like\n // sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==\n // To its hex representation, e.g.\n // 0baba219027e1ade11c875d762dfaff5ff92375bfcdf1ebc511c20c4d43df1cbc7f24c62bb2c1618fe1778d675a5a3b367adda6377137220844093455258e52f\n const prefixIndex: number = descriptionFileHash.indexOf('-');\n const hash: string = Buffer.from(descriptionFileHash.slice(prefixIndex + 1), 'base64').toString('hex');\n\n // The pnpm store directory has index files of package contents at paths:\n // <store>/v3/files/<hash (0-2)>/<hash (2-)>-index.json\n // See https://github.com/pnpm/pnpm/blob/f394cfccda7bc519ceee8c33fc9b68a0f4235532/store/cafs/src/getFilePathInCafs.ts#L33\n const indexPath: string = `${pnpmStoreDir}${hash.slice(0, 2)}/${hash.slice(2)}-index.json`;\n\n try {\n const indexContent: string = await FileSystem.readFileAsync(indexPath);\n const { files } = JSON.parse(indexContent);\n\n const filteredFiles: string[] = Object.keys(files).filter((file) => file.endsWith('/package.json'));\n if (filteredFiles.length > 0) {\n const nestedPackageDirs: string[] = filteredFiles.map((x) => x.slice(0, /* -'/package.json'.length */ -13));\n\n if (nestedPackageDirs.length > 0) {\n // eslint-disable-next-line require-atomic-updates\n context.nestedPackageDirs = nestedPackageDirs;\n }\n }\n } catch (error) {\n if (!context.optional) {\n throw new Error(\n `Error reading index file for: \"${context.descriptionFileRoot}\" (${descriptionFileHash})`\n );\n } else {\n terminal.writeLine(`Trimming missing optional dependency at: ${descriptionFileRoot}`);\n contexts.delete(descriptionFileRoot);\n missingOptionalDependencies.add(descriptionFileRoot);\n }\n }\n }\n\n // For external packages, update the contexts with data from the pnpm store\n // This gives us the list of nested package.json files, as well as the actual package name\n // We could also cache package.json contents, but that proves to be inefficient.\n await Async.forEachAsync(contexts.values(), findNestedPackageJsonsForContextAsync, {\n concurrency: 20\n });\n }\n\n const cacheFile: IResolverCacheFile = await computeResolverCacheFromLockfileAsync({\n workspaceRoot,\n commonPrefixToTrim: rushRoot,\n platformInfo: getPlatformInfo(),\n projectByImporterPath,\n lockfile: lockFile,\n afterExternalPackagesAsync\n });\n\n const serialized: string = JSON.stringify(cacheFile);\n\n await FileSystem.writeFileAsync(cacheFilePath, serialized, {\n ensureFolderExists: true\n });\n}\n"]}
|
package/lib/index.js
CHANGED
|
@@ -34,7 +34,7 @@ class RushResolverCachePlugin {
|
|
|
34
34
|
this.pluginName = 'RushResolverCachePlugin';
|
|
35
35
|
}
|
|
36
36
|
apply(rushSession, rushConfiguration) {
|
|
37
|
-
rushSession.hooks.afterInstall.tapPromise(this.pluginName, async (command, subspace
|
|
37
|
+
rushSession.hooks.afterInstall.tapPromise(this.pluginName, async (command, subspace) => {
|
|
38
38
|
const logger = rushSession.getLogger('RushResolverCachePlugin');
|
|
39
39
|
if (rushConfiguration.packageManager !== 'pnpm') {
|
|
40
40
|
logger.emitError(new Error('The RushResolverCachePlugin currently only supports the "pnpm" package manager'));
|
|
@@ -52,7 +52,7 @@ class RushResolverCachePlugin {
|
|
|
52
52
|
/* webpackChunkMode: 'eager' */
|
|
53
53
|
/* webpackExports: ["afterInstallAsync"] */
|
|
54
54
|
'./afterInstallAsync')));
|
|
55
|
-
await afterInstallAsync(rushSession, rushConfiguration, subspace,
|
|
55
|
+
await afterInstallAsync(rushSession, rushConfiguration, subspace, logger);
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;AAW3D;;;GAGG;AACH,MAAqB,uBAAuB;IAA5C;QACkB,eAAU,GAA8B,yBAAyB,CAAC;IAoCpF,CAAC;IAlCQ,KAAK,CAAC,WAAwB,EAAE,iBAAoC;QACzE,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CACvC,IAAI,CAAC,UAAU,EACf,KAAK,EAAE,OAAqB,EAAE,QAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;AAW3D;;;GAGG;AACH,MAAqB,uBAAuB;IAA5C;QACkB,eAAU,GAA8B,yBAAyB,CAAC;IAoCpF,CAAC;IAlCQ,KAAK,CAAC,WAAwB,EAAE,iBAAoC;QACzE,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CACvC,IAAI,CAAC,UAAU,EACf,KAAK,EAAE,OAAqB,EAAE,QAAkB,EAAE,EAAE;YAClD,MAAM,MAAM,GAAY,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAEzE,IAAI,iBAAiB,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;gBAChD,MAAM,CAAC,SAAS,CACd,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAC5F,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,gBAAgB,GAAW,QAAQ,CACvC,iBAAiB,CAAC,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,WAAW,CAAC,EAAE,CACf,CAAC;YACF,oDAAoD;YACpD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC,CAAC;gBACpG,OAAO;YACT,CAAC;YAED,2FAA2F;YAC3F,MAAM,EAAE,iBAAiB,EAAE,GAAG;YAC5B,+BAA+B;YAC/B,2CAA2C;YAC3C,qBAAqB,GACtB,CAAC;YAEF,MAAM,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5E,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AArCD,0CAqCC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type {\n IRushPlugin,\n RushSession,\n RushConfiguration,\n IRushCommand,\n ILogger,\n Subspace\n} from '@rushstack/rush-sdk';\n\n/**\n * Plugin that caches information from the package manager after installation to speed up resolution of imports.\n * @beta\n */\nexport default class RushResolverCachePlugin implements IRushPlugin {\n public readonly pluginName: 'RushResolverCachePlugin' = 'RushResolverCachePlugin';\n\n public apply(rushSession: RushSession, rushConfiguration: RushConfiguration): void {\n rushSession.hooks.afterInstall.tapPromise(\n this.pluginName,\n async (command: IRushCommand, subspace: Subspace) => {\n const logger: ILogger = rushSession.getLogger('RushResolverCachePlugin');\n\n if (rushConfiguration.packageManager !== 'pnpm') {\n logger.emitError(\n new Error('The RushResolverCachePlugin currently only supports the \"pnpm\" package manager')\n );\n return;\n }\n\n const pnpmMajorVersion: number = parseInt(\n rushConfiguration.packageManagerToolVersion.split('.')[0],\n /* radix */ 10\n );\n // Lockfile format parsing logic changed in pnpm v8.\n if (pnpmMajorVersion < 8) {\n logger.emitError(new Error('The RushResolverCachePlugin currently only supports pnpm version >=8'));\n return;\n }\n\n // This plugin is not currently webpacked, but these comments are here for future proofing.\n const { afterInstallAsync } = await import(\n /* webpackChunkMode: 'eager' */\n /* webpackExports: [\"afterInstallAsync\"] */\n './afterInstallAsync'\n );\n\n await afterInstallAsync(rushSession, rushConfiguration, subspace, logger);\n }\n );\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rushstack/rush-resolver-cache-plugin",
|
|
3
|
-
"version": "5.135.0
|
|
3
|
+
"version": "5.135.0",
|
|
4
4
|
"description": "A Rush plugin that generates a resolver cache file after successful install.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
"main": "lib-commonjs/index.js",
|
|
12
12
|
"types": "dist/rush-resolver-cache-plugin.d.ts",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@rushstack/rush-sdk": "5.135.0
|
|
14
|
+
"@rushstack/rush-sdk": "5.135.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@types/webpack-env": "1.18.0",
|
|
18
|
-
"@rushstack/
|
|
18
|
+
"@rushstack/lookup-by-path": "0.2.2",
|
|
19
19
|
"@rushstack/node-core-library": "5.9.0",
|
|
20
|
+
"@rushstack/heft": "0.67.2",
|
|
20
21
|
"@rushstack/terminal": "0.14.2",
|
|
21
|
-
"
|
|
22
|
-
"@rushstack/webpack-workspace-resolve-plugin": "0.3.3"
|
|
23
|
-
"local-node-rig": "1.0.0"
|
|
22
|
+
"local-node-rig": "1.0.0",
|
|
23
|
+
"@rushstack/webpack-workspace-resolve-plugin": "0.3.3"
|
|
24
24
|
},
|
|
25
25
|
"exports": {
|
|
26
26
|
".": {
|