koa-neo4j
Version:
Rapidly create REST APIs, powered by Koa and Neo4j -- batteries included with built-in role based authentication via JWT and reusable backend components
69 lines (4 loc) • 3.1 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });exports.parseUnixTimes = exports.parseDates = exports.parseFloats = exports.parseInts = exports.parseIds = exports.parseNeo4jInts = exports.parseWith = exports.neo4jInt = exports.logParams = undefined;var _debug = require('./debug');Object.defineProperty(exports, 'logParams', { enumerable: true, get: function () {return _debug.
logValues;} });var _neo4jDriver = require('neo4j-driver');var _neo4jDriver2 = _interopRequireDefault(_neo4jDriver);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}const neo4jInt = _neo4jDriver2.default.int; /**
* Created by keyvan on 8/29/16.
*/const deepParse = (params, key, func) => {let [keyToFind, keyToReplace] = [key, key];if (typeof key === 'object') {const keys = Object.keys(key);if (keys.length !== 1) {for (const keyToFind of keys) {const newKey = {};newKey[keyToFind] = key[keyToFind];deepParse(params, newKey, func);}return;} else {keyToFind = keys[0];keyToReplace = key[keyToFind];}}if (params[keyToFind]) if (!Array.isArray(params[keyToFind])) params[keyToReplace] = func.apply(params, [params[keyToFind]]);else {const toReplace = [];for (const value of params[keyToFind]) toReplace.push(func.apply(params, [value]));params[keyToReplace] = toReplace;}for (const innerKey of Object.keys(params)) if (params[innerKey] !== null && typeof params[innerKey] === 'object') deepParse(params[innerKey], key, func);};const parseWith = func => (...keys) => params => {for (const key of keys) deepParse(params, key, func);return params;};const parseNeo4jInts = parseWith(neo4jInt);const parseIds = parseNeo4jInts;const parseInts = parseWith(parseInt);const parseFloats = parseWith(parseFloat);const parseDates = parseWith(stringOrUnixTime => {const parsedInt = parseInt(stringOrUnixTime);stringOrUnixTime = parsedInt.toString() !== stringOrUnixTime.toString() || isNaN(parsedInt) ? stringOrUnixTime : parsedInt;return new Date(stringOrUnixTime);});const parseUnixTimes = parseWith(stringOrUnixTime => {const parsedInt = parseInt(stringOrUnixTime);if (parsedInt.toString() === stringOrUnixTime.toString()) return neo4jInt(parsedInt);return neo4jInt(new Date(stringOrUnixTime).getTime());});exports.neo4jInt = neo4jInt;exports.parseWith = parseWith;exports.parseNeo4jInts = parseNeo4jInts;exports.parseIds = parseIds;exports.parseInts = parseInts;exports.parseFloats = parseFloats;exports.parseDates = parseDates;exports.parseUnixTimes = parseUnixTimes;