summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/read-package-json/node_modules/normalize-package-data')
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js63
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/safe_format.js9
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/warning_messages.json28
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json10
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/normalize.js55
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/typo.js75
6 files changed, 150 insertions, 90 deletions
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js
index af2bf55ae..9d832ee17 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js
@@ -6,6 +6,8 @@ var url = require("url")
var typos = require("./typos")
var coreModuleNames = require("./core_module_names")
var githubUserRepo = require("github-url-from-username-repo")
+var warningMessages = require('./warning_messages.json')
+var format = require('util').format
var fixer = module.exports = {
// default warning function
@@ -13,11 +15,10 @@ var fixer = module.exports = {
fixRepositoryField: function(data) {
if (data.repositories) {
- this.warn("'repositories' (plural) Not supported.\n" +
- "Please pick one as the 'repository' field");
+ this.warn(warningMessages.repositories);
data.repository = data.repositories[0]
}
- if (!data.repository) return this.warn('No repository field.')
+ if (!data.repository) return this.warn(warningMessages.missingRepository)
if (typeof data.repository === "string") {
data.repository = {
type: "git",
@@ -36,7 +37,7 @@ var fixer = module.exports = {
}
if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) {
- this.warn("Probably broken git url: " + r)
+ this.warn(format(warningMessages.brokenGitUrl, r))
}
}
@@ -51,12 +52,12 @@ var fixer = module.exports = {
, fixScriptsField: function(data) {
if (!data.scripts) return
if (typeof data.scripts !== "object") {
- this.warn("scripts must be an object")
+ this.warn(warningMessages.nonObjectScripts)
delete data.scripts
}
Object.keys(data.scripts).forEach(function (k) {
if (typeof data.scripts[k] !== "string") {
- this.warn("script values must be string commands")
+ this.warn(warningMessages.nonStringScript)
delete data.scripts[k]
} else if (typos.script[k]) {
this.warn(makeTypoWarning(k, typos.script[k], "scripts"))
@@ -67,12 +68,12 @@ var fixer = module.exports = {
, fixFilesField: function(data) {
var files = data.files
if (files && !Array.isArray(files)) {
- this.warn("Invalid 'files' member")
+ this.warn(warningMessages.nonArrayFiles)
delete data.files
} else if (data.files) {
data.files = data.files.filter(function(file) {
if (!file || typeof file !== "string") {
- this.warn("Invalid filename in 'files' list: " + file)
+ this.warn(format(warningMessages.invalidFilename, file))
return false
} else {
return true
@@ -104,13 +105,12 @@ var fixer = module.exports = {
delete data[bdd]
}
if (data[bd] && !Array.isArray(data[bd])) {
- this.warn("Invalid 'bundleDependencies' list. " +
- "Must be array of package names")
+ this.warn(warningMessages.nonArrayBundleDependencies)
delete data[bd]
} else if (data[bd]) {
data[bd] = data[bd].filter(function(bd) {
if (!bd || typeof bd !== 'string') {
- this.warn("Invalid bundleDependencies member: " + bd)
+ this.warn(format(nonStringBundleDependency, bd))
return false
} else {
return true
@@ -128,23 +128,28 @@ var fixer = module.exports = {
;['dependencies','devDependencies'].forEach(function(deps) {
if (!(deps in data)) return
if (!data[deps] || typeof data[deps] !== "object") {
- this.warn(deps + " field must be an object")
+ this.warn(format(warningMessages.nonObjectDependencies, deps))
delete data[deps]
return
}
Object.keys(data[deps]).forEach(function (d) {
var r = data[deps][d]
if (typeof r !== 'string') {
- this.warn('Invalid dependency: ' + d + ' ' + JSON.stringify(r))
+ this.warn(format(nonStringDependency, d, JSON.stringify(r)))
delete data[deps][d]
}
+ // "/" is not allowed as packagename for publishing, but for git-urls
+ // normalize shorthand-urls
+ if (githubUserRepo(data[deps][d])) {
+ data[deps][d] = githubUserRepo(data[deps][d])
+ }
}, this)
}, this)
}
, fixModulesField: function (data) {
if (data.modules) {
- this.warn("modules field is deprecated")
+ this.warn(warningMessages.deprecatedModules)
delete data.modules
}
}
@@ -155,11 +160,11 @@ var fixer = module.exports = {
}
if (data.keywords && !Array.isArray(data.keywords)) {
delete data.keywords
- this.warn("keywords should be an array of strings")
+ this.warn(warningMessages.nonArrayKeywords)
} else if (data.keywords) {
data.keywords = data.keywords.filter(function(kw) {
if (typeof kw !== "string" || !kw) {
- this.warn("keywords should be an array of strings");
+ this.warn(warningMessages.nonStringKeyword);
return false
} else {
return true
@@ -200,24 +205,24 @@ var fixer = module.exports = {
data.name = data.name.trim()
ensureValidName(data.name, strict)
if (coreModuleNames.indexOf(data.name) !== -1)
- this.warn(data.name + " is also the name of a node core module.")
+ this.warn(format(warningMessages.conflictingName, data.name))
}
, fixDescriptionField: function (data) {
if (data.description && typeof data.description !== 'string') {
- this.warn("'description' field should be a string")
+ this.warn(warningMessages.nonStringDescription)
delete data.description
}
if (data.readme && !data.description)
data.description = extractDescription(data.readme)
if(data.description === undefined) delete data.description;
- if (!data.description) this.warn('No description')
+ if (!data.description) this.warn(warningMessages.missingDescription)
}
, fixReadmeField: function (data) {
if (!data.readme) {
- this.warn("No README data")
+ this.warn(warningMessages.missingReadme)
data.readme = "ERROR: No README data found!"
}
}
@@ -240,7 +245,7 @@ var fixer = module.exports = {
else if(url.parse(data.bugs).protocol)
data.bugs = {url: data.bugs}
else
- this.warn("Bug string field must be url, email, or {email,url}")
+ this.warn(warningMessages.nonEmailUrlBugsString)
}
else {
bugsTypos(data.bugs, this.warn)
@@ -250,18 +255,18 @@ var fixer = module.exports = {
if(typeof(oldBugs.url) == "string" && url.parse(oldBugs.url).protocol)
data.bugs.url = oldBugs.url
else
- this.warn("bugs.url field must be a string url. Deleted.")
+ this.warn(warningMessages.nonUrlBugsUrlField)
}
if(oldBugs.email) {
if(typeof(oldBugs.email) == "string" && emailRe.test(oldBugs.email))
data.bugs.email = oldBugs.email
else
- this.warn("bugs.email field must be a string email. Deleted.")
+ this.warn(warningMessages.nonEmailBugsEmailField)
}
}
if(!data.bugs.email && !data.bugs.url) {
delete data.bugs
- this.warn("Normalized value of bugs field is an empty object. Deleted.")
+ this.warn(warningMessages.emptyNormalizedBugs)
}
}
}
@@ -277,11 +282,11 @@ var fixer = module.exports = {
return true
if(typeof data.homepage !== "string") {
- this.warn("homepage field must be a string url. Deleted.")
+ this.warn(warningMessages.nonUrlHomepage)
return delete data.homepage
}
if(!url.parse(data.homepage).protocol) {
- this.warn("homepage field must start with a protocol.")
+ this.warn(warningMessages.missingProtocolHomepage)
data.homepage = "http://" + data.homepage
}
}
@@ -345,7 +350,7 @@ function depObjectify (deps, type, warn) {
deps = deps.trim().split(/[\n\r\s\t ,]+/)
}
if (!Array.isArray(deps)) return deps
- warn("specifying " + type + " as array is deprecated")
+ warn(format(warningMessages.deprecatedArrayDependencies, type))
var o = {}
deps.filter(function (d) {
return typeof d === "string"
@@ -383,5 +388,5 @@ function makeTypoWarning (providedName, probableName, field) {
providedName = field + "['" + providedName + "']"
probableName = field + "['" + probableName + "']"
}
- return providedName + " should probably be " + probableName + "."
-}
+ return format(warningMessages.typo, providedName, probableName)
+} \ No newline at end of file
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/safe_format.js b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/safe_format.js
new file mode 100644
index 000000000..08517f142
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/safe_format.js
@@ -0,0 +1,9 @@
+var util = require('util')
+
+module.exports = function() {
+ var args = Array.prototype.slice.call(arguments, 0)
+ args.forEach(function(arg) {
+ if (!arg) throw new TypeError('Bad arguments.')
+ })
+ return util.format.apply(null, arguments)
+} \ No newline at end of file
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/warning_messages.json b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/warning_messages.json
new file mode 100644
index 000000000..9605f5cc6
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/warning_messages.json
@@ -0,0 +1,28 @@
+{
+ "repositories": "'repositories' (plural) Not supported. Please pick one as the 'repository' field"
+ ,"missingRepository": "No repository field."
+ ,"brokenGitUrl": "Probably broken git url: %s"
+ ,"nonObjectScripts": "scripts must be an object"
+ ,"nonStringScript": "script values must be string commands"
+ ,"nonArrayFiles": "Invalid 'files' member"
+ ,"invalidFilename": "Invalid filename in 'files' list: %s"
+ ,"nonArrayBundleDependencies": "Invalid 'bundleDependencies' list. Must be array of package names"
+ ,"nonStringBundleDependency": "Invalid bundleDependencies member: %s"
+ ,"nonObjectDependencies": "%s field must be an object"
+ ,"nonStringDependency": "Invalid dependency: %s %s"
+ ,"deprecatedArrayDependencies": "specifying %s as array is deprecated"
+ ,"deprecatedModules": "modules field is deprecated"
+ ,"nonArrayKeywords": "keywords should be an array of strings"
+ ,"nonStringKeyword": "keywords should be an array of strings"
+ ,"conflictingName": "%s is also the name of a node core module."
+ ,"nonStringDescription": "'description' field should be a string"
+ ,"missingDescription": "No description"
+ ,"missingReadme": "No README data"
+ ,"nonEmailUrlBugsString": "Bug string field must be url, email, or {email,url}"
+ ,"nonUrlBugsUrlField": "bugs.url field must be a string url. Deleted."
+ ,"nonEmailBugsEmailField": "bugs.email field must be a string email. Deleted."
+ ,"emptyNormalizedBugs": "Normalized value of bugs field is an empty object. Deleted."
+ ,"nonUrlHomepage": "homepage field must be a string url. Deleted."
+ ,"missingProtocolHomepage": "homepage field must start with a protocol."
+ ,"typo": "%s should probably be %s."
+} \ No newline at end of file
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json
index 1ea36836a..05037bf92 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json
@@ -1,6 +1,6 @@
{
"name": "normalize-package-data",
- "version": "0.2.8",
+ "version": "0.2.9",
"author": {
"name": "Meryn Stol",
"email": "merynstol@gmail.com"
@@ -44,6 +44,10 @@
"url": "https://github.com/meryn/normalize-package-data/issues"
},
"homepage": "https://github.com/meryn/normalize-package-data",
- "_id": "normalize-package-data@0.2.8",
- "_from": "normalize-package-data@~0.2.7"
+ "_id": "normalize-package-data@0.2.9",
+ "dist": {
+ "shasum": "73fff1f896ce6f95bd089c57037a96389ad5789e"
+ },
+ "_from": "normalize-package-data@~0.2.9",
+ "_resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-0.2.9.tgz"
}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/normalize.js b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/normalize.js
index 6e96e6dc9..dd26c5d01 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/normalize.js
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/normalize.js
@@ -5,6 +5,8 @@ var path = require("path")
var globals = Object.keys(global)
var normalize = require("../lib/normalize")
+var warningMessages = require("../lib/warning_messages.json")
+var safeFormat = require("../lib/safe_format")
var rpjPath = path.resolve(__dirname,"./fixtures/read-package-json.json")
tap.test("normalize some package data", function(t) {
@@ -48,9 +50,9 @@ tap.test("empty object", function(t) {
normalize(packageData, warn)
t.same(packageData, expect)
t.same(warnings, [
- "No description",
- "No repository field.",
- "No README data"
+ warningMessages.missingDescription,
+ warningMessages.missingRepository,
+ warningMessages.missingReadme
])
t.end()
})
@@ -70,10 +72,10 @@ tap.test("core module name", function(t) {
}, warn)
var expect = [
- "http is also the name of a node core module.",
- "Bug string field must be url, email, or {email,url}",
- "Normalized value of bugs field is an empty object. Deleted.",
- "homepage field must be a string url. Deleted."
+ safeFormat(warningMessages.conflictingName, 'http'),
+ warningMessages.nonEmailUrlBugsString,
+ warningMessages.emptyNormalizedBugs,
+ warningMessages.nonUrlHomepage
]
t.same(warnings, expect)
t.end()
@@ -101,15 +103,15 @@ tap.test("urls required", function(t) {
console.error(a)
var expect =
- [ "No description",
- "No repository field.",
- "bugs.url field must be a string url. Deleted.",
- "bugs.email field must be a string email. Deleted.",
- "Normalized value of bugs field is an empty object. Deleted.",
- "No README data",
- "Bug string field must be url, email, or {email,url}",
- "Normalized value of bugs field is an empty object. Deleted.",
- "homepage field must be a string url. Deleted." ]
+ [ warningMessages.missingDescription,
+ warningMessages.missingRepository,
+ warningMessages.nonUrlBugsUrlField,
+ warningMessages.nonEmailBugsEmailField,
+ warningMessages.emptyNormalizedBugs,
+ warningMessages.missingReadme,
+ warningMessages.nonEmailUrlBugsString,
+ warningMessages.emptyNormalizedBugs,
+ warningMessages.nonUrlHomepage ]
t.same(warnings, expect)
t.end()
})
@@ -127,10 +129,10 @@ tap.test("homepage field must start with a protocol.", function(t) {
console.error(a)
var expect =
- [ "No description",
- "No repository field.",
- "No README data",
- "homepage field must start with a protocol." ]
+ [ warningMessages.missingDescription,
+ warningMessages.missingRepository,
+ warningMessages.missingReadme,
+ warningMessages.missingProtocolHomepage ]
t.same(warnings, expect)
t.same(a.homepage, 'http://example.org')
t.end()
@@ -194,6 +196,13 @@ tap.test("homepage field will set to github gist url if repository is a shorthan
t.end()
})
+tap.test("treat isaacs/node-graceful-fs as github repo in dependencies", function(t) {
+ var d = {dependencies: {"node-graceful-fs": "isaacs/node-graceful-fs"}}
+ normalize(d)
+ t.same(d.dependencies, {"node-graceful-fs": "git://github.com/isaacs/node-graceful-fs" })
+ t.end()
+});
+
tap.test("deprecation warning for array in dependencies fields", function(t) {
var a
var warnings = []
@@ -205,9 +214,9 @@ tap.test("deprecation warning for array in dependencies fields", function(t) {
devDependencies: [],
optionalDependencies: []
}, warn)
- t.ok(~warnings.indexOf("specifying dependencies as array is deprecated"), "deprecation warning")
- t.ok(~warnings.indexOf("specifying devDependencies as array is deprecated"), "deprecation warning")
- t.ok(~warnings.indexOf("specifying optionalDependencies as array is deprecated"), "deprecation warning")
+ t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'dependencies')), "deprecation warning")
+ t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'devDependencies')), "deprecation warning")
+ t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'optionalDependencies')), "deprecation warning")
t.end()
})
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/typo.js b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/typo.js
index 3eef829fd..eda75545e 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/typo.js
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/typo.js
@@ -1,33 +1,38 @@
var test = require('tap').test
+
var normalize = require('../')
var typos = require('../lib/typos.json')
+var warningMessages = require("../lib/warning_messages.json")
+var safeFormat = require("../lib/safe_format")
test('typos', function(t) {
var warnings = []
function warn(m) {
warnings.push(m)
}
+
+ var typoMessage = safeFormat.bind(undefined, warningMessages.typo)
var expect =
- [ 'No repository field.',
- 'dependancies should probably be dependencies.',
- 'dependecies should probably be dependencies.',
- 'depdenencies should probably be dependencies.',
- 'devEependencies should probably be devDependencies.',
- 'depends should probably be dependencies.',
- 'dev-dependencies should probably be devDependencies.',
- 'devDependences should probably be devDependencies.',
- 'devDepenencies should probably be devDependencies.',
- 'devdependencies should probably be devDependencies.',
- 'repostitory should probably be repository.',
- 'repo should probably be repository.',
- 'prefereGlobal should probably be preferGlobal.',
- 'hompage should probably be homepage.',
- 'hampage should probably be homepage.',
- 'autohr should probably be author.',
- 'autor should probably be author.',
- 'contributers should probably be contributors.',
- 'publicationConfig should probably be publishConfig.' ]
+ [ warningMessages.missingRepository,
+ typoMessage('dependancies', 'dependencies'),
+ typoMessage('dependecies', 'dependencies'),
+ typoMessage('depdenencies', 'dependencies'),
+ typoMessage('devEependencies', 'devDependencies'),
+ typoMessage('depends', 'dependencies'),
+ typoMessage('dev-dependencies', 'devDependencies'),
+ typoMessage('devDependences', 'devDependencies'),
+ typoMessage('devDepenencies', 'devDependencies'),
+ typoMessage('devdependencies', 'devDependencies'),
+ typoMessage('repostitory', 'repository'),
+ typoMessage('repo', 'repository'),
+ typoMessage('prefereGlobal', 'preferGlobal'),
+ typoMessage('hompage', 'homepage'),
+ typoMessage('hampage', 'homepage'),
+ typoMessage('autohr', 'author'),
+ typoMessage('autor', 'author'),
+ typoMessage('contributers', 'contributors'),
+ typoMessage('publicationConfig', 'publishConfig') ]
normalize({"dependancies": "dependencies"
,"dependecies": "dependencies"
@@ -55,13 +60,13 @@ test('typos', function(t) {
warnings.length = 0
var expect =
- [ 'No description',
- 'No repository field.',
- 'bugs[\'web\'] should probably be bugs[\'url\'].',
- 'bugs[\'name\'] should probably be bugs[\'url\'].',
- 'bugs.url field must be a string url. Deleted.',
- 'Normalized value of bugs field is an empty object. Deleted.',
- "No README data" ]
+ [ warningMessages.missingDescription,
+ warningMessages.missingRepository,
+ typoMessage("bugs['web']", "bugs['url']"),
+ typoMessage("bugs['name']", "bugs['url']"),
+ warningMessages.nonUrlBugsUrlField,
+ warningMessages.emptyNormalizedBugs,
+ warningMessages.missingReadme ]
normalize({name:"name"
,version:"1.2.5"
@@ -71,10 +76,10 @@ test('typos', function(t) {
warnings.length = 0
var expect =
- [ 'No description',
- 'No repository field.',
- "No README data",
- 'script should probably be scripts.' ]
+ [ warningMessages.missingDescription,
+ warningMessages.missingRepository,
+ warningMessages.missingReadme,
+ typoMessage('script', 'scripts') ]
normalize({name:"name"
,version:"1.2.5"
@@ -84,11 +89,11 @@ test('typos', function(t) {
warnings.length = 0
expect =
- [ 'No description',
- 'No repository field.',
- 'scripts[\'server\'] should probably be scripts[\'start\'].',
- 'scripts[\'tests\'] should probably be scripts[\'test\'].',
- "No README data" ]
+ [ warningMessages.missingDescription,
+ warningMessages.missingRepository,
+ typoMessage("scripts['server']", "scripts['start']"),
+ typoMessage("scripts['tests']", "scripts['test']"),
+ warningMessages.missingReadme ]
normalize({name:"name"
,version:"1.2.5"