mirror of
https://github.com/Unleash/unleash.git
synced 2025-06-09 01:17:06 +02:00
* #108 Add eslint-config-spt * #108 Ignore bundle.js file * #108 Change eslint ignore path to a glob file * Remove jshint and follow more of eslint rules
This commit is contained in:
parent
89c35135ec
commit
a96a9f38ce
24
.eslintrc
Normal file
24
.eslintrc
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"extends": [
|
||||
"spt",
|
||||
"spt/env-node",
|
||||
"spt/env-es6-false",
|
||||
"spt/env-react"
|
||||
],
|
||||
"env": {
|
||||
"browser": true
|
||||
},
|
||||
"rules": {
|
||||
"quotes": 0,
|
||||
"strict": 0,
|
||||
"vars-on-top": 0,
|
||||
"no-use-before-define": 0,
|
||||
"dot-notation": 0,
|
||||
"eqeqeq": 0,
|
||||
"no-eq-null": 0,
|
||||
"no-undefined": 0,
|
||||
"no-else-return": 0,
|
||||
"no-shadow": 0,
|
||||
"consistent-this": 0
|
||||
}
|
||||
}
|
83
.jshintrc
83
.jshintrc
@ -1,83 +0,0 @@
|
||||
{
|
||||
"globals": {
|
||||
"jQuery" : false,
|
||||
"$" : false,
|
||||
"sinon" : false,
|
||||
"describe" : false,
|
||||
"it" : false,
|
||||
"xit" : false,
|
||||
"expect" : false,
|
||||
"before" : false,
|
||||
"after" : false,
|
||||
"beforeEach": false,
|
||||
"afterEach" : false,
|
||||
"contain" : false
|
||||
},
|
||||
|
||||
"bitwise" : true,
|
||||
"camelcase" : true,
|
||||
"curly" : true,
|
||||
"eqeqeq" : false,
|
||||
"es3" : false,
|
||||
"forin" : false,
|
||||
"freeze" : false,
|
||||
"immed" : true,
|
||||
"indent" : 4,
|
||||
"latedef" : "nofunc",
|
||||
"newcap" : false,
|
||||
"noarg" : true,
|
||||
"noempty" : true,
|
||||
"nonbsp" : true,
|
||||
"nonew" : true,
|
||||
"plusplus" : false,
|
||||
"quotmark" : false,
|
||||
"undef" : true,
|
||||
"unused" : true,
|
||||
"strict" : false,
|
||||
"trailing" : true,
|
||||
"maxparams" : 3,
|
||||
"maxdepth" : 4,
|
||||
"maxstatements" : 20,
|
||||
"maxcomplexity" : 10,
|
||||
"maxlen" : 120,
|
||||
"predef": [ "-Promise" ],
|
||||
|
||||
"asi" : false,
|
||||
"boss" : false,
|
||||
"debug" : false,
|
||||
"eqnull" : true,
|
||||
"esnext" : false,
|
||||
"evil" : false,
|
||||
"expr" : false,
|
||||
"funcscope" : false,
|
||||
"globalstrict" : false,
|
||||
"iterator" : false,
|
||||
"lastsemic" : false,
|
||||
"laxbreak" : false,
|
||||
"laxcomma" : false,
|
||||
"loopfunc" : false,
|
||||
"maxerr" : 100,
|
||||
"moz" : false,
|
||||
"multistr" : true,
|
||||
"notypeof" : false,
|
||||
"proto" : false,
|
||||
"scripturl" : false,
|
||||
"smarttabs" : false,
|
||||
"shadow" : false,
|
||||
"sub" : false,
|
||||
"supernew" : false,
|
||||
"validthis" : false,
|
||||
"noyield" : false,
|
||||
|
||||
"browser" : true,
|
||||
"devel" : false,
|
||||
"node" : true,
|
||||
"jquery" : false,
|
||||
"nonstandard" : false,
|
||||
"prototypejs" : false,
|
||||
|
||||
"nomen" : false,
|
||||
"onevar" : false,
|
||||
"passfail" : false,
|
||||
"white" : false
|
||||
}
|
2
app.js
2
app.js
@ -10,7 +10,7 @@ var express = require('express'),
|
||||
strategyApi = require('./lib/strategyApi'),
|
||||
validator = require('express-validator'),
|
||||
app = express(),
|
||||
router = express.Router(),
|
||||
router = express.Router(), // eslint-disable-line
|
||||
baseUriPath = process.env.BASE_URI_PATH || '';
|
||||
|
||||
if (app.get('env') === 'development') {
|
||||
|
@ -2,7 +2,6 @@ var eventDb = require('./eventDb');
|
||||
var eventDiffer = require('./eventDiffer');
|
||||
|
||||
module.exports = function (app) {
|
||||
|
||||
app.get('/events', function (req, res) {
|
||||
eventDb.getEvents().then(function (events) {
|
||||
eventDiffer.addDiffs(events);
|
||||
@ -20,5 +19,4 @@ module.exports = function (app) {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
};
|
@ -4,7 +4,7 @@ var EVENT_COLUMNS = ['id', 'type', 'created_by', 'created_at', 'data'];
|
||||
function storeEvent(event) {
|
||||
return knex('events').insert({
|
||||
type: event.type,
|
||||
created_by: event.createdBy, // jshint ignore:line
|
||||
created_by: event.createdBy, // eslint-disable-line
|
||||
data: event.data
|
||||
});
|
||||
}
|
||||
@ -30,8 +30,8 @@ function rowToEvent(row) {
|
||||
return {
|
||||
id: row.id,
|
||||
type: row.type,
|
||||
createdBy: row.created_by, // jshint ignore:line
|
||||
createdAt: row.created_at, // jshint ignore:line
|
||||
createdBy: row.created_by,
|
||||
createdAt: row.created_at,
|
||||
data: row.data
|
||||
};
|
||||
}
|
||||
|
@ -10,7 +10,6 @@ var validateRequest = require('./error/validateRequest');
|
||||
var extractUser = require('./extractUser');
|
||||
|
||||
module.exports = function (app) {
|
||||
|
||||
app.get('/features', function (req, res) {
|
||||
featureDb.getFeatures().then(function (features) {
|
||||
res.json({ features: features });
|
||||
@ -19,7 +18,9 @@ module.exports = function (app) {
|
||||
|
||||
app.get('/features/:featureName', function (req, res) {
|
||||
featureDb.getFeature(req.params.featureName)
|
||||
.then(function (feature) { res.json(feature); })
|
||||
.then(function (feature) {
|
||||
res.json(feature);
|
||||
})
|
||||
.catch(function () {
|
||||
res.status(404).json({ error: 'Could not find feature' });
|
||||
});
|
||||
|
@ -6,7 +6,6 @@ var ValidationError = require('./error/ValidationError');
|
||||
var validateRequest = require('./error/validateRequest');
|
||||
|
||||
module.exports = function (app) {
|
||||
|
||||
app.get('/archive/features', function (req, res) {
|
||||
featureDb.getArchivedFeatures().then(function (archivedFeatures) {
|
||||
res.json({ 'features': archivedFeatures });
|
||||
@ -34,4 +33,3 @@ module.exports = function (app) {
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -57,7 +57,7 @@ function rowToFeature(row) {
|
||||
name: row.name,
|
||||
description: row.description,
|
||||
enabled: row.enabled > 0,
|
||||
strategy: row.strategy_name, // jshint ignore: line
|
||||
strategy: row.strategy_name, // eslint-disable-line
|
||||
parameters: row.parameters
|
||||
};
|
||||
}
|
||||
@ -68,7 +68,7 @@ function eventDataToRow(data) {
|
||||
description: data.description,
|
||||
enabled: data.enabled ? 1 : 0,
|
||||
archived: data.archived ? 1 :0,
|
||||
strategy_name: data.strategy, // jshint ignore: line
|
||||
strategy_name: data.strategy, // eslint-disable-line
|
||||
parameters: data.parameters
|
||||
};
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ var knex = require('./dbPool');
|
||||
var logger = require('./logger');
|
||||
|
||||
module.exports = function (app) {
|
||||
|
||||
app.get('/health', function (req, res) {
|
||||
knex.select(1)
|
||||
.from('features')
|
||||
@ -14,5 +13,4 @@ module.exports = function (app) {
|
||||
res.status(500).json({ health: 'BAD' });
|
||||
});
|
||||
});
|
||||
|
||||
};
|
||||
|
@ -10,7 +10,6 @@ var validateRequest = require('./error/validateRequest');
|
||||
var extractUser = require('./extractUser');
|
||||
|
||||
module.exports = function (app) {
|
||||
|
||||
app.get('/strategies', function (req, res) {
|
||||
strategyDb.getStrategies().then(function (strategies) {
|
||||
res.json({ strategies: strategies });
|
||||
@ -19,8 +18,12 @@ module.exports = function (app) {
|
||||
|
||||
app.get('/strategies/:name', function (req, res) {
|
||||
strategyDb.getStrategy(req.params.name)
|
||||
.then(function (strategy) { res.json(strategy); })
|
||||
.catch(function () { res.status(404).json({error: 'Could not find strategy'}); });
|
||||
.then(function (strategy) {
|
||||
res.json(strategy);
|
||||
})
|
||||
.catch(function () {
|
||||
res.status(404).json({ error: 'Could not find strategy' });
|
||||
});
|
||||
});
|
||||
|
||||
app.delete('/strategies/:name', function (req, res) {
|
||||
@ -88,5 +91,4 @@ module.exports = function (app) {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -42,7 +42,7 @@ function rowToStrategy(row) {
|
||||
return {
|
||||
name: row.name,
|
||||
description: row.description,
|
||||
parametersTemplate: row.parameters_template // jshint ignore: line
|
||||
parametersTemplate: row.parameters_template
|
||||
};
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ function eventDataToRow(data) {
|
||||
return {
|
||||
name: data.name,
|
||||
description: data.description,
|
||||
parameters_template: data.parametersTemplate // jshint ignore: line
|
||||
parameters_template: data.parametersTemplate // eslint-disable-line
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,2 +1 @@
|
||||
module.exports = require('../lib/migrationRunner').create('002-add-description-to-features');
|
||||
|
||||
|
@ -1 +1,2 @@
|
||||
module.exports = require('../lib/migrationRunner').create('003-add-parameters-template-to-strategies');
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
"coverage-report": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage",
|
||||
"postinstall": "npm run build",
|
||||
"jest": "jest",
|
||||
"lint": "jshint server.js lib test && jsxhint public/js/**/*.jsx"
|
||||
"lint": "eslint . --ignore-path .gitignore"
|
||||
},
|
||||
"dependencies": {
|
||||
"bluebird": "2.9.14",
|
||||
@ -65,9 +65,11 @@
|
||||
"devDependencies": {
|
||||
"chai": "2.1.2",
|
||||
"coveralls": "^2.11.2",
|
||||
"eslint": "^2.7.0",
|
||||
"eslint-config-spt": "^2.0.0",
|
||||
"eslint-plugin-react": "^4.3.0",
|
||||
"istanbul": "^0.3.5",
|
||||
"jest-cli": "0.5.4",
|
||||
"jshint": "^2.6.0",
|
||||
"mocha": "^2.1.0",
|
||||
"mocha-lcov-reporter": "0.0.2",
|
||||
"nsp": "^1.0.0",
|
||||
|
25
public/js/__tests__/.eslintrc
Normal file
25
public/js/__tests__/.eslintrc
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"extends": [
|
||||
"spt",
|
||||
"spt/env-node",
|
||||
"spt/env-es6-false"
|
||||
],
|
||||
"env": {
|
||||
"browser": true
|
||||
},
|
||||
"globals": {
|
||||
"it": false,
|
||||
"jest": false,
|
||||
"beforeEach": false,
|
||||
"expect": false,
|
||||
"describe": false,
|
||||
"afterEach": false
|
||||
},
|
||||
"rules": {
|
||||
"quotes": 0,
|
||||
"strict": 0,
|
||||
"vars-on-top": 0,
|
||||
"no-undefined": 0,
|
||||
"no-shadow": 0
|
||||
}
|
||||
}
|
@ -6,7 +6,6 @@ var React = require("react/addons");
|
||||
var TestUtils = React.addons.TestUtils;
|
||||
var FeatureArchive = require("../../../components/feature/ArchiveFeatureComponent");
|
||||
var FeatureActions = require("../../../stores/FeatureToggleActions");
|
||||
var FeatureToggleStore = require("../../../stores/ArchivedToggleStore");
|
||||
|
||||
describe("FeatureForm", function () {
|
||||
var Component;
|
||||
|
@ -31,5 +31,4 @@ describe("FeatureForm", function () {
|
||||
expect(strategySelect.value).toEqual("default");
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -54,5 +54,4 @@ describe("FeatureList", function () {
|
||||
expect(features.length).toEqual(1);
|
||||
expect(features[0].textContent).toMatch(searchString);
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -1,9 +1,8 @@
|
||||
jest.autoMockOff()
|
||||
jest.autoMockOff();
|
||||
jest.dontMock('../../stores/FeatureToggleActions');
|
||||
jest.dontMock('../../stores/FeatureToggleStore');
|
||||
|
||||
describe('FeatureToggleStore', function() {
|
||||
|
||||
var Actions, Store, toggles;
|
||||
|
||||
beforeEach(function() {
|
||||
@ -47,7 +46,6 @@ describe('FeatureToggleStore', function() {
|
||||
expect(Store.getFeatureToggles().length).toBe(0);
|
||||
});
|
||||
|
||||
|
||||
it('should keep toggles in sorted order', function() {
|
||||
Actions.init.completed([
|
||||
{ name: "A" },
|
||||
@ -74,8 +72,4 @@ describe('FeatureToggleStore', function() {
|
||||
jest.runAllTimers();
|
||||
expect(Store.getFeatureToggles()[0].enabled).toEqual(false);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
@ -13,7 +13,6 @@ var FeatureStore = Reflux.createStore({
|
||||
this.listenTo(FeatureActions.initArchive.completed, this.onInit);
|
||||
this.listenTo(FeatureActions.archive.completed, this.onArchive);
|
||||
this.listenTo(FeatureActions.revive.completed, this.onRevive);
|
||||
|
||||
},
|
||||
|
||||
onInit: function(toggles) {
|
||||
|
@ -19,7 +19,9 @@ var FeatureStore = Reflux.createStore({
|
||||
onError: function (error) {
|
||||
if (this.isClientError(error)) {
|
||||
var errors = JSON.parse(error.responseText);
|
||||
errors.forEach(function(e) { this.addError(e.msg); }.bind(this));
|
||||
errors.forEach(function(e) {
|
||||
this.addError(e.msg);
|
||||
}.bind(this));
|
||||
} else if (error.status === 0) {
|
||||
this.addError("server unreachable");
|
||||
} else {
|
||||
|
@ -1,7 +1,6 @@
|
||||
var reqwest = require('reqwest');
|
||||
|
||||
var TYPE = 'json';
|
||||
var CONTENT_TYPE = 'application/json';
|
||||
|
||||
var EventStore = {
|
||||
getEvents: function () {
|
||||
|
@ -20,7 +20,9 @@ changeLog.att('xsi:schemaLocation',
|
||||
'http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd');
|
||||
|
||||
fs.readdir(sqlRoot, function (err, files) {
|
||||
if (err) { throw err; }
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
var changes = {};
|
||||
|
||||
|
20
test/.eslintrc
Normal file
20
test/.eslintrc
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"extends": [
|
||||
"spt",
|
||||
"spt/env-node",
|
||||
"spt/env-es6-false"
|
||||
],
|
||||
"env": {
|
||||
"browser": true
|
||||
},
|
||||
"globals": {
|
||||
"it": false,
|
||||
"beforeEach": false,
|
||||
"describe": false
|
||||
},
|
||||
"rules": {
|
||||
"quotes": 0,
|
||||
"vars-on-top": 0,
|
||||
"max-nested-callbacks": 0
|
||||
}
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
'use strict';
|
||||
var request = require('./specHelper').request;
|
||||
|
||||
describe('The event api', function () {
|
||||
@ -14,5 +15,4 @@ describe('The event api', function () {
|
||||
.expect('Content-Type', /json/)
|
||||
.expect(200, done);
|
||||
});
|
||||
|
||||
});
|
@ -1,3 +1,4 @@
|
||||
'use strict';
|
||||
var eventDiffer = require('../lib/eventDiffer');
|
||||
var eventType = require('../lib/eventType');
|
||||
var assert = require('assert');
|
||||
|
@ -1,7 +1,10 @@
|
||||
'use strict';
|
||||
var assert = require('assert');
|
||||
var specHelper = require('./specHelper');
|
||||
var request = specHelper.request;
|
||||
var stringify = function (o) { return JSON.stringify(o, null, ' '); };
|
||||
var stringify = function (o) {
|
||||
return JSON.stringify(o, null, ' ');
|
||||
};
|
||||
|
||||
describe('The features api', function () {
|
||||
beforeEach(function (done) {
|
||||
@ -102,5 +105,4 @@ describe('The features api', function () {
|
||||
.set('Content-Type', 'application/json')
|
||||
.expect(403, done);
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -1,7 +1,10 @@
|
||||
'use strict';
|
||||
var assert = require('assert');
|
||||
var specHelper = require('./specHelper');
|
||||
var request = specHelper.request;
|
||||
var stringify = function (o) { return JSON.stringify(o, null, ' '); };
|
||||
var stringify = function (o) {
|
||||
return JSON.stringify(o, null, ' ');
|
||||
};
|
||||
|
||||
describe('The archive features api', function () {
|
||||
beforeEach(function (done) {
|
||||
@ -34,5 +37,4 @@ describe('The archive features api', function () {
|
||||
.post('/archive/revive')
|
||||
.expect(400, done);
|
||||
});
|
||||
|
||||
});
|
@ -1,8 +1,8 @@
|
||||
'use strict';
|
||||
var specHelper = require('./specHelper');
|
||||
var request = specHelper.request;
|
||||
|
||||
describe('The routes', function () {
|
||||
|
||||
describe('healthcheck', function () {
|
||||
it('returns health good', function (done) {
|
||||
request.get('/health')
|
||||
@ -11,5 +11,4 @@ describe('The routes', function () {
|
||||
.expect('{"health":"GOOD"}', done);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
@ -1,3 +1,4 @@
|
||||
'use strict';
|
||||
process.env.NODE_ENV = 'test';
|
||||
|
||||
var Promise = require('bluebird');
|
||||
@ -23,7 +24,9 @@ function createStrategies() {
|
||||
emails: "String"
|
||||
}
|
||||
}
|
||||
], function (strategy) { return strategyDb._createStrategy(strategy); });
|
||||
], function (strategy) {
|
||||
return strategyDb._createStrategy(strategy);
|
||||
});
|
||||
}
|
||||
|
||||
function createFeatures() {
|
||||
@ -79,7 +82,9 @@ function createFeatures() {
|
||||
"foo": "rab"
|
||||
}
|
||||
}
|
||||
], function (feature) { return featureDb._createFeature(feature); });
|
||||
], function (feature) {
|
||||
return featureDb._createFeature(feature);
|
||||
});
|
||||
}
|
||||
|
||||
function destroyStrategies() {
|
||||
@ -103,6 +108,8 @@ module.exports = {
|
||||
db: {
|
||||
reset: resetDatabase,
|
||||
setup: setupDatabase,
|
||||
resetAndSetup: function () { return resetDatabase().then(setupDatabase); }
|
||||
resetAndSetup: function () {
|
||||
return resetDatabase().then(setupDatabase);
|
||||
}
|
||||
}
|
||||
};
|
@ -1,3 +1,4 @@
|
||||
'use strict';
|
||||
var specHelper = require('./specHelper');
|
||||
var request = specHelper.request;
|
||||
|
||||
@ -64,5 +65,4 @@ describe('The strategy api', function () {
|
||||
.delete('/strategies/unknown')
|
||||
.expect(404, done);
|
||||
});
|
||||
|
||||
});
|
@ -2,21 +2,21 @@
|
||||
|
||||
var path = require('path');
|
||||
var root = path.normalize(path.join(__dirname, '.'));
|
||||
var js_root = path.join(path.join(root, 'public'), 'js');
|
||||
var jsroot = path.join(path.join(root, 'public'), 'js');
|
||||
|
||||
module.exports = {
|
||||
|
||||
context: js_root,
|
||||
context: jsroot,
|
||||
entry: 'app',
|
||||
|
||||
output: {
|
||||
path: js_root,
|
||||
path: jsroot,
|
||||
filename: 'bundle.js',
|
||||
publicPath: '/js/'
|
||||
},
|
||||
|
||||
resolve: {
|
||||
root: [js_root],
|
||||
root: [jsroot],
|
||||
extensions: ['', '.js', '.jsx'],
|
||||
modulesDirectories: ["web_modules", "node_modules"]
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user