@node-red/registry
Advanced tools
Comparing version 1.3.5 to 2.0.0-beta.1
@@ -12,2 +12,3 @@ // This module handles the management of modules required by the runtime and flows. | ||
const log = require("@node-red/util").log; | ||
const hooks = require("@node-red/util").hooks; | ||
@@ -193,9 +194,25 @@ const BUILTIN_MODULES = require('module').builtinModules; | ||
var args = ["install", installSpec, "--production"]; | ||
return exec.run(NPM_COMMAND, args, { | ||
cwd: installDir | ||
},true).then(result => { | ||
let triggerPayload = { | ||
"module": moduleDetails.module, | ||
"version": moduleDetails.version, | ||
"dir": installDir, | ||
"args": ["--production","--engine-strict"] | ||
} | ||
return hooks.trigger("preInstall", triggerPayload).then((result) => { | ||
// preInstall passed | ||
// - run install | ||
if (result !== false) { | ||
let extraArgs = triggerPayload.args || []; | ||
let args = ['install', ...extraArgs, installSpec] | ||
log.trace(NPM_COMMAND + JSON.stringify(args)); | ||
return exec.run(NPM_COMMAND, args, { cwd: installDir },true) | ||
} else { | ||
log.trace("skipping npm install"); | ||
} | ||
}).then(() => { | ||
return hooks.trigger("postInstall", triggerPayload) | ||
}).then(() => { | ||
log.info(log._("server.install.installed", { name: installSpec })); | ||
}).catch(result => { | ||
var output = result.stderr; | ||
var output = result.stderr || result.toString(); | ||
var e; | ||
@@ -202,0 +219,0 @@ if (/E404/.test(output) || /ETARGET/.test(output)) { |
@@ -26,3 +26,3 @@ /** | ||
const library = require("./library"); | ||
const {exec,log,events} = require("@node-red/util"); | ||
const {exec,log,events,hooks} = require("@node-red/util"); | ||
const child_process = require('child_process'); | ||
@@ -172,7 +172,26 @@ const npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm'; | ||
var installDir = settings.userDir || process.env.NODE_RED_HOME || "."; | ||
var args = ['install','--no-audit','--no-update-notifier','--no-fund','--save','--save-prefix=~','--production',installName]; | ||
log.trace(npmCommand + JSON.stringify(args)); | ||
return exec.run(npmCommand,args,{ | ||
cwd: installDir | ||
}, true).then(result => { | ||
let triggerPayload = { | ||
"module": module, | ||
"version": version, | ||
"url": url, | ||
"dir": installDir, | ||
"isExisting": isExisting, | ||
"isUpgrade": isUpgrade, | ||
"args": ['--no-audit','--no-update-notifier','--no-fund','--save','--save-prefix=~','--production','--engine-strict'] | ||
} | ||
return hooks.trigger("preInstall", triggerPayload).then((result) => { | ||
// preInstall passed | ||
// - run install | ||
if (result !== false) { | ||
let extraArgs = triggerPayload.args || []; | ||
let args = ['install', ...extraArgs, installName] | ||
log.trace(npmCommand + JSON.stringify(args)); | ||
return exec.run(npmCommand,args,{ cwd: installDir}, true) | ||
} else { | ||
log.trace("skipping npm install"); | ||
} | ||
}).then(() => { | ||
return hooks.trigger("postInstall", triggerPayload) | ||
}).then(() => { | ||
if (isExisting) { | ||
@@ -196,25 +215,41 @@ // This is a module we already have installed as a non-user module. | ||
} | ||
}).catch(result => { | ||
var output = result.stderr; | ||
var e; | ||
var lookFor404 = new RegExp(" 404 .*"+module,"m"); | ||
var lookForVersionNotFound = new RegExp("version not found: "+module+"@"+version,"m"); | ||
if (lookFor404.test(output)) { | ||
log.warn(log._("server.install.install-failed-not-found",{name:module})); | ||
e = new Error("Module not found"); | ||
e.code = 404; | ||
throw e; | ||
} else if (isUpgrade && lookForVersionNotFound.test(output)) { | ||
log.warn(log._("server.install.upgrade-failed-not-found",{name:module})); | ||
e = new Error("Module not found"); | ||
e.code = 404; | ||
throw e; | ||
} else { | ||
}).catch(err => { | ||
let e; | ||
if (err.hook) { | ||
// preInstall failed | ||
log.warn(log._("server.install.install-failed-long",{name:module})); | ||
log.warn("------------------------------------------"); | ||
log.warn(output); | ||
log.warn(err.toString()); | ||
log.warn("------------------------------------------"); | ||
throw new Error(log._("server.install.install-failed")); | ||
e = new Error(log._("server.install.install-failed")+": "+err.toString()); | ||
if (err.hook === "postInstall") { | ||
return exec.run(npmCommand,["remove",module],{ cwd: installDir}, false).finally(() => { | ||
throw e; | ||
}) | ||
} | ||
} else { | ||
// npm install failed | ||
let output = err.stderr; | ||
let lookFor404 = new RegExp(" 404 .*"+module,"m"); | ||
let lookForVersionNotFound = new RegExp("version not found: "+module+"@"+version,"m"); | ||
if (lookFor404.test(output)) { | ||
log.warn(log._("server.install.install-failed-not-found",{name:module})); | ||
e = new Error("Module not found"); | ||
e.code = 404; | ||
} else if (isUpgrade && lookForVersionNotFound.test(output)) { | ||
log.warn(log._("server.install.upgrade-failed-not-found",{name:module})); | ||
e = new Error("Module not found"); | ||
e.code = 404; | ||
} else { | ||
log.warn(log._("server.install.install-failed-long",{name:module})); | ||
log.warn("------------------------------------------"); | ||
log.warn(output); | ||
log.warn("------------------------------------------"); | ||
e = new Error(log._("server.install.install-failed")); | ||
} | ||
} | ||
}) | ||
if (e) { | ||
throw e; | ||
} | ||
}); | ||
}).catch(err => { | ||
@@ -417,14 +452,31 @@ // In case of error, reset activePromise to be resolvable | ||
var args = ['remove','--no-audit','--no-update-notifier','--no-fund','--save',module]; | ||
log.trace(npmCommand + JSON.stringify(args)); | ||
exec.run(npmCommand,args,{ | ||
cwd: installDir, | ||
},true).then(result => { | ||
let triggerPayload = { | ||
"module": module, | ||
"dir": installDir, | ||
"args": ['--no-audit','--no-update-notifier','--no-fund','--save'] | ||
} | ||
return hooks.trigger("preUninstall", triggerPayload).then((result) => { | ||
// preUninstall passed | ||
// - run uninstall | ||
if (result !== false) { | ||
let extraArgs = triggerPayload.args || []; | ||
let args = ['remove', ...extraArgs, module] | ||
log.trace(npmCommand + JSON.stringify(args)); | ||
return exec.run(npmCommand,args,{ cwd: installDir}, true) | ||
} else { | ||
log.trace("skipping npm uninstall"); | ||
} | ||
}).then(() => { | ||
log.info(log._("server.install.uninstalled",{name:module})); | ||
reportRemovedModules(list); | ||
library.removeExamplesDir(module); | ||
resolve(list); | ||
return hooks.trigger("postUninstall", triggerPayload).catch((err)=>{ | ||
log.warn("------------------------------------------"); | ||
log.warn(err.toString()); | ||
log.warn("------------------------------------------"); | ||
}).finally(() => { | ||
resolve(list); | ||
}) | ||
}).catch(result => { | ||
var output = result.stderr; | ||
let output = result.stderr || result; | ||
log.warn(log._("server.install.uninstall-failed-long",{name:module})); | ||
@@ -431,0 +483,0 @@ log.warn("------------------------------------------"); |
{ | ||
"name": "@node-red/registry", | ||
"version": "1.3.5", | ||
"version": "2.0.0-beta.1", | ||
"license": "Apache-2.0", | ||
@@ -19,7 +19,7 @@ "main": "./lib/index.js", | ||
"dependencies": { | ||
"@node-red/util": "1.3.5", | ||
"semver": "6.3.0", | ||
"@node-red/util": "2.0.0-beta.1", | ||
"semver": "7.3.5", | ||
"tar": "6.1.0", | ||
"uglify-js": "3.13.3" | ||
"uglify-js": "3.13.9" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
131483
3258
2
+ Added@node-red/util@2.0.0-beta.1(transitive)
+ Addedi18next@20.3.1(transitive)
+ Addedlru-cache@6.0.0(transitive)
+ Addedsemver@7.3.5(transitive)
+ Addeduglify-js@3.13.9(transitive)
- Removed@node-red/util@1.3.5(transitive)
- Removedi18next@15.1.2(transitive)
- Removedsemver@6.3.0(transitive)
- Removeduglify-js@3.13.3(transitive)
Updated@node-red/util@2.0.0-beta.1
Updatedsemver@7.3.5
Updateduglify-js@3.13.9