@rushstack/lockfile-explorer 1.4.5 → 1.4.7
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandLine.test.d.ts","sourceRoot":"","sources":["../src/commandLine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandLine.test.js","sourceRoot":"","sources":["../src/commandLine.test.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;AAE3D,+CAAiD;AAEjD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,CAAC,YAAY,CAAC,CAAC,CAAA;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","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 { parseCommandLine } from './commandLine';\n\ndescribe('commandLine', () => {\n describe('parseCommandLine()', () => {\n it('sets showHelp when --help specified', async () => {\n const result = parseCommandLine(['--help'])\n expect(result).toHaveProperty('showedHelp', true);\n });\n\n it('sets subspace when --subspace specified', async () => {\n const result = parseCommandLine(['--subspace', 'wallet'])\n expect(result).toHaveProperty('subspace', 'wallet');\n });\n\n it('sets error when --subspace value not missing', async () => {\n const result = parseCommandLine(['--subspace'])\n expect(result).toHaveProperty('error', 'Expecting argument after \"--subspace\"');\n });\n });\n});\n\n"]}
|
package/lib/start.js
CHANGED
|
@@ -39,12 +39,11 @@ function startApp(debugMode) {
|
|
|
39
39
|
const SERVICE_URL = `http://localhost:${PORT}`;
|
|
40
40
|
const result = (0, commandLine_1.parseCommandLine)(process_1.default.argv.slice(2));
|
|
41
41
|
if (result.showedHelp) {
|
|
42
|
-
console.error('\nFor help, use: ' + terminal_1.Colorize.yellow('lockfile-explorer --help'));
|
|
43
|
-
process_1.default.exitCode = 1;
|
|
44
42
|
return;
|
|
45
43
|
}
|
|
46
44
|
if (result.error) {
|
|
47
45
|
console.error('\n' + terminal_1.Colorize.red('ERROR: ' + result.error));
|
|
46
|
+
console.error('\nFor help, use: ' + terminal_1.Colorize.yellow('lockfile-explorer --help'));
|
|
48
47
|
process_1.default.exitCode = 1;
|
|
49
48
|
return;
|
|
50
49
|
}
|
package/lib/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.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 express from 'express';\nimport yaml from 'js-yaml';\nimport cors from 'cors';\nimport process from 'process';\nimport open from 'open';\nimport updateNotifier from 'update-notifier';\nimport { AlreadyReportedError } from '@rushstack/node-core-library';\nimport { FileSystem, type IPackageJson, JsonFile, PackageJsonLookup } from '@rushstack/node-core-library';\nimport type { IAppContext } from '@rushstack/lockfile-explorer-web/lib/AppContext';\nimport { Colorize } from '@rushstack/terminal';\nimport type { Lockfile } from '@pnpm/lockfile-types';\n\nimport { convertLockfileV6DepPathToV5DepPath } from './utils';\nimport { init } from './init';\nimport type { IAppState } from './state';\nimport { type ICommandLine, parseCommandLine } from './commandLine';\n\nfunction startApp(debugMode: boolean): void {\n const lockfileExplorerProjectRoot: string = PackageJsonLookup.instance.tryGetPackageFolderFor(__dirname)!;\n const lockfileExplorerPackageJson: IPackageJson = JsonFile.load(\n `${lockfileExplorerProjectRoot}/package.json`\n );\n const appVersion: string = lockfileExplorerPackageJson.version;\n\n console.log(\n Colorize.bold(`\\nRush Lockfile Explorer ${appVersion}`) + Colorize.cyan(' - https://lfx.rushstack.io/\\n')\n );\n\n updateNotifier({\n pkg: lockfileExplorerPackageJson,\n // Normally update-notifier waits a day or so before it starts displaying upgrade notices.\n // In debug mode, show the notice right away.\n updateCheckInterval: debugMode ? 0 : undefined\n }).notify({\n // Make sure it says \"-g\" in the \"npm install\" example command line\n isGlobal: true,\n // Show the notice immediately, rather than waiting for process.onExit()\n defer: false\n });\n\n const PORT: number = 8091;\n // Must not have a trailing slash\n const SERVICE_URL: string = `http://localhost:${PORT}`;\n\n const result: ICommandLine = parseCommandLine(process.argv.slice(2));\n if (result.showedHelp) {\n console.error('\\nFor help, use: ' + Colorize.yellow('lockfile-explorer --help'));\n process.exitCode = 1;\n return;\n }\n\n if (result.error) {\n console.error('\\n' + Colorize.red('ERROR: ' + result.error));\n process.exitCode = 1;\n return;\n }\n\n const subspaceName: string = result.subspace ?? 'default';\n\n const appState: IAppState = init({ lockfileExplorerProjectRoot, appVersion, debugMode, subspaceName });\n\n // Important: This must happen after init() reads the current working directory\n process.chdir(appState.lockfileExplorerProjectRoot);\n\n const distFolderPath: string = `${appState.lockfileExplorerProjectRoot}/dist`;\n const app: express.Application = express();\n app.use(express.json());\n app.use(cors());\n\n // Variable used to check if the front-end client is still connected\n let awaitingFirstConnect: boolean = true;\n let isClientConnected: boolean = false;\n let disconnected: boolean = false;\n setInterval(() => {\n if (!isClientConnected && !awaitingFirstConnect && !disconnected) {\n console.log(Colorize.red('The client has disconnected!'));\n console.log(`Please open a browser window at http://localhost:${PORT}/app`);\n disconnected = true;\n } else if (!awaitingFirstConnect) {\n isClientConnected = false;\n }\n }, 4000);\n\n // This takes precedence over the `/app` static route, which also has an `initappcontext.js` file.\n app.get('/initappcontext.js', (req: express.Request, res: express.Response) => {\n const appContext: IAppContext = {\n serviceUrl: SERVICE_URL,\n appVersion: appState.appVersion,\n debugMode: process.argv.indexOf('--debug') >= 0\n };\n const sourceCode: string = [\n `console.log('Loaded initappcontext.js');`,\n `appContext = ${JSON.stringify(appContext)}`\n ].join('\\n');\n\n res.type('application/javascript').send(sourceCode);\n });\n\n app.use('/', express.static(distFolderPath));\n\n app.use('/favicon.ico', express.static(distFolderPath, { index: 'favicon.ico' }));\n\n app.get('/api/lockfile', async (req: express.Request, res: express.Response) => {\n const pnpmLockfileText: string = await FileSystem.readFileAsync(appState.pnpmLockfileLocation);\n const doc = yaml.load(pnpmLockfileText) as Lockfile;\n const { packages, lockfileVersion } = doc;\n\n let shrinkwrapFileMajorVersion: number;\n if (typeof lockfileVersion === 'string') {\n const isDotIncluded: boolean = lockfileVersion.includes('.');\n shrinkwrapFileMajorVersion = parseInt(\n lockfileVersion.substring(0, isDotIncluded ? lockfileVersion.indexOf('.') : undefined),\n 10\n );\n } else if (typeof lockfileVersion === 'number') {\n shrinkwrapFileMajorVersion = Math.floor(lockfileVersion);\n } else {\n shrinkwrapFileMajorVersion = 0;\n }\n\n if (shrinkwrapFileMajorVersion < 5 || shrinkwrapFileMajorVersion > 6) {\n throw new Error('The current lockfile version is not supported.');\n }\n\n if (packages && shrinkwrapFileMajorVersion === 6) {\n const updatedPackages: Lockfile['packages'] = {};\n for (const [dependencyPath, dependency] of Object.entries(packages)) {\n updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = dependency;\n }\n doc.packages = updatedPackages;\n }\n\n res.send({\n doc,\n subspaceName\n });\n });\n\n app.get('/api/health', (req: express.Request, res: express.Response) => {\n awaitingFirstConnect = false;\n isClientConnected = true;\n if (disconnected) {\n disconnected = false;\n console.log(Colorize.green('The client has reconnected!'));\n }\n res.status(200).send();\n });\n\n app.post(\n '/api/package-json',\n async (req: express.Request<{}, {}, { projectPath: string }, {}>, res: express.Response) => {\n const { projectPath } = req.body;\n const fileLocation = `${appState.projectRoot}/${projectPath}/package.json`;\n let packageJsonText: string;\n try {\n packageJsonText = await FileSystem.readFileAsync(fileLocation);\n } catch (e) {\n if (FileSystem.isNotExistError(e)) {\n return res.status(404).send({\n message: `Could not load package.json file for this package. Have you installed all the dependencies for this workspace?`,\n error: `No package.json in location: ${projectPath}`\n });\n } else {\n throw e;\n }\n }\n\n res.send(packageJsonText);\n }\n );\n\n app.get('/api/pnpmfile', async (req: express.Request, res: express.Response) => {\n let pnpmfile: string;\n try {\n pnpmfile = await FileSystem.readFileAsync(appState.pnpmfileLocation);\n } catch (e) {\n if (FileSystem.isNotExistError(e)) {\n return res.status(404).send({\n message: `Could not load pnpmfile file in this repo.`,\n error: `No .pnpmifile.cjs found.`\n });\n } else {\n throw e;\n }\n }\n\n res.send(pnpmfile);\n });\n\n app.post(\n '/api/package-spec',\n async (req: express.Request<{}, {}, { projectPath: string }, {}>, res: express.Response) => {\n const { projectPath } = req.body;\n const fileLocation = `${appState.projectRoot}/${projectPath}/package.json`;\n let packageJson: IPackageJson;\n try {\n packageJson = await JsonFile.loadAsync(fileLocation);\n } catch (e) {\n if (FileSystem.isNotExistError(e)) {\n return res.status(404).send({\n message: `Could not load package.json file in location: ${projectPath}`\n });\n } else {\n throw e;\n }\n }\n\n const {\n hooks: { readPackage }\n } = require(appState.pnpmfileLocation);\n const parsedPackage = readPackage(packageJson, {});\n res.send(parsedPackage);\n }\n );\n\n app.listen(PORT, async () => {\n console.log(`App launched on ${SERVICE_URL}`);\n\n if (!appState.debugMode) {\n try {\n // Launch the web browser\n await open(SERVICE_URL);\n } catch (e) {\n console.error('Error launching browser: ' + e.toString());\n }\n }\n });\n}\n\nconst debugMode: boolean = process.argv.indexOf('--debug') >= 0;\nif (debugMode) {\n // Display the full callstack for errors\n startApp(debugMode);\n} else {\n // Catch exceptions and report them nicely\n try {\n startApp(debugMode);\n } catch (error) {\n if (!(error instanceof AlreadyReportedError)) {\n console.error();\n console.error(Colorize.red('ERROR: ' + error.message));\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.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 express from 'express';\nimport yaml from 'js-yaml';\nimport cors from 'cors';\nimport process from 'process';\nimport open from 'open';\nimport updateNotifier from 'update-notifier';\nimport { AlreadyReportedError } from '@rushstack/node-core-library';\nimport { FileSystem, type IPackageJson, JsonFile, PackageJsonLookup } from '@rushstack/node-core-library';\nimport type { IAppContext } from '@rushstack/lockfile-explorer-web/lib/AppContext';\nimport { Colorize } from '@rushstack/terminal';\nimport type { Lockfile } from '@pnpm/lockfile-types';\n\nimport { convertLockfileV6DepPathToV5DepPath } from './utils';\nimport { init } from './init';\nimport type { IAppState } from './state';\nimport { type ICommandLine, parseCommandLine } from './commandLine';\n\nfunction startApp(debugMode: boolean): void {\n const lockfileExplorerProjectRoot: string = PackageJsonLookup.instance.tryGetPackageFolderFor(__dirname)!;\n const lockfileExplorerPackageJson: IPackageJson = JsonFile.load(\n `${lockfileExplorerProjectRoot}/package.json`\n );\n const appVersion: string = lockfileExplorerPackageJson.version;\n\n console.log(\n Colorize.bold(`\\nRush Lockfile Explorer ${appVersion}`) + Colorize.cyan(' - https://lfx.rushstack.io/\\n')\n );\n\n updateNotifier({\n pkg: lockfileExplorerPackageJson,\n // Normally update-notifier waits a day or so before it starts displaying upgrade notices.\n // In debug mode, show the notice right away.\n updateCheckInterval: debugMode ? 0 : undefined\n }).notify({\n // Make sure it says \"-g\" in the \"npm install\" example command line\n isGlobal: true,\n // Show the notice immediately, rather than waiting for process.onExit()\n defer: false\n });\n\n const PORT: number = 8091;\n // Must not have a trailing slash\n const SERVICE_URL: string = `http://localhost:${PORT}`;\n\n const result: ICommandLine = parseCommandLine(process.argv.slice(2));\n if (result.showedHelp) {\n return;\n }\n\n if (result.error) {\n console.error('\\n' + Colorize.red('ERROR: ' + result.error));\n console.error('\\nFor help, use: ' + Colorize.yellow('lockfile-explorer --help'));\n process.exitCode = 1;\n return;\n }\n\n const subspaceName: string = result.subspace ?? 'default';\n\n const appState: IAppState = init({ lockfileExplorerProjectRoot, appVersion, debugMode, subspaceName });\n\n // Important: This must happen after init() reads the current working directory\n process.chdir(appState.lockfileExplorerProjectRoot);\n\n const distFolderPath: string = `${appState.lockfileExplorerProjectRoot}/dist`;\n const app: express.Application = express();\n app.use(express.json());\n app.use(cors());\n\n // Variable used to check if the front-end client is still connected\n let awaitingFirstConnect: boolean = true;\n let isClientConnected: boolean = false;\n let disconnected: boolean = false;\n setInterval(() => {\n if (!isClientConnected && !awaitingFirstConnect && !disconnected) {\n console.log(Colorize.red('The client has disconnected!'));\n console.log(`Please open a browser window at http://localhost:${PORT}/app`);\n disconnected = true;\n } else if (!awaitingFirstConnect) {\n isClientConnected = false;\n }\n }, 4000);\n\n // This takes precedence over the `/app` static route, which also has an `initappcontext.js` file.\n app.get('/initappcontext.js', (req: express.Request, res: express.Response) => {\n const appContext: IAppContext = {\n serviceUrl: SERVICE_URL,\n appVersion: appState.appVersion,\n debugMode: process.argv.indexOf('--debug') >= 0\n };\n const sourceCode: string = [\n `console.log('Loaded initappcontext.js');`,\n `appContext = ${JSON.stringify(appContext)}`\n ].join('\\n');\n\n res.type('application/javascript').send(sourceCode);\n });\n\n app.use('/', express.static(distFolderPath));\n\n app.use('/favicon.ico', express.static(distFolderPath, { index: 'favicon.ico' }));\n\n app.get('/api/lockfile', async (req: express.Request, res: express.Response) => {\n const pnpmLockfileText: string = await FileSystem.readFileAsync(appState.pnpmLockfileLocation);\n const doc = yaml.load(pnpmLockfileText) as Lockfile;\n const { packages, lockfileVersion } = doc;\n\n let shrinkwrapFileMajorVersion: number;\n if (typeof lockfileVersion === 'string') {\n const isDotIncluded: boolean = lockfileVersion.includes('.');\n shrinkwrapFileMajorVersion = parseInt(\n lockfileVersion.substring(0, isDotIncluded ? lockfileVersion.indexOf('.') : undefined),\n 10\n );\n } else if (typeof lockfileVersion === 'number') {\n shrinkwrapFileMajorVersion = Math.floor(lockfileVersion);\n } else {\n shrinkwrapFileMajorVersion = 0;\n }\n\n if (shrinkwrapFileMajorVersion < 5 || shrinkwrapFileMajorVersion > 6) {\n throw new Error('The current lockfile version is not supported.');\n }\n\n if (packages && shrinkwrapFileMajorVersion === 6) {\n const updatedPackages: Lockfile['packages'] = {};\n for (const [dependencyPath, dependency] of Object.entries(packages)) {\n updatedPackages[convertLockfileV6DepPathToV5DepPath(dependencyPath)] = dependency;\n }\n doc.packages = updatedPackages;\n }\n\n res.send({\n doc,\n subspaceName\n });\n });\n\n app.get('/api/health', (req: express.Request, res: express.Response) => {\n awaitingFirstConnect = false;\n isClientConnected = true;\n if (disconnected) {\n disconnected = false;\n console.log(Colorize.green('The client has reconnected!'));\n }\n res.status(200).send();\n });\n\n app.post(\n '/api/package-json',\n async (req: express.Request<{}, {}, { projectPath: string }, {}>, res: express.Response) => {\n const { projectPath } = req.body;\n const fileLocation = `${appState.projectRoot}/${projectPath}/package.json`;\n let packageJsonText: string;\n try {\n packageJsonText = await FileSystem.readFileAsync(fileLocation);\n } catch (e) {\n if (FileSystem.isNotExistError(e)) {\n return res.status(404).send({\n message: `Could not load package.json file for this package. Have you installed all the dependencies for this workspace?`,\n error: `No package.json in location: ${projectPath}`\n });\n } else {\n throw e;\n }\n }\n\n res.send(packageJsonText);\n }\n );\n\n app.get('/api/pnpmfile', async (req: express.Request, res: express.Response) => {\n let pnpmfile: string;\n try {\n pnpmfile = await FileSystem.readFileAsync(appState.pnpmfileLocation);\n } catch (e) {\n if (FileSystem.isNotExistError(e)) {\n return res.status(404).send({\n message: `Could not load pnpmfile file in this repo.`,\n error: `No .pnpmifile.cjs found.`\n });\n } else {\n throw e;\n }\n }\n\n res.send(pnpmfile);\n });\n\n app.post(\n '/api/package-spec',\n async (req: express.Request<{}, {}, { projectPath: string }, {}>, res: express.Response) => {\n const { projectPath } = req.body;\n const fileLocation = `${appState.projectRoot}/${projectPath}/package.json`;\n let packageJson: IPackageJson;\n try {\n packageJson = await JsonFile.loadAsync(fileLocation);\n } catch (e) {\n if (FileSystem.isNotExistError(e)) {\n return res.status(404).send({\n message: `Could not load package.json file in location: ${projectPath}`\n });\n } else {\n throw e;\n }\n }\n\n const {\n hooks: { readPackage }\n } = require(appState.pnpmfileLocation);\n const parsedPackage = readPackage(packageJson, {});\n res.send(parsedPackage);\n }\n );\n\n app.listen(PORT, async () => {\n console.log(`App launched on ${SERVICE_URL}`);\n\n if (!appState.debugMode) {\n try {\n // Launch the web browser\n await open(SERVICE_URL);\n } catch (e) {\n console.error('Error launching browser: ' + e.toString());\n }\n }\n });\n}\n\nconst debugMode: boolean = process.argv.indexOf('--debug') >= 0;\nif (debugMode) {\n // Display the full callstack for errors\n startApp(debugMode);\n} else {\n // Catch exceptions and report them nicely\n try {\n startApp(debugMode);\n } catch (error) {\n if (!(error instanceof AlreadyReportedError)) {\n console.error();\n console.error(Colorize.red('ERROR: ' + error.message));\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rushstack/lockfile-explorer",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.7",
|
|
4
4
|
"description": "Rush Lockfile Explorer: The UI for solving version conflicts quickly in a large monorepo",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"conflict",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"@types/js-yaml": "3.12.1",
|
|
43
43
|
"@types/update-notifier": "~6.0.1",
|
|
44
44
|
"@pnpm/lockfile-types": "~6.0.0",
|
|
45
|
+
"@rushstack/heft": "0.66.8",
|
|
45
46
|
"@rushstack/lockfile-explorer-web": "0.0.0",
|
|
46
|
-
"local-node-rig": "1.0.0"
|
|
47
|
-
"@rushstack/heft": "0.66.7"
|
|
47
|
+
"local-node-rig": "1.0.0"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"cors": "~2.8.5",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"update-notifier": "~5.1.0",
|
|
55
55
|
"@pnpm/dependency-path": "~2.1.2",
|
|
56
56
|
"@rushstack/node-core-library": "4.3.0",
|
|
57
|
-
"@rushstack/terminal": "0.
|
|
58
|
-
"@microsoft/rush-lib": "5.124.
|
|
57
|
+
"@rushstack/terminal": "0.11.0",
|
|
58
|
+
"@microsoft/rush-lib": "5.124.5"
|
|
59
59
|
},
|
|
60
60
|
"scripts": {
|
|
61
61
|
"build": "heft build --clean",
|