UNPKG

@iredium/butterfly

Version:
40 lines (39 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UUID = void 0; var encoding_1 = require("./encoding"); var uuid = require("uuid"); var mongoose = require("mongoose"); var bson = require("bson"); var ID_LENGTH = 22; function ensureLength(input, targetLength) { var inputLength = input.length; if (inputLength < targetLength) { return "" + '0'.repeat(targetLength - inputLength) + input; } return input; } var UUID = /** @class */ (function () { function UUID() { } UUID.v4Base62 = function () { var buffer = uuid.parse(uuid.v4()); return UUID.bufferToBase62(buffer); }; // @ts-ignore UUID.bufferToBase62 = function (buffer) { var resultString = encoding_1.base62.encode(buffer); return ensureLength(resultString, ID_LENGTH); }; UUID.stringToBuffer = function (uuidBase62) { if (uuidBase62.length > ID_LENGTH) { throw new Error("Exceeded maximum length of " + ID_LENGTH + ". Received uuidBase62 (length: " + uuidBase62.length + "): " + (uuidBase62.length > 30 ? uuidBase62.substr(0, 30) + "***" : uuidBase62)); } var decodedUUIDBuf = encoding_1.base62.decode(uuidBase62.replace(/^[0]*/, '')); var uuidBuffer = new mongoose.Types.Buffer(decodedUUIDBuf); uuidBuffer.subtype(bson.Binary.SUBTYPE_UUID); return uuidBuffer.toObject(); }; return UUID; }()); exports.UUID = UUID;