@rushstack/lockfile-explorer 1.2.28 → 1.2.29
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/lib/start.js +17 -17
- package/lib/start.js.map +1 -1
- package/package.json +7 -7
package/lib/start.js
CHANGED
|
@@ -9,17 +9,17 @@ const express_1 = __importDefault(require("express"));
|
|
|
9
9
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
10
10
|
const cors_1 = __importDefault(require("cors"));
|
|
11
11
|
const process_1 = __importDefault(require("process"));
|
|
12
|
-
const safe_1 = __importDefault(require("colors/safe"));
|
|
13
12
|
const open_1 = __importDefault(require("open"));
|
|
14
13
|
const update_notifier_1 = __importDefault(require("update-notifier"));
|
|
15
14
|
const node_core_library_1 = require("@rushstack/node-core-library");
|
|
16
|
-
const init_1 = require("./init");
|
|
17
15
|
const node_core_library_2 = require("@rushstack/node-core-library");
|
|
16
|
+
const terminal_1 = require("@rushstack/terminal");
|
|
17
|
+
const init_1 = require("./init");
|
|
18
18
|
function startApp(debugMode) {
|
|
19
|
-
const lockfileExplorerProjectRoot =
|
|
20
|
-
const lockfileExplorerPackageJson =
|
|
19
|
+
const lockfileExplorerProjectRoot = node_core_library_2.PackageJsonLookup.instance.tryGetPackageFolderFor(__dirname);
|
|
20
|
+
const lockfileExplorerPackageJson = node_core_library_2.JsonFile.load(`${lockfileExplorerProjectRoot}/package.json`);
|
|
21
21
|
const appVersion = lockfileExplorerPackageJson.version;
|
|
22
|
-
console.log(
|
|
22
|
+
console.log(terminal_1.Colorize.bold(`\nRush Lockfile Explorer ${appVersion}`) + terminal_1.Colorize.cyan(' - https://lfx.rushstack.io/\n'));
|
|
23
23
|
(0, update_notifier_1.default)({
|
|
24
24
|
pkg: lockfileExplorerPackageJson,
|
|
25
25
|
// Normally update-notifier waits a day or so before it starts displaying upgrade notices.
|
|
@@ -40,7 +40,7 @@ function startApp(debugMode) {
|
|
|
40
40
|
console.log('Usage: lockfile-explorer [--debug]\n');
|
|
41
41
|
console.log('The "lfx" command is a shorthand alias for "lockfile-explorer".');
|
|
42
42
|
console.log('See the project website for documentation and support.\n');
|
|
43
|
-
throw new
|
|
43
|
+
throw new node_core_library_1.AlreadyReportedError();
|
|
44
44
|
}
|
|
45
45
|
const appState = (0, init_1.init)({ lockfileExplorerProjectRoot, appVersion, debugMode });
|
|
46
46
|
// Important: This must happen after init() reads the current working directory
|
|
@@ -55,7 +55,7 @@ function startApp(debugMode) {
|
|
|
55
55
|
let disconnected = false;
|
|
56
56
|
setInterval(() => {
|
|
57
57
|
if (!isClientConnected && !awaitingFirstConnect && !disconnected) {
|
|
58
|
-
console.log(
|
|
58
|
+
console.log(terminal_1.Colorize.red('The client has disconnected!'));
|
|
59
59
|
console.log(`Please open a browser window at http://localhost:${PORT}/app`);
|
|
60
60
|
disconnected = true;
|
|
61
61
|
}
|
|
@@ -79,7 +79,7 @@ function startApp(debugMode) {
|
|
|
79
79
|
app.use('/', express_1.default.static(distFolderPath));
|
|
80
80
|
app.use('/favicon.ico', express_1.default.static(distFolderPath, { index: 'favicon.ico' }));
|
|
81
81
|
app.get('/api/lockfile', async (req, res) => {
|
|
82
|
-
const pnpmLockfileText = await
|
|
82
|
+
const pnpmLockfileText = await node_core_library_2.FileSystem.readFileAsync(appState.pnpmLockfileLocation);
|
|
83
83
|
const doc = js_yaml_1.default.load(pnpmLockfileText);
|
|
84
84
|
res.send(doc);
|
|
85
85
|
});
|
|
@@ -88,7 +88,7 @@ function startApp(debugMode) {
|
|
|
88
88
|
isClientConnected = true;
|
|
89
89
|
if (disconnected) {
|
|
90
90
|
disconnected = false;
|
|
91
|
-
console.log(
|
|
91
|
+
console.log(terminal_1.Colorize.green('The client has reconnected!'));
|
|
92
92
|
}
|
|
93
93
|
res.status(200).send();
|
|
94
94
|
});
|
|
@@ -97,10 +97,10 @@ function startApp(debugMode) {
|
|
|
97
97
|
const fileLocation = `${appState.projectRoot}/${projectPath}/package.json`;
|
|
98
98
|
let packageJsonText;
|
|
99
99
|
try {
|
|
100
|
-
packageJsonText = await
|
|
100
|
+
packageJsonText = await node_core_library_2.FileSystem.readFileAsync(fileLocation);
|
|
101
101
|
}
|
|
102
102
|
catch (e) {
|
|
103
|
-
if (
|
|
103
|
+
if (node_core_library_2.FileSystem.isNotExistError(e)) {
|
|
104
104
|
return res.status(404).send({
|
|
105
105
|
message: `Could not load package.json file for this package. Have you installed all the dependencies for this workspace?`,
|
|
106
106
|
error: `No package.json in location: ${projectPath}`
|
|
@@ -115,10 +115,10 @@ function startApp(debugMode) {
|
|
|
115
115
|
app.get('/api/pnpmfile', async (req, res) => {
|
|
116
116
|
let pnpmfile;
|
|
117
117
|
try {
|
|
118
|
-
pnpmfile = await
|
|
118
|
+
pnpmfile = await node_core_library_2.FileSystem.readFileAsync(appState.pnpmfileLocation);
|
|
119
119
|
}
|
|
120
120
|
catch (e) {
|
|
121
|
-
if (
|
|
121
|
+
if (node_core_library_2.FileSystem.isNotExistError(e)) {
|
|
122
122
|
return res.status(404).send({
|
|
123
123
|
message: `Could not load pnpmfile file in this repo.`,
|
|
124
124
|
error: `No .pnpmifile.cjs found.`
|
|
@@ -135,10 +135,10 @@ function startApp(debugMode) {
|
|
|
135
135
|
const fileLocation = `${appState.projectRoot}/${projectPath}/package.json`;
|
|
136
136
|
let packageJson;
|
|
137
137
|
try {
|
|
138
|
-
packageJson = await
|
|
138
|
+
packageJson = await node_core_library_2.JsonFile.loadAsync(fileLocation);
|
|
139
139
|
}
|
|
140
140
|
catch (e) {
|
|
141
|
-
if (
|
|
141
|
+
if (node_core_library_2.FileSystem.isNotExistError(e)) {
|
|
142
142
|
return res.status(404).send({
|
|
143
143
|
message: `Could not load package.json file in location: ${projectPath}`
|
|
144
144
|
});
|
|
@@ -175,9 +175,9 @@ else {
|
|
|
175
175
|
startApp(debugMode);
|
|
176
176
|
}
|
|
177
177
|
catch (error) {
|
|
178
|
-
if (!(error instanceof
|
|
178
|
+
if (!(error instanceof node_core_library_1.AlreadyReportedError)) {
|
|
179
179
|
console.error();
|
|
180
|
-
console.error(
|
|
180
|
+
console.error(terminal_1.Colorize.red('ERROR: ' + error.message));
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
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 colors from 'colors/safe';\nimport open from 'open';\nimport updateNotifier from 'update-notifier';\nimport { FileSystem, type IPackageJson, JsonFile, PackageJsonLookup } from '@rushstack/node-core-library';\nimport type { IAppContext } from '@rushstack/lockfile-explorer-web/lib/AppContext';\nimport { init } from './init';\nimport type { IAppState } from './state';\nimport { AlreadyReportedError } from '@rushstack/node-core-library';\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 colors.bold(`\\nRush Lockfile Explorer ${appVersion}`) + colors.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 // TODO: Later if we introduce more CLI parameters, switch to a proper CLI parser\n const args: string[] = process.argv.slice(2);\n if (args.length > 0 && args[0] !== '--debug') {\n console.log('Usage: lockfile-explorer [--debug]\\n');\n console.log('The \"lfx\" command is a shorthand alias for \"lockfile-explorer\".');\n console.log('See the project website for documentation and support.\\n');\n throw new AlreadyReportedError();\n }\n\n const appState: IAppState = init({ lockfileExplorerProjectRoot, appVersion, debugMode });\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(colors.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);\n res.send(doc);\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(colors.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(colors.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';\n\nimport { init } from './init';\nimport type { IAppState } from './state';\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 // TODO: Later if we introduce more CLI parameters, switch to a proper CLI parser\n const args: string[] = process.argv.slice(2);\n if (args.length > 0 && args[0] !== '--debug') {\n console.log('Usage: lockfile-explorer [--debug]\\n');\n console.log('The \"lfx\" command is a shorthand alias for \"lockfile-explorer\".');\n console.log('See the project website for documentation and support.\\n');\n throw new AlreadyReportedError();\n }\n\n const appState: IAppState = init({ lockfileExplorerProjectRoot, appVersion, debugMode });\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);\n res.send(doc);\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.2.
|
|
3
|
+
"version": "1.2.29",
|
|
4
4
|
"description": "Rush Lockfile Explorer: The UI for solving version conflicts quickly in a large monorepo",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"conflict",
|
|
@@ -33,20 +33,20 @@
|
|
|
33
33
|
"@types/express": "4.17.13",
|
|
34
34
|
"@types/js-yaml": "3.12.1",
|
|
35
35
|
"@types/update-notifier": "~6.0.1",
|
|
36
|
-
"@microsoft/rush-lib": "5.114.
|
|
37
|
-
"
|
|
38
|
-
"@rushstack/
|
|
39
|
-
"
|
|
36
|
+
"@microsoft/rush-lib": "5.114.2",
|
|
37
|
+
"@rushstack/heft": "0.65.3",
|
|
38
|
+
"@rushstack/lockfile-explorer-web": "0.0.0",
|
|
39
|
+
"local-node-rig": "1.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@types/express": "4.17.13",
|
|
43
|
-
"colors": "~1.2.1",
|
|
44
43
|
"cors": "~2.8.5",
|
|
45
44
|
"express": "4.18.1",
|
|
46
45
|
"js-yaml": "~3.13.1",
|
|
47
46
|
"open": "~8.4.0",
|
|
48
47
|
"update-notifier": "~5.1.0",
|
|
49
|
-
"@rushstack/node-core-library": "4.0.
|
|
48
|
+
"@rushstack/node-core-library": "4.0.2",
|
|
49
|
+
"@rushstack/terminal": "0.9.0"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"build": "heft build --clean",
|