From fb2e40447cae287c0260db74db7c6e3eced71752 Mon Sep 17 00:00:00 2001 From: Muhammed Thanish Date: Thu, 1 Sep 2016 13:20:11 +0530 Subject: [PATCH] Move the middleware to db repo --- dist/server/index.js | 13 +- .../storybook.js => middleware.js} | 10 +- dist/server/middleware/datastore.js | 128 ------------------ package.json | 4 +- src/server/index.js | 7 +- .../storybook.js => middleware.js} | 10 +- src/server/middleware/datastore.js | 76 ----------- 7 files changed, 22 insertions(+), 226 deletions(-) rename dist/server/{middleware/storybook.js => middleware.js} (90%) delete mode 100644 dist/server/middleware/datastore.js rename src/server/{middleware/storybook.js => middleware.js} (84%) delete mode 100644 src/server/middleware/datastore.js diff --git a/dist/server/index.js b/dist/server/index.js index 6e3eaf1d512e..ebc893dcc035 100755 --- a/dist/server/index.js +++ b/dist/server/index.js @@ -17,13 +17,13 @@ var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); -var _storybook = require('./middleware/storybook'); +var _middleware = require('./middleware'); -var _storybook2 = _interopRequireDefault(_storybook); +var _middleware2 = _interopRequireDefault(_middleware); -var _datastore = require('./middleware/datastore'); +var _middleware3 = require('@kadira/storybook-database-local/dist/server/middleware'); -var _datastore2 = _interopRequireDefault(_datastore); +var _middleware4 = _interopRequireDefault(_middleware3); var _package = require('../../package.json'); @@ -83,8 +83,9 @@ if (_commander2.default.staticDir) { // Build the webpack configuration using the `baseConfig` // custom `.babelrc` file and `webpack.config.js` files var configDir = _commander2.default.configDir || './.storybook'; -app.use((0, _storybook2.default)(configDir)); -app.use('/db', (0, _datastore2.default)(configDir)); +var dbPath = _path2.default.resolve(configDir, 'datastore.json'); +app.use((0, _middleware2.default)(configDir)); +app.use('/db', (0, _middleware4.default)(dbPath)); app.listen.apply(app, listenAddr.concat([function (error) { if (error) { diff --git a/dist/server/middleware/storybook.js b/dist/server/middleware.js similarity index 90% rename from dist/server/middleware/storybook.js rename to dist/server/middleware.js index ecbc4a7d7954..ed95ff72c862 100644 --- a/dist/server/middleware/storybook.js +++ b/dist/server/middleware.js @@ -52,22 +52,22 @@ var _webpackHotMiddleware = require('webpack-hot-middleware'); var _webpackHotMiddleware2 = _interopRequireDefault(_webpackHotMiddleware); -var _webpack3 = require('../config/webpack.config'); +var _webpack3 = require('./config/webpack.config'); var _webpack4 = _interopRequireDefault(_webpack3); -var _config = require('../config'); +var _config = require('./config'); var _config2 = _interopRequireDefault(_config); -var _index = require('../index.html'); +var _index = require('./index.html'); var _index2 = _interopRequireDefault(_index); -var _iframe = require('../iframe.html'); +var _iframe = require('./iframe.html'); var _iframe2 = _interopRequireDefault(_iframe); -var _utils = require('../utils'); +var _utils = require('./utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } \ No newline at end of file diff --git a/dist/server/middleware/datastore.js b/dist/server/middleware/datastore.js deleted file mode 100644 index aab8ee1212f3..000000000000 --- a/dist/server/middleware/datastore.js +++ /dev/null @@ -1,128 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Database = undefined; - -var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); - -var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); - -var _keys = require('babel-runtime/core-js/object/keys'); - -var _keys2 = _interopRequireDefault(_keys); - -var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require('babel-runtime/helpers/createClass'); - -var _createClass3 = _interopRequireDefault(_createClass2); - -exports.default = function (configDir) { - var dbPath = _path2.default.resolve(configDir, 'datastore.json'); - var db = new Database(dbPath); - - var router = new _express.Router(); - router.use(_bodyParser2.default.json()); - - router.post('/get', function (req, res) { - var _req$body = req.body; - var collection = _req$body.collection; - var query = _req$body.query; - var sort = _req$body.sort; - var limit = _req$body.limit; - - var out = db.get(collection, query, sort, limit); - res.send({ data: out }); - res.end(); - }); - - router.post('/set', function (req, res) { - var _req$body2 = req.body; - var collection = _req$body2.collection; - var item = _req$body2.item; - - var out = db.set(collection, item); - res.send({ data: out }); - res.end(); - }); - - return router; -}; - -var _path = require('path'); - -var _path2 = _interopRequireDefault(_path); - -var _express = require('express'); - -var _lowdb = require('lowdb'); - -var _lowdb2 = _interopRequireDefault(_lowdb); - -var _fileAsync = require('lowdb/lib/file-async'); - -var _fileAsync2 = _interopRequireDefault(_fileAsync); - -var _bodyParser = require('body-parser'); - -var _bodyParser2 = _interopRequireDefault(_bodyParser); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var Database = exports.Database = function () { - function Database(dbPath) { - (0, _classCallCheck3.default)(this, Database); - - this.db = (0, _lowdb2.default)(dbPath, { storage: _fileAsync2.default }); - } - - (0, _createClass3.default)(Database, [{ - key: 'get', - value: function get(collection, query, sort, limit) { - // if the database doesn't exist, add the document - // and return the inserted document as the result. - if (!this.db.has(collection).value()) { - return []; - } - // If the sort param is not given, use the DB interface - if (!sort) { - return this.db.get(collection).filter(query).take(limit).value(); - } - // The db does not support sorting by multiple keys, get all data - // and sort it by each key (and its order) and then apply the limit - var allDocs = this.db.get(collection).filter(query).value(); - var sorted = (0, _keys2.default)(sort).reduce(function (unsorted, key) { - return unsorted.sort(function (x, y) { - var order = sort[key]; - return x[key] > y[key] ? order * 1 : order * -1; - }); - }, allDocs); - // apply the limit after sorting - return sorted.slice(0, limit); - } - }, { - key: 'set', - value: function set(collection, item) { - // if the database doesn't exist, add the item - // and return the inserted item as the result. - if (!this.db.has(collection).value()) { - this.db.set(collection, [item]).value(); - return item; - } - // if the item already exists in the database, update it - if (this.db.get(collection).find({ id: item.id }).value()) { - this.db.get(collection).find({ id: item.id }).assign(item).value(); - return item; - } - // If the item is not available in the database, insert it - var coll = this.db.get(collection).value(); - this.db.set(collection, [].concat((0, _toConsumableArray3.default)(coll), [item])).value(); - return item; - } - }]); - return Database; -}(); \ No newline at end of file diff --git a/package.json b/package.json index ba915556a662..98c9ea9f9ff6 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@kadira/storybook-addon-links": "^1.0.0", "@kadira/storybook-addons": "^1.5.0", "@kadira/storybook-channel-pagebus": "^2.0.2", - "@kadira/storybook-database-local": "^1.0.3", + "@kadira/storybook-database-local": "^1.1.0", "@kadira/storybook-ui": "^3.3.2", "autoprefixer": "^6.3.7", "babel-core": "^6.11.4", @@ -43,7 +43,6 @@ "babel-preset-es2016": "^6.11.3", "babel-preset-react": "^6.11.1", "babel-runtime": "^6.9.2", - "body-parser": "^1.15.2", "case-sensitive-paths-webpack-plugin": "^1.1.2", "commander": "^2.9.0", "configstore": "^2.0.0", @@ -55,7 +54,6 @@ "json-stringify-safe": "^5.0.1", "json5": "^0.5.0", "lodash.pick": "^4.2.0", - "lowdb": "^0.13.1", "postcss-loader": "0.9.1", "qs": "^6.1.0", "react-modal": "^1.2.0", diff --git a/src/server/index.js b/src/server/index.js index 941309ed4391..bd6246915537 100755 --- a/src/server/index.js +++ b/src/server/index.js @@ -4,8 +4,8 @@ import express from 'express'; import program from 'commander'; import path from 'path'; import fs from 'fs'; -import storybook from './middleware/storybook'; -import datastore from './middleware/datastore'; +import storybook from './middleware'; +import datastore from '@kadira/storybook-database-local/dist/server/middleware'; import packageJson from '../../package.json'; import { parseList, getEnvConfig } from './utils'; import { track, dontTrack } from './track_usage'; @@ -65,8 +65,9 @@ if (program.staticDir) { // Build the webpack configuration using the `baseConfig` // custom `.babelrc` file and `webpack.config.js` files const configDir = program.configDir || './.storybook'; +const dbPath = path.resolve(configDir, 'datastore.json'); app.use(storybook(configDir)); -app.use('/db', datastore(configDir)); +app.use('/db', datastore(dbPath)); app.listen(...listenAddr, function (error) { if (error) { diff --git a/src/server/middleware/storybook.js b/src/server/middleware.js similarity index 84% rename from src/server/middleware/storybook.js rename to src/server/middleware.js index a1501f15d835..87cf843fa745 100644 --- a/src/server/middleware/storybook.js +++ b/src/server/middleware.js @@ -2,11 +2,11 @@ import { Router } from 'express'; import webpack from 'webpack'; import webpackDevMiddleware from 'webpack-dev-middleware'; import webpackHotMiddleware from 'webpack-hot-middleware'; -import baseConfig from '../config/webpack.config'; -import loadConfig from '../config'; -import getIndexHtml from '../index.html'; -import getIframeHtml from '../iframe.html'; -import { getHeadHtml } from '../utils'; +import baseConfig from './config/webpack.config'; +import loadConfig from './config'; +import getIndexHtml from './index.html'; +import getIframeHtml from './iframe.html'; +import { getHeadHtml } from './utils'; export default function (configDir) { // Build the webpack configuration using the `baseConfig` diff --git a/src/server/middleware/datastore.js b/src/server/middleware/datastore.js deleted file mode 100644 index a389de53dc5f..000000000000 --- a/src/server/middleware/datastore.js +++ /dev/null @@ -1,76 +0,0 @@ -import path from 'path'; -import { Router } from 'express'; -import lowdb from 'lowdb'; -import fileAsyncStorage from 'lowdb/lib/file-async'; -import bodyParser from 'body-parser'; - -export class Database { - constructor(dbPath) { - this.db = lowdb(dbPath, { storage: fileAsyncStorage }); - } - - get(collection, query, sort, limit) { - // if the database doesn't exist, add the document - // and return the inserted document as the result. - if (!this.db.has(collection).value()) { - return []; - } - // If the sort param is not given, use the DB interface - if (!sort) { - return this.db.get(collection).filter(query).take(limit).value(); - } - // The db does not support sorting by multiple keys, get all data - // and sort it by each key (and its order) and then apply the limit - const allDocs = this.db.get(collection).filter(query).value(); - const sorted = Object.keys(sort).reduce((unsorted, key) => { - return unsorted.sort(function (x, y) { - const order = sort[key]; - return (x[key] > y[key]) ? order * 1 : order * -1; - }); - }, allDocs); - // apply the limit after sorting - return sorted.slice(0, limit); - } - - set(collection, item) { - // if the database doesn't exist, add the item - // and return the inserted item as the result. - if (!this.db.has(collection).value()) { - this.db.set(collection, [item]).value(); - return item; - } - // if the item already exists in the database, update it - if (this.db.get(collection).find({ id: item.id }).value()) { - this.db.get(collection).find({ id: item.id }).assign(item).value(); - return item; - } - // If the item is not available in the database, insert it - const coll = this.db.get(collection).value(); - this.db.set(collection, [...coll, item]).value(); - return item; - } -} - -export default function (configDir) { - const dbPath = path.resolve(configDir, 'datastore.json'); - const db = new Database(dbPath); - - const router = new Router(); - router.use(bodyParser.json()); - - router.post('/get', function (req, res) { - const { collection, query, sort, limit } = req.body; - const out = db.get(collection, query, sort, limit); - res.send({ data: out }); - res.end(); - }); - - router.post('/set', function (req, res) { - const { collection, item } = req.body; - const out = db.set(collection, item); - res.send({ data: out }); - res.end(); - }); - - return router; -}