From 0f7c17654a3ad8cbefe6c1921ef983371c5ffd1d Mon Sep 17 00:00:00 2001 From: sveisvei Date: Sat, 18 Jun 2016 21:53:18 +0200 Subject: [PATCH] codemods --- packages/unleash-api/app.js | 27 ++-- packages/unleash-api/lib/db/dbPool.js | 3 +- packages/unleash-api/lib/db/event.js | 7 +- packages/unleash-api/lib/db/feature.js | 41 +++--- packages/unleash-api/lib/db/strategy.js | 25 ++-- .../unleash-api/lib/error/NameExistsError.js | 3 +- .../unleash-api/lib/error/NotFoundError.js | 3 +- .../unleash-api/lib/error/ValidationError.js | 3 +- .../unleash-api/lib/error/validateRequest.js | 7 +- packages/unleash-api/lib/eventDiffer.js | 36 +++--- packages/unleash-api/lib/eventStore.js | 9 +- packages/unleash-api/lib/eventType.js | 1 + packages/unleash-api/lib/extractUser.js | 1 + packages/unleash-api/lib/logger.js | 5 +- packages/unleash-api/lib/routes/event.js | 15 ++- .../unleash-api/lib/routes/feature-archive.js | 37 +++--- packages/unleash-api/lib/routes/feature.js | 121 +++++++++--------- .../unleash-api/lib/routes/health-check.js | 9 +- packages/unleash-api/lib/routes/index.js | 2 + packages/unleash-api/lib/routes/strategy.js | 93 +++++++------- .../20141020151056-initial-schema.js | 1 + ...41110144153-add-description-to-features.js | 1 + ...5-add-parameters-template-to-strategies.js | 1 + .../20141117202209-insert-default-strategy.js | 1 + .../20141118071458-default-strategy-event.js | 1 + ...215210141-005-archived-flag-to-features.js | 1 + .../20150210152531-006-rename-eventtype.js | 1 + .../unleash-api/scripts/migration-runner.js | 13 +- packages/unleash-api/server-impl.js | 45 +++---- packages/unleash-api/test/databaseConfig.js | 2 +- packages/unleash-api/test/eventApiSpec.js | 8 +- packages/unleash-api/test/eventDifferTest.js | 38 +++--- packages/unleash-api/test/featureApiSpec.js | 44 +++---- .../unleash-api/test/featureArchiveApiSpec.js | 22 ++-- packages/unleash-api/test/routerSpec.js | 10 +- packages/unleash-api/test/specHelper.js | 110 ++++++++-------- packages/unleash-api/test/strategyApiSpec.js | 24 ++-- packages/unleash-docker/index.js | 2 +- .../unleash-frontend/jest-preprocessor.js | 6 +- .../unleash-frontend/public/js/UnleashApp.jsx | 41 +++--- .../js/__tests__/components/Menu-test.js | 14 +- .../feature/ArchiveFeatureComponent-test.js | 27 ++-- .../components/feature/FeatureForm-test.js | 29 +++-- .../components/feature/FeatureList-test.js | 42 +++--- .../stores/FeatureToggleStore-test.js | 25 ++-- packages/unleash-frontend/public/js/app.jsx | 11 +- .../public/js/components/ErrorMessages.jsx | 23 ++-- .../public/js/components/ErrorMessages.ui.jsx | 11 +- .../public/js/components/Menu.jsx | 9 +- .../public/js/components/User.jsx | 13 +- .../feature/ArchiveFeatureComponent.jsx | 13 +- .../public/js/components/feature/Feature.jsx | 33 ++--- .../js/components/feature/FeatureForm.jsx | 91 ++++++------- .../js/components/feature/FeatureList.jsx | 43 +++---- .../feature/FeatureTogglesComponent.jsx | 31 ++--- .../public/js/components/form/TextInput.jsx | 13 +- .../js/components/log/LogEntriesComponent.jsx | 23 ++-- .../public/js/components/log/LogEntry.jsx | 35 ++--- .../public/js/components/log/LogEntryList.jsx | 17 ++- .../strategy/StrategiesComponent.jsx | 29 +++-- .../js/components/strategy/Strategy.jsx | 12 +- .../js/components/strategy/StrategyForm.jsx | 81 ++++++------ .../js/components/strategy/StrategyList.jsx | 13 +- .../unleash-frontend/public/js/routes.jsx | 21 +-- .../public/js/stores/ArchivedToggleStore.js | 31 +++-- .../public/js/stores/ErrorActions.js | 5 +- .../public/js/stores/ErrorStore.js | 29 +++-- .../public/js/stores/EventStore.js | 13 +- .../public/js/stores/FeatureToggleActions.js | 43 ++++--- .../js/stores/FeatureToggleServerFacade.js | 49 +++---- .../public/js/stores/FeatureToggleStore.js | 37 +++--- .../public/js/stores/StrategyAPI.js | 29 +++-- .../public/js/stores/StrategyActions.js | 25 ++-- .../public/js/stores/StrategyStore.js | 27 ++-- .../public/js/stores/UserStore.js | 21 +-- .../public/js/stores/initalizer.js | 11 +- .../unleash-frontend/public/js/utils/Timer.js | 3 +- packages/unleash-frontend/webpack.config.js | 8 +- 78 files changed, 916 insertions(+), 894 deletions(-) diff --git a/packages/unleash-api/app.js b/packages/unleash-api/app.js index 3a122db441..f8733969d5 100644 --- a/packages/unleash-api/app.js +++ b/packages/unleash-api/app.js @@ -1,18 +1,19 @@ -var express = require('express'); -var favicon = require('serve-favicon'); -var bodyParser = require('body-parser'); -var cookieParser = require('cookie-parser'); -var validator = require('express-validator'); -var log4js = require('log4js'); -var logger = require('./lib/logger'); -var routes = require('./lib/routes'); -var path = require('path'); +'use strict'; +const express = require('express'); +const favicon = require('serve-favicon'); +const bodyParser = require('body-parser'); +const cookieParser = require('cookie-parser'); +const validator = require('express-validator'); +const log4js = require('log4js'); +const logger = require('./lib/logger'); +const routes = require('./lib/routes'); +const path = require('path'); module.exports = function(config) { - var app = express(); - var router = express.Router(); - var baseUriPath = config.baseUriPath || ''; - var publicFolder = config.publicFolder; + const app = express(); + const router = express.Router(); + const baseUriPath = config.baseUriPath || ''; + const publicFolder = config.publicFolder; app.set('trust proxy'); app.set('port', config.port); diff --git a/packages/unleash-api/lib/db/dbPool.js b/packages/unleash-api/lib/db/dbPool.js index 33a863e674..dd376dfd66 100644 --- a/packages/unleash-api/lib/db/dbPool.js +++ b/packages/unleash-api/lib/db/dbPool.js @@ -1,4 +1,5 @@ -var knex = require('knex'); +'use strict'; +const knex = require('knex'); module.exports = function(databaseConnection) { return knex({ diff --git a/packages/unleash-api/lib/db/event.js b/packages/unleash-api/lib/db/event.js index 8d4d1f24f5..147f9c25c7 100644 --- a/packages/unleash-api/lib/db/event.js +++ b/packages/unleash-api/lib/db/event.js @@ -1,4 +1,5 @@ -var EVENT_COLUMNS = ['id', 'type', 'created_by', 'created_at', 'data']; +'use strict'; +const EVENT_COLUMNS = ['id', 'type', 'created_by', 'created_at', 'data']; module.exports = function(db) { function storeEvent(event) { @@ -38,8 +39,8 @@ module.exports = function(db) { return { store: storeEvent, - getEvents: getEvents, - getEventsFilterByName: getEventsFilterByName + getEvents, + getEventsFilterByName }; }; diff --git a/packages/unleash-api/lib/db/feature.js b/packages/unleash-api/lib/db/feature.js index fe54a553c9..4df93d3f9b 100644 --- a/packages/unleash-api/lib/db/feature.js +++ b/packages/unleash-api/lib/db/feature.js @@ -1,24 +1,17 @@ -var eventType = require('../eventType'); -var logger = require('../logger'); -var NotFoundError = require('../error/NotFoundError'); -var FEATURE_COLUMNS = ['name', 'description', 'enabled', 'strategy_name', 'parameters']; +'use strict'; +const eventType = require('../eventType'); +const logger = require('../logger'); +const NotFoundError = require('../error/NotFoundError'); +const FEATURE_COLUMNS = ['name', 'description', 'enabled', 'strategy_name', 'parameters']; module.exports = function(db, eventStore) { - eventStore.on(eventType.featureCreated, function (event) { - return createFeature(event.data); - }); + eventStore.on(eventType.featureCreated, event => createFeature(event.data)); - eventStore.on(eventType.featureUpdated, function (event) { - return updateFeature(event.data); - }); + eventStore.on(eventType.featureUpdated, event => updateFeature(event.data)); - eventStore.on(eventType.featureArchived, function (event) { - return archiveFeature(event.data); - }); + eventStore.on(eventType.featureArchived, event => archiveFeature(event.data)); - eventStore.on(eventType.featureRevived, function (event) { - return reviveFeature(event.data); - }); + eventStore.on(eventType.featureRevived, event => reviveFeature(event.data)); function getFeatures() { return db @@ -33,7 +26,7 @@ module.exports = function(db, eventStore) { return db .first(FEATURE_COLUMNS) .from('features') - .where({ name: name }) + .where({ name }) .then(rowToFeature); } @@ -75,7 +68,7 @@ module.exports = function(db, eventStore) { function createFeature(data) { return db('features') .insert(eventDataToRow(data)) - .catch(function (err) { + .catch(err => { logger.error('Could not insert feature, error was: ', err); }); } @@ -84,7 +77,7 @@ module.exports = function(db, eventStore) { return db('features') .where({ name: data.name }) .update(eventDataToRow(data)) - .catch(function (err) { + .catch(err => { logger.error('Could not update feature, error was: ', err); }); } @@ -93,7 +86,7 @@ module.exports = function(db, eventStore) { return db('features') .where({ name: data.name }) .update({ archived: 1 }) - .catch(function (err) { + .catch(err => { logger.error('Could not archive feature, error was: ', err); }); } @@ -102,16 +95,16 @@ module.exports = function(db, eventStore) { return db('features') .where({ name: data.name }) .update({ archived: 0, enabled: 0 }) - .catch(function (err) { + .catch(err => { logger.error('Could not archive feature, error was: ', err); }); } return { - getFeatures: getFeatures, - getFeature: getFeature, - getArchivedFeatures: getArchivedFeatures, + getFeatures, + getFeature, + getArchivedFeatures, _createFeature: createFeature, // visible for testing _updateFeature: updateFeature // visible for testing }; diff --git a/packages/unleash-api/lib/db/strategy.js b/packages/unleash-api/lib/db/strategy.js index 9a19a9c503..7aeebf7cd7 100644 --- a/packages/unleash-api/lib/db/strategy.js +++ b/packages/unleash-api/lib/db/strategy.js @@ -1,18 +1,17 @@ -var eventType = require('../eventType'); -var logger = require('../logger'); -var NotFoundError = require('../error/NotFoundError'); -var STRATEGY_COLUMNS = ['name', 'description', 'parameters_template']; +'use strict'; +const eventType = require('../eventType'); +const logger = require('../logger'); +const NotFoundError = require('../error/NotFoundError'); +const STRATEGY_COLUMNS = ['name', 'description', 'parameters_template']; module.exports = function(db, eventStore) { - eventStore.on(eventType.strategyCreated, function (event) { - return createStrategy(event.data); - }); + eventStore.on(eventType.strategyCreated, event => createStrategy(event.data)); - eventStore.on(eventType.strategyDeleted, function (event) { + eventStore.on(eventType.strategyDeleted, event => { db('strategies') .where('name', event.data.name) .del() - .catch(function (err) { + .catch(err => { logger.error('Could not delete strategy, error was: ', err); }); }); @@ -29,7 +28,7 @@ module.exports = function(db, eventStore) { return db .first(STRATEGY_COLUMNS) .from('strategies') - .where({ name: name }) + .where({ name }) .then(rowToStrategy); } @@ -56,14 +55,14 @@ module.exports = function(db, eventStore) { function createStrategy(data) { db('strategies') .insert(eventDataToRow(data)) - .catch(function (err) { + .catch(err => { logger.error('Could not insert strategy, error was: ', err); }); } return { - getStrategies: getStrategies, - getStrategy: getStrategy, + getStrategies, + getStrategy, _createStrategy: createStrategy // visible for testing }; }; diff --git a/packages/unleash-api/lib/error/NameExistsError.js b/packages/unleash-api/lib/error/NameExistsError.js index 6529783487..106e3eb44f 100644 --- a/packages/unleash-api/lib/error/NameExistsError.js +++ b/packages/unleash-api/lib/error/NameExistsError.js @@ -1,4 +1,5 @@ -var util = require('util'); +'use strict'; +const util = require('util'); function NameExistsError(message) { Error.call(this); diff --git a/packages/unleash-api/lib/error/NotFoundError.js b/packages/unleash-api/lib/error/NotFoundError.js index 066b595818..9a93e40ea8 100644 --- a/packages/unleash-api/lib/error/NotFoundError.js +++ b/packages/unleash-api/lib/error/NotFoundError.js @@ -1,4 +1,5 @@ -var util = require('util'); +'use strict'; +const util = require('util'); function NotFoundError(message) { Error.call(this); diff --git a/packages/unleash-api/lib/error/ValidationError.js b/packages/unleash-api/lib/error/ValidationError.js index 7e2e41f8cc..ff4df57e56 100644 --- a/packages/unleash-api/lib/error/ValidationError.js +++ b/packages/unleash-api/lib/error/ValidationError.js @@ -1,4 +1,5 @@ -var util = require('util'); +'use strict'; +const util = require('util'); function ValidationError(message) { Error.call(this); diff --git a/packages/unleash-api/lib/error/validateRequest.js b/packages/unleash-api/lib/error/validateRequest.js index 4fd213af01..990fd7f659 100644 --- a/packages/unleash-api/lib/error/validateRequest.js +++ b/packages/unleash-api/lib/error/validateRequest.js @@ -1,8 +1,9 @@ -var Promise = require("bluebird"); -var ValidationError = require('./ValidationError'); +'use strict'; +const Promise = require("bluebird"); +const ValidationError = require('./ValidationError'); function validateRequest(req) { - return new Promise(function(resolve, reject) { + return new Promise((resolve, reject) => { if (req.validationErrors()) { reject(new ValidationError("Invalid syntax")); } else { diff --git a/packages/unleash-api/lib/eventDiffer.js b/packages/unleash-api/lib/eventDiffer.js index f23427f461..6364399151 100644 --- a/packages/unleash-api/lib/eventDiffer.js +++ b/packages/unleash-api/lib/eventDiffer.js @@ -1,12 +1,13 @@ -var eventType = require('./eventType'); -var diff = require('deep-diff').diff; +'use strict'; +const eventType = require('./eventType'); +const diff = require('deep-diff').diff; -var strategyTypes = [ +const strategyTypes = [ eventType.strategyCreated, eventType.strategyDeleted ]; -var featureTypes = [ +const featureTypes = [ eventType.featureCreated, eventType.featureUpdated, eventType.featureArchived, @@ -19,15 +20,15 @@ function baseTypeFor(event) { } else if (strategyTypes.indexOf(event.type) !== -1) { return 'strategies'; } else { - throw new Error('unknown event type: ' + JSON.stringify(event)); + throw new Error(`unknown event type: ${JSON.stringify(event)}`); } } function groupByBaseTypeAndName(events) { - var groups = {}; + const groups = {}; - events.forEach(function (event) { - var baseType = baseTypeFor(event); + events.forEach(event => { + const baseType = baseTypeFor(event); groups[baseType] = groups[baseType] || {}; groups[baseType][event.data.name] = groups[baseType][event.data.name] || []; @@ -39,14 +40,17 @@ function groupByBaseTypeAndName(events) { } function eachConsecutiveEvent(events, callback) { - var groups = groupByBaseTypeAndName(events); + const groups = groupByBaseTypeAndName(events); - Object.keys(groups).forEach(function (baseType) { - var group = groups[baseType]; + Object.keys(groups).forEach(baseType => { + const group = groups[baseType]; - Object.keys(group).forEach(function (name) { - var events = group[name]; - var left, right, i, l; + Object.keys(group).forEach(name => { + const events = group[name]; + let left; + let right; + let i; + let l; for (i = 0, l = events.length; i < l; i++) { left = events[i]; right = events[i + 1]; @@ -58,7 +62,7 @@ function eachConsecutiveEvent(events, callback) { } function addDiffs(events) { - eachConsecutiveEvent(events, function (left, right) { + eachConsecutiveEvent(events, (left, right) => { if (right) { left.diffs = diff(right.data, left.data); left.diffs = left.diffs || []; @@ -70,5 +74,5 @@ function addDiffs(events) { module.exports = { - addDiffs: addDiffs + addDiffs }; diff --git a/packages/unleash-api/lib/eventStore.js b/packages/unleash-api/lib/eventStore.js index 1f39dbdf2c..588d31bee4 100644 --- a/packages/unleash-api/lib/eventStore.js +++ b/packages/unleash-api/lib/eventStore.js @@ -1,5 +1,6 @@ -var util = require('util'); -var EventEmitter = require('events').EventEmitter; +'use strict'; +const util = require('util'); +const EventEmitter = require('events').EventEmitter; function EventStore(eventDb) { this.eventDb = eventDb; @@ -8,8 +9,8 @@ function EventStore(eventDb) { util.inherits(EventStore, EventEmitter); EventStore.prototype.create = function (event) { - var that = this; - return this.eventDb.store(event).then(function() { + const that = this; + return this.eventDb.store(event).then(() => { that.emit(event.type, event); }); }; diff --git a/packages/unleash-api/lib/eventType.js b/packages/unleash-api/lib/eventType.js index d6c57b71bf..1c2aee856e 100644 --- a/packages/unleash-api/lib/eventType.js +++ b/packages/unleash-api/lib/eventType.js @@ -1,3 +1,4 @@ +'use strict'; module.exports = { featureCreated: 'feature-created', featureUpdated: 'feature-updated', diff --git a/packages/unleash-api/lib/extractUser.js b/packages/unleash-api/lib/extractUser.js index 7411633381..3471ac6093 100644 --- a/packages/unleash-api/lib/extractUser.js +++ b/packages/unleash-api/lib/extractUser.js @@ -1,3 +1,4 @@ +'use strict'; function extractUsername(req) { return req.cookies.username || "unknown"; } diff --git a/packages/unleash-api/lib/logger.js b/packages/unleash-api/lib/logger.js index bbdc7f7531..734699fd20 100644 --- a/packages/unleash-api/lib/logger.js +++ b/packages/unleash-api/lib/logger.js @@ -1,9 +1,10 @@ -var log4js = require('log4js'); +'use strict'; +const log4js = require('log4js'); log4js.clearAppenders(); log4js.addAppender(log4js.appenders.console()); -var logger = log4js.getLogger('unleash'); +const logger = log4js.getLogger('unleash'); // TODO: make level configurable if (process.env.NODE_ENV === 'production') { diff --git a/packages/unleash-api/lib/routes/event.js b/packages/unleash-api/lib/routes/event.js index b69c7f7f09..fe9ec09bb8 100644 --- a/packages/unleash-api/lib/routes/event.js +++ b/packages/unleash-api/lib/routes/event.js @@ -1,17 +1,18 @@ -var eventDiffer = require('../eventDiffer'); +'use strict'; +const eventDiffer = require('../eventDiffer'); module.exports = function (app, config) { - var eventDb = config.eventDb; + const eventDb = config.eventDb; - app.get('/events', function (req, res) { - eventDb.getEvents().then(function (events) { + app.get('/events', (req, res) => { + eventDb.getEvents().then(events => { eventDiffer.addDiffs(events); - res.json({ events: events }); + res.json({ events }); }); }); - app.get('/events/:name', function (req, res) { - eventDb.getEventsFilterByName(req.params.name).then(function (events) { + app.get('/events/:name', (req, res) => { + eventDb.getEventsFilterByName(req.params.name).then(events => { if (events) { eventDiffer.addDiffs(events); res.json(events); diff --git a/packages/unleash-api/lib/routes/feature-archive.js b/packages/unleash-api/lib/routes/feature-archive.js index 29fc82448a..873d03df15 100644 --- a/packages/unleash-api/lib/routes/feature-archive.js +++ b/packages/unleash-api/lib/routes/feature-archive.js @@ -1,34 +1,33 @@ -var logger = require('../logger'); -var eventType = require('../eventType'); -var ValidationError = require('../error/ValidationError'); -var validateRequest = require('../error/validateRequest'); +'use strict'; +const logger = require('../logger'); +const eventType = require('../eventType'); +const ValidationError = require('../error/ValidationError'); +const validateRequest = require('../error/validateRequest'); module.exports = function (app, config) { - var featureDb = config.featureDb; - var eventStore = config.eventStore; + const featureDb = config.featureDb; + const eventStore = config.eventStore; - app.get('/archive/features', function (req, res) { - featureDb.getArchivedFeatures().then(function (archivedFeatures) { - res.json({ 'features': archivedFeatures }); + app.get('/archive/features', (req, res) => { + featureDb.getArchivedFeatures().then(archivedFeatures => { + res.json({ features: archivedFeatures }); }); }); - app.post('/archive/revive', function (req, res) { + app.post('/archive/revive', (req, res) => { req.checkBody('name', 'Name is required').notEmpty(); validateRequest(req) - .then(function() { - return eventStore.create({ - type: eventType.featureRevived, - createdBy: req.connection.remoteAddress, - data: req.body - }); - }).then(function() { + .then(() => eventStore.create({ + type: eventType.featureRevived, + createdBy: req.connection.remoteAddress, + data: req.body + })).then(() => { res.status(200).end(); - }).catch(ValidationError, function() { + }).catch(ValidationError, () => { res.status(400).json(req.validationErrors()); }) - .catch(function(err) { + .catch(err => { logger.error("Could not revive feature toggle", err); res.status(500).end(); }); diff --git a/packages/unleash-api/lib/routes/feature.js b/packages/unleash-api/lib/routes/feature.js index 1f3c726eaf..acd028f5dd 100644 --- a/packages/unleash-api/lib/routes/feature.js +++ b/packages/unleash-api/lib/routes/feature.js @@ -1,121 +1,116 @@ -var Promise = require("bluebird"); -var logger = require('../logger'); -var eventType = require('../eventType'); -var NameExistsError = require('../error/NameExistsError'); -var NotFoundError = require('../error/NotFoundError'); -var ValidationError = require('../error/ValidationError'); -var validateRequest = require('../error/validateRequest'); -var extractUser = require('../extractUser'); +'use strict'; +const Promise = require("bluebird"); +const logger = require('../logger'); +const eventType = require('../eventType'); +const NameExistsError = require('../error/NameExistsError'); +const NotFoundError = require('../error/NotFoundError'); +const ValidationError = require('../error/ValidationError'); +const validateRequest = require('../error/validateRequest'); +const extractUser = require('../extractUser'); module.exports = function (app, config) { - var featureDb = config.featureDb; - var eventStore = config.eventStore; + const featureDb = config.featureDb; + const eventStore = config.eventStore; - app.get('/features', function (req, res) { - featureDb.getFeatures().then(function (features) { - res.json({ features: features }); + app.get('/features', (req, res) => { + featureDb.getFeatures().then(features => { + res.json({ features }); }); }); - app.get('/features/:featureName', function (req, res) { + app.get('/features/:featureName', (req, res) => { featureDb.getFeature(req.params.featureName) - .then(function (feature) { + .then(feature => { res.json(feature); }) - .catch(function () { + .catch(() => { res.status(404).json({ error: 'Could not find feature' }); }); }); - app.post('/features', function (req, res) { + app.post('/features', (req, res) => { req.checkBody('name', 'Name is required').notEmpty(); req.checkBody('name', 'Name must match format ^[a-zA-Z\\.\\-]+$').matches(/^[a-zA-Z\\.\\-]+$/i); validateRequest(req) .then(validateUniqueName) - .then(function() { - return eventStore.create({ - type: eventType.featureCreated, - createdBy: extractUser(req), - data: req.body - }); - }) - .then(function () { + .then(() => eventStore.create({ + type: eventType.featureCreated, + createdBy: extractUser(req), + data: req.body + })) + .then(() => { res.status(201).end(); }) - .catch(NameExistsError, function() { + .catch(NameExistsError, () => { res.status(403).json([{ - msg: "A feature named '" + req.body.name + "' already exists. It could be archived." + msg: `A feature named '${req.body.name}' already exists. It could be archived.` }]).end(); }) - .catch(ValidationError, function() { + .catch(ValidationError, () => { res.status(400).json(req.validationErrors()); }) - .catch(function(err) { + .catch(err => { logger.error("Could not create feature toggle", err); res.status(500).end(); }); }); - app.put('/features/:featureName', function (req, res) { - var featureName = req.params.featureName; - var userName = extractUser(req); - var updatedFeature = req.body; + app.put('/features/:featureName', (req, res) => { + const featureName = req.params.featureName; + const userName = extractUser(req); + const updatedFeature = req.body; updatedFeature.name = featureName; featureDb.getFeature(featureName) - .then(function () { - return eventStore.create({ - type: eventType.featureUpdated, - createdBy: userName, - data: updatedFeature - }); - }) - .then(function () { + .then(() => eventStore.create({ + type: eventType.featureUpdated, + createdBy: userName, + data: updatedFeature + })) + .then(() => { res.status(200).end(); }) - .catch(NotFoundError, function () { + .catch(NotFoundError, () => { res.status(404).end(); }) - .catch(function (err) { - logger.error("Could not update feature toggle="+featureName, err); + .catch(err => { + logger.error(`Could not update feature toggle=${featureName}`, err); res.status(500).end(); }); }); - app.delete('/features/:featureName', function (req, res) { - var featureName = req.params.featureName; - var userName = extractUser(req); + app.delete('/features/:featureName', (req, res) => { + const featureName = req.params.featureName; + const userName = extractUser(req); featureDb.getFeature(featureName) - .then(function () { - return eventStore.create({ - type: eventType.featureArchived, - createdBy: userName, - data: { - name: featureName - } - }); - }) - .then(function () { + .then(() => eventStore.create({ + type: eventType.featureArchived, + createdBy: userName, + data: { + name: featureName + } + })) + .then(() => { res.status(200).end(); }) - .catch(NotFoundError, function () { + .catch(NotFoundError, () => { res.status(404).end(); }) - .catch(function (err) { - logger.error("Could not archive feature="+featureName, err); + .catch(err => { + logger.error(`Could not archive feature=${featureName}`, err); res.status(500).end(); }); }); function validateUniqueName(req) { - return new Promise(function(resolve, reject) { + return new Promise((resolve, reject) => { featureDb.getFeature(req.body.name) - .then(function() { + .then(() => { reject(new NameExistsError("Feature name already exist")); - }, function() { + }, () => { resolve(req); }); }); diff --git a/packages/unleash-api/lib/routes/health-check.js b/packages/unleash-api/lib/routes/health-check.js index 1343e81686..7cb2ab6fb8 100644 --- a/packages/unleash-api/lib/routes/health-check.js +++ b/packages/unleash-api/lib/routes/health-check.js @@ -1,13 +1,14 @@ -var logger = require('../logger'); +'use strict'; +const logger = require('../logger'); module.exports = function (app, config) { - app.get('/health', function (req, res) { + app.get('/health', (req, res) => { config.db.select(1) .from('features') - .then(function() { + .then(() => { res.json({ health: 'GOOD' }); }) - .catch(function(err) { + .catch(err => { logger.error('Could not select from features, error was: ', err); res.status(500).json({ health: 'BAD' }); }); diff --git a/packages/unleash-api/lib/routes/index.js b/packages/unleash-api/lib/routes/index.js index 6e3515fa64..4cd145ada6 100644 --- a/packages/unleash-api/lib/routes/index.js +++ b/packages/unleash-api/lib/routes/index.js @@ -2,6 +2,8 @@ * TODO: we should also inject config and * services to the routes to ease testing. **/ +'use strict'; + exports.create = function (app, config) { require('./event')(app, config); require('./feature')(app, config); diff --git a/packages/unleash-api/lib/routes/strategy.js b/packages/unleash-api/lib/routes/strategy.js index 4176d215c4..4ea217ddcc 100644 --- a/packages/unleash-api/lib/routes/strategy.js +++ b/packages/unleash-api/lib/routes/strategy.js @@ -1,93 +1,90 @@ -var Promise = require("bluebird"); -var eventType = require('../eventType'); -var logger = require('../logger'); -var NameExistsError = require('../error/NameExistsError'); -var ValidationError = require('../error/ValidationError'); -var NotFoundError = require('../error/NotFoundError'); -var validateRequest = require('../error/validateRequest'); -var extractUser = require('../extractUser'); +'use strict'; +const Promise = require("bluebird"); +const eventType = require('../eventType'); +const logger = require('../logger'); +const NameExistsError = require('../error/NameExistsError'); +const ValidationError = require('../error/ValidationError'); +const NotFoundError = require('../error/NotFoundError'); +const validateRequest = require('../error/validateRequest'); +const extractUser = require('../extractUser'); module.exports = function (app, config) { - var strategyDb = config.strategyDb; - var eventStore = config.eventStore; + const strategyDb = config.strategyDb; + const eventStore = config.eventStore; - app.get('/strategies', function (req, res) { - strategyDb.getStrategies().then(function (strategies) { - res.json({ strategies: strategies }); + app.get('/strategies', (req, res) => { + strategyDb.getStrategies().then(strategies => { + res.json({ strategies }); }); }); - app.get('/strategies/:name', function (req, res) { + app.get('/strategies/:name', (req, res) => { strategyDb.getStrategy(req.params.name) - .then(function (strategy) { + .then(strategy => { res.json(strategy); }) - .catch(function () { + .catch(() => { res.status(404).json({ error: 'Could not find strategy' }); }); }); - app.delete('/strategies/:name', function (req, res) { - var strategyName = req.params.name; + app.delete('/strategies/:name', (req, res) => { + const strategyName = req.params.name; strategyDb.getStrategy(strategyName) - .then(function() { - return eventStore.create({ - type: eventType.strategyDeleted, - createdBy: extractUser(req), - data: { - name: strategyName - } - }); - }) - .then(function() { + .then(() => eventStore.create({ + type: eventType.strategyDeleted, + createdBy: extractUser(req), + data: { + name: strategyName + } + })) + .then(() => { res.status(200).end(); }) - .catch(NotFoundError, function() { + .catch(NotFoundError, () => { res.status(404).end(); }) - .catch(function(err) { - logger.error('Could not delete strategy='+strategyName, err); + .catch(err => { + logger.error(`Could not delete strategy=${strategyName}`, err); res.status(500).end(); }); }); - app.post('/strategies', function (req, res) { + app.post('/strategies', (req, res) => { req.checkBody('name', 'Name is required').notEmpty(); req.checkBody('name', 'Name must match format ^[a-zA-Z\\.\\-]+$').matches(/^[a-zA-Z\\.\\-]+$/i); - var newStrategy = req.body; + const newStrategy = req.body; validateRequest(req) .then(validateStrategyName) - .then(function() { - return eventStore.create({ - type: eventType.strategyCreated, - createdBy: extractUser(req), - data: newStrategy - }); - }) - .then(function () { + .then(() => eventStore.create({ + type: eventType.strategyCreated, + createdBy: extractUser(req), + data: newStrategy + })) + .then(() => { res.status(201).end(); }) - .catch(NameExistsError, function() { - res.status(403).json([{ msg: "A strategy named '" + req.body.name + "' already exists." }]).end(); + .catch(NameExistsError, () => { + res.status(403).json([{ msg: `A strategy named '${req.body.name}' already exists.` }]).end(); }) - .catch(ValidationError, function() { + .catch(ValidationError, () => { res.status(400).json(req.validationErrors()); }) - .catch(function(err) { + .catch(err => { logger.error("Could not create strategy", err); res.status(500).end(); }); }); function validateStrategyName(req) { - return new Promise(function(resolve, reject) { + return new Promise((resolve, reject) => { strategyDb.getStrategy(req.body.name) - .then(function() { + .then(() => { reject(new NameExistsError("Feature name already exist")); - }, function() { + }, () => { resolve(req); }); }); diff --git a/packages/unleash-api/migrations/20141020151056-initial-schema.js b/packages/unleash-api/migrations/20141020151056-initial-schema.js index 0a41df16f3..60b580a909 100644 --- a/packages/unleash-api/migrations/20141020151056-initial-schema.js +++ b/packages/unleash-api/migrations/20141020151056-initial-schema.js @@ -1 +1,2 @@ +'use strict'; module.exports = require('../scripts/migration-runner').create('001-initial-schema'); diff --git a/packages/unleash-api/migrations/20141110144153-add-description-to-features.js b/packages/unleash-api/migrations/20141110144153-add-description-to-features.js index 248e5aa474..7a303a4497 100644 --- a/packages/unleash-api/migrations/20141110144153-add-description-to-features.js +++ b/packages/unleash-api/migrations/20141110144153-add-description-to-features.js @@ -1 +1,2 @@ +'use strict'; module.exports = require('../scripts/migration-runner').create('002-add-description-to-features'); diff --git a/packages/unleash-api/migrations/20141117200435-add-parameters-template-to-strategies.js b/packages/unleash-api/migrations/20141117200435-add-parameters-template-to-strategies.js index 0c6ef1b1a2..9bfb2e7d04 100644 --- a/packages/unleash-api/migrations/20141117200435-add-parameters-template-to-strategies.js +++ b/packages/unleash-api/migrations/20141117200435-add-parameters-template-to-strategies.js @@ -1,2 +1,3 @@ +'use strict'; module.exports = require('../scripts/migration-runner').create('003-add-parameters-template-to-strategies'); diff --git a/packages/unleash-api/migrations/20141117202209-insert-default-strategy.js b/packages/unleash-api/migrations/20141117202209-insert-default-strategy.js index 1bc6251635..2e3f045dd2 100644 --- a/packages/unleash-api/migrations/20141117202209-insert-default-strategy.js +++ b/packages/unleash-api/migrations/20141117202209-insert-default-strategy.js @@ -1 +1,2 @@ +'use strict'; module.exports = require('../scripts/migration-runner').create('004-insert-default-strategy'); diff --git a/packages/unleash-api/migrations/20141118071458-default-strategy-event.js b/packages/unleash-api/migrations/20141118071458-default-strategy-event.js index 488b3ac594..4bf9714f96 100644 --- a/packages/unleash-api/migrations/20141118071458-default-strategy-event.js +++ b/packages/unleash-api/migrations/20141118071458-default-strategy-event.js @@ -1 +1,2 @@ +'use strict'; module.exports = require('../scripts/migration-runner').create('004-insert-default-strategy-event'); diff --git a/packages/unleash-api/migrations/20141215210141-005-archived-flag-to-features.js b/packages/unleash-api/migrations/20141215210141-005-archived-flag-to-features.js index 0bd29e3271..ec07154c5d 100644 --- a/packages/unleash-api/migrations/20141215210141-005-archived-flag-to-features.js +++ b/packages/unleash-api/migrations/20141215210141-005-archived-flag-to-features.js @@ -1 +1,2 @@ +'use strict'; module.exports = require('../scripts/migration-runner').create('005-archived-flag-to-features'); diff --git a/packages/unleash-api/migrations/20150210152531-006-rename-eventtype.js b/packages/unleash-api/migrations/20150210152531-006-rename-eventtype.js index 0de099bdbd..08e537c529 100644 --- a/packages/unleash-api/migrations/20150210152531-006-rename-eventtype.js +++ b/packages/unleash-api/migrations/20150210152531-006-rename-eventtype.js @@ -1 +1,2 @@ +'use strict'; module.exports = require('../scripts/migration-runner').create('006-rename-eventtype'); diff --git a/packages/unleash-api/scripts/migration-runner.js b/packages/unleash-api/scripts/migration-runner.js index 9822a09d24..d4594251ac 100644 --- a/packages/unleash-api/scripts/migration-runner.js +++ b/packages/unleash-api/scripts/migration-runner.js @@ -1,14 +1,15 @@ -var fs = require('fs'); -var util = require('util'); -var path = require('path'); +'use strict'; +const fs = require('fs'); +const util = require('util'); +const path = require('path'); -var runMigration = function(path, db, callback) { +const runMigration = function(path, db, callback) { db.runSql(fs.readFileSync(path, { encoding: 'utf8' }), callback); }; module.exports = { - create: function (name) { - var format = path.resolve(__dirname, '../migrations/sql/%s.%s.sql'); + create(name) { + const format = path.resolve(__dirname, '../migrations/sql/%s.%s.sql'); return { up: runMigration.bind(null, util.format(format, name, 'up')), diff --git a/packages/unleash-api/server-impl.js b/packages/unleash-api/server-impl.js index 5a73d34b8e..35e4d2a0ff 100644 --- a/packages/unleash-api/server-impl.js +++ b/packages/unleash-api/server-impl.js @@ -1,46 +1,47 @@ -var logger = require('./lib/logger'); -var defaultDatabaseUri = process.env.DATABASE_URL; +'use strict'; +const logger = require('./lib/logger'); +const defaultDatabaseUri = process.env.DATABASE_URL; function start(options) { options = options || {}; - var db = require('./lib/db/dbPool')(options.databaseUri || defaultDatabaseUri); + const db = require('./lib/db/dbPool')(options.databaseUri || defaultDatabaseUri); // Database dependecies (statefull) - var eventDb = require('./lib/db/event')(db); - var EventStore = require('./lib/eventStore'); - var eventStore = new EventStore(eventDb); - var featureDb = require('./lib/db/feature')(db, eventStore); - var strategyDb = require('./lib/db/strategy')(db, eventStore); + const eventDb = require('./lib/db/event')(db); + const EventStore = require('./lib/eventStore'); + const eventStore = new EventStore(eventDb); + const featureDb = require('./lib/db/feature')(db, eventStore); + const strategyDb = require('./lib/db/strategy')(db, eventStore); - var config = { + const config = { baseUriPath: process.env.BASE_URI_PATH || '', port: process.env.HTTP_PORT || process.env.PORT || 4242, - db: db, - eventDb: eventDb, - eventStore: eventStore, - featureDb: featureDb, - strategyDb: strategyDb, + db, + eventDb, + eventStore, + featureDb, + strategyDb, publicFolder: options.publicFolder }; - var app = require('./app')(config); + const app = require('./app')(config); - var server = app.listen(app.get('port'), function() { - logger.info('unleash started on ' + app.get('port')); + const server = app.listen(app.get('port'), () => { + logger.info(`unleash started on ${app.get('port')}`); }); return { - app: app, - server: server, - config: config + app, + server, + config }; } -process.on('uncaughtException', function(err) { +process.on('uncaughtException', err => { logger.error('Uncaught Exception:', err.message); logger.error(err.stack); }); module.exports = { - start: start + start }; diff --git a/packages/unleash-api/test/databaseConfig.js b/packages/unleash-api/test/databaseConfig.js index 5f80b7f2c5..2f4ecc03e7 100644 --- a/packages/unleash-api/test/databaseConfig.js +++ b/packages/unleash-api/test/databaseConfig.js @@ -7,5 +7,5 @@ function getDatabaseUri() { } } module.exports = { - getDatabaseUri: getDatabaseUri + getDatabaseUri }; diff --git a/packages/unleash-api/test/eventApiSpec.js b/packages/unleash-api/test/eventApiSpec.js index ceebaa23d4..b3ef2f1db3 100644 --- a/packages/unleash-api/test/eventApiSpec.js +++ b/packages/unleash-api/test/eventApiSpec.js @@ -1,15 +1,15 @@ 'use strict'; -var request = require('./specHelper').request; +const request = require('./specHelper').request; -describe('The event api', function () { - it('returns events', function (done) { +describe('The event api', () => { + it('returns events', done => { request .get('/events') .expect('Content-Type', /json/) .expect(200, done); }); - it('returns events given a name', function (done) { + it('returns events given a name', done => { request .get('/events/myname') .expect('Content-Type', /json/) diff --git a/packages/unleash-api/test/eventDifferTest.js b/packages/unleash-api/test/eventDifferTest.js index e85b62b8c9..e0bd5e9dc0 100644 --- a/packages/unleash-api/test/eventDifferTest.js +++ b/packages/unleash-api/test/eventDifferTest.js @@ -1,32 +1,32 @@ 'use strict'; -var eventDiffer = require('../lib/eventDiffer'); -var eventType = require('../lib/eventType'); -var assert = require('assert'); +const eventDiffer = require('../lib/eventDiffer'); +const eventType = require('../lib/eventType'); +const assert = require('assert'); -describe('eventDiffer', function () { - it('fails if events include an unknown event type', function () { - var events = [ +describe('eventDiffer', () => { + it('fails if events include an unknown event type', () => { + const events = [ { type: eventType.featureCreated, data: {} }, { type: 'unknown-type', data: {} } ]; - assert.throws(function () { + assert.throws(() => { eventDiffer.addDiffs(events); }); }); - it('diffs a feature-update event', function () { - var name = 'foo'; - var desc = 'bar'; + it('diffs a feature-update event', () => { + const name = 'foo'; + const desc = 'bar'; - var events = [ + const events = [ { type: eventType.featureUpdated, - data: { name: name, description: desc, strategy: 'default', enabled: true, parameters: { value: 2 } } + data: { name, description: desc, strategy: 'default', enabled: true, parameters: { value: 2 } } }, { type: eventType.featureCreated, - data: { name: name, description: desc, strategy: 'default', enabled: false, parameters: { value: 1 } } + data: { name, description: desc, strategy: 'default', enabled: false, parameters: { value: 1 } } } ]; @@ -40,8 +40,8 @@ describe('eventDiffer', function () { assert.strictEqual(events[1].diffs, null); }); - it('diffs only against features with the same name', function () { - var events = [ + it('diffs only against features with the same name', () => { + const events = [ { type: eventType.featureUpdated, data: { name: 'bar', description: 'desc', strategy: 'default', enabled: true, parameters: {} } @@ -68,8 +68,8 @@ describe('eventDiffer', function () { assert.strictEqual(events[3].diffs, null); }); - it('sets an empty array of diffs if nothing was changed', function () { - var events = [ + it('sets an empty array of diffs if nothing was changed', () => { + const events = [ { type: eventType.featureUpdated, data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} } @@ -84,8 +84,8 @@ describe('eventDiffer', function () { assert.deepEqual(events[0].diffs, []); }); - it('sets diffs to null if there was nothing to diff against', function () { - var events = [ + it('sets diffs to null if there was nothing to diff against', () => { + const events = [ { type: eventType.featureUpdated, data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} } diff --git a/packages/unleash-api/test/featureApiSpec.js b/packages/unleash-api/test/featureApiSpec.js index 0ba1b70310..4dd03a0165 100644 --- a/packages/unleash-api/test/featureApiSpec.js +++ b/packages/unleash-api/test/featureApiSpec.js @@ -1,38 +1,38 @@ 'use strict'; -var logger = require('../lib/logger'); -var assert = require('assert'); -var specHelper = require('./specHelper'); -var request = specHelper.request; -var stringify = function (o) { +const logger = require('../lib/logger'); +const assert = require('assert'); +const specHelper = require('./specHelper'); +const request = specHelper.request; +const stringify = function (o) { return JSON.stringify(o, null, ' '); }; -describe('The features api', function () { - beforeEach(function (done) { +describe('The features api', () => { + beforeEach(done => { specHelper.db.resetAndSetup() .then(done.bind(null, null)) .catch(done); }); - it('returns three feature toggles', function (done) { + it('returns three feature toggles', done => { request .get('/features') .expect('Content-Type', /json/) .expect(200) - .end(function (err, res) { - assert(res.body.features.length === 3, "expected 3 features, got " + stringify(res.body)); + .end((err, res) => { + assert(res.body.features.length === 3, `expected 3 features, got ${stringify(res.body)}`); done(); }); }); - it('gets a feature by name', function (done) { + it('gets a feature by name', done => { request .get('/features/featureX') .expect('Content-Type', /json/) .expect(200, done); }); - it('cant get feature that dose not exist', function (done) { + it('cant get feature that dose not exist', done => { logger.setLevel('FATAL'); request .get('/features/myfeature') @@ -40,7 +40,7 @@ describe('The features api', function () { .expect(404, done); }); - it('creates new feature toggle', function (done) { + it('creates new feature toggle', done => { request .post('/features') .send({ name: 'com.test.feature', enabled: false }) @@ -48,24 +48,24 @@ describe('The features api', function () { .expect(201, done); }); - it('creates new feature toggle with createdBy', function (done) { + it('creates new feature toggle with createdBy', done => { logger.setLevel('FATAL'); request .post('/features') .send({ name: 'com.test.Username', enabled: false }) .set('Cookie', ['username=ivaosthu']) .set('Content-Type', 'application/json') - .end(function() { + .end(() => { request .get('/events') - .end(function (err, res) { + .end((err, res) => { assert.equal(res.body.events[0].createdBy, 'ivaosthu'); done(); }); }); }); - it('require new feature toggle to have a name', function (done) { + it('require new feature toggle to have a name', done => { logger.setLevel('FATAL'); request .post('/features') @@ -74,7 +74,7 @@ describe('The features api', function () { .expect(400, done); }); - it('can not change status of feature toggle that does not exist', function (done) { + it('can not change status of feature toggle that does not exist', done => { logger.setLevel('FATAL'); request .put('/features/should-not-exist') @@ -83,7 +83,7 @@ describe('The features api', function () { .expect(404, done); }); - it('can change status of feature toggle that does exist', function (done) { + it('can change status of feature toggle that does exist', done => { logger.setLevel('FATAL'); request .put('/features/featureY') @@ -92,19 +92,19 @@ describe('The features api', function () { .expect(200, done); }); - it('archives a feature by name', function (done) { + it('archives a feature by name', done => { request .delete('/features/featureX') .expect(200, done); }); - it('can not archive unknown feature', function (done) { + it('can not archive unknown feature', done => { request .delete('/features/featureUnknown') .expect(404, done); }); - it('refuses to create a feature with an existing name', function (done) { + it('refuses to create a feature with an existing name', done => { request .post('/features') .send({ name: 'featureX' }) diff --git a/packages/unleash-api/test/featureArchiveApiSpec.js b/packages/unleash-api/test/featureArchiveApiSpec.js index cc1af0b493..9c7db4f2ce 100644 --- a/packages/unleash-api/test/featureArchiveApiSpec.js +++ b/packages/unleash-api/test/featureArchiveApiSpec.js @@ -1,30 +1,30 @@ 'use strict'; -var assert = require('assert'); -var specHelper = require('./specHelper'); -var request = specHelper.request; -var stringify = function (o) { +const assert = require('assert'); +const specHelper = require('./specHelper'); +const request = specHelper.request; +const stringify = function (o) { return JSON.stringify(o, null, ' '); }; -describe('The archive features api', function () { - beforeEach(function (done) { +describe('The archive features api', () => { + beforeEach(done => { specHelper.db.resetAndSetup() .then(done.bind(null, null)) .catch(done); }); - it('returns three archived toggles', function (done) { + it('returns three archived toggles', done => { request .get('/archive/features') .expect('Content-Type', /json/) .expect(200) - .end(function (err, res) { - assert(res.body.features.length === 3, "expected 3 features, got " + stringify(res.body)); + .end((err, res) => { + assert(res.body.features.length === 3, `expected 3 features, got ${stringify(res.body)}`); done(); }); }); - it('revives a feature by name', function (done) { + it('revives a feature by name', done => { request .post('/archive/revive') .send({ name: 'featureArchivedX' }) @@ -32,7 +32,7 @@ describe('The archive features api', function () { .expect(200, done); }); - it('must set name when reviving toggle', function (done) { + it('must set name when reviving toggle', done => { request .post('/archive/revive') .expect(400, done); diff --git a/packages/unleash-api/test/routerSpec.js b/packages/unleash-api/test/routerSpec.js index 13c1e8e9e3..1c485bfb42 100644 --- a/packages/unleash-api/test/routerSpec.js +++ b/packages/unleash-api/test/routerSpec.js @@ -1,10 +1,10 @@ 'use strict'; -var specHelper = require('./specHelper'); -var request = specHelper.request; +const specHelper = require('./specHelper'); +const request = specHelper.request; -describe('The routes', function () { - describe('healthcheck', function () { - it('returns health good', function (done) { +describe('The routes', () => { + describe('healthcheck', () => { + it('returns health good', done => { request.get('/health') .expect('Content-Type', /json/) .expect(200) diff --git a/packages/unleash-api/test/specHelper.js b/packages/unleash-api/test/specHelper.js index 7ad8c98790..bcb61ee5e4 100644 --- a/packages/unleash-api/test/specHelper.js +++ b/packages/unleash-api/test/specHelper.js @@ -1,23 +1,23 @@ 'use strict'; process.env.NODE_ENV = 'test'; -var Promise = require('bluebird'); -var request = require('supertest'); -var databaseUri = require('./databaseConfig').getDatabaseUri(); -var knex = require('../lib/db/dbPool')(databaseUri); -var eventDb = require('../lib/db/event')(knex); -var EventStore = require('../lib/eventStore'); -var eventStore = new EventStore(eventDb); -var featureDb = require('../lib/db/feature')(knex, eventStore); -var strategyDb = require('../lib/db/strategy')(knex, eventStore); +const Promise = require('bluebird'); +let request = require('supertest'); +const databaseUri = require('./databaseConfig').getDatabaseUri(); +const knex = require('../lib/db/dbPool')(databaseUri); +const eventDb = require('../lib/db/event')(knex); +const EventStore = require('../lib/eventStore'); +const eventStore = new EventStore(eventDb); +const featureDb = require('../lib/db/feature')(knex, eventStore); +const strategyDb = require('../lib/db/strategy')(knex, eventStore); -var app = require('../app')({ +const app = require('../app')({ baseUriPath: '', db: knex, - eventDb: eventDb, - eventStore: eventStore, - featureDb: featureDb, - strategyDb: strategyDb + eventDb, + eventStore, + featureDb, + strategyDb }); Promise.promisifyAll(request); @@ -37,67 +37,63 @@ function createStrategies() { emails: "String" } } - ], function (strategy) { - return strategyDb._createStrategy(strategy); - }); + ], strategy => strategyDb._createStrategy(strategy)); } function createFeatures() { return Promise.map([ { - "name": "featureX", - "description": "the #1 feature", - "enabled": true, - "strategy": "default" + name: "featureX", + description: "the #1 feature", + enabled: true, + strategy: "default" }, { - "name": "featureY", - "description": "soon to be the #1 feature", - "enabled": false, - "strategy": "baz", - "parameters": { - "foo": "bar" + name: "featureY", + description: "soon to be the #1 feature", + enabled: false, + strategy: "baz", + parameters: { + foo: "bar" } }, { - "name": "featureZ", - "description": "terrible feature", - "enabled": true, - "strategy": "baz", - "parameters": { - "foo": "rab" + name: "featureZ", + description: "terrible feature", + enabled: true, + strategy: "baz", + parameters: { + foo: "rab" } }, { - "name": "featureArchivedX", - "description": "the #1 feature", - "enabled": true, - "archived": true, - "strategy": "default" + name: "featureArchivedX", + description: "the #1 feature", + enabled: true, + archived: true, + strategy: "default" }, { - "name": "featureArchivedY", - "description": "soon to be the #1 feature", - "enabled": false, - "archived": true, - "strategy": "baz", - "parameters": { - "foo": "bar" + name: "featureArchivedY", + description: "soon to be the #1 feature", + enabled: false, + archived: true, + strategy: "baz", + parameters: { + foo: "bar" } }, { - "name": "featureArchivedZ", - "description": "terrible feature", - "enabled": true, - "archived": true, - "strategy": "baz", - "parameters": { - "foo": "rab" + name: "featureArchivedZ", + description: "terrible feature", + enabled: true, + archived: true, + strategy: "baz", + parameters: { + foo: "rab" } } - ], function (feature) { - return featureDb._createFeature(feature); - }); + ], feature => featureDb._createFeature(feature)); } function destroyStrategies() { @@ -117,11 +113,11 @@ function setupDatabase() { } module.exports = { - request: request, + request, db: { reset: resetDatabase, setup: setupDatabase, - resetAndSetup: function () { + resetAndSetup() { return resetDatabase().then(setupDatabase); } } diff --git a/packages/unleash-api/test/strategyApiSpec.js b/packages/unleash-api/test/strategyApiSpec.js index 7a742d58ec..681dcd2faf 100644 --- a/packages/unleash-api/test/strategyApiSpec.js +++ b/packages/unleash-api/test/strategyApiSpec.js @@ -1,36 +1,36 @@ 'use strict'; -var specHelper = require('./specHelper'); -var request = specHelper.request; +const specHelper = require('./specHelper'); +const request = specHelper.request; -describe('The strategy api', function () { - beforeEach(function (done) { +describe('The strategy api', () => { + beforeEach(done => { specHelper.db.resetAndSetup() .then(done.bind(null, null)) .catch(done); }); - it('gets all strategies', function (done) { + it('gets all strategies', done => { request .get('/strategies') .expect('Content-Type', /json/) .expect(200, done); }); - it('gets a strategy by name', function (done) { + it('gets a strategy by name', done => { request .get('/strategies/default') .expect('Content-Type', /json/) .expect(200, done); }); - it('cant get a strategy by name that dose not exist', function (done) { + it('cant get a strategy by name that dose not exist', done => { request .get('/strategies/mystrategy') .expect('Content-Type', /json/) .expect(404, done); }); - it('creates a new strategy', function (done) { + it('creates a new strategy', done => { request .post('/strategies') .send({ name: 'myCustomStrategy', description: 'Best strategy ever.' }) @@ -38,7 +38,7 @@ describe('The strategy api', function () { .expect(201, done); }); - it('requires new strategies to have a name', function (done) { + it('requires new strategies to have a name', done => { request .post('/strategies') .send({ name: '' }) @@ -46,7 +46,7 @@ describe('The strategy api', function () { .expect(400, done); }); - it('refuses to create a strategy with an existing name', function (done) { + it('refuses to create a strategy with an existing name', done => { request .post('/strategies') .send({ name: 'default' }) @@ -54,13 +54,13 @@ describe('The strategy api', function () { .expect(403, done); }); - it('deletes a new strategy', function (done) { + it('deletes a new strategy', done => { request .delete('/strategies/usersWithEmail') .expect(200, done); }); - it('can\'t delete a strategy that dose not exist', function(done) { + it('can\'t delete a strategy that dose not exist', done => { request .delete('/strategies/unknown') .expect(404, done); diff --git a/packages/unleash-docker/index.js b/packages/unleash-docker/index.js index ef48ba7eda..58f49486b0 100644 --- a/packages/unleash-docker/index.js +++ b/packages/unleash-docker/index.js @@ -1,3 +1,3 @@ 'use strict'; -var unleash = require('unleash-server'); +const unleash = require('unleash-server'); unleash.start({}); diff --git a/packages/unleash-frontend/jest-preprocessor.js b/packages/unleash-frontend/jest-preprocessor.js index e869fa1b7f..6379efc14b 100644 --- a/packages/unleash-frontend/jest-preprocessor.js +++ b/packages/unleash-frontend/jest-preprocessor.js @@ -1,7 +1,9 @@ // preprocessor.js -var ReactTools = require('react-tools'); +'use strict'; + +const ReactTools = require('react-tools'); module.exports = { - process: function(src) { + process(src) { return ReactTools.transform(src); } }; diff --git a/packages/unleash-frontend/public/js/UnleashApp.jsx b/packages/unleash-frontend/public/js/UnleashApp.jsx index 724bcbdd2f..e0a85d9a12 100644 --- a/packages/unleash-frontend/public/js/UnleashApp.jsx +++ b/packages/unleash-frontend/public/js/UnleashApp.jsx @@ -1,20 +1,21 @@ -var React = require('react'); -var Router = require('react-router'); -var Menu = require('./components/Menu'); -var ErrorMessages = require('./components/ErrorMessages'); -var initalizer = require('./stores/initalizer'); -var FeatureToggleStore = require('./stores/FeatureToggleStore'); -var StrategyStore = require('./stores/StrategyStore'); -var ArchiveStore = require('./stores/ArchivedToggleStore'); -var Link = Router.Link; -var RouteHandler = Router.RouteHandler; +'use strict'; +const React = require('react'); +const Router = require('react-router'); +const Menu = require('./components/Menu'); +const ErrorMessages = require('./components/ErrorMessages'); +const initalizer = require('./stores/initalizer'); +const FeatureToggleStore = require('./stores/FeatureToggleStore'); +const StrategyStore = require('./stores/StrategyStore'); +const ArchiveStore = require('./stores/ArchivedToggleStore'); +const Link = Router.Link; +const RouteHandler = Router.RouteHandler; -var UnleashApp = React.createClass({ +const UnleashApp = React.createClass({ contextTypes: { router: React.PropTypes.func }, - getInitialState: function() { + getInitialState() { return { features: FeatureToggleStore.getFeatureToggles(), strategies: StrategyStore.getStrategies(), @@ -22,40 +23,40 @@ var UnleashApp = React.createClass({ }; }, - onFeatureToggleChange: function() { + onFeatureToggleChange() { this.setState({ features: FeatureToggleStore.getFeatureToggles() }); }, - onStrategiesChange: function() { + onStrategiesChange() { this.setState({ strategies: StrategyStore.getStrategies() }); }, - onArchiveChange: function() { + onArchiveChange() { this.setState({ archivedFeatures: ArchiveStore.getArchivedToggles() }); }, - componentDidMount: function() { + componentDidMount() { this.unsubscribeFS = FeatureToggleStore.listen(this.onFeatureToggleChange); this.unsubscribeSS = StrategyStore.listen(this.onStrategiesChange); this.unsubscribeAS = ArchiveStore.listen(this.onArchiveChange); }, - componentWillUnmount: function() { + componentWillUnmount() { this.unsubscribeFS(); this.unsubscribeSS(); this.unsubscribeAS(); }, - componentWillMount: function() { + componentWillMount() { initalizer(30); }, - renderLink: function(id, label) { + renderLink(id, label) { return ( {label} @@ -63,7 +64,7 @@ var UnleashApp = React.createClass({ ); }, - render: function () { + render() { return (
diff --git a/packages/unleash-frontend/public/js/__tests__/components/Menu-test.js b/packages/unleash-frontend/public/js/__tests__/components/Menu-test.js index a49cb5869d..320d1c0b11 100644 --- a/packages/unleash-frontend/public/js/__tests__/components/Menu-test.js +++ b/packages/unleash-frontend/public/js/__tests__/components/Menu-test.js @@ -1,14 +1,16 @@ /** @jsx React.DOM */ +'use strict'; + jest.dontMock("../../components/Menu"); -var Menu = require("../../components/Menu"); -var React = require("react/addons"); -var TestUtils = React.addons.TestUtils; +const Menu = require("../../components/Menu"); +const React = require("react/addons"); +const TestUtils = React.addons.TestUtils; -describe('Menu test', function () { - it('should include unleash in menu', function () { - var Compononent = TestUtils .renderIntoDocument(); +describe('Menu test', () => { + it('should include unleash in menu', () => { + const Compononent = TestUtils .renderIntoDocument(); expect(Compononent.getDOMNode().textContent).toMatch('unleash'); }); }); diff --git a/packages/unleash-frontend/public/js/__tests__/components/feature/ArchiveFeatureComponent-test.js b/packages/unleash-frontend/public/js/__tests__/components/feature/ArchiveFeatureComponent-test.js index af849db9f9..49facccea8 100644 --- a/packages/unleash-frontend/public/js/__tests__/components/feature/ArchiveFeatureComponent-test.js +++ b/packages/unleash-frontend/public/js/__tests__/components/feature/ArchiveFeatureComponent-test.js @@ -1,16 +1,17 @@ +'use strict'; jest.dontMock("../../../components/feature/ArchiveFeatureComponent"); jest.mock("../../../stores/FeatureToggleActions"); jest.autoMockOff(); -var React = require("react/addons"); -var TestUtils = React.addons.TestUtils; -var FeatureArchive = require("../../../components/feature/ArchiveFeatureComponent"); -var FeatureActions = require("../../../stores/FeatureToggleActions"); +const React = require("react/addons"); +const TestUtils = React.addons.TestUtils; +const FeatureArchive = require("../../../components/feature/ArchiveFeatureComponent"); +const FeatureActions = require("../../../stores/FeatureToggleActions"); -describe("FeatureForm", function () { - var Component; - beforeEach(function() { - var archivedToggles = [ +describe("FeatureForm", () => { + let Component; + beforeEach(() => { + const archivedToggles = [ { name: "featureX" }, { name: "featureY" } ]; @@ -19,18 +20,18 @@ describe("FeatureForm", function () { ); }); - afterEach(function() { + afterEach(() => { React.unmountComponentAtNode(document.body); }); - it("should render two archived features", function() { - var rows = Component.getDOMNode().querySelectorAll("tbody tr"); + it("should render two archived features", () => { + const rows = Component.getDOMNode().querySelectorAll("tbody tr"); expect(rows.length).toEqual(2); }); - it("should revive archived feature toggle", function() { - var button = Component.getDOMNode().querySelector("tbody button"); + it("should revive archived feature toggle", () => { + const button = Component.getDOMNode().querySelector("tbody button"); TestUtils.Simulate.click(button); jest.runAllTimers(); diff --git a/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureForm-test.js b/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureForm-test.js index fea56b73dd..60df741a34 100644 --- a/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureForm-test.js +++ b/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureForm-test.js @@ -1,33 +1,34 @@ +'use strict'; jest.dontMock("../../../components/feature/FeatureForm"); -var React = require("react/addons"); -var TestUtils = React.addons.TestUtils; -var FeatureForm = require("../../../components/feature/FeatureForm"); +const React = require("react/addons"); +const TestUtils = React.addons.TestUtils; +const FeatureForm = require("../../../components/feature/FeatureForm"); -describe("FeatureForm", function () { - var Component; - var strategies = [ +describe("FeatureForm", () => { + let Component; + const strategies = [ { name: "default" } ]; - afterEach(function() { + afterEach(() => { React.unmountComponentAtNode(document.body); }); - describe("new", function () { - it("should render empty form", function() { + describe("new", () => { + it("should render empty form", () => { Component = TestUtils .renderIntoDocument(); - var name = Component.getDOMNode().querySelectorAll("input"); + const name = Component.getDOMNode().querySelectorAll("input"); expect(name[0].value).toEqual(""); }); }); - describe("edit", function () { - var feature = { name: "Test", strategy: "unknown" }; + describe("edit", () => { + const feature = { name: "Test", strategy: "unknown" }; - it("should show unknown strategy as default", function () { + it("should show unknown strategy as default", () => { Component = TestUtils .renderIntoDocument(); - var strategySelect = Component.getDOMNode().querySelector("select"); + const strategySelect = Component.getDOMNode().querySelector("select"); expect(strategySelect.value).toEqual("default"); }); }); diff --git a/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureList-test.js b/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureList-test.js index d39a558215..d6225ea702 100644 --- a/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureList-test.js +++ b/packages/unleash-frontend/public/js/__tests__/components/feature/FeatureList-test.js @@ -1,56 +1,58 @@ +'use strict'; jest.dontMock("../../../components/feature/FeatureList"); jest.dontMock("../../../components/feature/Feature"); -var React = require("react/addons"); -var TestUtils = React.addons.TestUtils; -var FeatureList = require("../../../components/feature/FeatureList"); +const React = require("react/addons"); +const TestUtils = React.addons.TestUtils; +const FeatureList = require("../../../components/feature/FeatureList"); -describe("FeatureList", function () { - var Component, features; +describe("FeatureList", () => { + let Component; + let features; - beforeEach(function() { + beforeEach(() => { features = [ { name: "featureX", strategy: "other" }, { name: "group.featureY", strategy: "default" } ]; - var strategies=[ + const strategies=[ { name: "default" } ]; Component = TestUtils .renderIntoDocument(); }); - afterEach(function() { + afterEach(() => { React.unmountComponentAtNode(document.body); }); - it("should render all features", function() { - var features = Component.getDOMNode().querySelectorAll(".feature"); + it("should render all features", () => { + const features = Component.getDOMNode().querySelectorAll(".feature"); expect(features.length).toEqual(2); }); - it("should filter list of features", function() { - var filterNode = Component.refs.filter.getDOMNode(); + it("should filter list of features", () => { + const filterNode = Component.refs.filter.getDOMNode(); TestUtils.Simulate.change(filterNode, { target: { value: "group" } }); - var features = Component.getDOMNode().querySelectorAll(".feature"); + const features = Component.getDOMNode().querySelectorAll(".feature"); expect(features.length).toEqual(1); }); - it("should filter list of features ignoring case", function() { - var filterNode = Component.refs.filter.getDOMNode(); + it("should filter list of features ignoring case", () => { + const filterNode = Component.refs.filter.getDOMNode(); TestUtils.Simulate.change(filterNode, { target: { value: "GROUP" } }); - var features = Component.getDOMNode().querySelectorAll(".feature"); + const features = Component.getDOMNode().querySelectorAll(".feature"); expect(features.length).toEqual(1); expect(features[0].textContent).toMatch("group"); }); - it("should filter list of features by strategy name", function() { - var searchString = "other"; - var filterNode = Component.refs.filter.getDOMNode(); + it("should filter list of features by strategy name", () => { + const searchString = "other"; + const filterNode = Component.refs.filter.getDOMNode(); TestUtils.Simulate.change(filterNode, { target: { value: searchString } }); - var features = Component.getDOMNode().querySelectorAll(".feature"); + const features = Component.getDOMNode().querySelectorAll(".feature"); expect(features.length).toEqual(1); expect(features[0].textContent).toMatch(searchString); }); diff --git a/packages/unleash-frontend/public/js/__tests__/stores/FeatureToggleStore-test.js b/packages/unleash-frontend/public/js/__tests__/stores/FeatureToggleStore-test.js index bd569be796..a0070b88fd 100644 --- a/packages/unleash-frontend/public/js/__tests__/stores/FeatureToggleStore-test.js +++ b/packages/unleash-frontend/public/js/__tests__/stores/FeatureToggleStore-test.js @@ -1,11 +1,14 @@ +'use strict'; jest.autoMockOff(); jest.dontMock('../../stores/FeatureToggleActions'); jest.dontMock('../../stores/FeatureToggleStore'); -describe('FeatureToggleStore', function() { - var Actions, Store, toggles; +describe('FeatureToggleStore', () => { + let Actions; + let Store; + let toggles; - beforeEach(function() { + beforeEach(() => { Actions = require('../../stores/FeatureToggleActions'); Store = require('../../stores/FeatureToggleStore'); toggles = [ @@ -13,11 +16,11 @@ describe('FeatureToggleStore', function() { ]; }); - it('should be an empty store', function() { + it('should be an empty store', () => { expect(Store.getFeatureToggles().length).toBe(0); }); - it('should inititialize the store', function() { + it('should inititialize the store', () => { Actions.init.completed(toggles); jest.runAllTimers(); @@ -25,10 +28,10 @@ describe('FeatureToggleStore', function() { expect(Store.getFeatureToggles()[0].name).toEqual("app.feature"); }); - it('should add a another toggle', function() { + it('should add a another toggle', () => { Actions.init.completed(toggles); - var newToggle = { name: "app.featureB", enabled: true, strategy: "default" }; + const newToggle = { name: "app.featureB", enabled: true, strategy: "default" }; Actions.create.completed(newToggle); @@ -37,7 +40,7 @@ describe('FeatureToggleStore', function() { expect(Store.getFeatureToggles()[1].name).toEqual("app.featureB"); }); - it('should archive toggle', function() { + it('should archive toggle', () => { Actions.init.completed(toggles); Actions.archive.completed(toggles[0]); @@ -46,7 +49,7 @@ describe('FeatureToggleStore', function() { expect(Store.getFeatureToggles().length).toBe(0); }); - it('should keep toggles in sorted order', function() { + it('should keep toggles in sorted order', () => { Actions.init.completed([ { name: "A" }, { name: "B" }, @@ -61,9 +64,9 @@ describe('FeatureToggleStore', function() { expect(Store.getFeatureToggles()[3].name).toEqual("C"); }); - it('should update toggle', function() { + it('should update toggle', () => { Actions.init.completed(toggles); - var toggle = toggles[0]; + const toggle = toggles[0]; toggle.enabled = false; Actions.update.completed(toggle); diff --git a/packages/unleash-frontend/public/js/app.jsx b/packages/unleash-frontend/public/js/app.jsx index 948026dd48..d5c6abd6f3 100644 --- a/packages/unleash-frontend/public/js/app.jsx +++ b/packages/unleash-frontend/public/js/app.jsx @@ -1,10 +1,11 @@ -var React = require('react'); -var Router = require('react-router'); -var UserStore = require('./stores/UserStore'); -var routes = require('./routes'); +'use strict'; +const React = require('react'); +const Router = require('react-router'); +const UserStore = require('./stores/UserStore'); +const routes = require('./routes'); UserStore.init(); -Router.run(routes, function (Handler) { +Router.run(routes, Handler => { React.render(, document.getElementById('content')); }); diff --git a/packages/unleash-frontend/public/js/components/ErrorMessages.jsx b/packages/unleash-frontend/public/js/components/ErrorMessages.jsx index 3594583876..ae84144742 100644 --- a/packages/unleash-frontend/public/js/components/ErrorMessages.jsx +++ b/packages/unleash-frontend/public/js/components/ErrorMessages.jsx @@ -1,34 +1,35 @@ -var React = require('react'); -var Ui = require('./ErrorMessages.ui'); -var ErrorStore = require('../stores/ErrorStore'); -var ErrorActions = require('../stores/ErrorActions'); +'use strict'; +const React = require('react'); +const Ui = require('./ErrorMessages.ui'); +const ErrorStore = require('../stores/ErrorStore'); +const ErrorActions = require('../stores/ErrorActions'); -var ErrorMessages = React.createClass({ - getInitialState: function() { +const ErrorMessages = React.createClass({ + getInitialState() { return { errors: ErrorStore.getErrors() }; }, - onStoreChange: function() { + onStoreChange() { this.setState({ errors: ErrorStore.getErrors() }); }, - componentDidMount: function() { + componentDidMount() { this.unsubscribe = ErrorStore.listen(this.onStoreChange); }, - componentWillUnmount: function() { + componentWillUnmount() { this.unsubscribe(); }, - onClearErrors: function() { + onClearErrors() { ErrorActions.clear(); }, - render: function() { + render() { return ( ); diff --git a/packages/unleash-frontend/public/js/components/ErrorMessages.ui.jsx b/packages/unleash-frontend/public/js/components/ErrorMessages.ui.jsx index 7a93bcb899..6d88e9f620 100644 --- a/packages/unleash-frontend/public/js/components/ErrorMessages.ui.jsx +++ b/packages/unleash-frontend/public/js/components/ErrorMessages.ui.jsx @@ -1,14 +1,13 @@ -var React = require('react'); +'use strict'; +const React = require('react'); -var ErrorMessages = React.createClass({ - render: function() { +const ErrorMessages = React.createClass({ + render() { if (!this.props.errors.length) { return
; } - var errorNodes = this.props.errors.map(function(e, i) { - return (
  • {e}
  • ); - }); + const errorNodes = this.props.errors.map((e, i) =>
  • {e}
  • ); return (
    diff --git a/packages/unleash-frontend/public/js/components/Menu.jsx b/packages/unleash-frontend/public/js/components/Menu.jsx index d00572f313..42a0a37157 100644 --- a/packages/unleash-frontend/public/js/components/Menu.jsx +++ b/packages/unleash-frontend/public/js/components/Menu.jsx @@ -1,8 +1,9 @@ -var React = require('react'); -var User = require('./User'); +'use strict'; +const React = require('react'); +const User = require('./User'); -var Menu = React.createClass({ - render: function() { return ( +const Menu = React.createClass({ + render() { return (
    diff --git a/packages/unleash-frontend/public/js/components/User.jsx b/packages/unleash-frontend/public/js/components/User.jsx index 715bae4ed0..95e5421def 100644 --- a/packages/unleash-frontend/public/js/components/User.jsx +++ b/packages/unleash-frontend/public/js/components/User.jsx @@ -1,14 +1,15 @@ -var React = require('react'); -var UserStore = require('../stores/UserStore'); +'use strict'; +const React = require('react'); +const UserStore = require('../stores/UserStore'); -var User = React.createClass({ +const User = React.createClass({ - onSave: function() { - var value = this.refs.username.getDOMNode().value.trim(); + onSave() { + const value = this.refs.username.getDOMNode().value.trim(); UserStore.set(value); }, - render: function() { + render() { return (

    Archived Feature Toggles

    @@ -27,7 +28,7 @@ var ArchiveFeatureComponent = React.createClass({ ); }, - renderArchivedItem: function(f) { + renderArchivedItem(f) { return ( diff --git a/packages/unleash-frontend/public/js/components/feature/Feature.jsx b/packages/unleash-frontend/public/js/components/feature/Feature.jsx index bf3f8ac58e..666f402b11 100644 --- a/packages/unleash-frontend/public/js/components/feature/Feature.jsx +++ b/packages/unleash-frontend/public/js/components/feature/Feature.jsx @@ -1,10 +1,11 @@ -var React = require('react'); -var FeatureForm = require('./FeatureForm'); -var LogEntryList = require('../log/LogEntryList'); -var eventStore = require('../../stores/EventStore'); +'use strict'; +const React = require('react'); +const FeatureForm = require('./FeatureForm'); +const LogEntryList = require('../log/LogEntryList'); +const eventStore = require('../../stores/EventStore'); -var Feature = React.createClass({ - getInitialState: function() { +const Feature = React.createClass({ + getInitialState() { return { editMode: false, showHistory: false, @@ -12,33 +13,33 @@ var Feature = React.createClass({ }; }, - handleEventsResponse: function(response) { + handleEventsResponse(response) { this.setState({events: response}); }, - toggleHistory: function() { + toggleHistory() { eventStore.getEventsByName(this.props.feature.name).then(this.handleEventsResponse); this.setState({showHistory: !this.state.showHistory}); }, - toggleEditMode: function() { + toggleEditMode() { this.setState({editMode: !this.state.editMode}); }, - saveFeature: function(feature) { + saveFeature(feature) { this.props.onChange(feature); this.toggleEditMode(); }, - archiveFeature: function() { - if (window.confirm("Are you sure you want to delete " + this.props.feature.name + "?")) { + archiveFeature() { + if (window.confirm(`Are you sure you want to delete ${this.props.feature.name}?`)) { this.props.onArchive(this.props.feature); } }, - renderEditMode: function() { + renderEditMode() { return ( @@ -53,7 +54,7 @@ var Feature = React.createClass({ }, - render: function() { + render() { return ( @@ -107,11 +108,11 @@ var Feature = React.createClass({ ); }, - renderEmptyRow: function() { + renderEmptyRow() { return (); }, - renderHistory: function() { + renderHistory() { return ( diff --git a/packages/unleash-frontend/public/js/components/feature/FeatureForm.jsx b/packages/unleash-frontend/public/js/components/feature/FeatureForm.jsx index aeb7a31e08..924992395d 100644 --- a/packages/unleash-frontend/public/js/components/feature/FeatureForm.jsx +++ b/packages/unleash-frontend/public/js/components/feature/FeatureForm.jsx @@ -1,8 +1,9 @@ -var React = require('react'); -var TextInput = require('../form/TextInput'); +'use strict'; +const React = require('react'); +const TextInput = require('../form/TextInput'); -var FeatureForm = React.createClass({ - getInitialState: function() { +const FeatureForm = React.createClass({ + getInitialState() { return { strategyOptions: this.props.strategies, requiredParams: [], @@ -10,18 +11,18 @@ var FeatureForm = React.createClass({ }; }, - componentWillMount: function() { + componentWillMount() { if(this.props.feature) { this.setSelectedStrategy(this.props.feature.strategy); } }, - onStrategyChange: function(e) { + onStrategyChange(e) { this.setSelectedStrategy(e.target.value); this.setState({currentStrategy: e.target.value}); }, - getParameterValue: function(name) { + getParameterValue(name) { if(this.props.feature && this.props.feature.parameters) { return this.props.feature.parameters[name]; } else { @@ -29,10 +30,8 @@ var FeatureForm = React.createClass({ } }, - setSelectedStrategy: function(name) { - var selectedStrategy = this.props.strategies.filter(function(strategy) { - return strategy.name === name; - })[0]; + setSelectedStrategy(name) { + const selectedStrategy = this.props.strategies.filter(strategy => strategy.name === name)[0]; if(selectedStrategy) { this.setStrategyParams(selectedStrategy); @@ -44,23 +43,23 @@ var FeatureForm = React.createClass({ } }, - setStrategyParams: function(strategy) { - var requiredParams = []; - var key; + setStrategyParams(strategy) { + const requiredParams = []; + let key; for(key in strategy.parametersTemplate) { requiredParams.push({name: key, value: this.getParameterValue(key)}); } - this.setState({requiredParams: requiredParams}); + this.setState({requiredParams}); }, - render: function() { - var feature = this.props.feature || { + render() { + const feature = this.props.feature || { name: '', strategy: 'default', enabled: false }; - var idPrefix = this.props.feature ? this.props.feature.name : 'new'; + const idPrefix = this.props.feature ? this.props.feature.name : 'new'; return (
    @@ -70,7 +69,7 @@ var FeatureForm = React.createClass({ {this.props.feature ? "" : Create new toggle}
    - +
    - -