@beabee/beabee-common 1.5.0 → 1.6.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 +12 -11
- package/dist/esm/search/index.js +9 -8
- package/dist/types/search/index.d.ts +28 -22
- package/package.json +1 -1
package/dist/cjs/search/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// *** Definitions for rules ***
|
|
2
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
4
|
if (k2 === undefined) k2 = k;
|
|
4
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -14,8 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
16
|
};
|
|
16
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
18
|
+
exports.convertFiltersToRuleGroup = exports.convertRuleGroupToFilters = exports.validateRuleGroup = exports.validateRule = exports.isRuleGroup = exports.operatorsByType = exports.nullableOperators = exports.ruleOperators = void 0;
|
|
19
|
+
exports.ruleOperators = [
|
|
19
20
|
"equal",
|
|
20
21
|
"not_equal",
|
|
21
22
|
"less",
|
|
@@ -68,6 +69,7 @@ exports.operatorsByType = {
|
|
|
68
69
|
enum: equalityOperators,
|
|
69
70
|
contact: equalityOperators,
|
|
70
71
|
};
|
|
72
|
+
// *** Helper methods ***
|
|
71
73
|
function isRuleGroup(ruleOrGroup) {
|
|
72
74
|
return "condition" in ruleOrGroup;
|
|
73
75
|
}
|
|
@@ -81,8 +83,7 @@ function validateRule(filters, rule) {
|
|
|
81
83
|
if (!operator) {
|
|
82
84
|
return false; // Invalid operator
|
|
83
85
|
}
|
|
84
|
-
|
|
85
|
-
if (operator.args !== values.length) {
|
|
86
|
+
if (operator.args !== rule.value.length) {
|
|
86
87
|
return false; // Invalid number of args
|
|
87
88
|
}
|
|
88
89
|
return true;
|
|
@@ -100,20 +101,20 @@ function validateRuleGroup(filters, ruleGroup) {
|
|
|
100
101
|
return true;
|
|
101
102
|
}
|
|
102
103
|
exports.validateRuleGroup = validateRuleGroup;
|
|
103
|
-
function
|
|
104
|
-
if (!
|
|
104
|
+
function convertRuleGroupToFilters(ruleGroup) {
|
|
105
|
+
if (!ruleGroup) {
|
|
105
106
|
return null;
|
|
106
107
|
}
|
|
107
108
|
// TODO: how to handle groups?
|
|
108
|
-
const rulesWithoutGroups =
|
|
109
|
+
const rulesWithoutGroups = ruleGroup.rules.filter((rule) => !isRuleGroup(rule));
|
|
109
110
|
return rulesWithoutGroups.map((rule) => ({
|
|
110
111
|
id: rule.field,
|
|
111
112
|
operator: rule.operator,
|
|
112
|
-
values:
|
|
113
|
+
values: [...rule.value],
|
|
113
114
|
}));
|
|
114
115
|
}
|
|
115
|
-
exports.
|
|
116
|
-
function
|
|
116
|
+
exports.convertRuleGroupToFilters = convertRuleGroupToFilters;
|
|
117
|
+
function convertFiltersToRuleGroup(matchType, filters) {
|
|
117
118
|
return {
|
|
118
119
|
condition: matchType === "all" ? "AND" : "OR",
|
|
119
120
|
rules: filters.map((filter) => ({
|
|
@@ -123,7 +124,7 @@ function convertFiltersToRules(matchType, filters) {
|
|
|
123
124
|
})),
|
|
124
125
|
};
|
|
125
126
|
}
|
|
126
|
-
exports.
|
|
127
|
+
exports.convertFiltersToRuleGroup = convertFiltersToRuleGroup;
|
|
127
128
|
__exportStar(require("./callouts"), exports);
|
|
128
129
|
__exportStar(require("./contacts"), exports);
|
|
129
130
|
__exportStar(require("./notices"), exports);
|
package/dist/esm/search/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
// *** Definitions for rules ***
|
|
2
|
+
export const ruleOperators = [
|
|
2
3
|
"equal",
|
|
3
4
|
"not_equal",
|
|
4
5
|
"less",
|
|
@@ -51,6 +52,7 @@ export const operatorsByType = {
|
|
|
51
52
|
enum: equalityOperators,
|
|
52
53
|
contact: equalityOperators,
|
|
53
54
|
};
|
|
55
|
+
// *** Helper methods ***
|
|
54
56
|
export function isRuleGroup(ruleOrGroup) {
|
|
55
57
|
return "condition" in ruleOrGroup;
|
|
56
58
|
}
|
|
@@ -63,8 +65,7 @@ export function validateRule(filters, rule) {
|
|
|
63
65
|
if (!operator) {
|
|
64
66
|
return false; // Invalid operator
|
|
65
67
|
}
|
|
66
|
-
|
|
67
|
-
if (operator.args !== values.length) {
|
|
68
|
+
if (operator.args !== rule.value.length) {
|
|
68
69
|
return false; // Invalid number of args
|
|
69
70
|
}
|
|
70
71
|
return true;
|
|
@@ -80,19 +81,19 @@ export function validateRuleGroup(filters, ruleGroup) {
|
|
|
80
81
|
}
|
|
81
82
|
return true;
|
|
82
83
|
}
|
|
83
|
-
export function
|
|
84
|
-
if (!
|
|
84
|
+
export function convertRuleGroupToFilters(ruleGroup) {
|
|
85
|
+
if (!ruleGroup) {
|
|
85
86
|
return null;
|
|
86
87
|
}
|
|
87
88
|
// TODO: how to handle groups?
|
|
88
|
-
const rulesWithoutGroups =
|
|
89
|
+
const rulesWithoutGroups = ruleGroup.rules.filter((rule) => !isRuleGroup(rule));
|
|
89
90
|
return rulesWithoutGroups.map((rule) => ({
|
|
90
91
|
id: rule.field,
|
|
91
92
|
operator: rule.operator,
|
|
92
|
-
values:
|
|
93
|
+
values: [...rule.value],
|
|
93
94
|
}));
|
|
94
95
|
}
|
|
95
|
-
export function
|
|
96
|
+
export function convertFiltersToRuleGroup(matchType, filters) {
|
|
96
97
|
return {
|
|
97
98
|
condition: matchType === "all" ? "AND" : "OR",
|
|
98
99
|
rules: filters.map((filter) => ({
|
|
@@ -1,25 +1,18 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare type
|
|
3
|
-
export declare type
|
|
4
|
-
export interface
|
|
1
|
+
export declare const ruleOperators: readonly ["equal", "not_equal", "less", "less_or_equal", "greater", "greater_or_equal", "between", "not_between", "begins_with", "not_begins_with", "contains", "not_contains", "ends_with", "not_ends_with", "is_empty", "is_not_empty"];
|
|
2
|
+
export declare type RuleOperator = typeof ruleOperators[number];
|
|
3
|
+
export declare type RuleValue = string | number | boolean;
|
|
4
|
+
export interface Rule<T> {
|
|
5
5
|
field: T;
|
|
6
|
-
operator:
|
|
7
|
-
value:
|
|
6
|
+
operator: RuleOperator;
|
|
7
|
+
value: RuleValue[];
|
|
8
8
|
}
|
|
9
|
-
export interface
|
|
9
|
+
export interface RuleGroup<T> {
|
|
10
10
|
condition: "AND" | "OR";
|
|
11
|
-
rules: (
|
|
12
|
-
}
|
|
13
|
-
export interface GetPaginatedQuery<T> {
|
|
14
|
-
limit?: number;
|
|
15
|
-
offset?: number;
|
|
16
|
-
sort?: string;
|
|
17
|
-
order?: "ASC" | "DESC";
|
|
18
|
-
rules?: GetPaginatedQueryRuleGroup<T>;
|
|
11
|
+
rules: (RuleGroup<T> | Rule<T>)[];
|
|
19
12
|
}
|
|
20
13
|
export declare type FilterType = "text" | "date" | "number" | "boolean" | "array" | "enum" | "contact";
|
|
21
|
-
export declare type FilterValue =
|
|
22
|
-
export declare type FilterOperator =
|
|
14
|
+
export declare type FilterValue = RuleValue;
|
|
15
|
+
export declare type FilterOperator = RuleOperator;
|
|
23
16
|
export interface FilterOperatorParams {
|
|
24
17
|
args: number;
|
|
25
18
|
}
|
|
@@ -50,11 +43,24 @@ export interface Filter {
|
|
|
50
43
|
operator: FilterOperator;
|
|
51
44
|
values: FilterValue[];
|
|
52
45
|
}
|
|
53
|
-
export
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
46
|
+
export interface Paginated<T> {
|
|
47
|
+
items: T[];
|
|
48
|
+
offset: number;
|
|
49
|
+
count: number;
|
|
50
|
+
total: number;
|
|
51
|
+
}
|
|
52
|
+
export interface PaginatedQuery<T> {
|
|
53
|
+
limit?: number;
|
|
54
|
+
offset?: number;
|
|
55
|
+
sort?: string;
|
|
56
|
+
order?: "ASC" | "DESC";
|
|
57
|
+
rules?: RuleGroup<T>;
|
|
58
|
+
}
|
|
59
|
+
export declare function isRuleGroup<T>(ruleOrGroup: Rule<T> | RuleGroup<T>): ruleOrGroup is RuleGroup<T>;
|
|
60
|
+
export declare function validateRule<Field extends string>(filters: Filters<Field>, rule: Rule<string>): rule is Rule<Field>;
|
|
61
|
+
export declare function validateRuleGroup<Field extends string>(filters: Filters<Field>, ruleGroup: RuleGroup<string>): ruleGroup is RuleGroup<Field>;
|
|
62
|
+
export declare function convertRuleGroupToFilters(ruleGroup?: RuleGroup<string>): Filter[] | null;
|
|
63
|
+
export declare function convertFiltersToRuleGroup(matchType: "all" | "any", filters: Filter[]): RuleGroup<string>;
|
|
58
64
|
export * from "./callouts";
|
|
59
65
|
export * from "./contacts";
|
|
60
66
|
export * from "./notices";
|