Submit
Path:
~
/
/
usr
/
local
/
lib
/
node_modules
/
npm
/
test
/
tap
/
File Content:
spec-local-specifiers.js
'use strict' var path = require('path') var test = require('tap').test var fs = require('fs') var rimraf = require('rimraf') var mr = require('npm-registry-mock') var Tacks = require('tacks') var File = Tacks.File var Symlink = Tacks.Symlink var Dir = Tacks.Dir var common = require('../common-tap.js') var isWindows = require('../../lib/utils/is-windows.js') var basedir = path.join(__dirname, path.basename(__filename, '.js')) var testdir = path.join(basedir, 'testdir') var cachedir = path.join(basedir, 'cache') var globaldir = path.join(basedir, 'global') var tmpdir = path.join(basedir, 'tmp') var conf = { cwd: testdir, env: common.emptyEnv().extend({ npm_config_cache: cachedir, npm_config_tmp: tmpdir, npm_config_prefix: globaldir, npm_config_registry: common.registry, npm_config_loglevel: 'error' }), stdio: [0, 'pipe', 2] } var confE = { cwd: testdir, env: conf.env, stdio: [0, 'pipe', 'pipe'] } function readJson (file) { return JSON.parse(fs.readFileSync(file)) } function isSymlink (t, file, message) { try { var info = fs.lstatSync(file) t.is(info.isSymbolicLink(), true, message) } catch (ex) { if (ex.code === 'ENOENT') { t.fail(message, {found: null, wanted: 'symlink', compare: 'fs.lstat(' + file + ')'}) } else { t.fail(message, {found: ex, wanted: 'symlink', compare: 'fs.lstat(' + file + ')'}) } } } function fileExists (t, file, message) { try { fs.statSync(file) t.pass(message) } catch (ex) { if (ex.code === 'ENOENT') { t.fail(message, {found: null, wanted: 'exists', compare: 'fs.stat(' + file + ')'}) } else { t.fail(message, {found: ex, wanted: 'exists', compare: 'fs.stat(' + file + ')'}) } } } function noFileExists (t, file, message) { try { fs.statSync(file) t.fail(message, {found: 'exists', wanted: 'not exists', compare: 'fs.stat(' + file + ')'}) } catch (ex) { if (ex.code === 'ENOENT') { t.pass(message) } else { t.fail(message, {found: ex, wanted: 'not exists', compare: 'fs.stat(' + file + ')'}) } } } var server var testdirContent = { node_modules: Dir({}), pkga: Dir({ 'package.json': File({ name: 'pkga', version: '1.0.0' }) }), pkgb: Dir({ 'package.json': File({ name: 'pkgb', version: '1.0.0' }) }), pkgc: Dir({ 'package.json': File({ name: 'pkgc', version: '1.0.0' }) }), pkgd: Dir({ 'package.json': File({ name: 'pkgd', version: '1.0.0' }) }) } var fixture function setup () { fixture = new Tacks(Dir({ cache: Dir(), global: Dir(), tmp: Dir(), testdir: Dir(testdirContent) })) cleanup() fixture.create(basedir) } function cleanup () { fixture.remove(basedir) } test('setup', function (t) { process.nextTick(function () { setup() mr({port: common.port, throwOnUnmatched: true}, function (err, s) { if (err) throw err server = s t.done() }) }) }) var installOk = [] var slashes = [ 'unix', 'win' ] slashes.forEach(function (os) { var slash = os === 'unix' ? function (ss) { return ss.replace(/\\/g, '/') } : function (ss) { return ss.replace(/\//g, '\\') } installOk.push(os + '-file-abs-f') testdirContent[os + '-file-abs-f'] = Dir({ 'package.json': File({ name: os + '-file-abs-f', version: '1.0.0', dependencies: { pkga: 'file:' + slash(testdir + '/pkga') } }) }) installOk.push(os + '-file-abs-fff') testdirContent[os + '-file-abs-fff'] = Dir({ 'package.json': File({ name: os + '-file-abs-fff', version: '1.0.0', dependencies: { pkga: 'file://' + slash(testdir + '/pkga') } }) }) installOk.push(os + '-file-rel') testdirContent[os + '-file-rel'] = Dir({ 'package.json': File({ name: os + '-file-rel', version: '1.0.0', dependencies: { pkga: 'file:' + slash('../pkga') } }) }) installOk.push(os + '-file-rel-fffff') testdirContent[os + '-file-rel-fffff'] = Dir({ 'package.json': File({ name: os + '-file-rel-fffff', version: '1.0.0', dependencies: { pkga: 'file:' + slash('/////../pkga') } }) }) }) testdirContent['win-abs-drive-win'] = Dir({ 'package.json': File({ name: 'win-abs-drive-win', version: '1.0.0', dependencies: { pkga: 'file:D:\\thing\\pkga' } }) }) testdirContent['win-abs-drive-unix'] = Dir({ 'package.json': File({ name: 'win-abs-drive-unix', version: '1.0.0', dependencies: { pkga: 'file://D:/thing/pkga' } }) }) test('specifiers', function (t) { t.plan(installOk.length + 2) installOk.forEach(function (mod) { t.test(mod, function (t) { common.npm(['install', '--dry-run', '--json', 'file:' + mod], conf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') t.comment(stdout.trim()) t.done() }) }) }) slashes.forEach(function (os) { t.test('win-abs-drive-' + os, function (t) { common.npm(['install', '--dry-run', '--json', 'file:win-abs-drive-' + os], confE, function (err, code, stdout, stderr) { if (err) throw err t.not(code, 0, 'command errored ok') t.comment(stderr.trim()) if (isWindows) { t.test('verify failure of file-not-found or wrong drive letter on windows') } else { var result = JSON.parse(stdout) t.is(result.error && result.error.code, 'EWINDOWSPATH', 'verify failure due to windows paths not supported on non-Windows') } t.done() }) }) }) }) testdirContent['mkdirp'] = Dir({ 'package.json': File({ name: 'mkdirp', version: '9.9.9' }) }) testdirContent['example'] = Dir({ 'minimist': Dir({ 'package.json': File({ name: 'minimist', version: '9.9.9' }) }) }) testdirContent['wordwrap'] = Dir({ }) testdirContent['prefer-pkg'] = Dir({ 'package.json': File({ name: 'perfer-pkg', version: '1.0.0', dependencies: { 'mkdirp': 'latest' } }), 'latest': Dir({ 'package.json': File({ name: 'mkdirp', version: '9.9.9' }) }) }) test('ambiguity', function (t) { t.plan(5) t.test('arg: looks like package name, is dir', function (t) { common.npm(['install', 'mkdirp', '--dry-run', '--json'], conf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') const result = JSON.parse(stdout.trim()) t.like(result, {added: [{name: 'mkdirp', version: '9.9.9'}]}, 'got local dir') t.done() }) }) t.test('arg: looks like package name, is package', function (t) { common.npm(['install', 'wordwrap', '--dry-run', '--json'], conf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') const result = JSON.parse(stdout.trim()) t.like(result, {added: [{name: 'wordwrap', version: '0.0.2'}]}, 'even with local dir w/o package.json, got global') t.done() }) }) t.test('arg: looks like github repo, is dir', function (t) { common.npm(['install', 'example/minimist', '--dry-run', '--json'], conf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') const result = JSON.parse(stdout.trim()) t.like(result, {added: [{name: 'minimist', version: '9.9.9'}]}, 'got local dir') t.done() }) }) t.test('package: looks like tag, has dir, use tag', function (t) { common.npm(['install', '--dry-run', '--json'], {cwd: path.join(testdir, 'prefer-pkg'), env: conf.env}, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') const result = JSON.parse(stdout.trim()) t.like(result, {added: [{name: 'mkdirp', version: '0.3.5'}]}, 'got local dir') t.done() }) }) t.test('test ambiguity for github repos') }) testdirContent['existing-matches'] = Dir({ 'package.json': File({ name: 'existing-matches', version: '1.0.0', dependencies: { 'pkga': 'file:../pkga', 'pkgb': 'file:' + testdir + '/pkgb', 'pkgc': 'file:../pkgc', 'pkgd': 'file:' + testdir + '/pkgd' } }), 'node_modules': Dir({ 'pkga': Symlink('../../pkga'), 'pkgd': Symlink('../../pkgd') }) }) test('existing install matches', function (t) { t.plan(1) // have to make these by hand because tacks doesn't support absolute paths in symlinks fs.symlinkSync(testdir + '/pkgb', testdir + '/existing-matches/node_modules/pkgb', 'junction') fs.symlinkSync(testdir + '/pkgc', testdir + '/existing-matches/node_modules/pkgc', 'junction') t.test('relative symlink counts as match of relative symlink in package.json', function (t) { common.npm(['ls', '--json'], {cwd: path.join(testdir, 'existing-matches'), env: conf.env}, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') if (stdout) t.comment(stdout.trim()) t.test('specifically test that output is valid') // relative symlink counts as match of relative symlink in package.json (pkga) // relative symlink counts as match of abs symlink in package.json (pkgc) // abs symlink counts as match of relative symlink in package.json (pkgb) // abs symlink counts as match of abs symlink in package.json (pkgd) t.done() }) }) }) var ibdir = testdir + '/install-behavior' testdirContent['ib-out'] = Dir({ 'package.json': File({ name: 'ib-out', version: '1.0.0', dependencies: { 'minimist': '*' } }) }) testdirContent['install-behavior'] = Dir({ 'package.json': File({ name: 'install-behavior', version: '1.0.0' }), 'ib-in': Dir({ 'package.json': File({ name: 'ib-in', version: '1.0.0', dependencies: { 'mkdirp': '*' } }) }), 'noext': File(new Buffer( '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' + '06066626260a20dadccc144c1b1841f86000923334363037343536343732' + '633000728c0c80f2d4760836505a5c925804740aa5e640bca200a78708a8' + '56ca4bcc4d55b252cacb4fad2851d251502a4b2d2acecccf030a19ea19e8' + '1928d5720db41b47c1281805a36014501f00005012007200080000', 'hex' )), 'tarball-1.0.0.tgz': File(new Buffer( '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' + '06066626260a20dadccc144c1b1841f8606062a6c060686c606e686a6c68' + '666ec26000e480e5a9ed106ca0b4b824b108e8144acd817845014e0f1150' + 'ad9497989baa64a5040c85a4c49c1c251d05a5b2d4a2e2ccfc3ca0a0a19e' + '819e81522dd740bb72148c8251300a4601b50100473dd15800080000', 'hex' )), 'not-module': Dir({}), 'test-preinstall': Dir({ 'preinstall.js': File('console.log("CWD:" + process.cwd())'), 'package.json': File({ name: 'test-preinstall', version: '1.0.0', scripts: { 'preinstall': 'node ' + ibdir + '/test-preinstall/preinstall.js' } }) }) }) test('install behavior', function (t) { var ibconf = {cwd: ibdir, env: conf.env.extend({npm_config_loglevel: 'silent'}), stdio: conf.stdio} t.plan(7) t.test('transitive deps for in-larger-module cases', function (t) { common.npm(['install', 'file:ib-in'], ibconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') if (stdout) t.comment(stdout.trim()) fileExists(t, ibdir + '/node_modules/mkdirp', 'transitive dep flattened') isSymlink(t, ibdir + '/node_modules/ib-in', 'dep is symlink') noFileExists(t, ibdir + '/ib-in/node_modules/mkdirp', 'transitive dep not nested') t.done() }) }) t.test('transitive deps for out-of-larger module cases', function (t) { common.npm(['install', 'file:../ib-out'], ibconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') if (stdout) t.comment(stdout.trim()) noFileExists(t, ibdir + '/node_modules/minimist', 'transitive dep not flattened') fileExists(t, testdir + '/ib-out/node_modules/minimist', 'transitive dep nested') t.done() }) }) t.test('transitive deps for out-of-larger module cases w/ --preserve-symlinks', function (t) { rimraf.sync(ibdir + '/node_modules') rimraf.sync(testdir + '/ib-out/node_modules') var env = conf.env.extend({NODE_PRESERVE_SYMLINKS: '1'}) common.npm(['install', 'file:../ib-out'], {cwd: ibdir, env: env}, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') if (stdout) t.comment(stdout.trim()) fileExists(t, ibdir + '/node_modules/minimist', 'transitive dep flattened') noFileExists(t, testdir + '/ib-out/node_modules/minimist', 'transitive dep not nested') t.done() }) }) t.test('tar/tgz/tar.gz should install a tarball', function (t) { common.npm(['install', 'file:tarball-1.0.0.tgz'], ibconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') if (stdout) t.comment(stdout.trim()) fileExists(t, ibdir + '/node_modules/tarball') t.done() }) }) t.test('non tar/tgz/tar.gz files should give good error message', function (t) { common.npm(['install', 'file:noext', '--json'], ibconf, function (err, code, stdout) { if (err) throw err t.not(code, 0, 'do not install files w/o extensions') noFileExists(t, ibdir + '/node_modules/noext') var result = JSON.parse(stdout) t.like(result, {error: {code: 'ENOLOCAL'}}, 'new type of error') t.done() }) }) t.test('directories without package.json should give good error message', function (t) { common.npm(['install', 'file:not-module', '--json'], ibconf, function (err, code, stdout) { if (err) throw err t.not(code, 0, 'error on dir w/o module') var result = JSON.parse(stdout) t.like(result, {error: {code: 'ENOLOCAL'}}, 'new type of error') t.done() }) }) t.test('verify preinstall step runs after finalize, such that cwd is as expected', function (t) { common.npm(['install', 'file:test-preinstall'], ibconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') isSymlink(t, `${ibdir}/node_modules/test-preinstall`, 'installed as symlink') t.notLike(stdout, /CWD:.*[.]staging/, 'cwd should not be in staging') t.test('verify that env is as expected') t.done() }) }) }) var sbdir = testdir + '/save-behavior' testdirContent['save-behavior'] = Dir({ 'package.json': File({ name: 'save-behavior', version: '1.0.0' }), 'npm-shrinkwrap.json': File({ name: 'save-behavior', version: '1.0.0', dependencies: {} }), 'transitive': Dir({ 'package.json': File({ name: 'transitive', version: '1.0.0', dependencies: { 'pkgc': 'file:../../pkgc' } }) }) }) testdirContent['sb-transitive'] = Dir({ 'package.json': File({ name: 'sb-transitive', version: '1.0.0', dependencies: { 'sbta': 'file:sbta' } }), 'sbta': Dir({ 'package.json': File({ name: 'sbta', version: '1.0.0' }) }) }) var sbdirp = testdir + '/save-behavior-pre' testdirContent['save-behavior-pre'] = Dir({ 'package.json': File({ name: 'save-behavior', version: '1.0.0' }), 'npm-shrinkwrap.json': File({ name: 'save-behavior', version: '1.0.0', dependencies: {} }) }) testdirContent['sb-transitive-preserve'] = Dir({ 'package.json': File({ name: 'sb-transitive-preserve', version: '1.0.0', dependencies: { 'sbtb': 'file:sbtb' } }), 'sbtb': Dir({ 'package.json': File({ name: 'sbtb', version: '1.0.0' }) }) }) test('save behavior', function (t) { t.plan(6) var sbconf = {cwd: sbdir, env: conf.env, stdio: conf.stdio} t.test('to package.json and npm-shrinkwrap.json w/ abs', function (t) { common.npm(['install', '--save', 'file:' + testdir + '/pkga'], sbconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') var pjson = readJson(sbdir + '/package.json') var shrinkwrap = readJson(sbdir + '/npm-shrinkwrap.json') t.is(pjson.dependencies.pkga, 'file:../pkga', 'package.json') var sdep = shrinkwrap.dependencies t.like(sdep, {pkga: {version: 'file:../pkga', resolved: null}}, 'npm-shrinkwrap.json') t.done() }) }) t.test('to package.json and npm-shrinkwrap.json w/ drive abs') t.test('to package.json and npm-shrinkwrap.json w/ rel', function (t) { common.npm(['install', '--save', 'file:../pkgb'], sbconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') var pjson = readJson(sbdir + '/package.json') var shrinkwrap = readJson(sbdir + '/npm-shrinkwrap.json') t.is(pjson.dependencies.pkgb, 'file:../pkgb', 'package.json') var sdep = shrinkwrap.dependencies t.like(sdep, {pkgb: {version: 'file:../pkgb', resolved: null}}, 'npm-shrinkwrap.json') t.done() }) }) t.test('internal transitive dependencies of shrinkwraps', function (t) { common.npm(['install', '--save', 'file:transitive'], sbconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') var pjson = readJson(sbdir + '/package.json') var shrinkwrap = readJson(sbdir + '/npm-shrinkwrap.json') t.is(pjson.dependencies.transitive, 'file:transitive', 'package.json') var sdep = shrinkwrap.dependencies.transitive || {} var tdep = shrinkwrap.dependencies.pkgc t.is(sdep.version, 'file:transitive', 'npm-shrinkwrap.json direct dep') t.is(tdep.version, 'file:../pkgc', 'npm-shrinkwrap.json transitive dep') t.done() }) }) t.test('external transitive dependencies of shrinkwraps', function (t) { common.npm(['install', '--save', 'file:../sb-transitive'], sbconf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') var pjson = readJson(sbdir + '/package.json') var shrinkwrap = readJson(sbdir + '/npm-shrinkwrap.json') var deps = pjson.dependencies || {} t.is(deps['sb-transitive'], 'file:../sb-transitive', 'package.json') var sdep = shrinkwrap.dependencies['sb-transitive'] || {} var tdep = sdep.dependencies.sbta t.like(tdep, {bundled: true, version: 'file:../sb-transitive/sbta'}, 'npm-shrinkwrap.json transitive dep') t.like(sdep, {bundled: null, version: 'file:../sb-transitive'}, 'npm-shrinkwrap.json direct dep') t.done() }) }) t.test('external transitive dependencies of shrinkwraps > preserve symlinks', function (t) { var preserveEnv = conf.env.extend({NODE_PRESERVE_SYMLINKS: '1'}) var preserveConf = {cwd: sbdirp, env: preserveEnv, stdio: conf.stdio} common.npm(['install', '--save', 'file:../sb-transitive-preserve'], preserveConf, function (err, code, stdout) { if (err) throw err t.is(code, 0, 'command ran ok') var pjson = readJson(sbdirp + '/package.json') var shrinkwrap = readJson(sbdirp + '/npm-shrinkwrap.json') t.is(pjson.dependencies['sb-transitive-preserve'], 'file:../sb-transitive-preserve', 'package.json') var sdep = shrinkwrap.dependencies['sb-transitive-preserve'] || {} var tdep = shrinkwrap.dependencies.sbtb t.like(sdep, {bundled: null, version: 'file:../sb-transitive-preserve'}, 'npm-shrinkwrap.json direct dep') t.like(tdep, {bundled: null, version: 'file:../sb-transitive-preserve/sbtb'}, 'npm-shrinkwrap.json transitive dep') t.done() }) }) }) var rmdir = testdir + '/remove-behavior' testdirContent['remove-behavior'] = Dir({ 'rmsymlink': Dir({ 'package.json': File({ name: 'remove-behavior', version: '1.0.0', dependencies: { dep1: 'file:dep1' } }), 'package-lock.json': File({ name: 'remove-behavior', version: '1.0.0', lockfileVersion: 1, requires: true, dependencies: { dep1: { version: 'file:dep1', requires: { dep2: 'file:dep2' }, dependencies: { dep2: { version: 'file:dep2', bundled: true } } } } }), dep1: Dir({ 'package.json': File({ name: 'dep1', version: '1.0.0', dependencies: { dep2: 'file:../dep2' } }), 'node_modules': Dir({ dep2: Symlink('../../dep2') }) }), dep2: Dir({ 'package.json': File({ name: 'dep2', version: '1.0.0' }) }), 'node_modules': Dir({ dep1: Symlink('../dep1') }) }), 'rmesymlink': Dir({ 'package.json': File({ name: 'remove-behavior', version: '1.0.0', dependencies: { edep1: 'file:../edep1' } }), 'package-lock.json': File({ name: 'remove-behavior', version: '1.0.0', lockfileVersion: 1, requires: true, dependencies: { edep1: { version: 'file:../edep1', requires: { edep2: 'file:../edep2' }, dependencies: { edep2: { version: 'file:../edep2', bundled: true } } } } }), 'node_modules': Dir({ edep1: Symlink('../../edep1') }) }), edep1: Dir({ 'package.json': File({ name: 'edep1', version: '1.0.0', dependencies: { edep2: 'file:../edep2' } }), 'node_modules': Dir({ edep2: Symlink('../../edep2') }) }), edep2: Dir({ 'package.json': File({ name: 'edep2', version: '1.0.0' }) }) }) test('removal', function (t) { t.plan(2) t.test('should remove the symlink', (t) => { const rmconf = {cwd: `${rmdir}/rmsymlink`, env: conf.env, stdio: conf.stdio} return common.npm(['uninstall', 'dep1'], rmconf).spread((code, stdout) => { t.is(code, 0, 'uninstall ran ok') t.comment(stdout) noFileExists(t, `${rmdir}/rmsymlink/node_modules/dep1`, 'removed symlink') noFileExists(t, `${rmdir}/rmsymlink/dep1/node_modules/dep2`, 'removed transitive dep') fileExists(t, `${rmdir}/rmsymlink/dep2`, 'original transitive dep still exists') }) }) t.test("should not remove transitive deps if it's outside the package and --preserver-symlinks isn't set", (t) => { const rmconf = {cwd: `${rmdir}/rmesymlink`, env: conf.env, stdio: conf.stdio} return common.npm(['uninstall', 'edep1'], rmconf).spread((code, stdout) => { t.is(code, 0, 'uninstall ran ok') t.comment(stdout) noFileExists(t, `${rmdir}/rmsymlink/node_modules/edep1`, 'removed symlink') fileExists(t, `${rmdir}/edep1/node_modules/edep2`, 'did NOT remove transitive dep') fileExists(t, `${rmdir}/edep2`, 'original transitive dep still exists') }) }) }) test('misc', function (t) { t.plan(3) t.test('listing: should look right, not include version') t.test('outdated: show LOCAL for wanted / latest') t.test('update: if specifier exists, do nothing. otherwise as if `npm install`.') }) test('cleanup', function (t) { server.close() cleanup() t.done() })
Submit
FILE
FOLDER
Name
Size
Permission
Action
00-check-mock-dep.js
500 bytes
0644
00-config-setup.js
2812 bytes
0644
00-verify-bundle-deps.js
377 bytes
0644
00-verify-ls-ok.js
628 bytes
0644
00-verify-no-scoped.js
1118 bytes
0644
404-parent.js
1634 bytes
0644
404-private-registry-scoped.js
1315 bytes
0644
404-private-registry.js
1243 bytes
0644
access.js
12209 bytes
0644
add-named-update-protocol-port.js
2526 bytes
0644
add-remote-git-file.js
2405 bytes
0644
add-remote-git-shrinkwrap.js
3468 bytes
0644
add-remote-git-submodule.js
3632 bytes
0644
add-remote-git.js
2486 bytes
0644
adduser-always-auth.js
7225 bytes
0644
adduser-legacy-auth.js
2673 bytes
0644
adduser-oauth.js
2419 bytes
0644
adduser-saml.js
2414 bytes
0644
all-package-metadata-cache-stream-unit.js
3766 bytes
0644
all-package-metadata-entry-stream-unit.js
5588 bytes
0644
all-package-metadata-update-stream-unit.js
4725 bytes
0644
all-package-metadata-write-stream-unit.js
3614 bytes
0644
all-package-metadata.js
5742 bytes
0644
anon-cli-metrics.js
4079 bytes
0644
bearer-token-check.js
3133 bytes
0644
bin.js
648 bytes
0644
bitbucket-https-url-with-creds-package.js
1944 bytes
0644
bitbucket-https-url-with-creds.js
1873 bytes
0644
bitbucket-shortcut-package.js
1938 bytes
0644
bitbucket-shortcut.js
1888 bytes
0644
bugs.js
5011 bytes
0644
build-already-built.js
2055 bytes
0644
builtin-config.js
4029 bytes
0644
bundled-dependencies-no-pkgjson.js
1406 bytes
0644
bundled-dependencies-nonarray.js
1752 bytes
0644
bundled-dependencies.js
2678 bytes
0644
bundled-no-add-to-move.js
1384 bytes
0644
bundled-transitive-deps.js
2343 bytes
0644
cache-add-unpublished.js
798 bytes
0644
cache-shasum-fork.js
2771 bytes
0644
check-cpu-reqs.js
1584 bytes
0644
check-engine-reqs.js
1665 bytes
0644
check-install-self.js
1682 bytes
0644
check-os-reqs.js
1579 bytes
0644
check-permissions.js
2445 bytes
0644
ci-header.js
3241 bytes
0644
circular-dep.js
2360 bytes
0644
config-basic.js
2181 bytes
0644
config-builtin.js
1398 bytes
0644
config-certfile.js
541 bytes
0644
config-credentials.js
8520 bytes
0644
config-edit.js
1666 bytes
0644
config-list.js
1844 bytes
0644
config-malformed.js
379 bytes
0644
config-meta.js
4076 bytes
0644
config-new-cafile.js
1224 bytes
0644
config-private.js
1855 bytes
0644
config-project.js
1416 bytes
0644
config-save.js
2181 bytes
0644
correct-mkdir.js
4543 bytes
0644
cruft-test.js
942 bytes
0644
debug-logs.js
2977 bytes
0644
dedupe-scoped.js
3685 bytes
0644
dedupe.js
2581 bytes
0644
deprecate.js
4039 bytes
0644
dist-tag.js
4754 bytes
0644
do-not-remove-other-bins.js
3031 bytes
0644
doctor.js
2984 bytes
0644
extraneous-dep-cycle-ls-ok.js
1514 bytes
0644
false-name.js
2044 bytes
0644
fetch-package-metadata.js
1581 bytes
0644
files-and-ignores.js
20041 bytes
0644
full-warning-messages.js
2847 bytes
0644
gently-rm-cmdshims.js
5175 bytes
0644
gently-rm-linked-module.js
3171 bytes
0644
gently-rm-overeager.js
1464 bytes
0644
gently-rm-symlinked-global-dir.js
2989 bytes
0644
get.js
2323 bytes
0644
gist-short-shortcut-package.js
2042 bytes
0644
gist-short-shortcut.js
2000 bytes
0644
gist-shortcut-package.js
2028 bytes
0644
gist-shortcut.js
1960 bytes
0644
git-dependency-install-link.js
4239 bytes
0644
git-npmignore.js
4886 bytes
0644
git-prepare.js
4003 bytes
0644
github-shortcut-package.js
2002 bytes
0644
github-shortcut.js
2006 bytes
0644
gitlab-shortcut-package.js
1928 bytes
0644
gitlab-shortcut.js
1897 bytes
0644
global-prefix-set-in-userconfig.js
843 bytes
0644
graceful-restart.js
2663 bytes
0644
help.js
625 bytes
0644
ignore-install-link.js
1959 bytes
0644
ignore-scripts.js
3354 bytes
0644
init-interrupt.js
1382 bytes
0644
install-actions.js
2498 bytes
0644
install-at-locally.js
1760 bytes
0644
install-bad-dep-format.js
1269 bytes
0644
install-bad-man.js
1738 bytes
0644
install-bin-null.js
1834 bytes
0644
install-cli-only-development.js
2839 bytes
0644
install-cli-only-production.js
2068 bytes
0644
install-cli-only-shrinkwrap.js
3239 bytes
0644
install-cli-production-nosave.js
1396 bytes
0644
install-cli-production.js
2050 bytes
0644
install-cli-unicode.js
1484 bytes
0644
install-duplicate-deps-warning.js
1563 bytes
0644
install-from-local.js
2414 bytes
0644
install-into-likenamed-folder.js
998 bytes
0644
install-link-scripts.js
2742 bytes
0644
install-local-dep-cycle.js
1448 bytes
0644
install-man.js
1593 bytes
0644
install-noargs-dev.js
2312 bytes
0644
install-order.js
1130 bytes
0644
install-package-json-order.js
1751 bytes
0644
install-package-lock-only.js
2197 bytes
0644
install-parse-error.js
959 bytes
0644
install-property-conflicts.js
1546 bytes
0644
install-report-just-installed.js
1572 bytes
0644
install-save-exact.js
2561 bytes
0644
install-save-local.js
5428 bytes
0644
install-save-prefix.js
4275 bytes
0644
install-scoped-already-installed.js
3710 bytes
0644
install-scoped-link.js
2040 bytes
0644
install-scoped-with-bundled-dependency.js
1798 bytes
0644
install-scoped-with-peer-dependency.js
1419 bytes
0644
install-shrinkwrapped-git.js
4407 bytes
0644
install-windows-newlines.js
2185 bytes
0644
install-with-dev-dep-duplicate.js
1894 bytes
0644
invalid-cmd-exit-code.js
1057 bytes
0644
invalid-dep-version-filtering.js
3341 bytes
0644
is-fs-access-available.js
1926 bytes
0644
is-registry.js
1220 bytes
0644
it.js
2065 bytes
0644
legacy-ignore-nested-nm.js
1764 bytes
0644
legacy-missing-bindir.js
1814 bytes
0644
legacy-no-auth-leak.js
1962 bytes
0644
legacy-platform-all.js
1529 bytes
0644
legacy-platform.js
1409 bytes
0644
legacy-private.js
1286 bytes
0644
legacy-test-package.js
1772 bytes
0644
lifecycle-INIT_CWD.js
1118 bytes
0644
lifecycle-order.js
1694 bytes
0644
link.js
5925 bytes
0644
local-args-relative-to-cwd.js
1282 bytes
0644
locker.js
2273 bytes
0644
lockfile-http-deps.js
2197 bytes
0644
logout-scoped.js
1418 bytes
0644
logout.js
1353 bytes
0644
ls-depth-cli.js
5338 bytes
0644
ls-depth-unmet.js
4259 bytes
0644
ls-env.js
3302 bytes
0644
ls-l-depth-0.js
2695 bytes
0644
ls-no-results.js
368 bytes
0644
ls-production-and-dev.js
4125 bytes
0644
ls-top-errors.js
1400 bytes
0644
ls.js
4369 bytes
0644
map-to-registry.js
5024 bytes
0644
nerf-dart.js
1220 bytes
0644
nested-extraneous.js
1213 bytes
0644
no-global-warns.js
1889 bytes
0644
no-scan-full-global-dir.js
3008 bytes
0644
noargs-install-config-save.js
2011 bytes
0644
node-modules-path-munge.js
986 bytes
0644
normalize-package-explode.js
523 bytes
0644
npm-api-not-loaded-error.js
1028 bytes
0644
onload.js
1297 bytes
0644
optional-metadep-rollback-collision.js
4497 bytes
0644
outdated-bad-read-tree.js
489 bytes
0644
outdated-color.js
1600 bytes
0644
outdated-depth.js
1526 bytes
0644
outdated-git.js
1623 bytes
0644
outdated-json.js
2140 bytes
0644
outdated-long.js
2069 bytes
0644
outdated.js
2641 bytes
0644
override-bundled.js
6716 bytes
0644
owner.js
4219 bytes
0644
pack-scoped.js
1707 bytes
0644
peer-deps.js
1482 bytes
0644
pick-manifest-from-registry-metadata.js
4792 bytes
0644
ping.js
1355 bytes
0644
prepare.js
1834 bytes
0644
prepublish-only.js
3091 bytes
0644
prepublish.js
2734 bytes
0644
process-logger.js
543 bytes
0644
progress-config.js
2413 bytes
0644
prune-dev-dep-cycle.js
1803 bytes
0644
prune-dev-dep-with-bins.js
2664 bytes
0644
prune-with-dev-dep-duplicate.js
2464 bytes
0644
prune-with-only-dev-deps.js
2751 bytes
0644
prune.js
2963 bytes
0644
publish-access-scoped.js
1760 bytes
0644
publish-access-unscoped-restricted-fails.js
975 bytes
0644
publish-access-unscoped.js
1761 bytes
0644
publish-config.js
2009 bytes
0644
publish-invalid-semver-tag.js
1729 bytes
0644
publish-scoped.js
2177 bytes
0644
pwd-prefix.js
985 bytes
0644
referer.js
668 bytes
0644
repo.js
4172 bytes
0644
retry-on-stale-cache.js
5728 bytes
0644
run-script-filter-private.js
1130 bytes
0644
run-script.js
10891 bytes
0644
scope-header.js
3975 bytes
0644
scripts-whitespace-windows.js
2454 bytes
0644
search.all-package-search.js
4675 bytes
0644
search.esearch.js
4483 bytes
0644
search.js
5394 bytes
0644
semver-doc.js
426 bytes
0644
shared-linked.js
3638 bytes
0644
shrinkwrap-_auth.js
3177 bytes
0644
shrinkwrap-default-dev.js
2126 bytes
0644
shrinkwrap-dev-dependency.js
2155 bytes
0644
shrinkwrap-empty-deps.js
1631 bytes
0644
shrinkwrap-extra-metadata.js
1845 bytes
0644
shrinkwrap-global-auth.js
2895 bytes
0644
shrinkwrap-lifecycle-cwd.js
2231 bytes
0644
shrinkwrap-lifecycle.js
1445 bytes
0644
shrinkwrap-local-dependency.js
3103 bytes
0644
shrinkwrap-nested.js
3941 bytes
0644
shrinkwrap-optional-dependency.js
2222 bytes
0644
shrinkwrap-optional-platform.js
2366 bytes
0644
shrinkwrap-optional-property.js
2223 bytes
0644
shrinkwrap-prod-dependency-also.js
2698 bytes
0644
shrinkwrap-prod-dependency.js
2056 bytes
0644
shrinkwrap-save-dev-with-existing-deps.js
2929 bytes
0644
shrinkwrap-save-with-existing-dev-deps.js
2260 bytes
0644
shrinkwrap-scoped-auth.js
2949 bytes
0644
shrinkwrap-shared-dev-dependency.js
2056 bytes
0644
shrinkwrap-version-match.js
2899 bytes
0644
sorted-package-json.js
2222 bytes
0644
spawn-enoent-help.js
822 bytes
0644
spawn-enoent.js
869 bytes
0644
spec-local-specifiers.js
23353 bytes
0644
splat-with-only-prerelease-to-latest.js
2804 bytes
0644
startstop.js
1591 bytes
0644
symlink-cycle.js
1297 bytes
0644
tag-version-prefix.js
2458 bytes
0644
tagged-version-matching.js
5302 bytes
0644
team.js
3497 bytes
0644
test-run-ls.js
918 bytes
0644
tree-style.js
3569 bytes
0644
umask-lifecycle.js
1497 bytes
0644
uninstall-in-reverse.js
949 bytes
0644
uninstall-link-clean.js
2561 bytes
0644
uninstall-package.js
1837 bytes
0644
uninstall-save.js
2080 bytes
0644
unit-child-path.js
453 bytes
0644
unit-deps-earliestInstallable.js
2475 bytes
0644
unit-deps-removeObsoleteDep.js
1074 bytes
0644
unit-deps-replaceModule.js
2658 bytes
0644
unit-module-name.js
1721 bytes
0644
unit-package-id.js
960 bytes
0644
unpack-foreign-tarball.js
2217 bytes
0644
unpublish-config.js
1930 bytes
0644
unsupported.js
1215 bytes
0644
update-examples.js
5204 bytes
0644
update-path.js
881 bytes
0644
upgrade-lifecycles.js
1883 bytes
0644
url-dependencies.js
2364 bytes
0644
verify-no-lifecycle-on-repo.js
1588 bytes
0644
version-allow-same-version.js
1999 bytes
0644
version-commit-hooks-default.js
454 bytes
0644
version-commit-hooks.js
1888 bytes
0644
version-from-git.js
5988 bytes
0644
version-git-not-clean.js
2831 bytes
0644
version-lifecycle.js
5800 bytes
0644
version-message-config.js
1942 bytes
0644
version-no-git.js
1474 bytes
0644
version-no-package.js
1112 bytes
0644
version-no-tags.js
2151 bytes
0644
version-sub-directory-shrinkwrap.js
2219 bytes
0644
version-sub-directory.js
1794 bytes
0644
version-update-shrinkwrap.js
3908 bytes
0644
view.js
10410 bytes
0644
zz-cleanup.js
184 bytes
0644
N4ST4R_ID | Naxtarrr