@beabee/beabee-common 1.4.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/search/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.convertFiltersToRules = exports.convertRulesToFilters = exports.
|
|
17
|
+
exports.convertFiltersToRules = exports.convertRulesToFilters = exports.validateRuleGroup = exports.validateRule = exports.isRuleGroup = exports.operatorsByType = exports.nullableOperators = exports.operators = void 0;
|
|
18
18
|
exports.operators = [
|
|
19
19
|
"equal",
|
|
20
20
|
"not_equal",
|
|
@@ -52,7 +52,7 @@ exports.nullableOperators = {
|
|
|
52
52
|
is_empty: { args: 0 },
|
|
53
53
|
is_not_empty: { args: 0 },
|
|
54
54
|
};
|
|
55
|
-
exports.
|
|
55
|
+
exports.operatorsByType = {
|
|
56
56
|
text: {
|
|
57
57
|
...equalityOperators,
|
|
58
58
|
...arrayOperators,
|
|
@@ -68,6 +68,38 @@ exports.operationParams = {
|
|
|
68
68
|
enum: equalityOperators,
|
|
69
69
|
contact: equalityOperators,
|
|
70
70
|
};
|
|
71
|
+
function isRuleGroup(ruleOrGroup) {
|
|
72
|
+
return "condition" in ruleOrGroup;
|
|
73
|
+
}
|
|
74
|
+
exports.isRuleGroup = isRuleGroup;
|
|
75
|
+
function validateRule(filters, rule) {
|
|
76
|
+
const filter = filters[rule.field];
|
|
77
|
+
if (!filter) {
|
|
78
|
+
return false; // Invalid field
|
|
79
|
+
}
|
|
80
|
+
const operator = exports.operatorsByType[filter.type][rule.operator];
|
|
81
|
+
if (!operator) {
|
|
82
|
+
return false; // Invalid operator
|
|
83
|
+
}
|
|
84
|
+
const values = Array.isArray(rule.value) ? rule.value : [rule.value];
|
|
85
|
+
if (operator.args !== values.length) {
|
|
86
|
+
return false; // Invalid number of args
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
exports.validateRule = validateRule;
|
|
91
|
+
function validateRuleGroup(filters, ruleGroup) {
|
|
92
|
+
for (const rule of ruleGroup.rules) {
|
|
93
|
+
const valid = isRuleGroup(rule)
|
|
94
|
+
? validateRuleGroup(filters, rule)
|
|
95
|
+
: validateRule(filters, rule);
|
|
96
|
+
if (!valid) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
exports.validateRuleGroup = validateRuleGroup;
|
|
71
103
|
function convertRulesToFilters(rules) {
|
|
72
104
|
if (!rules) {
|
|
73
105
|
return null;
|
package/dist/esm/search/index.js
CHANGED
|
@@ -35,7 +35,7 @@ export const nullableOperators = {
|
|
|
35
35
|
is_empty: { args: 0 },
|
|
36
36
|
is_not_empty: { args: 0 },
|
|
37
37
|
};
|
|
38
|
-
export const
|
|
38
|
+
export const operatorsByType = {
|
|
39
39
|
text: {
|
|
40
40
|
...equalityOperators,
|
|
41
41
|
...arrayOperators,
|
|
@@ -51,6 +51,35 @@ export const operationParams = {
|
|
|
51
51
|
enum: equalityOperators,
|
|
52
52
|
contact: equalityOperators,
|
|
53
53
|
};
|
|
54
|
+
export function isRuleGroup(ruleOrGroup) {
|
|
55
|
+
return "condition" in ruleOrGroup;
|
|
56
|
+
}
|
|
57
|
+
export function validateRule(filters, rule) {
|
|
58
|
+
const filter = filters[rule.field];
|
|
59
|
+
if (!filter) {
|
|
60
|
+
return false; // Invalid field
|
|
61
|
+
}
|
|
62
|
+
const operator = operatorsByType[filter.type][rule.operator];
|
|
63
|
+
if (!operator) {
|
|
64
|
+
return false; // Invalid operator
|
|
65
|
+
}
|
|
66
|
+
const values = Array.isArray(rule.value) ? rule.value : [rule.value];
|
|
67
|
+
if (operator.args !== values.length) {
|
|
68
|
+
return false; // Invalid number of args
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
export function validateRuleGroup(filters, ruleGroup) {
|
|
73
|
+
for (const rule of ruleGroup.rules) {
|
|
74
|
+
const valid = isRuleGroup(rule)
|
|
75
|
+
? validateRuleGroup(filters, rule)
|
|
76
|
+
: validateRule(filters, rule);
|
|
77
|
+
if (!valid) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
54
83
|
export function convertRulesToFilters(rules) {
|
|
55
84
|
if (!rules) {
|
|
56
85
|
return null;
|
|
@@ -31,7 +31,7 @@ export declare const nullableOperators: {
|
|
|
31
31
|
args: number;
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
-
export declare const
|
|
34
|
+
export declare const operatorsByType: Record<FilterType, Partial<Record<FilterOperator, FilterOperatorParams>>>;
|
|
35
35
|
interface BaseFilterArgs {
|
|
36
36
|
type: FilterType;
|
|
37
37
|
nullable?: boolean;
|
|
@@ -50,6 +50,9 @@ export interface Filter {
|
|
|
50
50
|
operator: FilterOperator;
|
|
51
51
|
values: FilterValue[];
|
|
52
52
|
}
|
|
53
|
+
export declare function isRuleGroup<T>(ruleOrGroup: GetPaginatedQueryRule<T> | GetPaginatedQueryRuleGroup<T>): ruleOrGroup is GetPaginatedQueryRuleGroup<T>;
|
|
54
|
+
export declare function validateRule<Field extends string>(filters: Filters<Field>, rule: GetPaginatedQueryRule<string>): rule is GetPaginatedQueryRule<Field>;
|
|
55
|
+
export declare function validateRuleGroup<Field extends string>(filters: Filters<Field>, ruleGroup: GetPaginatedQueryRuleGroup<string>): ruleGroup is GetPaginatedQueryRuleGroup<Field>;
|
|
53
56
|
export declare function convertRulesToFilters(rules: GetPaginatedQuery<string>["rules"]): Filter[] | null;
|
|
54
57
|
export declare function convertFiltersToRules(matchType: "all" | "any", filters: Filter[]): GetPaginatedQuery<string>["rules"];
|
|
55
58
|
export * from "./callouts";
|