ravendb
Version:
RavenDB client for Node.js
31 lines • 1.37 kB
JavaScript
import { AbstractGenericIndexCreationTask } from "./AbstractGenericIndexCreationTask.js";
import { IndexDefinitionHelper } from "./IndexDefinitionHelper.js";
import { TypeUtil } from "../../Utility/TypeUtil.js";
export class BaseJavaScriptIndexCreationTask extends AbstractGenericIndexCreationTask {
_registeredEnums = [];
/**
* This extension point to tweak strongly typed index definitions
* @param definition original index definition
* @param origin origin of definition: map or reduce
* @protected
*/
postProcessDefinition(definition, origin) {
if (this._registeredEnums.length) {
for (const transformation of this._registeredEnums) {
const actualValue = transformation.actualValue;
const escapedValue = TypeUtil.isNumber(actualValue) ? actualValue.toString() : '"' + actualValue + '"';
definition = definition.replace(transformation.sourceCode, escapedValue);
}
}
return definition;
}
registerEnum(provider) {
const value = provider();
const functionBody = provider.toString();
this._registeredEnums.push({
sourceCode: IndexDefinitionHelper.extractEnumNotation(functionBody),
actualValue: value
});
}
}
//# sourceMappingURL=BaseJavaScriptIndexCreationTask.js.map