@enonic/js-utils
Version:
Enonic XP JavaScript Utils
141 lines (135 loc) • 4.27 kB
JavaScript
// value/isFunction.ts
function isFunction(value) {
return Object.prototype.toString.call(value).slice(8, -1) === "Function";
}
// value/isInt.ts
function isInt(value) {
return typeof value === "number" && isFinite(value) && // TODO Is isFinite() available in Enonic XP?
Math.floor(value) === value;
}
// value/isInteger.ts
var isInteger = "isInteger" in Number && isFunction(Number.isInteger) ? Number.isInteger : isInt;
// value/isObject.ts
var isObject = (value) => Object.prototype.toString.call(value).slice(8, -1) === "Object";
// storage/indexing/constants.ts
var INDEX_CONFIG_ENABLED = "enabled";
var INDEX_CONFIG_DECIDE_BY_TYPE = "decideByType";
var INDEX_CONFIG_FULLTEXT = "fulltext";
var INDEX_CONFIG_INCLUDE_IN_ALL_TEXT = "includeInAllText";
var INDEX_CONFIG_INDEX_VALUE_PROCESSORS = "indexValueProcessors";
var INDEX_CONFIG_LANGUAGES = "languages";
var INDEX_CONFIG_N_GRAM = "nGram";
var INDEX_CONFIG_PATH = "path";
var INDEX_CONFIG_TEMPLATE_NONE = "none";
var INDEX_CONFIG_TEMPLATE_BY_TYPE = "byType";
var INDEX_CONFIG_TEMPLATE_FULLTEXT = "fulltext";
var INDEX_CONFIG_TEMPLATE_PATH = "path";
var INDEX_CONFIG_TEMPLATE_MINIMAL = "minimal";
// storage/indexing/indexTemplateToConfig.ts
function indexTemplateToConfig({
template,
indexValueProcessors,
// = [],
languages
// = []
}) {
if (isObject(template)) {
const configObject = JSON.parse(JSON.stringify(template));
if (indexValueProcessors) {
configObject.indexValueProcessors = indexValueProcessors;
}
if (languages) {
configObject.languages = languages;
}
return configObject;
}
if (template === INDEX_CONFIG_TEMPLATE_NONE) {
const rv = {
[INDEX_CONFIG_DECIDE_BY_TYPE]: false,
[INDEX_CONFIG_ENABLED]: false,
[INDEX_CONFIG_FULLTEXT]: false,
[INDEX_CONFIG_INCLUDE_IN_ALL_TEXT]: false
};
if (indexValueProcessors) {
rv[INDEX_CONFIG_INDEX_VALUE_PROCESSORS] = indexValueProcessors;
}
if (languages) {
rv[INDEX_CONFIG_LANGUAGES] = languages;
}
rv[INDEX_CONFIG_N_GRAM] = false;
rv[INDEX_CONFIG_PATH] = false;
return rv;
}
if (template === INDEX_CONFIG_TEMPLATE_BY_TYPE) {
const rv = {
[INDEX_CONFIG_DECIDE_BY_TYPE]: true,
[INDEX_CONFIG_ENABLED]: true,
[INDEX_CONFIG_FULLTEXT]: false,
[INDEX_CONFIG_INCLUDE_IN_ALL_TEXT]: false
};
if (indexValueProcessors) {
rv[INDEX_CONFIG_INDEX_VALUE_PROCESSORS] = indexValueProcessors;
}
if (languages) {
rv[INDEX_CONFIG_LANGUAGES] = languages;
}
rv[INDEX_CONFIG_N_GRAM] = false;
rv[INDEX_CONFIG_PATH] = false;
return rv;
}
if (template === INDEX_CONFIG_TEMPLATE_FULLTEXT) {
const rv = {
[INDEX_CONFIG_DECIDE_BY_TYPE]: false,
[INDEX_CONFIG_ENABLED]: true,
[INDEX_CONFIG_FULLTEXT]: true,
[INDEX_CONFIG_INCLUDE_IN_ALL_TEXT]: true
};
if (indexValueProcessors) {
rv[INDEX_CONFIG_INDEX_VALUE_PROCESSORS] = indexValueProcessors;
}
if (languages) {
rv[INDEX_CONFIG_LANGUAGES] = languages;
}
rv[INDEX_CONFIG_N_GRAM] = true;
rv[INDEX_CONFIG_PATH] = false;
return rv;
}
if (template === INDEX_CONFIG_TEMPLATE_PATH) {
const rv = {
[INDEX_CONFIG_DECIDE_BY_TYPE]: false,
[INDEX_CONFIG_ENABLED]: true,
[INDEX_CONFIG_FULLTEXT]: false,
[INDEX_CONFIG_INCLUDE_IN_ALL_TEXT]: false
};
if (indexValueProcessors) {
rv[INDEX_CONFIG_INDEX_VALUE_PROCESSORS] = indexValueProcessors;
}
if (languages) {
rv[INDEX_CONFIG_LANGUAGES] = languages;
}
rv[INDEX_CONFIG_N_GRAM] = false;
rv[INDEX_CONFIG_PATH] = true;
return rv;
}
if (template === INDEX_CONFIG_TEMPLATE_MINIMAL) {
const rv = {
[INDEX_CONFIG_DECIDE_BY_TYPE]: false,
[INDEX_CONFIG_ENABLED]: true,
[INDEX_CONFIG_FULLTEXT]: false,
[INDEX_CONFIG_INCLUDE_IN_ALL_TEXT]: false
};
if (indexValueProcessors) {
rv[INDEX_CONFIG_INDEX_VALUE_PROCESSORS] = indexValueProcessors;
}
if (languages) {
rv[INDEX_CONFIG_LANGUAGES] = languages;
}
rv[INDEX_CONFIG_N_GRAM] = false;
rv[INDEX_CONFIG_PATH] = false;
return rv;
}
throw new Error(`Unknown indexing template:${template}!`);
}
export {
indexTemplateToConfig
};