@martinmilo/verve
Version:
TypeScript domain modeling library with field-level authorization, business rule validation, and context-aware access control
26 lines • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.option = option;
const compose_1 = require("../builder/compose");
const FieldBuilder_1 = require("../builder/FieldBuilder");
const OptionField_1 = require("../fields/OptionField");
const WithNullable_1 = require("../builder/mixins/WithNullable");
const WithReadable_1 = require("../builder/mixins/WithReadable");
const WithWritable_1 = require("../builder/mixins/WithWritable");
const WithDefault_1 = require("../builder/mixins/WithDefault");
const WithValidate_1 = require("../builder/mixins/WithValidate");
const EnhancedBuilder = (0, compose_1.composeFieldBuilder)((FieldBuilder_1.FieldBuilder), [
WithNullable_1.WithNullable,
WithReadable_1.WithReadable,
WithWritable_1.WithWritable,
WithDefault_1.WithDefault,
WithValidate_1.WithValidate,
]);
function option(valuesOrEnum) {
const values = Array.isArray(valuesOrEnum) ? valuesOrEnum : Object.values(valuesOrEnum);
const builder = new EnhancedBuilder(OptionField_1.OptionField);
const isOneOfValues = (value) => values.includes(value);
builder.validate.add(isOneOfValues);
return builder;
}
//# sourceMappingURL=option.factory.js.map