@defra/forms-model 3.0.11 → 3.0.13
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/module/components/types.js.map +1 -1
- package/dist/module/conditions/condition-group.js.map +1 -1
- package/dist/module/conditions/condition-model.js +2 -2
- package/dist/module/conditions/condition-model.js.map +1 -1
- package/dist/module/conditions/condition-operators.js.map +1 -1
- package/dist/module/conditions/condition-ref.js.map +1 -1
- package/dist/module/conditions/condition.js +1 -1
- package/dist/module/conditions/condition.js.map +1 -1
- package/dist/module/conditions/types.js.map +1 -1
- package/dist/module/data-model/types.js.map +1 -1
- package/dist/module/migration/migration.1-2.js +2 -2
- package/dist/module/migration/migration.1-2.js.map +1 -1
- package/dist/module/migration/whichMigrations.js +0 -1
- package/dist/module/migration/whichMigrations.js.map +1 -1
- package/dist/module/schema/schema.js +1 -1
- package/dist/module/schema/schema.js.map +1 -1
- package/dist/module/utils/helpers.js.map +1 -1
- package/dist/types/components/types.d.ts +4 -4
- package/dist/types/components/types.d.ts.map +1 -1
- package/dist/types/conditions/condition-group-def.d.ts +1 -1
- package/dist/types/conditions/condition-group.d.ts +1 -1
- package/dist/types/conditions/condition-group.d.ts.map +1 -1
- package/dist/types/conditions/condition-model.d.ts +3 -3
- package/dist/types/conditions/condition-model.d.ts.map +1 -1
- package/dist/types/conditions/condition-operators.d.ts +1 -1
- package/dist/types/conditions/condition-operators.d.ts.map +1 -1
- package/dist/types/conditions/condition-ref.d.ts +1 -1
- package/dist/types/conditions/condition-ref.d.ts.map +1 -1
- package/dist/types/conditions/condition.d.ts +3 -3
- package/dist/types/conditions/condition.d.ts.map +1 -1
- package/dist/types/conditions/types.d.ts +6 -6
- package/dist/types/conditions/types.d.ts.map +1 -1
- package/dist/types/data-model/types.d.ts +28 -30
- package/dist/types/data-model/types.d.ts.map +1 -1
- package/dist/types/migration/migration.1-2.d.ts.map +1 -1
- package/dist/types/migration/whichMigrations.d.ts +0 -1
- package/dist/types/migration/whichMigrations.d.ts.map +1 -1
- package/dist/types/schema/schema.d.ts +1 -1
- package/dist/types/schema/schema.d.ts.map +1 -1
- package/dist/types/utils/helpers.d.ts +1 -3
- package/dist/types/utils/helpers.d.ts.map +1 -1
- package/package.json +2 -4
- package/src/components/types.ts +2 -2
- package/src/conditions/condition-group.ts +1 -1
- package/src/conditions/condition-model.ts +21 -22
- package/src/conditions/condition-operators.ts +1 -1
- package/src/conditions/condition-ref.ts +1 -1
- package/src/conditions/condition.ts +5 -5
- package/src/conditions/types.ts +4 -4
- package/src/data-model/types.ts +15 -17
- package/src/migration/migration.1-2.ts +6 -6
- package/src/migration/whichMigrations.ts +0 -1
- package/src/schema/schema.ts +1 -1
- package/src/utils/helpers.ts +1 -1
- package/dist/browser/components/component-types.js +0 -202
- package/dist/browser/components/component-types.js.map +0 -1
- package/dist/browser/components/conditional-component-types.js +0 -10
- package/dist/browser/components/conditional-component-types.js.map +0 -1
- package/dist/browser/components/enums.js +0 -28
- package/dist/browser/components/enums.js.map +0 -1
- package/dist/browser/components/index.js +0 -4
- package/dist/browser/components/index.js.map +0 -1
- package/dist/browser/components/types.js +0 -2
- package/dist/browser/components/types.js.map +0 -1
- package/dist/browser/conditions/condition-abstract.js +0 -44
- package/dist/browser/conditions/condition-abstract.js.map +0 -1
- package/dist/browser/conditions/condition-field.js +0 -27
- package/dist/browser/conditions/condition-field.js.map +0 -1
- package/dist/browser/conditions/condition-group-def.js +0 -26
- package/dist/browser/conditions/condition-group-def.js.map +0 -1
- package/dist/browser/conditions/condition-group.js +0 -46
- package/dist/browser/conditions/condition-group.js.map +0 -1
- package/dist/browser/conditions/condition-model.js +0 -203
- package/dist/browser/conditions/condition-model.js.map +0 -1
- package/dist/browser/conditions/condition-operators.js +0 -111
- package/dist/browser/conditions/condition-operators.js.map +0 -1
- package/dist/browser/conditions/condition-ref.js +0 -33
- package/dist/browser/conditions/condition-ref.js.map +0 -1
- package/dist/browser/conditions/condition-value-abstract.js +0 -23
- package/dist/browser/conditions/condition-value-abstract.js.map +0 -1
- package/dist/browser/conditions/condition-value-registration.js +0 -18
- package/dist/browser/conditions/condition-value-registration.js.map +0 -1
- package/dist/browser/conditions/condition-values.js +0 -107
- package/dist/browser/conditions/condition-values.js.map +0 -1
- package/dist/browser/conditions/condition.js +0 -41
- package/dist/browser/conditions/condition.js.map +0 -1
- package/dist/browser/conditions/enums.js +0 -6
- package/dist/browser/conditions/enums.js.map +0 -1
- package/dist/browser/conditions/helpers.js +0 -7
- package/dist/browser/conditions/helpers.js.map +0 -1
- package/dist/browser/conditions/index.js +0 -11
- package/dist/browser/conditions/index.js.map +0 -1
- package/dist/browser/conditions/inline-condition-model.js +0 -396
- package/dist/browser/conditions/inline-condition-model.js.map +0 -1
- package/dist/browser/conditions/inline-condition-operators.js +0 -111
- package/dist/browser/conditions/inline-condition-operators.js.map +0 -1
- package/dist/browser/conditions/inline-condition-values.js +0 -137
- package/dist/browser/conditions/inline-condition-values.js.map +0 -1
- package/dist/browser/conditions/types.js +0 -2
- package/dist/browser/conditions/types.js.map +0 -1
- package/dist/browser/data-model/conditions-wrapper.js +0 -31
- package/dist/browser/data-model/conditions-wrapper.js.map +0 -1
- package/dist/browser/data-model/enums.js +0 -7
- package/dist/browser/data-model/enums.js.map +0 -1
- package/dist/browser/data-model/index.js +0 -4
- package/dist/browser/data-model/index.js.map +0 -1
- package/dist/browser/data-model/input-wrapper.js +0 -31
- package/dist/browser/data-model/input-wrapper.js.map +0 -1
- package/dist/browser/data-model/types.js +0 -9
- package/dist/browser/data-model/types.js.map +0 -1
- package/dist/browser/form/form-configuration.js +0 -19
- package/dist/browser/form/form-configuration.js.map +0 -1
- package/dist/browser/form/index.js +0 -2
- package/dist/browser/form/index.js.map +0 -1
- package/dist/browser/index.js +0 -9
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/migration/index.js +0 -2
- package/dist/browser/migration/index.js.map +0 -1
- package/dist/browser/migration/migration.0-2.js +0 -47
- package/dist/browser/migration/migration.0-2.js.map +0 -1
- package/dist/browser/migration/migration.1-2.js +0 -92
- package/dist/browser/migration/migration.1-2.js.map +0 -1
- package/dist/browser/migration/types.js +0 -2
- package/dist/browser/migration/types.js.map +0 -1
- package/dist/browser/migration/whichMigrations.js +0 -22
- package/dist/browser/migration/whichMigrations.js.map +0 -1
- package/dist/browser/schema/index.js +0 -2
- package/dist/browser/schema/index.js.map +0 -1
- package/dist/browser/schema/schema.js +0 -237
- package/dist/browser/schema/schema.js.map +0 -1
- package/dist/browser/utils/helpers.js +0 -27
- package/dist/browser/utils/helpers.js.map +0 -1
- package/dist/browser/utils/logger.js +0 -27
- package/dist/browser/utils/logger.js.map +0 -1
@@ -1,203 +0,0 @@
|
|
1
|
-
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
2
|
-
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
3
|
-
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
4
|
-
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
5
|
-
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
6
|
-
import { ConditionField } from "./condition-field.js";
|
7
|
-
import { ConditionGroupDef } from "./condition-group-def.js";
|
8
|
-
import { Condition } from "./condition.js";
|
9
|
-
import { ConditionRef } from "./condition-ref.js";
|
10
|
-
import { ConditionGroup } from "./condition-group.js";
|
11
|
-
import { conditionValueFrom } from "./condition-values.js";
|
12
|
-
import { Coordinator } from "./enums.js";
|
13
|
-
import { toPresentationString, toExpression } from "./helpers.js";
|
14
|
-
var _groupedConditions = /*#__PURE__*/new WeakMap();
|
15
|
-
var _userGroupedConditions = /*#__PURE__*/new WeakMap();
|
16
|
-
var _conditionName = /*#__PURE__*/new WeakMap();
|
17
|
-
export class ConditionsModel {
|
18
|
-
constructor(_conditionsObject) {
|
19
|
-
_classPrivateFieldInitSpec(this, _groupedConditions, []);
|
20
|
-
_classPrivateFieldInitSpec(this, _userGroupedConditions, []);
|
21
|
-
_classPrivateFieldInitSpec(this, _conditionName, undefined);
|
22
|
-
}
|
23
|
-
clone() {
|
24
|
-
const toReturn = new ConditionsModel();
|
25
|
-
_classPrivateFieldSet(_groupedConditions, toReturn, _classPrivateFieldGet(_groupedConditions, this).map(it => it.clone()));
|
26
|
-
_classPrivateFieldSet(_userGroupedConditions, toReturn, _classPrivateFieldGet(_userGroupedConditions, this).map(it => it.clone()));
|
27
|
-
_classPrivateFieldSet(_conditionName, toReturn, _classPrivateFieldGet(_conditionName, this));
|
28
|
-
return toReturn;
|
29
|
-
}
|
30
|
-
clear() {
|
31
|
-
_classPrivateFieldSet(_userGroupedConditions, this, []);
|
32
|
-
_classPrivateFieldSet(_groupedConditions, this, []);
|
33
|
-
_classPrivateFieldSet(_conditionName, this, undefined);
|
34
|
-
return this;
|
35
|
-
}
|
36
|
-
set name(name) {
|
37
|
-
_classPrivateFieldSet(_conditionName, this, name);
|
38
|
-
}
|
39
|
-
get name() {
|
40
|
-
return _classPrivateFieldGet(_conditionName, this);
|
41
|
-
}
|
42
|
-
add(condition) {
|
43
|
-
const coordinatorExpected = _classPrivateFieldGet(_userGroupedConditions, this).length !== 0;
|
44
|
-
if (condition.getCoordinator() && !coordinatorExpected) {
|
45
|
-
throw Error('No coordinator allowed on the first condition');
|
46
|
-
} else if (!condition.getCoordinator() && coordinatorExpected) {
|
47
|
-
throw Error('Coordinator must be present on subsequent conditions');
|
48
|
-
}
|
49
|
-
_classPrivateFieldGet(_userGroupedConditions, this).push(condition);
|
50
|
-
_classPrivateFieldSet(_groupedConditions, this, this._applyGroups(_classPrivateFieldGet(_userGroupedConditions, this)));
|
51
|
-
return this;
|
52
|
-
}
|
53
|
-
replace(index, condition) {
|
54
|
-
const coordinatorExpected = index !== 0;
|
55
|
-
if (condition.getCoordinator() && !coordinatorExpected) {
|
56
|
-
throw Error('No coordinator allowed on the first condition');
|
57
|
-
} else if (!condition.getCoordinator() && coordinatorExpected) {
|
58
|
-
throw Error('Coordinator must be present on subsequent conditions');
|
59
|
-
} else if (index >= _classPrivateFieldGet(_userGroupedConditions, this).length) {
|
60
|
-
throw Error(`Cannot replace condition ${index} as no such condition exists`);
|
61
|
-
}
|
62
|
-
_classPrivateFieldGet(_userGroupedConditions, this).splice(index, 1, condition);
|
63
|
-
_classPrivateFieldSet(_groupedConditions, this, this._applyGroups(_classPrivateFieldGet(_userGroupedConditions, this)));
|
64
|
-
return this;
|
65
|
-
}
|
66
|
-
remove(indexes) {
|
67
|
-
_classPrivateFieldSet(_userGroupedConditions, this, _classPrivateFieldGet(_userGroupedConditions, this).filter((_condition, index) => !indexes.includes(index)).map((condition, index) => index === 0 ? condition.asFirstCondition() : condition));
|
68
|
-
_classPrivateFieldSet(_groupedConditions, this, this._applyGroups(_classPrivateFieldGet(_userGroupedConditions, this)));
|
69
|
-
return this;
|
70
|
-
}
|
71
|
-
addGroups(groupDefs) {
|
72
|
-
_classPrivateFieldSet(_userGroupedConditions, this, this._group(_classPrivateFieldGet(_userGroupedConditions, this), groupDefs));
|
73
|
-
_classPrivateFieldSet(_groupedConditions, this, this._applyGroups(_classPrivateFieldGet(_userGroupedConditions, this)));
|
74
|
-
return this;
|
75
|
-
}
|
76
|
-
splitGroup(index) {
|
77
|
-
_classPrivateFieldSet(_userGroupedConditions, this, this._ungroup(_classPrivateFieldGet(_userGroupedConditions, this), index));
|
78
|
-
_classPrivateFieldSet(_groupedConditions, this, this._applyGroups(_classPrivateFieldGet(_userGroupedConditions, this)));
|
79
|
-
return this;
|
80
|
-
}
|
81
|
-
moveEarlier(index) {
|
82
|
-
if (index > 0 && index < _classPrivateFieldGet(_userGroupedConditions, this).length) {
|
83
|
-
_classPrivateFieldGet(_userGroupedConditions, this).splice(index - 1, 0, _classPrivateFieldGet(_userGroupedConditions, this).splice(index, 1)[0]);
|
84
|
-
if (index === 1) {
|
85
|
-
this.switchCoordinators();
|
86
|
-
}
|
87
|
-
_classPrivateFieldSet(_groupedConditions, this, this._applyGroups(_classPrivateFieldGet(_userGroupedConditions, this)));
|
88
|
-
}
|
89
|
-
return this;
|
90
|
-
}
|
91
|
-
moveLater(index) {
|
92
|
-
if (index >= 0 && index < _classPrivateFieldGet(_userGroupedConditions, this).length - 1) {
|
93
|
-
_classPrivateFieldGet(_userGroupedConditions, this).splice(index + 1, 0, _classPrivateFieldGet(_userGroupedConditions, this).splice(index, 1)[0]);
|
94
|
-
if (index === 0) {
|
95
|
-
this.switchCoordinators();
|
96
|
-
}
|
97
|
-
_classPrivateFieldSet(_groupedConditions, this, this._applyGroups(_classPrivateFieldGet(_userGroupedConditions, this)));
|
98
|
-
}
|
99
|
-
return this;
|
100
|
-
}
|
101
|
-
switchCoordinators() {
|
102
|
-
_classPrivateFieldGet(_userGroupedConditions, this)[1].setCoordinator(_classPrivateFieldGet(_userGroupedConditions, this)[0].getCoordinator());
|
103
|
-
_classPrivateFieldGet(_userGroupedConditions, this)[0].setCoordinator(undefined);
|
104
|
-
}
|
105
|
-
get asPerUserGroupings() {
|
106
|
-
return [..._classPrivateFieldGet(_userGroupedConditions, this)];
|
107
|
-
}
|
108
|
-
get hasConditions() {
|
109
|
-
return _classPrivateFieldGet(_userGroupedConditions, this).length > 0;
|
110
|
-
}
|
111
|
-
get lastIndex() {
|
112
|
-
return _classPrivateFieldGet(_userGroupedConditions, this).length - 1;
|
113
|
-
}
|
114
|
-
toPresentationString() {
|
115
|
-
return _classPrivateFieldGet(_groupedConditions, this).map(condition => toPresentationString(condition)).join(' ');
|
116
|
-
}
|
117
|
-
toExpression() {
|
118
|
-
return _classPrivateFieldGet(_groupedConditions, this).map(condition => toExpression(condition)).join(' ');
|
119
|
-
}
|
120
|
-
_applyGroups(userGroupedConditions) {
|
121
|
-
const correctedUserGroups = userGroupedConditions.map(condition => condition instanceof ConditionGroup && condition.conditions.length > 2 ? new ConditionGroup(this._group(condition.conditions, this._autoGroupDefs(condition.conditions))) : condition);
|
122
|
-
return this._group(correctedUserGroups, this._autoGroupDefs(correctedUserGroups));
|
123
|
-
}
|
124
|
-
_group(conditions, groupDefs) {
|
125
|
-
return conditions.reduce((groups, condition, index, conditions) => {
|
126
|
-
const groupDef = groupDefs.find(groupDef => groupDef.contains(index));
|
127
|
-
if (groupDef) {
|
128
|
-
if (groupDef.startsWith(index)) {
|
129
|
-
const groupConditions = groupDef.applyTo(conditions);
|
130
|
-
groups.push(new ConditionGroup(groupConditions));
|
131
|
-
}
|
132
|
-
} else {
|
133
|
-
groups.push(condition);
|
134
|
-
}
|
135
|
-
return groups;
|
136
|
-
}, []);
|
137
|
-
}
|
138
|
-
_ungroup(conditions, splitIndex) {
|
139
|
-
if (conditions[splitIndex].isGroup()) {
|
140
|
-
const copy = [...conditions];
|
141
|
-
copy.splice(splitIndex, 1, ...conditions[splitIndex].getGroupedConditions());
|
142
|
-
return copy;
|
143
|
-
}
|
144
|
-
return conditions;
|
145
|
-
}
|
146
|
-
_autoGroupDefs(conditions) {
|
147
|
-
const orPositions = [];
|
148
|
-
conditions.forEach((condition, index) => {
|
149
|
-
if (condition.getCoordinator() === Coordinator.OR) {
|
150
|
-
orPositions.push(index);
|
151
|
-
}
|
152
|
-
});
|
153
|
-
const hasOr = orPositions.length > 0;
|
154
|
-
const hasAnd = !!conditions.find(condition => condition.getCoordinator() === Coordinator.AND);
|
155
|
-
if (hasAnd && hasOr) {
|
156
|
-
let start = 0;
|
157
|
-
const groupDefs = [];
|
158
|
-
orPositions.forEach((position, index) => {
|
159
|
-
if (start < position - 1) {
|
160
|
-
groupDefs.push(new ConditionGroupDef(start, position - 1));
|
161
|
-
}
|
162
|
-
const thisIsTheLastOr = orPositions.length === index + 1;
|
163
|
-
const thereAreMoreConditions = conditions.length - 1 > position;
|
164
|
-
if (thisIsTheLastOr && thereAreMoreConditions) {
|
165
|
-
groupDefs.push(new ConditionGroupDef(position, conditions.length - 1));
|
166
|
-
}
|
167
|
-
start = position;
|
168
|
-
});
|
169
|
-
return groupDefs;
|
170
|
-
}
|
171
|
-
return [];
|
172
|
-
}
|
173
|
-
toJSON() {
|
174
|
-
const name = _classPrivateFieldGet(_conditionName, this);
|
175
|
-
const conditions = _classPrivateFieldGet(_userGroupedConditions, this);
|
176
|
-
return {
|
177
|
-
name,
|
178
|
-
conditions: conditions.map(it => it.clone())
|
179
|
-
};
|
180
|
-
}
|
181
|
-
|
182
|
-
// TODO:- why is this not a constructor?
|
183
|
-
static from(obj) {
|
184
|
-
if (obj instanceof ConditionsModel) {
|
185
|
-
return obj;
|
186
|
-
}
|
187
|
-
const toReturn = new ConditionsModel();
|
188
|
-
_classPrivateFieldSet(_conditionName, toReturn, obj.name);
|
189
|
-
_classPrivateFieldSet(_userGroupedConditions, toReturn, obj.conditions.map(condition => conditionFrom(condition)));
|
190
|
-
_classPrivateFieldSet(_groupedConditions, toReturn, toReturn._applyGroups(_classPrivateFieldGet(_userGroupedConditions, toReturn)));
|
191
|
-
return toReturn;
|
192
|
-
}
|
193
|
-
}
|
194
|
-
const conditionFrom = function conditionFrom(it) {
|
195
|
-
if ('conditions' in it) {
|
196
|
-
return new ConditionGroup(it.conditions.map(condition => conditionFrom(condition)));
|
197
|
-
}
|
198
|
-
if ('conditionName' in it) {
|
199
|
-
return new ConditionRef(it.conditionName, it.conditionDisplayName, it.coordinator);
|
200
|
-
}
|
201
|
-
return new Condition(ConditionField.from(it.field), it.operator, conditionValueFrom(it.value), it.coordinator);
|
202
|
-
};
|
203
|
-
//# sourceMappingURL=condition-model.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"condition-model.js","names":["ConditionField","ConditionGroupDef","Condition","ConditionRef","ConditionGroup","conditionValueFrom","Coordinator","toPresentationString","toExpression","_groupedConditions","WeakMap","_userGroupedConditions","_conditionName","ConditionsModel","constructor","_conditionsObject","_classPrivateFieldInitSpec","undefined","clone","toReturn","_classPrivateFieldSet","_classPrivateFieldGet","map","it","clear","name","add","condition","coordinatorExpected","length","getCoordinator","Error","push","_applyGroups","replace","index","splice","remove","indexes","filter","_condition","includes","asFirstCondition","addGroups","groupDefs","_group","splitGroup","_ungroup","moveEarlier","switchCoordinators","moveLater","setCoordinator","asPerUserGroupings","hasConditions","lastIndex","join","userGroupedConditions","correctedUserGroups","conditions","_autoGroupDefs","reduce","groups","groupDef","find","contains","startsWith","groupConditions","applyTo","splitIndex","isGroup","copy","getGroupedConditions","orPositions","forEach","OR","hasOr","hasAnd","AND","start","position","thisIsTheLastOr","thereAreMoreConditions","toJSON","from","obj","conditionFrom","conditionName","conditionDisplayName","coordinator","field","operator","value"],"sources":["../../../src/conditions/condition-model.ts"],"sourcesContent":["import { ConditionField } from '~/src/conditions/condition-field.js'\nimport { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'\nimport { Condition } from '~/src/conditions/condition.js'\nimport { ConditionRef } from '~/src/conditions/condition-ref.js'\nimport { ConditionGroup } from '~/src/conditions/condition-group.js'\nimport { conditionValueFrom } from '~/src/conditions/condition-values.js'\nimport { Coordinator } from '~/src/conditions/enums.js'\nimport { toPresentationString, toExpression } from '~/src/conditions/helpers.js'\nimport { type ConditionsArray } from '~/src/conditions/types.js'\n\ntype ConditionRawObject =\n | ConditionsModel\n | {\n name: string\n conditions: Condition[]\n }\n\nexport class ConditionsModel {\n #groupedConditions: ConditionsArray = []\n #userGroupedConditions: ConditionsArray = []\n #conditionName: string | undefined = undefined\n\n constructor(_conditionsObject?: ConditionRawObject) {}\n\n clone() {\n const toReturn = new ConditionsModel()\n toReturn.#groupedConditions = this.#groupedConditions.map((it) =>\n it.clone()\n )\n toReturn.#userGroupedConditions = this.#userGroupedConditions.map((it) =>\n it.clone()\n )\n toReturn.#conditionName = this.#conditionName\n return toReturn\n }\n\n clear() {\n this.#userGroupedConditions = []\n this.#groupedConditions = []\n this.#conditionName = undefined\n return this\n }\n\n set name(name) {\n this.#conditionName = name\n }\n\n get name() {\n return this.#conditionName\n }\n\n add(condition: Condition) {\n const coordinatorExpected = this.#userGroupedConditions.length !== 0\n\n if (condition.getCoordinator() && !coordinatorExpected) {\n throw Error('No coordinator allowed on the first condition')\n } else if (!condition.getCoordinator() && coordinatorExpected) {\n throw Error('Coordinator must be present on subsequent conditions')\n }\n\n this.#userGroupedConditions.push(condition)\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n\n return this\n }\n\n replace(index: number, condition: Condition) {\n const coordinatorExpected = index !== 0\n\n if (condition.getCoordinator() && !coordinatorExpected) {\n throw Error('No coordinator allowed on the first condition')\n } else if (!condition.getCoordinator() && coordinatorExpected) {\n throw Error('Coordinator must be present on subsequent conditions')\n } else if (index >= this.#userGroupedConditions.length) {\n throw Error(\n `Cannot replace condition ${index} as no such condition exists`\n )\n }\n\n this.#userGroupedConditions.splice(index, 1, condition)\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n\n return this\n }\n\n remove(indexes: number[]) {\n this.#userGroupedConditions = this.#userGroupedConditions\n .filter((_condition, index) => !indexes.includes(index))\n .map((condition, index) =>\n index === 0 ? condition.asFirstCondition() : condition\n )\n\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n addGroups(groupDefs: ConditionGroupDef[]) {\n this.#userGroupedConditions = this._group(\n this.#userGroupedConditions,\n groupDefs\n )\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n splitGroup(index: number) {\n this.#userGroupedConditions = this._ungroup(\n this.#userGroupedConditions,\n index\n )\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n return this\n }\n\n moveEarlier(index: number) {\n if (index > 0 && index < this.#userGroupedConditions.length) {\n this.#userGroupedConditions.splice(\n index - 1,\n 0,\n this.#userGroupedConditions.splice(index, 1)[0]\n )\n if (index === 1) {\n this.switchCoordinators()\n }\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n }\n return this\n }\n\n moveLater(index: number) {\n if (index >= 0 && index < this.#userGroupedConditions.length - 1) {\n this.#userGroupedConditions.splice(\n index + 1,\n 0,\n this.#userGroupedConditions.splice(index, 1)[0]\n )\n if (index === 0) {\n this.switchCoordinators()\n }\n this.#groupedConditions = this._applyGroups(this.#userGroupedConditions)\n }\n return this\n }\n\n switchCoordinators() {\n this.#userGroupedConditions[1].setCoordinator(\n this.#userGroupedConditions[0].getCoordinator()\n )\n this.#userGroupedConditions[0].setCoordinator(undefined)\n }\n\n get asPerUserGroupings() {\n return [...this.#userGroupedConditions]\n }\n\n get hasConditions() {\n return this.#userGroupedConditions.length > 0\n }\n\n get lastIndex() {\n return this.#userGroupedConditions.length - 1\n }\n\n toPresentationString() {\n return this.#groupedConditions\n .map((condition) => toPresentationString(condition))\n .join(' ')\n }\n\n toExpression() {\n return this.#groupedConditions\n .map((condition) => toExpression(condition))\n .join(' ')\n }\n\n _applyGroups(\n userGroupedConditions: (Condition | ConditionGroup | ConditionRef)[]\n ) {\n const correctedUserGroups = userGroupedConditions.map((condition) =>\n condition instanceof ConditionGroup && condition.conditions.length > 2\n ? new ConditionGroup(\n this._group(\n condition.conditions,\n this._autoGroupDefs(condition.conditions)\n )\n )\n : condition\n )\n\n return this._group(\n correctedUserGroups,\n this._autoGroupDefs(correctedUserGroups)\n )\n }\n\n _group(conditions: ConditionsArray, groupDefs: ConditionGroupDef[]) {\n return conditions.reduce((groups, condition, index, conditions) => {\n const groupDef = groupDefs.find((groupDef) => groupDef.contains(index))\n\n if (groupDef) {\n if (groupDef.startsWith(index)) {\n const groupConditions = groupDef.applyTo(conditions)\n groups.push(new ConditionGroup(groupConditions))\n }\n } else {\n groups.push(condition)\n }\n\n return groups\n }, [] as ConditionsArray)\n }\n\n _ungroup(conditions: ConditionsArray, splitIndex: number) {\n if (conditions[splitIndex].isGroup()) {\n const copy = [...conditions]\n copy.splice(\n splitIndex,\n 1,\n ...conditions[splitIndex].getGroupedConditions()\n )\n return copy\n }\n return conditions\n }\n\n _autoGroupDefs(conditions: ConditionsArray) {\n const orPositions: number[] = []\n\n conditions.forEach((condition, index) => {\n if (condition.getCoordinator() === Coordinator.OR) {\n orPositions.push(index)\n }\n })\n\n const hasOr = orPositions.length > 0\n const hasAnd = !!conditions.find(\n (condition) => condition.getCoordinator() === Coordinator.AND\n )\n\n if (hasAnd && hasOr) {\n let start = 0\n const groupDefs: ConditionGroupDef[] = []\n orPositions.forEach((position, index) => {\n if (start < position - 1) {\n groupDefs.push(new ConditionGroupDef(start, position - 1))\n }\n const thisIsTheLastOr = orPositions.length === index + 1\n const thereAreMoreConditions = conditions.length - 1 > position\n if (thisIsTheLastOr && thereAreMoreConditions) {\n groupDefs.push(new ConditionGroupDef(position, conditions.length - 1))\n }\n start = position\n })\n return groupDefs\n }\n\n return []\n }\n\n toJSON() {\n const name = this.#conditionName\n const conditions = this.#userGroupedConditions\n return {\n name,\n conditions: conditions.map((it) => it.clone())\n }\n }\n\n // TODO:- why is this not a constructor?\n static from(obj: ConditionRawObject | ConditionsModel) {\n if (obj instanceof ConditionsModel) {\n return obj\n }\n const toReturn = new ConditionsModel()\n toReturn.#conditionName = obj.name\n toReturn.#userGroupedConditions = obj.conditions.map((condition) =>\n conditionFrom(condition)\n )\n toReturn.#groupedConditions = toReturn._applyGroups(\n toReturn.#userGroupedConditions\n )\n return toReturn\n }\n}\n\ninterface ConditionFrom {\n (\n it: Condition | ConditionRef | ConditionGroup\n ): Condition | ConditionRef | ConditionGroup\n}\n\nconst conditionFrom: ConditionFrom = function (it) {\n if ('conditions' in it) {\n return new ConditionGroup(\n (it as ConditionGroup).conditions.map((condition) =>\n conditionFrom(condition)\n )\n )\n }\n\n if ('conditionName' in it) {\n return new ConditionRef(\n it.conditionName,\n it.conditionDisplayName,\n it.coordinator\n )\n }\n\n return new Condition(\n ConditionField.from(it.field),\n it.operator,\n conditionValueFrom(it.value),\n it.coordinator\n )\n}\n"],"mappings":"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"}
|
@@ -1,111 +0,0 @@
|
|
1
|
-
import { timeUnits, dateUnits, dateTimeUnits, ConditionValue, DateDirections, RelativeTimeValue } from "./condition-values.js";
|
2
|
-
const defaultOperators = {
|
3
|
-
is: inline('=='),
|
4
|
-
'is not': inline('!=')
|
5
|
-
};
|
6
|
-
function withDefaults(param) {
|
7
|
-
return Object.assign({}, param, defaultOperators);
|
8
|
-
}
|
9
|
-
const textBasedFieldCustomisations = {
|
10
|
-
'is longer than': lengthIs('>'),
|
11
|
-
'is shorter than': lengthIs('<'),
|
12
|
-
'has length': lengthIs('==')
|
13
|
-
};
|
14
|
-
const absoluteDateTimeOperators = {
|
15
|
-
is: absoluteDateTime('=='),
|
16
|
-
'is not': absoluteDateTime('!='),
|
17
|
-
'is before': absoluteDateTime('<'),
|
18
|
-
'is after': absoluteDateTime('>')
|
19
|
-
};
|
20
|
-
const relativeTimeOperators = units => ({
|
21
|
-
'is at least': relativeTime('<=', '>=', units),
|
22
|
-
'is at most': relativeTime('>=', '<=', units),
|
23
|
-
'is less than': relativeTime('>', '<', units),
|
24
|
-
'is more than': relativeTime('<', '>', units)
|
25
|
-
});
|
26
|
-
export const customOperators = {
|
27
|
-
CheckboxesField: {
|
28
|
-
contains: reverseInline('in'),
|
29
|
-
'does not contain': not(reverseInline('in'))
|
30
|
-
},
|
31
|
-
NumberField: withDefaults({
|
32
|
-
'is at least': inline('>='),
|
33
|
-
'is at most': inline('<='),
|
34
|
-
'is less than': inline('<'),
|
35
|
-
'is more than': inline('>')
|
36
|
-
}),
|
37
|
-
DateField: Object.assign({}, absoluteDateTimeOperators, relativeTimeOperators(dateUnits)),
|
38
|
-
TimeField: Object.assign({}, absoluteDateTimeOperators, relativeTimeOperators(timeUnits)),
|
39
|
-
DatePartsField: Object.assign({}, absoluteDateTimeOperators, relativeTimeOperators(dateUnits)),
|
40
|
-
DateTimeField: Object.assign({}, absoluteDateTimeOperators, relativeTimeOperators(dateTimeUnits)),
|
41
|
-
DateTimePartsField: Object.assign({}, absoluteDateTimeOperators, relativeTimeOperators(dateTimeUnits)),
|
42
|
-
TextField: withDefaults(textBasedFieldCustomisations),
|
43
|
-
MultilineTextField: withDefaults(textBasedFieldCustomisations),
|
44
|
-
EmailAddressField: withDefaults(textBasedFieldCustomisations)
|
45
|
-
};
|
46
|
-
export function getOperatorNames(fieldType) {
|
47
|
-
return Object.keys(getConditionals(fieldType)).sort();
|
48
|
-
}
|
49
|
-
export function getExpression(fieldType, fieldName, operator, value) {
|
50
|
-
return getConditionals(fieldType)[operator].expression({
|
51
|
-
type: fieldType,
|
52
|
-
name: fieldName
|
53
|
-
}, value);
|
54
|
-
}
|
55
|
-
export function getOperatorConfig(fieldType, operator) {
|
56
|
-
return getConditionals(fieldType)[operator];
|
57
|
-
}
|
58
|
-
function getConditionals(fieldType) {
|
59
|
-
return customOperators[fieldType] || defaultOperators;
|
60
|
-
}
|
61
|
-
function inline(operator) {
|
62
|
-
return {
|
63
|
-
expression: (field, value) => `${field.name} ${operator} ${formatValue(field.type, value.value)}`
|
64
|
-
};
|
65
|
-
}
|
66
|
-
function lengthIs(operator) {
|
67
|
-
return {
|
68
|
-
expression: (field, value) => `length(${field.name}) ${operator} ${value.value}`
|
69
|
-
};
|
70
|
-
}
|
71
|
-
function reverseInline(operator) {
|
72
|
-
return {
|
73
|
-
expression: (field, value) => `${formatValue(field.type, value.value)} ${operator} ${field.name}`
|
74
|
-
};
|
75
|
-
}
|
76
|
-
function not(operatorDefinition) {
|
77
|
-
return {
|
78
|
-
expression: (field, value) => `not (${operatorDefinition.expression(field, value)})`
|
79
|
-
};
|
80
|
-
}
|
81
|
-
function formatValue(fieldType, value) {
|
82
|
-
if (fieldType === 'NumberField' || fieldType === 'YesNoField') {
|
83
|
-
return value;
|
84
|
-
}
|
85
|
-
return `'${value}'`;
|
86
|
-
}
|
87
|
-
export const absoluteDateOrTimeOperatorNames = Object.keys(absoluteDateTimeOperators);
|
88
|
-
export const relativeDateOrTimeOperatorNames = Object.keys(relativeTimeOperators(dateTimeUnits));
|
89
|
-
function absoluteDateTime(operator) {
|
90
|
-
return {
|
91
|
-
expression: (field, value) => {
|
92
|
-
if (value instanceof ConditionValue) {
|
93
|
-
return `${field.name} ${operator} '${value.toExpression()}'`;
|
94
|
-
}
|
95
|
-
throw Error('only Value types are supported');
|
96
|
-
}
|
97
|
-
};
|
98
|
-
}
|
99
|
-
function relativeTime(pastOperator, futureOperator, units) {
|
100
|
-
return {
|
101
|
-
units,
|
102
|
-
expression: (field, value) => {
|
103
|
-
if (value instanceof RelativeTimeValue) {
|
104
|
-
const operator = value.direction === DateDirections.PAST ? pastOperator : futureOperator;
|
105
|
-
return `${field.name} ${operator} ${value.toExpression()}`;
|
106
|
-
}
|
107
|
-
throw Error('time shift requires a TimeShiftValue');
|
108
|
-
}
|
109
|
-
};
|
110
|
-
}
|
111
|
-
//# sourceMappingURL=condition-operators.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"condition-operators.js","names":["timeUnits","dateUnits","dateTimeUnits","ConditionValue","DateDirections","RelativeTimeValue","defaultOperators","is","inline","withDefaults","param","Object","assign","textBasedFieldCustomisations","lengthIs","absoluteDateTimeOperators","absoluteDateTime","relativeTimeOperators","units","relativeTime","customOperators","CheckboxesField","contains","reverseInline","not","NumberField","DateField","TimeField","DatePartsField","DateTimeField","DateTimePartsField","TextField","MultilineTextField","EmailAddressField","getOperatorNames","fieldType","keys","getConditionals","sort","getExpression","fieldName","operator","value","expression","type","name","getOperatorConfig","field","formatValue","operatorDefinition","absoluteDateOrTimeOperatorNames","relativeDateOrTimeOperatorNames","toExpression","Error","pastOperator","futureOperator","direction","PAST"],"sources":["../../../src/conditions/condition-operators.ts"],"sourcesContent":["import {\n type ComponentType,\n type ComponentDef\n} from '~/src/components/types.js'\nimport { ConditionValueAbstract } from '~/src/conditions/condition-value-abstract.js'\nimport {\n timeUnits,\n dateUnits,\n dateTimeUnits,\n ConditionValue,\n DateDirections,\n RelativeTimeValue\n} from '~/src/conditions/condition-values.js'\n\ntype Operator = '==' | '!=' | '>=' | '<=' | '<' | '>'\n\nconst defaultOperators = {\n is: inline('=='),\n 'is not': inline('!=')\n}\n\nfunction withDefaults<T>(param: T) {\n return Object.assign({}, param, defaultOperators)\n}\n\nconst textBasedFieldCustomisations = {\n 'is longer than': lengthIs('>'),\n 'is shorter than': lengthIs('<'),\n 'has length': lengthIs('==')\n}\n\nconst absoluteDateTimeOperators = {\n is: absoluteDateTime('=='),\n 'is not': absoluteDateTime('!='),\n 'is before': absoluteDateTime('<'),\n 'is after': absoluteDateTime('>')\n}\n\nconst relativeTimeOperators = (units) => ({\n 'is at least': relativeTime('<=', '>=', units),\n 'is at most': relativeTime('>=', '<=', units),\n 'is less than': relativeTime('>', '<', units),\n 'is more than': relativeTime('<', '>', units)\n})\n\nexport const customOperators = {\n CheckboxesField: {\n contains: reverseInline('in'),\n 'does not contain': not(reverseInline('in'))\n },\n NumberField: withDefaults({\n 'is at least': inline('>='),\n 'is at most': inline('<='),\n 'is less than': inline('<'),\n 'is more than': inline('>')\n }),\n DateField: Object.assign(\n {},\n absoluteDateTimeOperators,\n relativeTimeOperators(dateUnits)\n ),\n TimeField: Object.assign(\n {},\n absoluteDateTimeOperators,\n relativeTimeOperators(timeUnits)\n ),\n DatePartsField: Object.assign(\n {},\n absoluteDateTimeOperators,\n relativeTimeOperators(dateUnits)\n ),\n DateTimeField: Object.assign(\n {},\n absoluteDateTimeOperators,\n relativeTimeOperators(dateTimeUnits)\n ),\n DateTimePartsField: Object.assign(\n {},\n absoluteDateTimeOperators,\n relativeTimeOperators(dateTimeUnits)\n ),\n TextField: withDefaults(textBasedFieldCustomisations),\n MultilineTextField: withDefaults(textBasedFieldCustomisations),\n EmailAddressField: withDefaults(textBasedFieldCustomisations)\n}\n\nexport function getOperatorNames(fieldType) {\n return Object.keys(getConditionals(fieldType)).sort()\n}\n\nexport function getExpression(\n fieldType: ComponentType,\n fieldName: string,\n operator: string,\n value: ConditionValueAbstract\n) {\n return getConditionals(fieldType)[operator].expression(\n { type: fieldType, name: fieldName },\n value\n )\n}\n\nexport function getOperatorConfig(fieldType: ComponentType, operator) {\n return getConditionals(fieldType)[operator]\n}\n\nfunction getConditionals(fieldType: ComponentType) {\n return customOperators[fieldType] || defaultOperators\n}\n\nfunction inline(operator: Operator) {\n return {\n expression: (field: ComponentDef, value) =>\n `${field.name} ${operator} ${formatValue(field.type, value.value)}`\n }\n}\n\nfunction lengthIs(operator: Operator) {\n return {\n expression: (field: ComponentDef, value) =>\n `length(${field.name}) ${operator} ${value.value}`\n }\n}\n\nfunction reverseInline(operator: 'in') {\n return {\n expression: (field: ComponentDef, value) =>\n `${formatValue(field.type, value.value)} ${operator} ${field.name}`\n }\n}\n\nfunction not(operatorDefinition) {\n return {\n expression: (field: ComponentDef, value) =>\n `not (${operatorDefinition.expression(field, value)})`\n }\n}\n\nfunction formatValue(fieldType: ComponentType, value) {\n if (fieldType === 'NumberField' || fieldType === 'YesNoField') {\n return value\n }\n return `'${value}'`\n}\n\nexport const absoluteDateOrTimeOperatorNames = Object.keys(\n absoluteDateTimeOperators\n)\nexport const relativeDateOrTimeOperatorNames = Object.keys(\n relativeTimeOperators(dateTimeUnits)\n)\n\nfunction absoluteDateTime(operator: Operator) {\n return {\n expression: (field: ComponentDef, value) => {\n if (value instanceof ConditionValue) {\n return `${field.name} ${operator} '${value.toExpression()}'`\n }\n throw Error('only Value types are supported')\n }\n }\n}\n\nfunction relativeTime(pastOperator, futureOperator, units) {\n return {\n units,\n expression: (field: ComponentDef, value) => {\n if (value instanceof RelativeTimeValue) {\n const operator =\n value.direction === DateDirections.PAST\n ? pastOperator\n : futureOperator\n return `${field.name} ${operator} ${value.toExpression()}`\n }\n throw Error('time shift requires a TimeShiftValue')\n }\n }\n}\n"],"mappings":"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"}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
3
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
4
|
-
import { ConditionAbstract } from "./condition-abstract.js";
|
5
|
-
export class ConditionRef extends ConditionAbstract {
|
6
|
-
constructor(conditionName, conditionDisplayName, coordinator) {
|
7
|
-
super(coordinator);
|
8
|
-
_defineProperty(this, "conditionName", void 0);
|
9
|
-
_defineProperty(this, "conditionDisplayName", void 0);
|
10
|
-
if (typeof conditionName !== 'string') {
|
11
|
-
throw Error(`condition name ${conditionName} is not valid`);
|
12
|
-
}
|
13
|
-
if (typeof conditionDisplayName !== 'string') {
|
14
|
-
throw Error(`condition display name ${conditionDisplayName} is not valid`);
|
15
|
-
}
|
16
|
-
this.conditionName = conditionName;
|
17
|
-
this.conditionDisplayName = conditionDisplayName;
|
18
|
-
}
|
19
|
-
asFirstCondition() {
|
20
|
-
this._asFirstCondition();
|
21
|
-
return this;
|
22
|
-
}
|
23
|
-
conditionString() {
|
24
|
-
return `'${this.conditionDisplayName}'`;
|
25
|
-
}
|
26
|
-
conditionExpression() {
|
27
|
-
return this.conditionName;
|
28
|
-
}
|
29
|
-
clone() {
|
30
|
-
return new ConditionRef(this.conditionName, this.conditionDisplayName, this.coordinator);
|
31
|
-
}
|
32
|
-
}
|
33
|
-
//# sourceMappingURL=condition-ref.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"condition-ref.js","names":["ConditionAbstract","ConditionRef","constructor","conditionName","conditionDisplayName","coordinator","_defineProperty","Error","asFirstCondition","_asFirstCondition","conditionString","conditionExpression","clone"],"sources":["../../../src/conditions/condition-ref.ts"],"sourcesContent":["import { ConditionAbstract } from '~/src/conditions/condition-abstract.js'\nimport { Coordinator } from '~/src/conditions/enums.js'\n\nexport class ConditionRef extends ConditionAbstract {\n conditionName: string\n conditionDisplayName: string\n\n constructor(\n conditionName: string,\n conditionDisplayName: string,\n coordinator: Coordinator | undefined\n ) {\n super(coordinator)\n\n if (typeof conditionName !== 'string') {\n throw Error(`condition name ${conditionName} is not valid`)\n }\n\n if (typeof conditionDisplayName !== 'string') {\n throw Error(`condition display name ${conditionDisplayName} is not valid`)\n }\n\n this.conditionName = conditionName\n this.conditionDisplayName = conditionDisplayName\n }\n\n asFirstCondition() {\n this._asFirstCondition()\n return this\n }\n\n conditionString() {\n return `'${this.conditionDisplayName}'`\n }\n\n conditionExpression() {\n return this.conditionName\n }\n\n clone() {\n return new ConditionRef(\n this.conditionName,\n this.conditionDisplayName,\n this.coordinator\n )\n }\n}\n"],"mappings":";;;AAAA,SAASA,iBAAiB;AAG1B,OAAO,MAAMC,YAAY,SAASD,iBAAiB,CAAC;EAIlDE,WAAWA,CACTC,aAAqB,EACrBC,oBAA4B,EAC5BC,WAAoC,EACpC;IACA,KAAK,CAACA,WAAW,CAAC;IAAAC,eAAA;IAAAA,eAAA;IAElB,IAAI,OAAOH,aAAa,KAAK,QAAQ,EAAE;MACrC,MAAMI,KAAK,CAAE,kBAAiBJ,aAAc,eAAc,CAAC;IAC7D;IAEA,IAAI,OAAOC,oBAAoB,KAAK,QAAQ,EAAE;MAC5C,MAAMG,KAAK,CAAE,0BAAyBH,oBAAqB,eAAc,CAAC;IAC5E;IAEA,IAAI,CAACD,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;EAClD;EAEAI,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACC,iBAAiB,CAAC,CAAC;IACxB,OAAO,IAAI;EACb;EAEAC,eAAeA,CAAA,EAAG;IAChB,OAAQ,IAAG,IAAI,CAACN,oBAAqB,GAAE;EACzC;EAEAO,mBAAmBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACR,aAAa;EAC3B;EAEAS,KAAKA,CAAA,EAAG;IACN,OAAO,IAAIX,YAAY,CACrB,IAAI,CAACE,aAAa,EAClB,IAAI,CAACC,oBAAoB,EACzB,IAAI,CAACC,WACP,CAAC;EACH;AACF"}
|
@@ -1,23 +0,0 @@
|
|
1
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
3
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
4
|
-
import { Registration } from "./condition-value-registration.js";
|
5
|
-
export class ConditionValueAbstract {
|
6
|
-
constructor(registration) {
|
7
|
-
_defineProperty(this, "type", void 0);
|
8
|
-
if (new.target === ConditionValueAbstract) {
|
9
|
-
throw new TypeError('Cannot construct ConditionValue instances directly');
|
10
|
-
}
|
11
|
-
if (!(registration instanceof Registration)) {
|
12
|
-
throw new TypeError('You must register your value type! Call registerValueType!');
|
13
|
-
}
|
14
|
-
this.type = registration.type;
|
15
|
-
}
|
16
|
-
toPresentationString() {
|
17
|
-
throw new Error('Unsupported Operation. Method toPresentationString have not been implemented');
|
18
|
-
}
|
19
|
-
toExpression() {
|
20
|
-
throw new Error('Unsupported Operation. Method toExpression have not been implemented');
|
21
|
-
}
|
22
|
-
}
|
23
|
-
//# sourceMappingURL=condition-value-abstract.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"condition-value-abstract.js","names":["Registration","ConditionValueAbstract","constructor","registration","_defineProperty","new","target","TypeError","type","toPresentationString","Error","toExpression"],"sources":["../../../src/conditions/condition-value-abstract.ts"],"sourcesContent":["import { Registration } from '~/src/conditions/condition-value-registration.js'\n\nexport class ConditionValueAbstract {\n type: string\n\n constructor(registration: Registration) {\n if (new.target === ConditionValueAbstract) {\n throw new TypeError('Cannot construct ConditionValue instances directly')\n }\n\n if (!(registration instanceof Registration)) {\n throw new TypeError(\n 'You must register your value type! Call registerValueType!'\n )\n }\n\n this.type = registration.type\n }\n\n toPresentationString() {\n throw new Error(\n 'Unsupported Operation. Method toPresentationString have not been implemented'\n )\n }\n\n toExpression() {\n throw new Error(\n 'Unsupported Operation. Method toExpression have not been implemented'\n )\n }\n}\n"],"mappings":";;;AAAA,SAASA,YAAY;AAErB,OAAO,MAAMC,sBAAsB,CAAC;EAGlCC,WAAWA,CAACC,YAA0B,EAAE;IAAAC,eAAA;IACtC,IAAIC,GAAG,CAACC,MAAM,KAAKL,sBAAsB,EAAE;MACzC,MAAM,IAAIM,SAAS,CAAC,oDAAoD,CAAC;IAC3E;IAEA,IAAI,EAAEJ,YAAY,YAAYH,YAAY,CAAC,EAAE;MAC3C,MAAM,IAAIO,SAAS,CACjB,4DACF,CAAC;IACH;IAEA,IAAI,CAACC,IAAI,GAAGL,YAAY,CAACK,IAAI;EAC/B;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,MAAM,IAAIC,KAAK,CACb,8EACF,CAAC;EACH;EAEAC,YAAYA,CAAA,EAAG;IACb,MAAM,IAAID,KAAK,CACb,sEACF,CAAC;EACH;AACF"}
|
@@ -1,18 +0,0 @@
|
|
1
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
3
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
4
|
-
const conditionValueFactories = {};
|
5
|
-
export class Registration {
|
6
|
-
constructor(type, factory) {
|
7
|
-
_defineProperty(this, "type", void 0);
|
8
|
-
conditionValueFactories[type] = factory;
|
9
|
-
this.type = type;
|
10
|
-
}
|
11
|
-
static register(type, factory) {
|
12
|
-
return new Registration(type, factory);
|
13
|
-
}
|
14
|
-
static conditionValueFrom(obj) {
|
15
|
-
return conditionValueFactories[obj.type](obj);
|
16
|
-
}
|
17
|
-
}
|
18
|
-
//# sourceMappingURL=condition-value-registration.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"condition-value-registration.js","names":["conditionValueFactories","Registration","constructor","type","factory","_defineProperty","register","conditionValueFrom","obj"],"sources":["../../../src/conditions/condition-value-registration.ts"],"sourcesContent":["const conditionValueFactories = {}\n\nexport class Registration {\n type: string\n\n constructor(type: string, factory: (obj: any) => Registration) {\n conditionValueFactories[type] = factory\n this.type = type\n }\n\n static register(type: string, factory: (obj: any) => Registration) {\n return new Registration(type, factory)\n }\n\n static conditionValueFrom(obj: { type: string; [prop: string]: any }) {\n return conditionValueFactories[obj.type](obj)\n }\n}\n"],"mappings":";;;AAAA,MAAMA,uBAAuB,GAAG,CAAC,CAAC;AAElC,OAAO,MAAMC,YAAY,CAAC;EAGxBC,WAAWA,CAACC,IAAY,EAAEC,OAAmC,EAAE;IAAAC,eAAA;IAC7DL,uBAAuB,CAACG,IAAI,CAAC,GAAGC,OAAO;IACvC,IAAI,CAACD,IAAI,GAAGA,IAAI;EAClB;EAEA,OAAOG,QAAQA,CAACH,IAAY,EAAEC,OAAmC,EAAE;IACjE,OAAO,IAAIH,YAAY,CAACE,IAAI,EAAEC,OAAO,CAAC;EACxC;EAEA,OAAOG,kBAAkBA,CAACC,GAA0C,EAAE;IACpE,OAAOR,uBAAuB,CAACQ,GAAG,CAACL,IAAI,CAAC,CAACK,GAAG,CAAC;EAC/C;AACF"}
|
@@ -1,107 +0,0 @@
|
|
1
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
3
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
4
|
-
import { ConditionValueAbstract } from "./condition-value-abstract.js";
|
5
|
-
import { Registration } from "./condition-value-registration.js";
|
6
|
-
export class ConditionValue extends ConditionValueAbstract {
|
7
|
-
constructor(value, display) {
|
8
|
-
super(valueType);
|
9
|
-
_defineProperty(this, "value", void 0);
|
10
|
-
_defineProperty(this, "display", void 0);
|
11
|
-
if (!value || typeof value !== 'string') {
|
12
|
-
throw Error(`value ${value} is not valid`);
|
13
|
-
}
|
14
|
-
if (display && typeof display !== 'string') {
|
15
|
-
throw Error(`display ${display} is not valid`);
|
16
|
-
}
|
17
|
-
this.value = value;
|
18
|
-
this.display = display || value;
|
19
|
-
}
|
20
|
-
toPresentationString() {
|
21
|
-
return this.display;
|
22
|
-
}
|
23
|
-
toExpression() {
|
24
|
-
return this.value;
|
25
|
-
}
|
26
|
-
static from(obj) {
|
27
|
-
return new ConditionValue(obj.value, obj.display);
|
28
|
-
}
|
29
|
-
clone() {
|
30
|
-
return ConditionValue.from(this);
|
31
|
-
}
|
32
|
-
}
|
33
|
-
const valueType = Registration.register('Value', obj => ConditionValue.from(obj));
|
34
|
-
export let DateDirections = /*#__PURE__*/function (DateDirections) {
|
35
|
-
DateDirections["FUTURE"] = "in the future";
|
36
|
-
DateDirections["PAST"] = "in the past";
|
37
|
-
return DateDirections;
|
38
|
-
}({});
|
39
|
-
export const dateUnits = {
|
40
|
-
YEARS: {
|
41
|
-
display: 'year(s)',
|
42
|
-
value: 'years'
|
43
|
-
},
|
44
|
-
MONTHS: {
|
45
|
-
display: 'month(s)',
|
46
|
-
value: 'months'
|
47
|
-
},
|
48
|
-
DAYS: {
|
49
|
-
display: 'day(s)',
|
50
|
-
value: 'days'
|
51
|
-
}
|
52
|
-
};
|
53
|
-
export const timeUnits = {
|
54
|
-
HOURS: {
|
55
|
-
display: 'hour(s)',
|
56
|
-
value: 'hours'
|
57
|
-
},
|
58
|
-
MINUTES: {
|
59
|
-
display: 'minute(s)',
|
60
|
-
value: 'minutes'
|
61
|
-
},
|
62
|
-
SECONDS: {
|
63
|
-
display: 'second(s)',
|
64
|
-
value: 'seconds'
|
65
|
-
}
|
66
|
-
};
|
67
|
-
export const dateTimeUnits = Object.assign({}, dateUnits, timeUnits);
|
68
|
-
export class RelativeTimeValue extends ConditionValueAbstract {
|
69
|
-
constructor(timePeriod, timeUnit, direction, timeOnly = false) {
|
70
|
-
super(relativeTimeValueType);
|
71
|
-
_defineProperty(this, "timePeriod", void 0);
|
72
|
-
_defineProperty(this, "timeUnit", void 0);
|
73
|
-
_defineProperty(this, "direction", void 0);
|
74
|
-
_defineProperty(this, "timeOnly", void 0);
|
75
|
-
if (typeof timePeriod !== 'string') {
|
76
|
-
throw Error(`time period ${timePeriod} is not valid`);
|
77
|
-
}
|
78
|
-
if (!Object.values(dateTimeUnits).map(unit => unit.value).includes(timeUnit)) {
|
79
|
-
throw Error(`time unit ${timeUnit} is not valid`);
|
80
|
-
}
|
81
|
-
if (!Object.values(DateDirections).includes(direction)) {
|
82
|
-
throw Error(`direction ${direction} is not valid`);
|
83
|
-
}
|
84
|
-
this.timePeriod = timePeriod;
|
85
|
-
this.timeUnit = timeUnit;
|
86
|
-
this.direction = direction;
|
87
|
-
this.timeOnly = timeOnly;
|
88
|
-
}
|
89
|
-
toPresentationString() {
|
90
|
-
return `${this.timePeriod} ${this.timeUnit} ${this.direction}`;
|
91
|
-
}
|
92
|
-
toExpression() {
|
93
|
-
const timePeriod = this.direction === DateDirections.PAST ? 0 - Number(this.timePeriod) : this.timePeriod;
|
94
|
-
return this.timeOnly ? `timeForComparison(${timePeriod}, '${this.timeUnit}')` : `dateForComparison(${timePeriod}, '${this.timeUnit}')`;
|
95
|
-
}
|
96
|
-
static from(obj) {
|
97
|
-
return new RelativeTimeValue(obj.timePeriod, obj.timeUnit, obj.direction, obj.timeOnly);
|
98
|
-
}
|
99
|
-
clone() {
|
100
|
-
return RelativeTimeValue.from(this);
|
101
|
-
}
|
102
|
-
}
|
103
|
-
export const relativeTimeValueType = Registration.register('RelativeTime', obj => RelativeTimeValue.from(obj));
|
104
|
-
export function conditionValueFrom(obj) {
|
105
|
-
return Registration.conditionValueFrom(obj);
|
106
|
-
}
|
107
|
-
//# sourceMappingURL=condition-values.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"condition-values.js","names":["ConditionValueAbstract","Registration","ConditionValue","constructor","value","display","valueType","_defineProperty","Error","toPresentationString","toExpression","from","obj","clone","register","DateDirections","dateUnits","YEARS","MONTHS","DAYS","timeUnits","HOURS","MINUTES","SECONDS","dateTimeUnits","Object","assign","RelativeTimeValue","timePeriod","timeUnit","direction","timeOnly","relativeTimeValueType","values","map","unit","includes","PAST","Number","conditionValueFrom"],"sources":["../../../src/conditions/condition-values.ts"],"sourcesContent":["import { ConditionValueAbstract } from '~/src/conditions/condition-value-abstract.js'\nimport { Registration } from '~/src/conditions/condition-value-registration.js'\nimport {\n type DateTimeUnitValues,\n type DateUnits,\n type TimeUnits\n} from '~/src/conditions/types.js'\n\nexport class ConditionValue extends ConditionValueAbstract {\n value: string\n display: string\n\n constructor(value: string, display?: string) {\n super(valueType)\n\n if (!value || typeof value !== 'string') {\n throw Error(`value ${value} is not valid`)\n }\n\n if (display && typeof display !== 'string') {\n throw Error(`display ${display} is not valid`)\n }\n\n this.value = value\n this.display = display || value\n }\n\n toPresentationString() {\n return this.display\n }\n\n toExpression() {\n return this.value\n }\n\n static from(obj: { value: string; display?: string }) {\n return new ConditionValue(obj.value, obj.display)\n }\n\n clone() {\n return ConditionValue.from(this)\n }\n}\n\nconst valueType = Registration.register('Value', (obj) =>\n ConditionValue.from(obj)\n)\n\nexport enum DateDirections {\n FUTURE = 'in the future',\n PAST = 'in the past'\n}\n\nexport const dateUnits: DateUnits = {\n YEARS: { display: 'year(s)', value: 'years' },\n MONTHS: { display: 'month(s)', value: 'months' },\n DAYS: { display: 'day(s)', value: 'days' }\n}\n\nexport const timeUnits: TimeUnits = {\n HOURS: { display: 'hour(s)', value: 'hours' },\n MINUTES: { display: 'minute(s)', value: 'minutes' },\n SECONDS: { display: 'second(s)', value: 'seconds' }\n}\n\nexport const dateTimeUnits: DateUnits & TimeUnits = Object.assign(\n {},\n dateUnits,\n timeUnits\n)\n\nexport class RelativeTimeValue extends ConditionValueAbstract {\n timePeriod: string\n timeUnit: DateTimeUnitValues\n direction: DateDirections\n timeOnly: boolean\n\n constructor(\n timePeriod: string,\n timeUnit: DateTimeUnitValues,\n direction: DateDirections,\n timeOnly = false\n ) {\n super(relativeTimeValueType)\n\n if (typeof timePeriod !== 'string') {\n throw Error(`time period ${timePeriod} is not valid`)\n }\n\n if (\n !Object.values(dateTimeUnits)\n .map((unit) => unit.value)\n .includes(timeUnit)\n ) {\n throw Error(`time unit ${timeUnit} is not valid`)\n }\n\n if (!Object.values(DateDirections).includes(direction)) {\n throw Error(`direction ${direction} is not valid`)\n }\n\n this.timePeriod = timePeriod\n this.timeUnit = timeUnit\n this.direction = direction\n this.timeOnly = timeOnly\n }\n\n toPresentationString() {\n return `${this.timePeriod} ${this.timeUnit} ${this.direction}`\n }\n\n toExpression(): string {\n const timePeriod =\n this.direction === DateDirections.PAST\n ? 0 - Number(this.timePeriod)\n : this.timePeriod\n return this.timeOnly\n ? `timeForComparison(${timePeriod}, '${this.timeUnit}')`\n : `dateForComparison(${timePeriod}, '${this.timeUnit}')`\n }\n\n static from(obj) {\n return new RelativeTimeValue(\n obj.timePeriod,\n obj.timeUnit,\n obj.direction,\n obj.timeOnly\n )\n }\n\n clone() {\n return RelativeTimeValue.from(this)\n }\n}\n\nexport const relativeTimeValueType = Registration.register(\n 'RelativeTime',\n (obj): RelativeTimeValue => RelativeTimeValue.from(obj)\n)\n\ntype ConditionValueFrom =\n | Pick<ConditionValue, 'type' | 'value' | 'display'>\n | Pick<\n RelativeTimeValue,\n 'type' | 'timePeriod' | 'timeUnit' | 'direction' | 'timeOnly'\n >\n\nexport function conditionValueFrom(obj: ConditionValueFrom) {\n return Registration.conditionValueFrom(obj)\n}\n"],"mappings":"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"}
|