@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.
Files changed (77) hide show
  1. package/dist/array-utils.test.d.ts +2 -0
  2. package/dist/array-utils.test.d.ts.map +1 -0
  3. package/dist/array-utils.test.js +256 -0
  4. package/dist/array-utils.test.js.map +1 -0
  5. package/dist/composition.test.d.ts +2 -0
  6. package/dist/composition.test.d.ts.map +1 -0
  7. package/dist/composition.test.js +409 -0
  8. package/dist/composition.test.js.map +1 -0
  9. package/dist/integration.test.d.mts +2 -0
  10. package/dist/integration.test.d.mts.map +1 -0
  11. package/dist/integration.test.mjs +486 -0
  12. package/dist/integration.test.mjs.map +1 -0
  13. package/dist/io.test.d.mts +2 -0
  14. package/dist/io.test.d.mts.map +1 -0
  15. package/dist/io.test.mjs +373 -0
  16. package/dist/io.test.mjs.map +1 -0
  17. package/dist/laws.test.d.mts +2 -0
  18. package/dist/laws.test.d.mts.map +1 -0
  19. package/dist/laws.test.mjs +614 -0
  20. package/dist/laws.test.mjs.map +1 -0
  21. package/dist/object-utils.test.d.ts +2 -0
  22. package/dist/object-utils.test.d.ts.map +1 -0
  23. package/dist/object-utils.test.js +286 -0
  24. package/dist/object-utils.test.js.map +1 -0
  25. package/dist/option-additions.test.d.mts +2 -0
  26. package/dist/option-additions.test.d.mts.map +1 -0
  27. package/dist/option-additions.test.mjs +325 -0
  28. package/dist/option-additions.test.mjs.map +1 -0
  29. package/dist/option.test.d.ts +6 -0
  30. package/dist/option.test.d.ts.map +1 -0
  31. package/dist/option.test.js +606 -0
  32. package/dist/option.test.js.map +1 -0
  33. package/dist/performance.test.d.ts +2 -0
  34. package/dist/performance.test.d.ts.map +1 -0
  35. package/dist/performance.test.js +424 -0
  36. package/dist/performance.test.js.map +1 -0
  37. package/dist/pipeline.test.d.ts +2 -0
  38. package/dist/pipeline.test.d.ts.map +1 -0
  39. package/dist/pipeline.test.js +445 -0
  40. package/dist/pipeline.test.js.map +1 -0
  41. package/dist/predicates.test.d.ts +2 -0
  42. package/dist/predicates.test.d.ts.map +1 -0
  43. package/dist/predicates.test.js +375 -0
  44. package/dist/predicates.test.js.map +1 -0
  45. package/dist/reader-result.d.mts +72 -0
  46. package/dist/reader-result.d.mts.map +1 -1
  47. package/dist/reader-result.mjs +89 -0
  48. package/dist/reader-result.mjs.map +1 -1
  49. package/dist/reader-result.test.d.ts +2 -0
  50. package/dist/reader-result.test.d.ts.map +1 -0
  51. package/dist/reader-result.test.js +1397 -0
  52. package/dist/reader-result.test.js.map +1 -0
  53. package/dist/reader.test.d.mts +2 -0
  54. package/dist/reader.test.d.mts.map +1 -0
  55. package/dist/reader.test.mjs +288 -0
  56. package/dist/reader.test.mjs.map +1 -0
  57. package/dist/result-additions.test.d.mts +2 -0
  58. package/dist/result-additions.test.d.mts.map +1 -0
  59. package/dist/result-additions.test.mjs +325 -0
  60. package/dist/result-additions.test.mjs.map +1 -0
  61. package/dist/result.test.d.ts +2 -0
  62. package/dist/result.test.d.ts.map +1 -0
  63. package/dist/result.test.js +453 -0
  64. package/dist/result.test.js.map +1 -0
  65. package/dist/task.test.d.mts +2 -0
  66. package/dist/task.test.d.mts.map +1 -0
  67. package/dist/task.test.mjs +1004 -0
  68. package/dist/task.test.mjs.map +1 -0
  69. package/dist/types.test.d.ts +6 -0
  70. package/dist/types.test.d.ts.map +1 -0
  71. package/dist/types.test.js +447 -0
  72. package/dist/types.test.js.map +1 -0
  73. package/dist/validation.test.d.ts +2 -0
  74. package/dist/validation.test.d.ts.map +1 -0
  75. package/dist/validation.test.js +518 -0
  76. package/dist/validation.test.js.map +1 -0
  77. 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"}
@@ -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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"}
@@ -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
  */