eslint-plugin-couchdb
Advanced tools
Comparing version
@@ -7,15 +7,37 @@ /** | ||
var front = function(functions, jsonObject) { | ||
var fn = function(name) { | ||
return 'var ' + name + ' = function() {};'; | ||
}; | ||
var COUCHIAN_NAMES = [ | ||
'map.js', | ||
'reduce.js', | ||
'validate_doc_update.js' | ||
]; | ||
var prepends = functions.map(fn).join(''); | ||
if (jsonObject) { | ||
prepends += 'var JSON = {};JSON.stringify = function() {};JSON.parse = function() {}'; | ||
} | ||
var isCouchDBDocument = function(filename) { | ||
return COUCHIAN_NAMES.find(function(name) { | ||
return filename.endsWith(name); | ||
}); | ||
return prepends + '( // eslint-disable-line \n'; | ||
} | ||
// https://docs.couchdb.org/en/stable/query-server/javascript.html# | ||
var mapFront = front(['emit', 'isArray', 'log', 'require', 'sum', 'toJSON'], true); | ||
var reduceFront = front(['isArray', 'log', 'sum', 'toJSON'], true); | ||
var vdoFront = front(['isArray', 'log', 'require', 'sum', 'toJSON'], true); | ||
var showFront = front(['isArray', 'log', 'provides', 'registerType', 'require', 'sum', 'toJSON'], true); | ||
var listFront = front(['getRow', 'isArray', 'log', 'provides', 'registerType', 'require', 'send', 'start', 'sum', 'toJSON'], true); | ||
var mapTest = /views\/[^\/]+\/map\.js$/; | ||
var reduceTest = /views\/[^\/]+\/reduce\.js$/; | ||
var vdoTest = /validate_doc_update.js$/; | ||
var showTest = /shows\/.*.js$/; | ||
var listTest = /lists\/.*.js$/; | ||
var FN_TYPES = [ | ||
{test: mapTest, front: mapFront}, | ||
{test: reduceTest, front: reduceFront}, | ||
{test: vdoTest, front: vdoFront}, | ||
{test: showTest, front: showFront}, | ||
{test: listTest, front: listFront} | ||
]; | ||
// import processors | ||
@@ -26,22 +48,23 @@ module.exports.processors = { | ||
preprocess: function(text, filename) { | ||
if (isCouchDBDocument(filename)) { | ||
return ['(' + text + ');']; | ||
} else { | ||
return [text]; | ||
for (var i = 0; i < FN_TYPES.length; i++) { | ||
var fnType = FN_TYPES[i]; | ||
if (fnType.test.test(filename)) { | ||
var output = fnType.front + text + ')'; | ||
return [output]; | ||
} | ||
} | ||
return [text]; | ||
}, | ||
postprocess: function(messages) { | ||
return messages[0]; | ||
} | ||
} | ||
}; | ||
messages[0].forEach(function(message) { | ||
// We're adding one line of preamble, so drop the line number by one | ||
message.line--; | ||
}); | ||
module.exports.environments = { | ||
couchdb: { | ||
globals: { | ||
emit: true, | ||
log: true | ||
return messages[0]; | ||
} | ||
} | ||
}; |
{ | ||
"name": "eslint-plugin-couchdb", | ||
"version": "0.1.1", | ||
"version": "0.2.0", | ||
"description": "Adds support for CouchDB design document JavaScript files", | ||
@@ -13,12 +13,11 @@ "keywords": [ | ||
"author": "Stefan du Fresne", | ||
"repository": "https://github.com/scdf/eslint-plugin-couchdb", | ||
"main": "lib/index.js", | ||
"scripts": { | ||
"test": "mocha tests --recursive" | ||
"test": "eslint lib/ tests/" | ||
}, | ||
"dependencies": { | ||
"requireindex": "~1.1.0" | ||
}, | ||
"dependencies": {}, | ||
"devDependencies": { | ||
"eslint": "~3.9.1", | ||
"mocha": "^3.1.2" | ||
"eslint-plugin-couchdb": "." | ||
}, | ||
@@ -25,0 +24,0 @@ "engines": { |
@@ -41,5 +41,2 @@ # eslint-plugin-couchdb | ||
"extends": "eslint:recommended", | ||
"env": { | ||
"couchdb/couchdb": true, | ||
}, | ||
"plugins": ["couchdb"] | ||
@@ -58,5 +55,2 @@ } | ||
"extends": "eslint:recommended", | ||
"env": { | ||
"couchdb/couchdb": true, | ||
}, | ||
"plugins": ["couchdb"], | ||
@@ -63,0 +57,0 @@ "parserOptions": { |
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
4387
65.55%0
-100%8
166.67%83
112.82%60
-9.09%- Removed
- Removed