UNPKG

ottoman

Version:
61 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_MAX_EXPIRY = exports.validateDelimiter = exports._keyGenerator = exports.KEY_GENERATOR_DELIMITER = exports.KEY_GENERATOR = exports.DEFAULT_COLLECTION = exports.DEFAULT_SCOPE = exports.DEFAULT_ID_KEY = exports.MODEL_KEY = void 0; const ottoman_errors_1 = require("../exceptions/ottoman-errors"); /** * Default value for metadata key, to keep collection tracking * eg. This model new Model('User', schema, options), will generate documents -> document._type = 'User' */ exports.MODEL_KEY = '_type'; /** * Key to add document metadata identifier * This key will store the value of the key, * key -> document, document.id === key */ exports.DEFAULT_ID_KEY = 'id'; /** * Default scope name. */ exports.DEFAULT_SCOPE = '_default'; /** * Default collection name. */ exports.DEFAULT_COLLECTION = '_default'; /** * Default KeyGenerator function. */ const KEY_GENERATOR = ({ metadata }) => `${metadata.modelName}`; exports.KEY_GENERATOR = KEY_GENERATOR; /** * Default KeyGeneratorDelimiter value. */ exports.KEY_GENERATOR_DELIMITER = '::'; /** * Internal KeyGenerator function. * @param keyGen * @param metadata * @param id */ const _keyGenerator = (keyGen, { metadata, id }, delimeter = exports.KEY_GENERATOR_DELIMITER) => { const prefix = keyGen({ metadata }); const prefixDelimeter = `${prefix || ''}${delimeter || ''}`; if (prefixDelimeter && id.toString().startsWith(prefixDelimeter)) { return id; } return `${prefixDelimeter}${id}`; }; exports._keyGenerator = _keyGenerator; function isValidDelimiter(str) { return /[~!#$%&*_\-:<>?|]/g.test(str); } const validateDelimiter = (delimiter) => { if (delimiter.length > 2) { throw new ottoman_errors_1.BadKeyGeneratorDelimiterError(`keyGeneratorDelimiter only support up to 2 characters`); } if (!isValidDelimiter(delimiter)) { throw new ottoman_errors_1.BadKeyGeneratorDelimiterError(`Invalid keyGeneratorDelimiter value, the supported characters ~!#$%&*_-:<>?`); } }; exports.validateDelimiter = validateDelimiter; exports.DEFAULT_MAX_EXPIRY = 0; //# sourceMappingURL=constants.js.map