respond-framework
Version:
create as fast you think
30 lines (28 loc) • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.incrementCounter = exports.generateNumericCode = exports.generateId = exports.generateCode = exports.createCounterRef = void 0;
var _bson = require("bson");
var _constants = require("../helpers/constants.js");
const createCounterRef = seed => {
ref.value = seed?.__counterRef.value ?? 0;
return ref;
};
exports.createCounterRef = createCounterRef;
const ref = {
value: 0
};
const genNumber = () => ref.value++;
const genId = () => ('id' + ref.value++).padEnd(24, '0'); // mimic new ObjectId().toString() from mongo
const genCode = (length = 4) => ('' + ref.value++).padEnd(length, '0'); // only containers letters in production
const genNumericCode = (length = 4) => ('' + ref.value++).padEnd(length, '0');
const incrementCounter = exports.incrementCounter = genNumber;
const generateId = exports.generateId = _constants.isDev ? genId : () => new _bson.ObjectId().toString();
const generateNumericCode = exports.generateNumericCode = _constants.isDev ? genNumericCode : (length = 4) =>
// max length 16
Math.random().toString().slice(2, length + 2).padStart(length, '0'); // if Math.random() returns eg .5, need to pad it
const generateCode = exports.generateCode = _constants.isDev ? genCode : (length = 4) =>
// max length 10
Math.random().toString(36) // radix arg reduces max length
.slice(2, length + 2).toUpperCase().padStart(length, '0');