@beabee/beabee-common 1.5.1 → 1.6.1

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.
@@ -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.convertFiltersToRules = exports.convertRulesToFilters = exports.validateRuleGroup = exports.validateRule = exports.isRuleGroup = exports.operatorsByType = exports.nullableOperators = exports.operators = void 0;
18
- exports.operators = [
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
  }
@@ -99,20 +101,20 @@ function validateRuleGroup(filters, ruleGroup) {
99
101
  return true;
100
102
  }
101
103
  exports.validateRuleGroup = validateRuleGroup;
102
- function convertRulesToFilters(rules) {
103
- if (!rules) {
104
+ function convertRuleGroupToFilters(ruleGroup) {
105
+ if (!ruleGroup) {
104
106
  return null;
105
107
  }
106
108
  // TODO: how to handle groups?
107
- const rulesWithoutGroups = rules.rules.filter((rule) => "operator" in rule);
109
+ const rulesWithoutGroups = ruleGroup.rules.filter((rule) => !isRuleGroup(rule));
108
110
  return rulesWithoutGroups.map((rule) => ({
109
111
  id: rule.field,
110
112
  operator: rule.operator,
111
113
  values: [...rule.value],
112
114
  }));
113
115
  }
114
- exports.convertRulesToFilters = convertRulesToFilters;
115
- function convertFiltersToRules(matchType, filters) {
116
+ exports.convertRuleGroupToFilters = convertRuleGroupToFilters;
117
+ function convertFiltersToRuleGroup(matchType, filters) {
116
118
  return {
117
119
  condition: matchType === "all" ? "AND" : "OR",
118
120
  rules: filters.map((filter) => ({
@@ -122,7 +124,7 @@ function convertFiltersToRules(matchType, filters) {
122
124
  })),
123
125
  };
124
126
  }
125
- exports.convertFiltersToRules = convertFiltersToRules;
127
+ exports.convertFiltersToRuleGroup = convertFiltersToRuleGroup;
126
128
  __exportStar(require("./callouts"), exports);
127
129
  __exportStar(require("./contacts"), exports);
128
130
  __exportStar(require("./notices"), exports);
@@ -1,4 +1,5 @@
1
- export const operators = [
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
  }
@@ -79,19 +81,19 @@ export function validateRuleGroup(filters, ruleGroup) {
79
81
  }
80
82
  return true;
81
83
  }
82
- export function convertRulesToFilters(rules) {
83
- if (!rules) {
84
+ export function convertRuleGroupToFilters(ruleGroup) {
85
+ if (!ruleGroup) {
84
86
  return null;
85
87
  }
86
88
  // TODO: how to handle groups?
87
- const rulesWithoutGroups = rules.rules.filter((rule) => "operator" in rule);
89
+ const rulesWithoutGroups = ruleGroup.rules.filter((rule) => !isRuleGroup(rule));
88
90
  return rulesWithoutGroups.map((rule) => ({
89
91
  id: rule.field,
90
92
  operator: rule.operator,
91
93
  values: [...rule.value],
92
94
  }));
93
95
  }
94
- export function convertFiltersToRules(matchType, filters) {
96
+ export function convertFiltersToRuleGroup(matchType, filters) {
95
97
  return {
96
98
  condition: matchType === "all" ? "AND" : "OR",
97
99
  rules: filters.map((filter) => ({
@@ -1,25 +1,18 @@
1
- export declare const operators: 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 GetPaginatedQueryRuleOperator = typeof operators[number];
3
- export declare type GetPaginatedQueryRuleValue = string | number | boolean;
4
- export interface GetPaginatedQueryRule<T> {
5
- field: T;
6
- operator: GetPaginatedQueryRuleOperator;
7
- value: GetPaginatedQueryRuleValue[];
8
- }
9
- export interface GetPaginatedQueryRuleGroup<T> {
10
- condition: "AND" | "OR";
11
- rules: (GetPaginatedQueryRuleGroup<T> | GetPaginatedQueryRule<T>)[];
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<Field extends string> {
5
+ field: Field;
6
+ operator: RuleOperator;
7
+ value: RuleValue[];
12
8
  }
13
- export interface GetPaginatedQuery<T> {
14
- limit?: number;
15
- offset?: number;
16
- sort?: string;
17
- order?: "ASC" | "DESC";
18
- rules?: GetPaginatedQueryRuleGroup<T>;
9
+ export interface RuleGroup<Field extends string> {
10
+ condition: "AND" | "OR";
11
+ rules: (RuleGroup<Field> | Rule<Field>)[];
19
12
  }
20
13
  export declare type FilterType = "text" | "date" | "number" | "boolean" | "array" | "enum" | "contact";
21
- export declare type FilterValue = GetPaginatedQueryRuleValue;
22
- export declare type FilterOperator = GetPaginatedQueryRuleOperator;
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 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>;
56
- export declare function convertRulesToFilters(rules: GetPaginatedQuery<string>["rules"]): Filter[] | null;
57
- export declare function convertFiltersToRules(matchType: "all" | "any", filters: Filter[]): GetPaginatedQuery<string>["rules"];
46
+ export interface Paginated<T> {
47
+ items: T[];
48
+ offset: number;
49
+ count: number;
50
+ total: number;
51
+ }
52
+ export interface PaginatedQuery<Field extends string> {
53
+ limit?: number;
54
+ offset?: number;
55
+ sort?: string;
56
+ order?: "ASC" | "DESC";
57
+ rules?: RuleGroup<Field>;
58
+ }
59
+ export declare function isRuleGroup<Field extends string>(ruleOrGroup: Rule<Field> | RuleGroup<Field>): ruleOrGroup is RuleGroup<Field>;
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";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beabee/beabee-common",
3
- "version": "1.5.1",
3
+ "version": "1.6.1",
4
4
  "description": "",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",