@satoshibits/functional 1.1.3 → 1.2.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/array-utils.test.d.ts +2 -0
- package/dist/array-utils.test.d.ts.map +1 -0
- package/dist/array-utils.test.js +256 -0
- package/dist/array-utils.test.js.map +1 -0
- package/dist/composition.test.d.ts +2 -0
- package/dist/composition.test.d.ts.map +1 -0
- package/dist/composition.test.js +409 -0
- package/dist/composition.test.js.map +1 -0
- package/dist/integration.test.d.mts +2 -0
- package/dist/integration.test.d.mts.map +1 -0
- package/dist/integration.test.mjs +486 -0
- package/dist/integration.test.mjs.map +1 -0
- package/dist/io.test.d.mts +2 -0
- package/dist/io.test.d.mts.map +1 -0
- package/dist/io.test.mjs +373 -0
- package/dist/io.test.mjs.map +1 -0
- package/dist/laws.test.d.mts +2 -0
- package/dist/laws.test.d.mts.map +1 -0
- package/dist/laws.test.mjs +614 -0
- package/dist/laws.test.mjs.map +1 -0
- package/dist/object-utils.test.d.ts +2 -0
- package/dist/object-utils.test.d.ts.map +1 -0
- package/dist/object-utils.test.js +286 -0
- package/dist/object-utils.test.js.map +1 -0
- package/dist/option-additions.test.d.mts +2 -0
- package/dist/option-additions.test.d.mts.map +1 -0
- package/dist/option-additions.test.mjs +325 -0
- package/dist/option-additions.test.mjs.map +1 -0
- package/dist/option.test.d.ts +6 -0
- package/dist/option.test.d.ts.map +1 -0
- package/dist/option.test.js +606 -0
- package/dist/option.test.js.map +1 -0
- package/dist/performance.test.d.ts +2 -0
- package/dist/performance.test.d.ts.map +1 -0
- package/dist/performance.test.js +424 -0
- package/dist/performance.test.js.map +1 -0
- package/dist/pipeline.test.d.ts +2 -0
- package/dist/pipeline.test.d.ts.map +1 -0
- package/dist/pipeline.test.js +445 -0
- package/dist/pipeline.test.js.map +1 -0
- package/dist/predicates.test.d.ts +2 -0
- package/dist/predicates.test.d.ts.map +1 -0
- package/dist/predicates.test.js +375 -0
- package/dist/predicates.test.js.map +1 -0
- package/dist/reader-result.d.mts +72 -0
- package/dist/reader-result.d.mts.map +1 -1
- package/dist/reader-result.mjs +89 -0
- package/dist/reader-result.mjs.map +1 -1
- package/dist/reader-result.test.d.ts +2 -0
- package/dist/reader-result.test.d.ts.map +1 -0
- package/dist/reader-result.test.js +1397 -0
- package/dist/reader-result.test.js.map +1 -0
- package/dist/reader.test.d.mts +2 -0
- package/dist/reader.test.d.mts.map +1 -0
- package/dist/reader.test.mjs +288 -0
- package/dist/reader.test.mjs.map +1 -0
- package/dist/result-additions.test.d.mts +2 -0
- package/dist/result-additions.test.d.mts.map +1 -0
- package/dist/result-additions.test.mjs +325 -0
- package/dist/result-additions.test.mjs.map +1 -0
- package/dist/result.test.d.ts +2 -0
- package/dist/result.test.d.ts.map +1 -0
- package/dist/result.test.js +453 -0
- package/dist/result.test.js.map +1 -0
- package/dist/task.test.d.mts +2 -0
- package/dist/task.test.d.mts.map +1 -0
- package/dist/task.test.mjs +1004 -0
- package/dist/task.test.mjs.map +1 -0
- package/dist/types.test.d.ts +6 -0
- package/dist/types.test.d.ts.map +1 -0
- package/dist/types.test.js +447 -0
- package/dist/types.test.js.map +1 -0
- package/dist/validation.test.d.ts +2 -0
- package/dist/validation.test.d.ts.map +1 -0
- package/dist/validation.test.js +518 -0
- package/dist/validation.test.js.map +1 -0
- package/package.json +13 -12
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var vitest_1 = require("vitest");
|
|
4
|
+
var predicates_mjs_1 = require("./predicates.mjs");
|
|
5
|
+
(0, vitest_1.describe)('predicates', function () {
|
|
6
|
+
(0, vitest_1.describe)('and', function () {
|
|
7
|
+
(0, vitest_1.it)('should return true when all predicates are true', function () {
|
|
8
|
+
var isPositive = function (n) { return n > 0; };
|
|
9
|
+
var isEven = function (n) { return n % 2 === 0; };
|
|
10
|
+
var isPositiveEven = (0, predicates_mjs_1.and)(isPositive, isEven);
|
|
11
|
+
(0, vitest_1.expect)(isPositiveEven(4)).toBe(true);
|
|
12
|
+
(0, vitest_1.expect)(isPositiveEven(2)).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.it)('should return false when any predicate is false', function () {
|
|
15
|
+
var isPositive = function (n) { return n > 0; };
|
|
16
|
+
var isEven = function (n) { return n % 2 === 0; };
|
|
17
|
+
var isPositiveEven = (0, predicates_mjs_1.and)(isPositive, isEven);
|
|
18
|
+
(0, vitest_1.expect)(isPositiveEven(-2)).toBe(false); // not positive
|
|
19
|
+
(0, vitest_1.expect)(isPositiveEven(3)).toBe(false); // not even
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)('should handle empty predicate list', function () {
|
|
22
|
+
var alwaysTrue = (0, predicates_mjs_1.and)();
|
|
23
|
+
(0, vitest_1.expect)(alwaysTrue(42)).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('should work with multiple predicates', function () {
|
|
26
|
+
var hasName = function (user) { return !!user.name; };
|
|
27
|
+
var hasEmail = function (user) { return !!user.email; };
|
|
28
|
+
var isAdult = function (user) { var _a; return ((_a = user.age) !== null && _a !== void 0 ? _a : 0) >= 18; };
|
|
29
|
+
var isValidAdultUser = (0, predicates_mjs_1.and)(hasName, hasEmail, isAdult);
|
|
30
|
+
(0, vitest_1.expect)(isValidAdultUser({ name: 'John', email: 'john@example.com', age: 25 })).toBe(true);
|
|
31
|
+
(0, vitest_1.expect)(isValidAdultUser({ name: 'John', email: 'john@example.com', age: 17 })).toBe(false);
|
|
32
|
+
(0, vitest_1.expect)(isValidAdultUser({ name: 'John', age: 25 })).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.describe)('or', function () {
|
|
36
|
+
(0, vitest_1.it)('should return true when at least one predicate is true', function () {
|
|
37
|
+
var isAdmin = function (user) { return user.role === 'admin'; };
|
|
38
|
+
var isModerator = function (user) { return user.role === 'moderator'; };
|
|
39
|
+
var hasPrivileges = (0, predicates_mjs_1.or)(isAdmin, isModerator);
|
|
40
|
+
(0, vitest_1.expect)(hasPrivileges({ role: 'admin' })).toBe(true);
|
|
41
|
+
(0, vitest_1.expect)(hasPrivileges({ role: 'moderator' })).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('should return false when all predicates are false', function () {
|
|
44
|
+
var isAdmin = function (user) { return user.role === 'admin'; };
|
|
45
|
+
var isModerator = function (user) { return user.role === 'moderator'; };
|
|
46
|
+
var hasPrivileges = (0, predicates_mjs_1.or)(isAdmin, isModerator);
|
|
47
|
+
(0, vitest_1.expect)(hasPrivileges({ role: 'user' })).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.it)('should handle empty predicate list', function () {
|
|
50
|
+
var alwaysFalse = (0, predicates_mjs_1.or)();
|
|
51
|
+
(0, vitest_1.expect)(alwaysFalse(42)).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.it)('should work with multiple payment methods', function () {
|
|
54
|
+
var hasCreditCard = function (payment) { return payment.type === 'credit'; };
|
|
55
|
+
var hasPayPal = function (payment) { return payment.type === 'paypal'; };
|
|
56
|
+
var hasCrypto = function (payment) { return payment.type === 'crypto'; };
|
|
57
|
+
var acceptsPayment = (0, predicates_mjs_1.or)(hasCreditCard, hasPayPal, hasCrypto);
|
|
58
|
+
(0, vitest_1.expect)(acceptsPayment({ type: 'paypal' })).toBe(true);
|
|
59
|
+
(0, vitest_1.expect)(acceptsPayment({ type: 'cash' })).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.describe)('not', function () {
|
|
63
|
+
(0, vitest_1.it)('should invert predicate result', function () {
|
|
64
|
+
var isPositive = function (n) { return n > 0; };
|
|
65
|
+
var isNegativeOrZero = (0, predicates_mjs_1.not)(isPositive);
|
|
66
|
+
(0, vitest_1.expect)(isNegativeOrZero(-5)).toBe(true);
|
|
67
|
+
(0, vitest_1.expect)(isNegativeOrZero(0)).toBe(true);
|
|
68
|
+
(0, vitest_1.expect)(isNegativeOrZero(5)).toBe(false);
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.it)('should work with complex predicates', function () {
|
|
71
|
+
var isError = function (log) { return log.level === 'error'; };
|
|
72
|
+
var isNotError = (0, predicates_mjs_1.not)(isError);
|
|
73
|
+
(0, vitest_1.expect)(isNotError({ level: 'info' })).toBe(true);
|
|
74
|
+
(0, vitest_1.expect)(isNotError({ level: 'error' })).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.describe)('xor', function () {
|
|
78
|
+
(0, vitest_1.it)('should return true when exactly one predicate is true', function () {
|
|
79
|
+
var hasUsername = function (auth) { return !!auth.username; };
|
|
80
|
+
var hasEmail = function (auth) { return !!auth.email; };
|
|
81
|
+
var hasExactlyOneIdentifier = (0, predicates_mjs_1.xor)(hasUsername, hasEmail);
|
|
82
|
+
(0, vitest_1.expect)(hasExactlyOneIdentifier({ username: 'john' })).toBe(true);
|
|
83
|
+
(0, vitest_1.expect)(hasExactlyOneIdentifier({ email: 'john@example.com' })).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
(0, vitest_1.it)('should return false when both or neither predicate is true', function () {
|
|
86
|
+
var hasUsername = function (auth) { return !!auth.username; };
|
|
87
|
+
var hasEmail = function (auth) { return !!auth.email; };
|
|
88
|
+
var hasExactlyOneIdentifier = (0, predicates_mjs_1.xor)(hasUsername, hasEmail);
|
|
89
|
+
(0, vitest_1.expect)(hasExactlyOneIdentifier({ username: 'john', email: 'j@e.com' })).toBe(false);
|
|
90
|
+
(0, vitest_1.expect)(hasExactlyOneIdentifier({})).toBe(false);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
(0, vitest_1.describe)('isNotNil', function () {
|
|
94
|
+
(0, vitest_1.it)('should return true for non-null/undefined values', function () {
|
|
95
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)('string')).toBe(true);
|
|
96
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)(0)).toBe(true);
|
|
97
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)(false)).toBe(true);
|
|
98
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)('')).toBe(true);
|
|
99
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)([])).toBe(true);
|
|
100
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)({})).toBe(true);
|
|
101
|
+
});
|
|
102
|
+
(0, vitest_1.it)('should return false for null and undefined', function () {
|
|
103
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)(null)).toBe(false);
|
|
104
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotNil)(undefined)).toBe(false);
|
|
105
|
+
});
|
|
106
|
+
(0, vitest_1.it)('should work as type guard in filter', function () {
|
|
107
|
+
var values = ['a', null, 'b', undefined, 'c'];
|
|
108
|
+
var nonNullValues = values.filter(predicates_mjs_1.isNotNil);
|
|
109
|
+
(0, vitest_1.expect)(nonNullValues).toEqual(['a', 'b', 'c']);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.describe)('isNil', function () {
|
|
113
|
+
(0, vitest_1.it)('should return true for null and undefined', function () {
|
|
114
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNil)(null)).toBe(true);
|
|
115
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNil)(undefined)).toBe(true);
|
|
116
|
+
});
|
|
117
|
+
(0, vitest_1.it)('should return false for non-null/undefined values', function () {
|
|
118
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNil)('string')).toBe(false);
|
|
119
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNil)(0)).toBe(false);
|
|
120
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNil)(false)).toBe(false);
|
|
121
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNil)('')).toBe(false);
|
|
122
|
+
});
|
|
123
|
+
(0, vitest_1.it)('should work in filtering', function () {
|
|
124
|
+
var values = [1, null, 2, undefined, 3];
|
|
125
|
+
var nilValues = values.filter(predicates_mjs_1.isNil);
|
|
126
|
+
(0, vitest_1.expect)(nilValues).toEqual([null, undefined]);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
(0, vitest_1.describe)('isEmpty', function () {
|
|
130
|
+
(0, vitest_1.it)('should return true for empty values', function () {
|
|
131
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)(null)).toBe(true);
|
|
132
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)(undefined)).toBe(true);
|
|
133
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)('')).toBe(true);
|
|
134
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)([])).toBe(true);
|
|
135
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)({})).toBe(true);
|
|
136
|
+
});
|
|
137
|
+
(0, vitest_1.it)('should return false for non-empty values', function () {
|
|
138
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)('hello')).toBe(false);
|
|
139
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)([1, 2, 3])).toBe(false);
|
|
140
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)({ a: 1 })).toBe(false);
|
|
141
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)(0)).toBe(false);
|
|
142
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isEmpty)(false)).toBe(false);
|
|
143
|
+
});
|
|
144
|
+
(0, vitest_1.it)('should work with form validation', function () {
|
|
145
|
+
var formData = { name: '', email: 'test@example.com', bio: null };
|
|
146
|
+
var emptyFields = Object.entries(formData)
|
|
147
|
+
.filter(function (_a) {
|
|
148
|
+
var value = _a[1];
|
|
149
|
+
return (0, predicates_mjs_1.isEmpty)(value);
|
|
150
|
+
})
|
|
151
|
+
.map(function (_a) {
|
|
152
|
+
var key = _a[0];
|
|
153
|
+
return key;
|
|
154
|
+
});
|
|
155
|
+
(0, vitest_1.expect)(emptyFields).toEqual(['name', 'bio']);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
(0, vitest_1.describe)('isNotEmpty', function () {
|
|
159
|
+
(0, vitest_1.it)('should return true for non-empty values', function () {
|
|
160
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotEmpty)('hello')).toBe(true);
|
|
161
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotEmpty)([1])).toBe(true);
|
|
162
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotEmpty)({ a: 1 })).toBe(true);
|
|
163
|
+
});
|
|
164
|
+
(0, vitest_1.it)('should return false for empty values', function () {
|
|
165
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotEmpty)('')).toBe(false);
|
|
166
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotEmpty)([])).toBe(false);
|
|
167
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotEmpty)({})).toBe(false);
|
|
168
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.isNotEmpty)(null)).toBe(false);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
(0, vitest_1.describe)('equals', function () {
|
|
172
|
+
(0, vitest_1.it)('should create a predicate checking equality', function () {
|
|
173
|
+
var isJohn = (0, predicates_mjs_1.equals)('John');
|
|
174
|
+
(0, vitest_1.expect)(isJohn('John')).toBe(true);
|
|
175
|
+
(0, vitest_1.expect)(isJohn('Jane')).toBe(false);
|
|
176
|
+
});
|
|
177
|
+
(0, vitest_1.it)('should work with filtering', function () {
|
|
178
|
+
var names = ['John', 'Jane', 'John', 'Jack'];
|
|
179
|
+
var johns = names.filter((0, predicates_mjs_1.equals)('John'));
|
|
180
|
+
(0, vitest_1.expect)(johns).toEqual(['John', 'John']);
|
|
181
|
+
});
|
|
182
|
+
(0, vitest_1.it)('should work with numbers', function () {
|
|
183
|
+
var isZero = (0, predicates_mjs_1.equals)(0);
|
|
184
|
+
(0, vitest_1.expect)(isZero(0)).toBe(true);
|
|
185
|
+
(0, vitest_1.expect)(isZero(1)).toBe(false);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
(0, vitest_1.describe)('oneOf', function () {
|
|
189
|
+
(0, vitest_1.it)('should check if value is in array', function () {
|
|
190
|
+
var isWeekend = (0, predicates_mjs_1.oneOf)(['Saturday', 'Sunday']);
|
|
191
|
+
(0, vitest_1.expect)(isWeekend('Saturday')).toBe(true);
|
|
192
|
+
(0, vitest_1.expect)(isWeekend('Monday')).toBe(false);
|
|
193
|
+
});
|
|
194
|
+
(0, vitest_1.it)('should work with permissions', function () {
|
|
195
|
+
var canEdit = (0, predicates_mjs_1.oneOf)(['admin', 'editor', 'author']);
|
|
196
|
+
(0, vitest_1.expect)(canEdit('admin')).toBe(true);
|
|
197
|
+
(0, vitest_1.expect)(canEdit('viewer')).toBe(false);
|
|
198
|
+
});
|
|
199
|
+
(0, vitest_1.it)('should handle empty array', function () {
|
|
200
|
+
var neverTrue = (0, predicates_mjs_1.oneOf)([]);
|
|
201
|
+
(0, vitest_1.expect)(neverTrue('anything')).toBe(false);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
(0, vitest_1.describe)('inRange', function () {
|
|
205
|
+
(0, vitest_1.it)('should check inclusive range', function () {
|
|
206
|
+
var isValidAge = (0, predicates_mjs_1.inRange)(18, 65);
|
|
207
|
+
(0, vitest_1.expect)(isValidAge(17)).toBe(false);
|
|
208
|
+
(0, vitest_1.expect)(isValidAge(18)).toBe(true);
|
|
209
|
+
(0, vitest_1.expect)(isValidAge(30)).toBe(true);
|
|
210
|
+
(0, vitest_1.expect)(isValidAge(65)).toBe(true);
|
|
211
|
+
(0, vitest_1.expect)(isValidAge(66)).toBe(false);
|
|
212
|
+
});
|
|
213
|
+
(0, vitest_1.it)('should work with decimal numbers', function () {
|
|
214
|
+
var isValidGPA = (0, predicates_mjs_1.inRange)(0.0, 4.0);
|
|
215
|
+
(0, vitest_1.expect)(isValidGPA(-0.1)).toBe(false);
|
|
216
|
+
(0, vitest_1.expect)(isValidGPA(2.5)).toBe(true);
|
|
217
|
+
(0, vitest_1.expect)(isValidGPA(4.1)).toBe(false);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
(0, vitest_1.describe)('matches', function () {
|
|
221
|
+
(0, vitest_1.it)('should match regular expressions', function () {
|
|
222
|
+
var isEmail = (0, predicates_mjs_1.matches)(/^[^\s@]+@[^\s@]+\.[^\s@]+$/);
|
|
223
|
+
(0, vitest_1.expect)(isEmail('test@example.com')).toBe(true);
|
|
224
|
+
(0, vitest_1.expect)(isEmail('invalid-email')).toBe(false);
|
|
225
|
+
});
|
|
226
|
+
(0, vitest_1.it)('should work with phone numbers', function () {
|
|
227
|
+
var isPhoneNumber = (0, predicates_mjs_1.matches)(/^\+?[\d\s-()]+$/);
|
|
228
|
+
(0, vitest_1.expect)(isPhoneNumber('+1 (555) 123-4567')).toBe(true);
|
|
229
|
+
(0, vitest_1.expect)(isPhoneNumber('not a phone')).toBe(false);
|
|
230
|
+
});
|
|
231
|
+
(0, vitest_1.it)('should handle case sensitivity', function () {
|
|
232
|
+
var startsWithHello = (0, predicates_mjs_1.matches)(/^hello/);
|
|
233
|
+
var startsWithHelloIgnoreCase = (0, predicates_mjs_1.matches)(/^hello/i);
|
|
234
|
+
(0, vitest_1.expect)(startsWithHello('Hello world')).toBe(false);
|
|
235
|
+
(0, vitest_1.expect)(startsWithHelloIgnoreCase('Hello world')).toBe(true);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
(0, vitest_1.describe)('hasProperty', function () {
|
|
239
|
+
(0, vitest_1.it)('should check for property existence', function () {
|
|
240
|
+
var hasEmail = (0, predicates_mjs_1.hasProperty)('email');
|
|
241
|
+
var users = [
|
|
242
|
+
{ name: 'John', email: 'john@example.com' },
|
|
243
|
+
{ name: 'Jane' }
|
|
244
|
+
];
|
|
245
|
+
var usersWithEmail = users.filter(hasEmail);
|
|
246
|
+
(0, vitest_1.expect)(usersWithEmail).toEqual([{ name: 'John', email: 'john@example.com' }]);
|
|
247
|
+
});
|
|
248
|
+
(0, vitest_1.it)('should work as type guard', function () {
|
|
249
|
+
var obj = { a: 1 };
|
|
250
|
+
if ((0, predicates_mjs_1.hasProperty)('a')(obj)) {
|
|
251
|
+
// TypeScript knows obj has property 'a' here
|
|
252
|
+
(0, vitest_1.expect)(obj.a).toBe(1);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
(0, vitest_1.it)('should work with symbol properties', function () {
|
|
256
|
+
var _a;
|
|
257
|
+
var sym = Symbol('test');
|
|
258
|
+
var hasSymbol = (0, predicates_mjs_1.hasProperty)(sym);
|
|
259
|
+
var obj1 = (_a = {}, _a[sym] = 'value', _a);
|
|
260
|
+
var obj2 = {};
|
|
261
|
+
(0, vitest_1.expect)(hasSymbol(obj1)).toBe(true);
|
|
262
|
+
(0, vitest_1.expect)(hasSymbol(obj2)).toBe(false);
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
(0, vitest_1.describe)('includes', function () {
|
|
266
|
+
(0, vitest_1.it)('should check array inclusion', function () {
|
|
267
|
+
var hasFavorite = (0, predicates_mjs_1.includes)('JavaScript');
|
|
268
|
+
(0, vitest_1.expect)(hasFavorite(['Python', 'JavaScript', 'Go'])).toBe(true);
|
|
269
|
+
(0, vitest_1.expect)(hasFavorite(['Python', 'Go'])).toBe(false);
|
|
270
|
+
});
|
|
271
|
+
(0, vitest_1.it)('should work with tag filtering', function () {
|
|
272
|
+
var hasUrgentTag = (0, predicates_mjs_1.includes)('urgent');
|
|
273
|
+
var tasks = [
|
|
274
|
+
{ name: 'Task 1', tags: ['urgent', 'bug'] },
|
|
275
|
+
{ name: 'Task 2', tags: ['feature'] }
|
|
276
|
+
];
|
|
277
|
+
var urgentTasks = tasks.filter(function (task) { return hasUrgentTag(task.tags); });
|
|
278
|
+
(0, vitest_1.expect)(urgentTasks).toHaveLength(1);
|
|
279
|
+
});
|
|
280
|
+
(0, vitest_1.it)('should handle empty arrays', function () {
|
|
281
|
+
var hasAny = (0, predicates_mjs_1.includes)('any');
|
|
282
|
+
(0, vitest_1.expect)(hasAny([])).toBe(false);
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
(0, vitest_1.describe)('alwaysTrue', function () {
|
|
286
|
+
(0, vitest_1.it)('should always return true', function () {
|
|
287
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysTrue)(null)).toBe(true);
|
|
288
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysTrue)(undefined)).toBe(true);
|
|
289
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysTrue)(42)).toBe(true);
|
|
290
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysTrue)('string')).toBe(true);
|
|
291
|
+
});
|
|
292
|
+
(0, vitest_1.it)('should work as default filter', function () {
|
|
293
|
+
var items = [1, 2, 3];
|
|
294
|
+
var filtered = items.filter(predicates_mjs_1.alwaysTrue);
|
|
295
|
+
(0, vitest_1.expect)(filtered).toEqual(items);
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
(0, vitest_1.describe)('alwaysFalse', function () {
|
|
299
|
+
(0, vitest_1.it)('should always return false', function () {
|
|
300
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysFalse)(null)).toBe(false);
|
|
301
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysFalse)(undefined)).toBe(false);
|
|
302
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysFalse)(42)).toBe(false);
|
|
303
|
+
(0, vitest_1.expect)((0, predicates_mjs_1.alwaysFalse)('string')).toBe(false);
|
|
304
|
+
});
|
|
305
|
+
(0, vitest_1.it)('should work as disabled filter', function () {
|
|
306
|
+
var items = [1, 2, 3];
|
|
307
|
+
var filtered = items.filter(predicates_mjs_1.alwaysFalse);
|
|
308
|
+
(0, vitest_1.expect)(filtered).toEqual([]);
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
(0, vitest_1.describe)('predicateUtils', function () {
|
|
312
|
+
(0, vitest_1.describe)('propEquals', function () {
|
|
313
|
+
(0, vitest_1.it)('should check property equality', function () {
|
|
314
|
+
var isAdminRole = predicates_mjs_1.predicateUtils.propEquals('role', 'admin');
|
|
315
|
+
(0, vitest_1.expect)(isAdminRole({ role: 'admin', name: 'John' })).toBe(true);
|
|
316
|
+
(0, vitest_1.expect)(isAdminRole({ role: 'user', name: 'Jane' })).toBe(false);
|
|
317
|
+
});
|
|
318
|
+
(0, vitest_1.it)('should work with filtering', function () {
|
|
319
|
+
var users = [
|
|
320
|
+
{ id: 1, role: 'admin' },
|
|
321
|
+
{ id: 2, role: 'user' },
|
|
322
|
+
{ id: 3, role: 'admin' }
|
|
323
|
+
];
|
|
324
|
+
var admins = users.filter(predicates_mjs_1.predicateUtils.propEquals('role', 'admin'));
|
|
325
|
+
(0, vitest_1.expect)(admins).toHaveLength(2);
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
(0, vitest_1.describe)('propsMatch', function () {
|
|
329
|
+
(0, vitest_1.it)('should check multiple properties', function () {
|
|
330
|
+
var isJohnDoe = predicates_mjs_1.predicateUtils.propsMatch({
|
|
331
|
+
firstName: 'John',
|
|
332
|
+
lastName: 'Doe'
|
|
333
|
+
});
|
|
334
|
+
(0, vitest_1.expect)(isJohnDoe({ firstName: 'John', lastName: 'Doe', age: 30 })).toBe(true);
|
|
335
|
+
(0, vitest_1.expect)(isJohnDoe({ firstName: 'John', lastName: 'Smith' })).toBe(false);
|
|
336
|
+
(0, vitest_1.expect)(isJohnDoe({ firstName: 'Jane', lastName: 'Doe' })).toBe(false);
|
|
337
|
+
});
|
|
338
|
+
(0, vitest_1.it)('should handle empty object', function () {
|
|
339
|
+
var matchesNothing = predicates_mjs_1.predicateUtils.propsMatch({});
|
|
340
|
+
(0, vitest_1.expect)(matchesNothing({ a: 1, b: 2 })).toBe(true);
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
(0, vitest_1.describe)('contramap', function () {
|
|
344
|
+
(0, vitest_1.it)('should transform before testing', function () {
|
|
345
|
+
var hasLongName = predicates_mjs_1.predicateUtils.contramap(function (user) { return user.name; }, function (name) { return name.length > 10; });
|
|
346
|
+
(0, vitest_1.expect)(hasLongName({ name: 'John' })).toBe(false);
|
|
347
|
+
(0, vitest_1.expect)(hasLongName({ name: 'Alexander Hamilton' })).toBe(true);
|
|
348
|
+
});
|
|
349
|
+
(0, vitest_1.it)('should enable case-insensitive comparison', function () {
|
|
350
|
+
var isCaseInsensitiveMatch = function (target) {
|
|
351
|
+
return predicates_mjs_1.predicateUtils.contramap(function (s) { return s.toLowerCase(); }, (0, predicates_mjs_1.equals)(target.toLowerCase()));
|
|
352
|
+
};
|
|
353
|
+
var isHello = isCaseInsensitiveMatch('hello');
|
|
354
|
+
(0, vitest_1.expect)(isHello('HELLO')).toBe(true);
|
|
355
|
+
(0, vitest_1.expect)(isHello('Hello')).toBe(true);
|
|
356
|
+
(0, vitest_1.expect)(isHello('hello')).toBe(true);
|
|
357
|
+
(0, vitest_1.expect)(isHello('hi')).toBe(false);
|
|
358
|
+
});
|
|
359
|
+
(0, vitest_1.it)('should work with complex transformations', function () {
|
|
360
|
+
var hasExpensiveItems = predicates_mjs_1.predicateUtils.contramap(function (order) {
|
|
361
|
+
return order.items.map(function (item) { return item.price; });
|
|
362
|
+
}, function (prices) {
|
|
363
|
+
return prices.some(function (price) { return price > 100; });
|
|
364
|
+
});
|
|
365
|
+
(0, vitest_1.expect)(hasExpensiveItems({
|
|
366
|
+
items: [{ price: 50 }, { price: 150 }]
|
|
367
|
+
})).toBe(true);
|
|
368
|
+
(0, vitest_1.expect)(hasExpensiveItems({
|
|
369
|
+
items: [{ price: 50 }, { price: 75 }]
|
|
370
|
+
})).toBe(false);
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
//# sourceMappingURL=predicates.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicates.test.js","sourceRoot":"","sources":["../src/predicates.test.ts"],"names":[],"mappings":";;AAAA,iCAA8C;AAC9C,mDAkB0B;AAE1B,IAAA,iBAAQ,EAAC,YAAY,EAAE;IACrB,IAAA,iBAAQ,EAAC,KAAK,EAAE;QACd,IAAA,WAAE,EAAC,iDAAiD,EAAE;YACpD,IAAM,UAAU,GAAG,UAAC,CAAS,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC;YACxC,IAAM,MAAM,GAAG,UAAC,CAAS,IAAK,OAAA,CAAC,GAAG,CAAC,KAAK,CAAC,EAAX,CAAW,CAAC;YAC1C,IAAM,cAAc,GAAG,IAAA,oBAAG,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAE/C,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE;YACpD,IAAM,UAAU,GAAG,UAAC,CAAS,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC;YACxC,IAAM,MAAM,GAAG,UAAC,CAAS,IAAK,OAAA,CAAC,GAAG,CAAC,KAAK,CAAC,EAAX,CAAW,CAAC;YAC1C,IAAM,cAAc,GAAG,IAAA,oBAAG,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAE/C,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe;YACvD,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,WAAW;QACrD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE;YACvC,IAAM,UAAU,GAAG,IAAA,oBAAG,GAAU,CAAC;YACjC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE;YAEzC,IAAM,OAAO,GAAG,UAAC,IAAU,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,IAAI,EAAX,CAAW,CAAC;YAC5C,IAAM,QAAQ,GAAG,UAAC,IAAU,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,EAAZ,CAAY,CAAC;YAC9C,IAAM,OAAO,GAAG,UAAC,IAAU,YAAK,OAAA,CAAC,MAAA,IAAI,CAAC,GAAG,mCAAI,CAAC,CAAC,IAAI,EAAE,CAAA,EAAA,CAAC;YAEtD,IAAM,gBAAgB,GAAG,IAAA,oBAAG,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEzD,IAAA,eAAM,EAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1F,IAAA,eAAM,EAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3F,IAAA,eAAM,EAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,IAAI,EAAE;QACb,IAAA,WAAE,EAAC,wDAAwD,EAAE;YAC3D,IAAM,OAAO,GAAG,UAAC,IAAsB,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,EAArB,CAAqB,CAAC;YAClE,IAAM,WAAW,GAAG,UAAC,IAAsB,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,WAAW,EAAzB,CAAyB,CAAC;YAC1E,IAAM,aAAa,GAAG,IAAA,mBAAE,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAE/C,IAAA,eAAM,EAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,IAAA,eAAM,EAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE;YACtD,IAAM,OAAO,GAAG,UAAC,IAAsB,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,EAArB,CAAqB,CAAC;YAClE,IAAM,WAAW,GAAG,UAAC,IAAsB,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,WAAW,EAAzB,CAAyB,CAAC;YAC1E,IAAM,aAAa,GAAG,IAAA,mBAAE,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAE/C,IAAA,eAAM,EAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE;YACvC,IAAM,WAAW,GAAG,IAAA,mBAAE,GAAU,CAAC;YACjC,IAAA,eAAM,EAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE;YAC9C,IAAM,aAAa,GAAG,UAAC,OAAyB,IAAK,OAAA,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAzB,CAAyB,CAAC;YAC/E,IAAM,SAAS,GAAG,UAAC,OAAyB,IAAK,OAAA,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAzB,CAAyB,CAAC;YAC3E,IAAM,SAAS,GAAG,UAAC,OAAyB,IAAK,OAAA,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAzB,CAAyB,CAAC;YAE3E,IAAM,cAAc,GAAG,IAAA,mBAAE,EAAC,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAE/D,IAAA,eAAM,EAAC,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAA,eAAM,EAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,KAAK,EAAE;QACd,IAAA,WAAE,EAAC,gCAAgC,EAAE;YACnC,IAAM,UAAU,GAAG,UAAC,CAAS,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC;YACxC,IAAM,gBAAgB,GAAG,IAAA,oBAAG,EAAC,UAAU,CAAC,CAAC;YAEzC,IAAA,eAAM,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAA,eAAM,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE;YACxC,IAAM,OAAO,GAAG,UAAC,GAAsB,IAAK,OAAA,GAAG,CAAC,KAAK,KAAK,OAAO,EAArB,CAAqB,CAAC;YAClE,IAAM,UAAU,GAAG,IAAA,oBAAG,EAAC,OAAO,CAAC,CAAC;YAEhC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,KAAK,EAAE;QACd,IAAA,WAAE,EAAC,uDAAuD,EAAE;YAE1D,IAAM,WAAW,GAAG,UAAC,IAAU,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAf,CAAe,CAAC;YACpD,IAAM,QAAQ,GAAG,UAAC,IAAU,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,EAAZ,CAAY,CAAC;YAC9C,IAAM,uBAAuB,GAAG,IAAA,oBAAG,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAE3D,IAAA,eAAM,EAAC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,IAAA,eAAM,EAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4DAA4D,EAAE;YAE/D,IAAM,WAAW,GAAG,UAAC,IAAU,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAf,CAAe,CAAC;YACpD,IAAM,QAAQ,GAAG,UAAC,IAAU,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,EAAZ,CAAY,CAAC;YAC9C,IAAM,uBAAuB,GAAG,IAAA,oBAAG,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAE3D,IAAA,eAAM,EAAC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpF,IAAA,eAAM,EAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,UAAU,EAAE;QACnB,IAAA,WAAE,EAAC,kDAAkD,EAAE;YACrD,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE;YAC/C,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,yBAAQ,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE;YACxC,IAAM,MAAM,GAAkC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC/E,IAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAQ,CAAC,CAAC;YAC9C,IAAA,eAAM,EAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,OAAO,EAAE;QAChB,IAAA,WAAE,EAAC,2CAA2C,EAAE;YAC9C,IAAA,eAAM,EAAC,IAAA,sBAAK,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,IAAA,sBAAK,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE;YACtD,IAAA,eAAM,EAAC,IAAA,sBAAK,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAA,eAAM,EAAC,IAAA,sBAAK,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAA,eAAM,EAAC,IAAA,sBAAK,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAA,eAAM,EAAC,IAAA,sBAAK,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE;YAC7B,IAAM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAK,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,SAAS,EAAE;QAClB,IAAA,WAAE,EAAC,qCAAqC,EAAE;YACxC,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE;YAC7C,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,IAAA,wBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE;YACrC,IAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YACpE,IAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;iBACzC,MAAM,CAAC,UAAC,EAAS;oBAAN,KAAK,QAAA;gBAAM,OAAA,IAAA,wBAAO,EAAC,KAAK,CAAC;YAAd,CAAc,CAAC;iBACrC,GAAG,CAAC,UAAC,EAAK;oBAAJ,GAAG,QAAA;gBAAM,OAAA,GAAG;YAAH,CAAG,CAAC,CAAC;YACvB,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE;QACrB,IAAA,WAAE,EAAC,yCAAyC,EAAE;YAC5C,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE;YACzC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,QAAQ,EAAE;QACjB,IAAA,WAAE,EAAC,6CAA6C,EAAE;YAChD,IAAM,MAAM,GAAG,IAAA,uBAAM,EAAC,MAAM,CAAC,CAAC;YAC9B,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE;YAC/B,IAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAA,uBAAM,EAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE;YAC7B,IAAM,MAAM,GAAG,IAAA,uBAAM,EAAC,CAAC,CAAC,CAAC;YACzB,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,OAAO,EAAE;QAChB,IAAA,WAAE,EAAC,mCAAmC,EAAE;YACtC,IAAM,SAAS,GAAG,IAAA,sBAAK,EAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE;YACjC,IAAM,OAAO,GAAG,IAAA,sBAAK,EAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrD,IAAA,eAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,IAAA,eAAM,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE;YAC9B,IAAM,SAAS,GAAG,IAAA,sBAAK,EAAS,EAAE,CAAC,CAAC;YACpC,IAAA,eAAM,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,SAAS,EAAE;QAClB,IAAA,WAAE,EAAC,8BAA8B,EAAE;YACjC,IAAM,UAAU,GAAG,IAAA,wBAAO,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE;YACrC,IAAM,UAAU,GAAG,IAAA,wBAAO,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,SAAS,EAAE;QAClB,IAAA,WAAE,EAAC,kCAAkC,EAAE;YACrC,IAAM,OAAO,GAAG,IAAA,wBAAO,EAAC,4BAA4B,CAAC,CAAC;YACtD,IAAA,eAAM,EAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAA,eAAM,EAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE;YACnC,IAAM,aAAa,GAAG,IAAA,wBAAO,EAAC,iBAAiB,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAA,eAAM,EAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE;YACnC,IAAM,eAAe,GAAG,IAAA,wBAAO,EAAC,QAAQ,CAAC,CAAC;YAC1C,IAAM,yBAAyB,GAAG,IAAA,wBAAO,EAAC,SAAS,CAAC,CAAC;YAErD,IAAA,eAAM,EAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,IAAA,eAAM,EAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,aAAa,EAAE;QACtB,IAAA,WAAE,EAAC,qCAAqC,EAAE;YACxC,IAAM,QAAQ,GAAG,IAAA,4BAAW,EAAC,OAAO,CAAC,CAAC;YACtC,IAAM,KAAK,GAAG;gBACZ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBAC3C,EAAE,IAAI,EAAE,MAAM,EAAE;aACjB,CAAC;YACF,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAA,eAAM,EAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE;YAC9B,IAAM,GAAG,GAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACrC,IAAI,IAAA,4BAAW,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,6CAA6C;gBAC7C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE;;YACvC,IAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAM,SAAS,GAAG,IAAA,4BAAW,EAAC,GAAG,CAAC,CAAC;YACnC,IAAM,IAAI,aAAK,GAAC,GAAG,IAAG,OAAO,KAAE,CAAC;YAChC,IAAM,IAAI,GAAG,EAAE,CAAC;YAEhB,IAAA,eAAM,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAA,eAAM,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,UAAU,EAAE;QACnB,IAAA,WAAE,EAAC,8BAA8B,EAAE;YACjC,IAAM,WAAW,GAAG,IAAA,yBAAQ,EAAC,YAAY,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE;YACnC,IAAM,YAAY,GAAG,IAAA,yBAAQ,EAAC,QAAQ,CAAC,CAAC;YACxC,IAAM,KAAK,GAAG;gBACZ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;aACtC,CAAC;YACF,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAvB,CAAuB,CAAC,CAAC;YAClE,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE;YAC/B,IAAM,MAAM,GAAG,IAAA,yBAAQ,EAAC,KAAK,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE;QACrB,IAAA,WAAE,EAAC,2BAA2B,EAAE;YAC9B,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,IAAA,2BAAU,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE;YAClC,IAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,2BAAU,CAAC,CAAC;YAC1C,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,aAAa,EAAE;QACtB,IAAA,WAAE,EAAC,4BAA4B,EAAE;YAC/B,IAAA,eAAM,EAAC,IAAA,4BAAW,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAA,eAAM,EAAC,IAAA,4BAAW,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,IAAA,4BAAW,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAA,eAAM,EAAC,IAAA,4BAAW,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE;YACnC,IAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,4BAAW,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,gBAAgB,EAAE;QACzB,IAAA,iBAAQ,EAAC,YAAY,EAAE;YACrB,IAAA,WAAE,EAAC,gCAAgC,EAAE;gBAEnC,IAAM,WAAW,GAAG,+BAAc,CAAC,UAAU,CAAe,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7E,IAAA,eAAM,EAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChE,IAAA,eAAM,EAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE;gBAE/B,IAAM,KAAK,GAAW;oBACpB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;oBACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;oBACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;iBACzB,CAAC;gBACF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,+BAAc,CAAC,UAAU,CAAe,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBACtF,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE;YACrB,IAAA,WAAE,EAAC,kCAAkC,EAAE;gBAErC,IAAM,SAAS,GAAG,+BAAc,CAAC,UAAU,CAAS;oBAClD,SAAS,EAAE,MAAM;oBACjB,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;gBAEH,IAAA,eAAM,EAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9E,IAAA,eAAM,EAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxE,IAAA,eAAM,EAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;YAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE;gBAC/B,IAAM,cAAc,GAAG,+BAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrD,IAAA,eAAM,EAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,iBAAQ,EAAC,WAAW,EAAE;YACpB,IAAA,WAAE,EAAC,iCAAiC,EAAE;gBACpC,IAAM,WAAW,GAAG,+BAAc,CAAC,SAAS,CAC1C,UAAC,IAAsB,IAAK,OAAA,IAAI,CAAC,IAAI,EAAT,CAAS,EACrC,UAAC,IAAY,IAAK,OAAA,IAAI,CAAC,MAAM,GAAG,EAAE,EAAhB,CAAgB,CACnC,CAAC;gBAEF,IAAA,eAAM,EAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAA,eAAM,EAAC,WAAW,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE;gBAC9C,IAAM,sBAAsB,GAAG,UAAC,MAAc;oBAC5C,OAAA,+BAAc,CAAC,SAAS,CACtB,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,WAAW,EAAE,EAAf,CAAe,EAC9B,IAAA,uBAAM,EAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAC7B;gBAHD,CAGC,CAAC;gBAEJ,IAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAA,eAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAA,eAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAA,eAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE;gBAC7C,IAAM,iBAAiB,GAAG,+BAAc,CAAC,SAAS,CAChD,UAAC,KAAqC;oBACpC,OAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,EAAV,CAAU,CAAC;gBAAnC,CAAmC,EACrC,UAAC,MAAgB;oBACf,OAAA,MAAM,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,GAAG,GAAG,EAAX,CAAW,CAAC;gBAAjC,CAAiC,CACpC,CAAC;gBAEF,IAAA,eAAM,EAAC,iBAAiB,CAAC;oBACvB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;iBACvC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACf,IAAA,eAAM,EAAC,iBAAiB,CAAC;oBACvB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;iBACtC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/reader-result.d.mts
CHANGED
|
@@ -308,6 +308,78 @@ export declare const ReaderResult: {
|
|
|
308
308
|
* Bind a computation result to a name (for Do notation)
|
|
309
309
|
*/
|
|
310
310
|
bind: <R, E, A extends object, K extends string, B>(name: K, f: (a: A) => ReaderResult<R, E, B>) => (fa: ReaderResult<R, E, A>) => ReaderResult<R, E, A & Record<K, B>>;
|
|
311
|
+
/**
|
|
312
|
+
* Executes a ReaderResult for its side effects, discarding the result.
|
|
313
|
+
* @description Runs a ReaderResult-returning function but preserves the original value.
|
|
314
|
+
* Useful for logging, metrics, or auditing within a ReaderResult pipeline.
|
|
315
|
+
*
|
|
316
|
+
* @template R - The environment/dependencies type
|
|
317
|
+
* @template E - The error type
|
|
318
|
+
* @template A - The type of the value
|
|
319
|
+
* @param {function(A): ReaderResult<R, E, unknown>} f - Function that returns a ReaderResult (result discarded)
|
|
320
|
+
* @returns {function(ReaderResult<R, E, A>): ReaderResult<R, E, A>} A function that executes side effects
|
|
321
|
+
*
|
|
322
|
+
* @category Combinators
|
|
323
|
+
* @example
|
|
324
|
+
* ```typescript
|
|
325
|
+
* type Deps = { logger: { info: (msg: string) => void } };
|
|
326
|
+
*
|
|
327
|
+
* const logCreated = (id: string): ReaderResult<Deps, never, void> =>
|
|
328
|
+
* ReaderResult.asks(deps => { deps.logger.info(`Created: ${id}`); });
|
|
329
|
+
*
|
|
330
|
+
* pipe(
|
|
331
|
+
* ReaderResult.Do<Deps, Error>(),
|
|
332
|
+
* ReaderResult.bind('user', () => createUser(input)),
|
|
333
|
+
* ReaderResult.tap(({ user }) => logCreated(user.id)),
|
|
334
|
+
* ReaderResult.map(({ user }) => user)
|
|
335
|
+
* );
|
|
336
|
+
* ```
|
|
337
|
+
*
|
|
338
|
+
* @since 2025-01-21
|
|
339
|
+
*/
|
|
340
|
+
tap: <R, E, A>(f: (a: A) => ReaderResult<R, E, unknown>) => (self: ReaderResult<R, E, A>) => ReaderResult<R, E, A>;
|
|
341
|
+
/**
|
|
342
|
+
* Alias for {@link tap}. Executes a ReaderResult for its side effects, discarding the result.
|
|
343
|
+
* @description Provided for consistency with other monadic types (Reader, Result, Task, IO).
|
|
344
|
+
*
|
|
345
|
+
* @see tap
|
|
346
|
+
* @since 2025-01-21
|
|
347
|
+
*/
|
|
348
|
+
chainFirst: <R, E, A>(f: (a: A) => ReaderResult<R, E, unknown>) => (self: ReaderResult<R, E, A>) => ReaderResult<R, E, A>;
|
|
349
|
+
/**
|
|
350
|
+
* Executes a side effect with direct access to both value and dependencies.
|
|
351
|
+
* @description Ergonomic alternative to {@link tap} when you just need to perform
|
|
352
|
+
* a sync/async effect without constructing a full ReaderResult.
|
|
353
|
+
*
|
|
354
|
+
* @remarks
|
|
355
|
+
* **Warning:** Any error thrown by the side effect will be cast to type `E`
|
|
356
|
+
* without validation. Ensure your side effect throws errors compatible with `E`,
|
|
357
|
+
* or handle exceptions internally within the callback.
|
|
358
|
+
*
|
|
359
|
+
* @template R - The environment/dependencies type
|
|
360
|
+
* @template E - The error type
|
|
361
|
+
* @template A - The type of the value
|
|
362
|
+
* @param {function(A, R): unknown} f - Side effect function with value and deps access (can be async)
|
|
363
|
+
* @returns {function(ReaderResult<R, E, A>): ReaderResult<R, E, A>} A function that executes side effects
|
|
364
|
+
*
|
|
365
|
+
* @category Combinators
|
|
366
|
+
* @example
|
|
367
|
+
* ```typescript
|
|
368
|
+
* type Deps = { logger: { info: (data: object, msg: string) => void } };
|
|
369
|
+
*
|
|
370
|
+
* pipe(
|
|
371
|
+
* ReaderResult.Do<Deps, Error>(),
|
|
372
|
+
* ReaderResult.bind('user', () => createUser(input)),
|
|
373
|
+
* ReaderResult.tapDeps(({ user }, deps) => {
|
|
374
|
+
* deps.logger.info({ userId: user.id }, 'User created');
|
|
375
|
+
* }),
|
|
376
|
+
* ReaderResult.map(({ user }) => user)
|
|
377
|
+
* );
|
|
378
|
+
* ```
|
|
379
|
+
*
|
|
380
|
+
* @since 2025-01-21
|
|
381
|
+
*/
|
|
382
|
+
tapDeps: <R, E, A>(f: (a: A, deps: R) => unknown) => (self: ReaderResult<R, E, A>) => ReaderResult<R, E, A>;
|
|
311
383
|
/**
|
|
312
384
|
* Bind a value to a name (for Do notation)
|
|
313
385
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-result.d.mts","sourceRoot":"","sources":["../src/reader-result.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reader-result.d.mts","sourceRoot":"","sources":["../src/reader-result.mts"],"names":[],"mappings":"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"}
|
package/dist/reader-result.mjs
CHANGED
|
@@ -467,6 +467,95 @@ export var ReaderResult = {
|
|
|
467
467
|
})(f(a));
|
|
468
468
|
})(fa);
|
|
469
469
|
}; },
|
|
470
|
+
/**
|
|
471
|
+
* Executes a ReaderResult for its side effects, discarding the result.
|
|
472
|
+
* @description Runs a ReaderResult-returning function but preserves the original value.
|
|
473
|
+
* Useful for logging, metrics, or auditing within a ReaderResult pipeline.
|
|
474
|
+
*
|
|
475
|
+
* @template R - The environment/dependencies type
|
|
476
|
+
* @template E - The error type
|
|
477
|
+
* @template A - The type of the value
|
|
478
|
+
* @param {function(A): ReaderResult<R, E, unknown>} f - Function that returns a ReaderResult (result discarded)
|
|
479
|
+
* @returns {function(ReaderResult<R, E, A>): ReaderResult<R, E, A>} A function that executes side effects
|
|
480
|
+
*
|
|
481
|
+
* @category Combinators
|
|
482
|
+
* @example
|
|
483
|
+
* ```typescript
|
|
484
|
+
* type Deps = { logger: { info: (msg: string) => void } };
|
|
485
|
+
*
|
|
486
|
+
* const logCreated = (id: string): ReaderResult<Deps, never, void> =>
|
|
487
|
+
* ReaderResult.asks(deps => { deps.logger.info(`Created: ${id}`); });
|
|
488
|
+
*
|
|
489
|
+
* pipe(
|
|
490
|
+
* ReaderResult.Do<Deps, Error>(),
|
|
491
|
+
* ReaderResult.bind('user', () => createUser(input)),
|
|
492
|
+
* ReaderResult.tap(({ user }) => logCreated(user.id)),
|
|
493
|
+
* ReaderResult.map(({ user }) => user)
|
|
494
|
+
* );
|
|
495
|
+
* ```
|
|
496
|
+
*
|
|
497
|
+
* @since 2025-01-21
|
|
498
|
+
*/
|
|
499
|
+
tap: function (f) { return function (self) {
|
|
500
|
+
return ReaderResult.chain(function (a) {
|
|
501
|
+
return ReaderResult.map(function () { return a; })(f(a));
|
|
502
|
+
})(self);
|
|
503
|
+
}; },
|
|
504
|
+
/**
|
|
505
|
+
* Alias for {@link tap}. Executes a ReaderResult for its side effects, discarding the result.
|
|
506
|
+
* @description Provided for consistency with other monadic types (Reader, Result, Task, IO).
|
|
507
|
+
*
|
|
508
|
+
* @see tap
|
|
509
|
+
* @since 2025-01-21
|
|
510
|
+
*/
|
|
511
|
+
chainFirst: function (f) { return function (self) {
|
|
512
|
+
return ReaderResult.tap(f)(self);
|
|
513
|
+
}; },
|
|
514
|
+
/**
|
|
515
|
+
* Executes a side effect with direct access to both value and dependencies.
|
|
516
|
+
* @description Ergonomic alternative to {@link tap} when you just need to perform
|
|
517
|
+
* a sync/async effect without constructing a full ReaderResult.
|
|
518
|
+
*
|
|
519
|
+
* @remarks
|
|
520
|
+
* **Warning:** Any error thrown by the side effect will be cast to type `E`
|
|
521
|
+
* without validation. Ensure your side effect throws errors compatible with `E`,
|
|
522
|
+
* or handle exceptions internally within the callback.
|
|
523
|
+
*
|
|
524
|
+
* @template R - The environment/dependencies type
|
|
525
|
+
* @template E - The error type
|
|
526
|
+
* @template A - The type of the value
|
|
527
|
+
* @param {function(A, R): unknown} f - Side effect function with value and deps access (can be async)
|
|
528
|
+
* @returns {function(ReaderResult<R, E, A>): ReaderResult<R, E, A>} A function that executes side effects
|
|
529
|
+
*
|
|
530
|
+
* @category Combinators
|
|
531
|
+
* @example
|
|
532
|
+
* ```typescript
|
|
533
|
+
* type Deps = { logger: { info: (data: object, msg: string) => void } };
|
|
534
|
+
*
|
|
535
|
+
* pipe(
|
|
536
|
+
* ReaderResult.Do<Deps, Error>(),
|
|
537
|
+
* ReaderResult.bind('user', () => createUser(input)),
|
|
538
|
+
* ReaderResult.tapDeps(({ user }, deps) => {
|
|
539
|
+
* deps.logger.info({ userId: user.id }, 'User created');
|
|
540
|
+
* }),
|
|
541
|
+
* ReaderResult.map(({ user }) => user)
|
|
542
|
+
* );
|
|
543
|
+
* ```
|
|
544
|
+
*
|
|
545
|
+
* @since 2025-01-21
|
|
546
|
+
*/
|
|
547
|
+
tapDeps: function (f) { return function (self) {
|
|
548
|
+
return ReaderResult.tap(function (a) {
|
|
549
|
+
return ReaderResult.tryCatch(function (deps) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
550
|
+
switch (_a.label) {
|
|
551
|
+
case 0: return [4 /*yield*/, f(a, deps)];
|
|
552
|
+
case 1:
|
|
553
|
+
_a.sent();
|
|
554
|
+
return [2 /*return*/];
|
|
555
|
+
}
|
|
556
|
+
}); }); }, function (error) { return error; });
|
|
557
|
+
})(self);
|
|
558
|
+
}; },
|
|
470
559
|
/**
|
|
471
560
|
* Bind a value to a name (for Do notation)
|
|
472
561
|
*/
|