ottoman
Version:
Ottoman Couchbase ODM
61 lines • 2.2 kB
JavaScript
;
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