@overture-stack/sqon-builder
Version:
SQON creation and manipulation library
91 lines • 4.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isScalarFilterValue = exports.isArrayFilterValue = exports.isScalarFilterKey = exports.isArrayFilterKey = exports.isScalarFilter = exports.isArrayFilter = exports.isFilter = exports.isCombination = exports.SQON = exports.Operator = exports.CombinationOperator = exports.FilterOperator = exports.FilterContent = exports.ScalarFilter = exports.ArrayFilter = exports.LesserThanFilter = exports.LesserThanFilterContent = exports.GreaterThanFilter = exports.GreaterThanFilterContent = exports.InFilter = exports.InFilterContent = exports.FilterValue = exports.ScalarFilterValue = exports.ArrayFilterValue = exports.Keys = exports.CombinationKeys = exports.FilterKeys = exports.ScalarFilterKeys = exports.ArrayFilterKeys = void 0;
var zod_1 = require("zod");
exports.ArrayFilterKeys = {
In: 'in',
};
exports.ScalarFilterKeys = {
GreaterThan: 'gt',
LesserThan: 'lt',
};
exports.FilterKeys = Object.assign({}, exports.ArrayFilterKeys, exports.ScalarFilterKeys);
exports.CombinationKeys = {
And: 'and',
Or: 'or',
Not: 'not',
};
exports.Keys = Object.assign({}, exports.ArrayFilterKeys, exports.ScalarFilterKeys, exports.CombinationKeys);
exports.ArrayFilterValue = zod_1.z.union([
zod_1.z.union([zod_1.z.string(), zod_1.z.number()]).array(),
zod_1.z.string(),
zod_1.z.number(),
]);
exports.ScalarFilterValue = zod_1.z.number();
exports.FilterValue = zod_1.z.union([exports.ArrayFilterValue, exports.ScalarFilterValue]);
exports.InFilterContent = zod_1.z.object({
fieldName: zod_1.z.string(),
value: exports.ArrayFilterValue,
});
exports.InFilter = zod_1.z.object({
op: zod_1.z.literal(exports.ArrayFilterKeys.In),
content: exports.InFilterContent,
});
exports.GreaterThanFilterContent = zod_1.z.object({
fieldName: zod_1.z.string(),
value: exports.ScalarFilterValue,
});
exports.GreaterThanFilter = zod_1.z.object({
op: zod_1.z.literal(exports.ScalarFilterKeys.GreaterThan),
content: exports.GreaterThanFilterContent,
});
exports.LesserThanFilterContent = zod_1.z.object({
fieldName: zod_1.z.string(),
value: exports.ScalarFilterValue,
});
exports.LesserThanFilter = zod_1.z.object({
op: zod_1.z.literal(exports.ScalarFilterKeys.LesserThan),
content: exports.LesserThanFilterContent,
});
exports.ArrayFilter = exports.InFilter;
exports.ScalarFilter = zod_1.z.union([exports.GreaterThanFilter, exports.LesserThanFilter]);
exports.FilterContent = zod_1.z.union([exports.InFilterContent, exports.GreaterThanFilterContent, exports.LesserThanFilterContent]);
exports.FilterOperator = zod_1.z.discriminatedUnion('op', [exports.InFilter, exports.GreaterThanFilter, exports.LesserThanFilter]);
exports.CombinationOperator = zod_1.z.object({
op: zod_1.z.union([zod_1.z.literal(exports.CombinationKeys.And), zod_1.z.literal(exports.CombinationKeys.Not), zod_1.z.literal(exports.CombinationKeys.Or)]),
content: zod_1.z.array(zod_1.z.union([exports.FilterOperator, zod_1.z.lazy(function () { return exports.CombinationOperator; })])),
pivot: zod_1.z.string().optional(),
});
exports.Operator = zod_1.z.union([exports.CombinationOperator, exports.FilterOperator]);
exports.SQON = exports.Operator;
var isCombination = function (operator) {
return exports.CombinationOperator.safeParse(operator).success;
};
exports.isCombination = isCombination;
var isFilter = function (operator) { return exports.FilterOperator.safeParse(operator).success; };
exports.isFilter = isFilter;
var isArrayFilter = function (operator) { return exports.ArrayFilter.safeParse(operator).success; };
exports.isArrayFilter = isArrayFilter;
var isScalarFilter = function (operator) {
return exports.ScalarFilter.safeParse(operator).success;
};
exports.isScalarFilter = isScalarFilter;
var arrayFilterKeys = Object.values(exports.ArrayFilterKeys);
var isArrayFilterKey = function (input) {
return typeof input === 'string' && arrayFilterKeys.includes(input);
};
exports.isArrayFilterKey = isArrayFilterKey;
var scalarFilterKeys = Object.values(exports.ScalarFilterKeys);
var isScalarFilterKey = function (input) {
return typeof input === 'string' && scalarFilterKeys.includes(input);
};
exports.isScalarFilterKey = isScalarFilterKey;
var isArrayFilterValue = function (value) {
return exports.ArrayFilterValue.safeParse(value).success;
};
exports.isArrayFilterValue = isArrayFilterValue;
var isScalarFilterValue = function (value) {
return exports.ScalarFilterValue.safeParse(value).success;
};
exports.isScalarFilterValue = isScalarFilterValue;
//# sourceMappingURL=sqon.js.map