🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

consistent-ids

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

consistent-ids - npm Package Compare versions

Comparing version

to
0.6.0

dist/index.test.js

189

dist/index.js

@@ -1,114 +0,91 @@

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var crypto = require('crypto');
var IdGenerator = function () {
function IdGenerator(secret) {
_classCallCheck(this, IdGenerator);
if (!secret && !process.env.HASH_KEY) {
throw new Error('You must provide a secret or a hash key');
} else if (secret) {
this.secret = secret;
} else {
this.secret = process.env.HASH_KEY;
"use strict";
// @flow
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultGenerator = void 0;
const dotenv_1 = __importDefault(require("dotenv"));
const crypto = require('crypto');
dotenv_1.default.config();
class IdGenerator {
constructor(secret) {
if (!secret && !process.env.HASH_KEY) {
throw new Error('You must provide a secret or a hash key');
}
else if (secret) {
this.secret = secret;
}
else {
this.secret = process.env.HASH_KEY;
}
}
}
// Helper
_createClass(IdGenerator, [{
key: 'getUniqKey',
value: function getUniqKey(length) {
var moduloLen = length % 8;
var partLenght = (length - moduloLen) / 8;
/* Padding characters */
var paddingChars = 0;
var trimmingChars = 0;
if (moduloLen % 2 === 0) {
paddingChars = moduloLen / 2;
trimmingChars = moduloLen / 2;
} else {
var remaining = moduloLen % 2;
paddingChars = (moduloLen - remaining) / 2;
trimmingChars = paddingChars + remaining;
}
var date = new Date();
var yearPart = IdGenerator.hashAndCut(date.getFullYear().toString(), this.secret, partLenght);
var monthPart = IdGenerator.hashAndCut(date.getMonth().toString(), this.secret, partLenght);
var dayPart = IdGenerator.hashAndCut(date.getDate().toString(), this.secret, partLenght);
var uuidPart = IdGenerator.hashAndCut(IdGenerator.uuidv4(), this.secret, partLenght);
var hourPart = IdGenerator.hashAndCut(date.getHours().toString(), this.secret, partLenght);
var minutePart = IdGenerator.hashAndCut(date.getMinutes().toString(), this.secret, partLenght);
var secondsPart = IdGenerator.hashAndCut(date.getSeconds().toString(), this.secret, partLenght + paddingChars);
var milisecondsPart = IdGenerator.hashAndCut(date.getMilliseconds().toString(), this.secret, partLenght + trimmingChars);
return yearPart.concat(monthPart, dayPart, uuidPart, hourPart, minutePart, secondsPart, milisecondsPart);
// Helper
static dateStringBuilder(date) {
const dateString = date
.getFullYear()
.toString()
.concat((date.getMonth() + 1).toString(), date.getHours().toString(), date.getMinutes().toString());
return dateString;
}
}, {
key: 'generate',
value: function generate(prefix) {
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 24;
if (prefix.toString().length < 2) {
throw new Error('Prefix too short');
} else {
return prefix.toString().concat('_', this.getUniqKey(length));
}
}
}], [{
key: 'dateStringBuilder',
value: function dateStringBuilder(date) {
var dateString = date.getFullYear().toString().concat(date.getMonth() + 1, date.getHours(), date.getMinutes());
return dateString;
}
// Helper
}, {
key: 'secondsStringBuilder',
value: function secondsStringBuilder(date) {
return date.getSeconds().toString().concat(date.getMilliseconds());
static secondsStringBuilder(date) {
return date
.getSeconds()
.toString()
.concat(date.getMilliseconds().toString());
}
// Helper
}, {
key: 'uuidv4',
value: function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0;
var v = c === 'x' ? r : r & 0x3 | 0x8;
return v.toString(16);
});
static uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
const r = (Math.random() * 16) | 0;
const v = c === 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
}
}, {
key: 'hashAndCut',
value: function hashAndCut(message, secret) {
var len = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;
var hash = crypto.createHmac('sha512', secret).update(message).digest('base64');
return hash.replace(/\W/g, '').substr(0, len);
static hashAndCut(message, secret, len = 3) {
const hash = crypto
.createHmac('sha512', secret)
.update(message)
.digest('base64');
return hash.replace(/\W/g, '').substr(0, len);
}
}]);
return IdGenerator;
}();
getUniqKey(length) {
const moduloLen = length % 8;
const partLenght = (length - moduloLen) / 8;
/* Padding characters */
let paddingChars = 0;
let trimmingChars = 0;
if (moduloLen % 2 === 0) {
paddingChars = moduloLen / 2;
trimmingChars = moduloLen / 2;
}
else {
const remaining = moduloLen % 2;
paddingChars = (moduloLen - remaining) / 2;
trimmingChars = paddingChars + remaining;
}
const date = new Date();
const yearPart = IdGenerator.hashAndCut(date.getFullYear().toString(), this.secret, partLenght);
const monthPart = IdGenerator.hashAndCut(date.getMonth().toString(), this.secret, partLenght);
const dayPart = IdGenerator.hashAndCut(date.getDate().toString(), this.secret, partLenght);
const uuidPart = IdGenerator.hashAndCut(IdGenerator.uuidv4(), this.secret, partLenght);
const hourPart = IdGenerator.hashAndCut(date.getHours().toString(), this.secret, partLenght);
const minutePart = IdGenerator.hashAndCut(date.getMinutes().toString(), this.secret, partLenght);
const secondsPart = IdGenerator.hashAndCut(date.getSeconds().toString(), this.secret, partLenght + paddingChars);
const milisecondsPart = IdGenerator.hashAndCut(date.getMilliseconds().toString(), this.secret, partLenght + trimmingChars);
return yearPart.concat(monthPart, dayPart, uuidPart, hourPart, minutePart, secondsPart, milisecondsPart);
}
generate(prefix, length = 24) {
if (prefix.toString().length < 2) {
throw new Error('Prefix too short (must be at least 2 characters)');
}
else {
return prefix.toString().concat('_', this.getUniqKey(length));
}
}
}
exports.default = IdGenerator;
var defaultGenerator = new IdGenerator(process.env.HASH_KEY);
exports.defaultGenerator = defaultGenerator;
const defaultGenerator = new IdGenerator(process.env.HASH_KEY);
exports.defaultGenerator = defaultGenerator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQVE7Ozs7OztBQUVSLG9EQUEyQjtBQUMzQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFakMsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUVoQixNQUFxQixXQUFXO0lBSTlCLFlBQVksTUFBcUI7UUFDL0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RDthQUFNLElBQUksTUFBTSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBa0IsQ0FBQztTQUM5QztJQUNILENBQUM7SUFDRCxTQUFTO0lBQ1QsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQVU7UUFDakMsTUFBTSxVQUFVLEdBQUcsSUFBSTthQUNwQixXQUFXLEVBQUU7YUFDYixRQUFRLEVBQUU7YUFDVixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3RHLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxTQUFTO0lBQ1QsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQVU7UUFDcEMsT0FBTyxJQUFJO2FBQ1IsVUFBVSxFQUFFO2FBQ1osUUFBUSxFQUFFO2FBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVB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
{
"name": "consistent-ids",
"version": "0.5.0",
"version": "0.6.0",
"description": "A randomly consistent (a-la-Stripe) hash generator",

@@ -17,3 +17,3 @@ "license": "MIT",

"start": "nps --no-scripts",
"build": "./node_modules/.bin/babel src -d dist --ignore src/*.spec.js,src/*.test.js",
"build": "tsc",
"prepublish": "yarn build",

@@ -27,3 +27,2 @@ "precommit": "remove-lockfiles && lint-staged",

],
"dependencies": {},
"devDependencies": {

@@ -38,2 +37,3 @@ "all-contributors-cli": "^4.5.0",

"cz-conventional-changelog": "^2.0.0",
"dotenv": "^10.0.0",
"eslint": "^4.8.0",

@@ -51,3 +51,4 @@ "eslint-config-airbnb-base": "12.0.2",

"prettier": "^1.7.4",
"remove-lockfiles": "^1.4.1"
"remove-lockfiles": "^1.4.1",
"typescript": "^4.2.4"
},

@@ -54,0 +55,0 @@ "config": {