UNPKG

octonom

Version:

Object Document Mapper for any database

54 lines (52 loc) 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const crypto_1 = require("crypto"); const lodash_1 = require("lodash"); const uuid_1 = require("uuid"); // TODO: fix this decorator /* export function enumerable(value: boolean): PropertyDecorator { return (target: any, key: string) => { const descriptor = Object.getOwnPropertyDescriptor(target, key) || {}; // writable is false by default, so we explicitly set it to true here if (descriptor.writable === undefined) { descriptor.writable = true; } if (descriptor.enumerable !== value) { descriptor.enumerable = value; Object.defineProperty(target, key, descriptor); } }; } */ function generateId() { // alternative 1 // return base64url(uuid.v4(null, new Buffer(16))); // alternative 2: random bytes in base64url // const nbytes = 9; // requirement: (nbytes * 8) % 6 === 0 // return base64url(crypto.randomBytes(nbytes)); // alternative 3: base64url(shorten(hash(uuid))) const nchars = 12; // 2**(nchars*6) return crypto_1.createHash('sha1') .update(uuid_1.v1()) // set uuid .digest('base64') // get base64 hash .slice(0, nchars) // shorten .replace(/\+/g, '-').replace(/\//g, '_'); // URL-base64 } exports.generateId = generateId; function invertMap(map) { const invertedMap = {}; lodash_1.forEach(map, (newKey, oldKey) => invertedMap[newKey] = oldKey); return invertedMap; } exports.invertMap = invertMap; function rename(obj, map) { const newObj = {}; lodash_1.forEach(obj, (value, key) => { const newKey = map[key] || key; newObj[newKey] = value; }); return newObj; } exports.rename = rename; //# sourceMappingURL=utils.js.map