@iredium/butterfly
Version:
Express API Framework
40 lines (39 loc) • 1.46 kB
JavaScript
;
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;