typetify 2.0.0 → 2.1.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/chunk-7G4ZSMQX.js +470 -0
- package/dist/chunk-7G4ZSMQX.js.map +1 -0
- package/dist/chunk-CWHYQWNU.mjs +224 -0
- package/dist/chunk-CWHYQWNU.mjs.map +1 -0
- package/dist/{chunk-JAOGY4JO.mjs → chunk-FEX5C4OH.mjs} +2 -2
- package/dist/chunk-FEX5C4OH.mjs.map +1 -0
- package/dist/chunk-FN553YPU.js +441 -0
- package/dist/chunk-FN553YPU.js.map +1 -0
- package/dist/chunk-FT2EK4AM.mjs +420 -0
- package/dist/chunk-FT2EK4AM.mjs.map +1 -0
- package/dist/chunk-N6IUADIP.mjs +414 -0
- package/dist/chunk-N6IUADIP.mjs.map +1 -0
- package/dist/chunk-OKB3MS5F.js +547 -0
- package/dist/chunk-OKB3MS5F.js.map +1 -0
- package/dist/chunk-POD52NJ3.mjs +526 -0
- package/dist/chunk-POD52NJ3.mjs.map +1 -0
- package/dist/{chunk-SIA5BSVY.js → chunk-S535LAXW.js} +2 -2
- package/dist/chunk-S535LAXW.js.map +1 -0
- package/dist/chunk-X55EORNF.js +259 -0
- package/dist/chunk-X55EORNF.js.map +1 -0
- package/dist/index.d.mts +143 -24
- package/dist/index.d.ts +143 -24
- package/dist/index.js +17 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -1
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/index.js +77 -514
- package/dist/iterator/index.js.map +1 -1
- package/dist/iterator/index.mjs +1 -499
- package/dist/iterator/index.mjs.map +1 -1
- package/dist/logic/index.js +193 -408
- package/dist/logic/index.js.map +1 -1
- package/dist/logic/index.mjs +1 -364
- package/dist/logic/index.mjs.map +1 -1
- package/dist/narrowing/index.js +133 -212
- package/dist/narrowing/index.js.map +1 -1
- package/dist/narrowing/index.mjs +1 -183
- package/dist/narrowing/index.mjs.map +1 -1
- package/dist/schema/index.js +102 -402
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/index.mjs +2 -381
- package/dist/schema/index.mjs.map +1 -1
- package/dist/typed/index.js +47 -47
- package/dist/typed/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-JAOGY4JO.mjs.map +0 -1
- package/dist/chunk-SIA5BSVY.js.map +0 -1
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkPZ5AY32C_js = require('./chunk-PZ5AY32C.js');
|
|
4
|
+
|
|
5
|
+
// src/logic/index.ts
|
|
6
|
+
var logic_exports = {};
|
|
7
|
+
chunkPZ5AY32C_js.__export(logic_exports, {
|
|
8
|
+
allDefined: () => allDefined,
|
|
9
|
+
allTrue: () => allTrue,
|
|
10
|
+
allTruthy: () => allTruthy,
|
|
11
|
+
allWhere: () => allWhere,
|
|
12
|
+
and: () => and,
|
|
13
|
+
andThen: () => andThen,
|
|
14
|
+
anyTrue: () => anyTrue,
|
|
15
|
+
chain: () => chain,
|
|
16
|
+
coalesce: () => coalesce,
|
|
17
|
+
coalesceLazy: () => coalesceLazy,
|
|
18
|
+
cond: () => cond,
|
|
19
|
+
condBy: () => condBy,
|
|
20
|
+
condLazy: () => condLazy,
|
|
21
|
+
defaultTo: () => defaultTo,
|
|
22
|
+
defaultToIf: () => defaultToIf,
|
|
23
|
+
defaultToIfEmpty: () => defaultToIfEmpty,
|
|
24
|
+
defaultToLazy: () => defaultToLazy,
|
|
25
|
+
firstDefined: () => firstDefined,
|
|
26
|
+
firstTruthy: () => firstTruthy,
|
|
27
|
+
firstWhere: () => firstWhere,
|
|
28
|
+
get: () => get,
|
|
29
|
+
getOr: () => getOr,
|
|
30
|
+
getOrLazy: () => getOrLazy,
|
|
31
|
+
getPath: () => getPath,
|
|
32
|
+
getPathOr: () => getPathOr,
|
|
33
|
+
getTyped: () => getTyped,
|
|
34
|
+
ifElse: () => ifElse,
|
|
35
|
+
ifElseLazy: () => ifElseLazy,
|
|
36
|
+
matchLazy: () => matchLazy,
|
|
37
|
+
matchType: () => matchType,
|
|
38
|
+
matchValue: () => matchValue,
|
|
39
|
+
matchWithDefault: () => matchWithDefault,
|
|
40
|
+
not: () => not,
|
|
41
|
+
notFn: () => notFn,
|
|
42
|
+
optional: () => optional,
|
|
43
|
+
optionalChain: () => optionalChain,
|
|
44
|
+
optionalOr: () => optionalOr,
|
|
45
|
+
or: () => or,
|
|
46
|
+
orThen: () => orThen,
|
|
47
|
+
safe: () => safe,
|
|
48
|
+
tryGet: () => tryGet,
|
|
49
|
+
tryGetOr: () => tryGetOr,
|
|
50
|
+
tryGetResult: () => tryGetResult,
|
|
51
|
+
unless: () => unless,
|
|
52
|
+
unlessValue: () => unlessValue,
|
|
53
|
+
unwrap: () => unwrap,
|
|
54
|
+
when: () => when,
|
|
55
|
+
whenValue: () => whenValue
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// src/logic/when.ts
|
|
59
|
+
function when(condition, fn) {
|
|
60
|
+
if (condition) {
|
|
61
|
+
return fn();
|
|
62
|
+
}
|
|
63
|
+
return void 0;
|
|
64
|
+
}
|
|
65
|
+
function whenValue(condition, value) {
|
|
66
|
+
return condition ? value : void 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// src/logic/unless.ts
|
|
70
|
+
function unless(condition, fn) {
|
|
71
|
+
if (!condition) {
|
|
72
|
+
return fn();
|
|
73
|
+
}
|
|
74
|
+
return void 0;
|
|
75
|
+
}
|
|
76
|
+
function unlessValue(condition, value) {
|
|
77
|
+
return !condition ? value : void 0;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// src/logic/ifElse.ts
|
|
81
|
+
function ifElse(condition, whenTrue, whenFalse) {
|
|
82
|
+
return condition ? whenTrue : whenFalse;
|
|
83
|
+
}
|
|
84
|
+
function ifElseLazy(condition, whenTrue, whenFalse) {
|
|
85
|
+
return condition ? whenTrue() : whenFalse();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// src/logic/cond.ts
|
|
89
|
+
function cond(...pairs) {
|
|
90
|
+
for (const [condition, value] of pairs) {
|
|
91
|
+
if (condition) {
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return void 0;
|
|
96
|
+
}
|
|
97
|
+
function condLazy(...pairs) {
|
|
98
|
+
for (const [condition, fn] of pairs) {
|
|
99
|
+
if (condition) {
|
|
100
|
+
return fn();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return void 0;
|
|
104
|
+
}
|
|
105
|
+
function condBy(value, ...pairs) {
|
|
106
|
+
for (const [predicate, result] of pairs) {
|
|
107
|
+
if (predicate(value)) {
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return void 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// src/logic/match.ts
|
|
115
|
+
function matchValue(value, cases) {
|
|
116
|
+
return cases[value];
|
|
117
|
+
}
|
|
118
|
+
function matchWithDefault(value, cases, defaultValue) {
|
|
119
|
+
const result = cases[value];
|
|
120
|
+
return result !== void 0 ? result : defaultValue;
|
|
121
|
+
}
|
|
122
|
+
function matchLazy(value, cases) {
|
|
123
|
+
return cases[value]();
|
|
124
|
+
}
|
|
125
|
+
function matchType(value, matchers) {
|
|
126
|
+
for (const [guard, handler] of matchers) {
|
|
127
|
+
if (guard(value)) {
|
|
128
|
+
return handler(value);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return void 0;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// src/logic/and.ts
|
|
135
|
+
function and(...values) {
|
|
136
|
+
if (values.length === 0) return void 0;
|
|
137
|
+
for (let i = 0; i < values.length - 1; i++) {
|
|
138
|
+
const value = values[i];
|
|
139
|
+
if (!value) return value;
|
|
140
|
+
}
|
|
141
|
+
const last = values[values.length - 1];
|
|
142
|
+
return typeof last === "function" ? last() : last;
|
|
143
|
+
}
|
|
144
|
+
function allTrue(...values) {
|
|
145
|
+
return values.every(Boolean);
|
|
146
|
+
}
|
|
147
|
+
function andThen(conditions, fn) {
|
|
148
|
+
return conditions.every(Boolean) ? fn() : void 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// src/logic/or.ts
|
|
152
|
+
function or(...values) {
|
|
153
|
+
if (values.length === 0) return void 0;
|
|
154
|
+
for (const value of values) {
|
|
155
|
+
if (value) return value;
|
|
156
|
+
}
|
|
157
|
+
return values[values.length - 1];
|
|
158
|
+
}
|
|
159
|
+
function anyTrue(...values) {
|
|
160
|
+
return values.some(Boolean);
|
|
161
|
+
}
|
|
162
|
+
function orThen(conditions, fn) {
|
|
163
|
+
return conditions.some(Boolean) ? fn() : void 0;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// src/logic/not.ts
|
|
167
|
+
function not(value) {
|
|
168
|
+
return !value;
|
|
169
|
+
}
|
|
170
|
+
function notFn(predicate) {
|
|
171
|
+
return (...args) => !predicate(...args);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// src/logic/coalesce.ts
|
|
175
|
+
function coalesce(...values) {
|
|
176
|
+
for (const value of values) {
|
|
177
|
+
if (value !== null && value !== void 0) {
|
|
178
|
+
return value;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return void 0;
|
|
182
|
+
}
|
|
183
|
+
function coalesceLazy(...fns) {
|
|
184
|
+
for (const fn of fns) {
|
|
185
|
+
const value = fn();
|
|
186
|
+
if (value !== null && value !== void 0) {
|
|
187
|
+
return value;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return void 0;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// src/logic/defaultTo.ts
|
|
194
|
+
function defaultTo(value, defaultValue) {
|
|
195
|
+
return value ?? defaultValue;
|
|
196
|
+
}
|
|
197
|
+
function defaultToLazy(value, getDefault) {
|
|
198
|
+
return value ?? getDefault();
|
|
199
|
+
}
|
|
200
|
+
function defaultToIf(value, predicate, defaultValue) {
|
|
201
|
+
return predicate(value) ? value : defaultValue;
|
|
202
|
+
}
|
|
203
|
+
function defaultToIfEmpty(value, defaultValue) {
|
|
204
|
+
if (value === null || value === void 0) return defaultValue;
|
|
205
|
+
if (value === "") return defaultValue;
|
|
206
|
+
if (Array.isArray(value) && value.length === 0) return defaultValue;
|
|
207
|
+
if (typeof value === "object" && Object.keys(value).length === 0) return defaultValue;
|
|
208
|
+
return value;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// src/logic/firstTruthy.ts
|
|
212
|
+
function firstTruthy(values) {
|
|
213
|
+
for (const value of values) {
|
|
214
|
+
if (value) return value;
|
|
215
|
+
}
|
|
216
|
+
return void 0;
|
|
217
|
+
}
|
|
218
|
+
function firstWhere(values, predicate) {
|
|
219
|
+
for (const value of values) {
|
|
220
|
+
if (predicate(value)) return value;
|
|
221
|
+
}
|
|
222
|
+
return void 0;
|
|
223
|
+
}
|
|
224
|
+
function firstDefined(values) {
|
|
225
|
+
for (const value of values) {
|
|
226
|
+
if (value !== null && value !== void 0) return value;
|
|
227
|
+
}
|
|
228
|
+
return void 0;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// src/logic/allTruthy.ts
|
|
232
|
+
function allTruthy(values) {
|
|
233
|
+
return values.every(Boolean);
|
|
234
|
+
}
|
|
235
|
+
function allWhere(values, predicate) {
|
|
236
|
+
return values.every(predicate);
|
|
237
|
+
}
|
|
238
|
+
function allDefined(values) {
|
|
239
|
+
return values.every((v) => v !== null && v !== void 0);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// src/logic/get.ts
|
|
243
|
+
function get(obj, ...path) {
|
|
244
|
+
let current = obj;
|
|
245
|
+
for (const key of path) {
|
|
246
|
+
if (current === null || current === void 0) {
|
|
247
|
+
return void 0;
|
|
248
|
+
}
|
|
249
|
+
current = current[key];
|
|
250
|
+
}
|
|
251
|
+
return current;
|
|
252
|
+
}
|
|
253
|
+
function getTyped(obj, path) {
|
|
254
|
+
return get(obj, ...path);
|
|
255
|
+
}
|
|
256
|
+
function getPath(obj, path) {
|
|
257
|
+
const keys = path.split(".").map((k) => {
|
|
258
|
+
const num = Number(k);
|
|
259
|
+
return Number.isNaN(num) ? k : num;
|
|
260
|
+
});
|
|
261
|
+
return get(obj, ...keys);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// src/logic/getOr.ts
|
|
265
|
+
function getOr(obj, defaultValue, ...path) {
|
|
266
|
+
let current = obj;
|
|
267
|
+
for (const key of path) {
|
|
268
|
+
if (current === null || current === void 0) {
|
|
269
|
+
return defaultValue;
|
|
270
|
+
}
|
|
271
|
+
current = current[key];
|
|
272
|
+
}
|
|
273
|
+
return current ?? defaultValue;
|
|
274
|
+
}
|
|
275
|
+
function getPathOr(obj, defaultValue, path) {
|
|
276
|
+
const keys = path.split(".").map((k) => {
|
|
277
|
+
const num = Number(k);
|
|
278
|
+
return Number.isNaN(num) ? k : num;
|
|
279
|
+
});
|
|
280
|
+
return getOr(obj, defaultValue, ...keys);
|
|
281
|
+
}
|
|
282
|
+
function getOrLazy(obj, getDefault, ...path) {
|
|
283
|
+
let current = obj;
|
|
284
|
+
for (const key of path) {
|
|
285
|
+
if (current === null || current === void 0) {
|
|
286
|
+
return getDefault();
|
|
287
|
+
}
|
|
288
|
+
current = current[key];
|
|
289
|
+
}
|
|
290
|
+
return current !== null && current !== void 0 ? current : getDefault();
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// src/logic/tryGet.ts
|
|
294
|
+
function tryGet(fn) {
|
|
295
|
+
try {
|
|
296
|
+
return fn();
|
|
297
|
+
} catch {
|
|
298
|
+
return void 0;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function tryGetOr(fn, defaultValue) {
|
|
302
|
+
try {
|
|
303
|
+
return fn();
|
|
304
|
+
} catch {
|
|
305
|
+
return defaultValue;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
function tryGetResult(fn) {
|
|
309
|
+
try {
|
|
310
|
+
return { ok: true, value: fn() };
|
|
311
|
+
} catch (error) {
|
|
312
|
+
return { ok: false, error };
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// src/logic/safe.ts
|
|
317
|
+
function safe(obj) {
|
|
318
|
+
const handler = {
|
|
319
|
+
get(target, prop) {
|
|
320
|
+
if (target === null || target === void 0) {
|
|
321
|
+
return createNullProxy();
|
|
322
|
+
}
|
|
323
|
+
const value = target[prop];
|
|
324
|
+
if (value === null || value === void 0) {
|
|
325
|
+
return createNullProxy();
|
|
326
|
+
}
|
|
327
|
+
if (typeof value === "object") {
|
|
328
|
+
return new Proxy(value, handler);
|
|
329
|
+
}
|
|
330
|
+
return value;
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
if (obj === null || obj === void 0) {
|
|
334
|
+
return createNullProxy();
|
|
335
|
+
}
|
|
336
|
+
return new Proxy(obj, handler);
|
|
337
|
+
}
|
|
338
|
+
function createNullProxy() {
|
|
339
|
+
const handler = {
|
|
340
|
+
get() {
|
|
341
|
+
return createNullProxy();
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
return new Proxy({}, handler);
|
|
345
|
+
}
|
|
346
|
+
function unwrap(value) {
|
|
347
|
+
if (value === null || value === void 0) return void 0;
|
|
348
|
+
if (typeof value === "object" && Object.keys(value).length === 0) {
|
|
349
|
+
return void 0;
|
|
350
|
+
}
|
|
351
|
+
return value;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// src/logic/chain.ts
|
|
355
|
+
function chain(value) {
|
|
356
|
+
return {
|
|
357
|
+
map(fn) {
|
|
358
|
+
if (value === null || value === void 0) {
|
|
359
|
+
return chain(void 0);
|
|
360
|
+
}
|
|
361
|
+
return chain(fn(value));
|
|
362
|
+
},
|
|
363
|
+
flatMap(fn) {
|
|
364
|
+
if (value === null || value === void 0) {
|
|
365
|
+
return chain(void 0);
|
|
366
|
+
}
|
|
367
|
+
return fn(value);
|
|
368
|
+
},
|
|
369
|
+
filter(predicate) {
|
|
370
|
+
if (value === null || value === void 0) {
|
|
371
|
+
return chain(void 0);
|
|
372
|
+
}
|
|
373
|
+
return predicate(value) ? chain(value) : chain(void 0);
|
|
374
|
+
},
|
|
375
|
+
tap(fn) {
|
|
376
|
+
if (value !== null && value !== void 0) {
|
|
377
|
+
fn(value);
|
|
378
|
+
}
|
|
379
|
+
return chain(value);
|
|
380
|
+
},
|
|
381
|
+
value() {
|
|
382
|
+
return value ?? void 0;
|
|
383
|
+
},
|
|
384
|
+
valueOr(defaultValue) {
|
|
385
|
+
return value ?? defaultValue;
|
|
386
|
+
},
|
|
387
|
+
valueOrThrow(message) {
|
|
388
|
+
if (value === null || value === void 0) {
|
|
389
|
+
throw new Error(message ?? "Value is null or undefined");
|
|
390
|
+
}
|
|
391
|
+
return value;
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// src/logic/optional.ts
|
|
397
|
+
function optional(value, fn) {
|
|
398
|
+
if (value === null || value === void 0) {
|
|
399
|
+
return void 0;
|
|
400
|
+
}
|
|
401
|
+
return fn(value);
|
|
402
|
+
}
|
|
403
|
+
function optionalOr(value, fn, defaultValue) {
|
|
404
|
+
if (value === null || value === void 0) {
|
|
405
|
+
return defaultValue;
|
|
406
|
+
}
|
|
407
|
+
return fn(value);
|
|
408
|
+
}
|
|
409
|
+
function optionalChain(value, ...fns) {
|
|
410
|
+
let current = value;
|
|
411
|
+
for (const fn of fns) {
|
|
412
|
+
if (current === null || current === void 0) {
|
|
413
|
+
return void 0;
|
|
414
|
+
}
|
|
415
|
+
current = fn(current);
|
|
416
|
+
}
|
|
417
|
+
return current ?? void 0;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
exports.allDefined = allDefined;
|
|
421
|
+
exports.allTrue = allTrue;
|
|
422
|
+
exports.allTruthy = allTruthy;
|
|
423
|
+
exports.allWhere = allWhere;
|
|
424
|
+
exports.and = and;
|
|
425
|
+
exports.andThen = andThen;
|
|
426
|
+
exports.anyTrue = anyTrue;
|
|
427
|
+
exports.chain = chain;
|
|
428
|
+
exports.coalesce = coalesce;
|
|
429
|
+
exports.coalesceLazy = coalesceLazy;
|
|
430
|
+
exports.cond = cond;
|
|
431
|
+
exports.condBy = condBy;
|
|
432
|
+
exports.condLazy = condLazy;
|
|
433
|
+
exports.defaultTo = defaultTo;
|
|
434
|
+
exports.defaultToIf = defaultToIf;
|
|
435
|
+
exports.defaultToIfEmpty = defaultToIfEmpty;
|
|
436
|
+
exports.defaultToLazy = defaultToLazy;
|
|
437
|
+
exports.firstDefined = firstDefined;
|
|
438
|
+
exports.firstTruthy = firstTruthy;
|
|
439
|
+
exports.firstWhere = firstWhere;
|
|
440
|
+
exports.get = get;
|
|
441
|
+
exports.getOr = getOr;
|
|
442
|
+
exports.getOrLazy = getOrLazy;
|
|
443
|
+
exports.getPath = getPath;
|
|
444
|
+
exports.getPathOr = getPathOr;
|
|
445
|
+
exports.getTyped = getTyped;
|
|
446
|
+
exports.ifElse = ifElse;
|
|
447
|
+
exports.ifElseLazy = ifElseLazy;
|
|
448
|
+
exports.logic_exports = logic_exports;
|
|
449
|
+
exports.matchLazy = matchLazy;
|
|
450
|
+
exports.matchType = matchType;
|
|
451
|
+
exports.matchValue = matchValue;
|
|
452
|
+
exports.matchWithDefault = matchWithDefault;
|
|
453
|
+
exports.not = not;
|
|
454
|
+
exports.notFn = notFn;
|
|
455
|
+
exports.optional = optional;
|
|
456
|
+
exports.optionalChain = optionalChain;
|
|
457
|
+
exports.optionalOr = optionalOr;
|
|
458
|
+
exports.or = or;
|
|
459
|
+
exports.orThen = orThen;
|
|
460
|
+
exports.safe = safe;
|
|
461
|
+
exports.tryGet = tryGet;
|
|
462
|
+
exports.tryGetOr = tryGetOr;
|
|
463
|
+
exports.tryGetResult = tryGetResult;
|
|
464
|
+
exports.unless = unless;
|
|
465
|
+
exports.unlessValue = unlessValue;
|
|
466
|
+
exports.unwrap = unwrap;
|
|
467
|
+
exports.when = when;
|
|
468
|
+
exports.whenValue = whenValue;
|
|
469
|
+
//# sourceMappingURL=chunk-7G4ZSMQX.js.map
|
|
470
|
+
//# sourceMappingURL=chunk-7G4ZSMQX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/logic/index.ts","../src/logic/when.ts","../src/logic/unless.ts","../src/logic/ifElse.ts","../src/logic/cond.ts","../src/logic/match.ts","../src/logic/and.ts","../src/logic/or.ts","../src/logic/not.ts","../src/logic/coalesce.ts","../src/logic/defaultTo.ts","../src/logic/firstTruthy.ts","../src/logic/allTruthy.ts","../src/logic/get.ts","../src/logic/getOr.ts","../src/logic/tryGet.ts","../src/logic/safe.ts","../src/logic/chain.ts","../src/logic/optional.ts"],"names":["__export"],"mappings":"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","file":"chunk-7G4ZSMQX.js","sourcesContent":["/**\n * Logic utilities to replace ternaries, logical operators, and optional chaining.\n */\n\n// Ternary replacements\nexport { when, whenValue } from './when.js'\nexport { unless, unlessValue } from './unless.js'\nexport { ifElse, ifElseLazy } from './ifElse.js'\nexport { cond, condLazy, condBy } from './cond.js'\nexport { matchValue, matchWithDefault, matchLazy, matchType } from './match.js'\n\n// Logical operator replacements\nexport { and, allTrue, andThen } from './and.js'\nexport { or, anyTrue, orThen } from './or.js'\nexport { not, notFn } from './not.js'\nexport { coalesce, coalesceLazy } from './coalesce.js'\nexport { defaultTo, defaultToLazy, defaultToIf, defaultToIfEmpty } from './defaultTo.js'\nexport { firstTruthy, firstWhere, firstDefined } from './firstTruthy.js'\nexport { allTruthy, allWhere, allDefined } from './allTruthy.js'\n\n// Optional chaining helpers\nexport { get, getTyped, getPath } from './get.js'\nexport { getOr, getPathOr, getOrLazy } from './getOr.js'\nexport { tryGet, tryGetOr, tryGetResult } from './tryGet.js'\nexport { safe, unwrap } from './safe.js'\nexport { chain, type Chain } from './chain.js'\nexport { optional, optionalOr, optionalChain } from './optional.js'\n","/**\n * Executes a function when condition is truthy.\n * Replaces: `condition && doSomething()`\n *\n * @example\n * when(user.isAdmin, () => showAdminPanel())\n * when(count > 0, () => processItems(count))\n *\n * // Instead of:\n * user.isAdmin && showAdminPanel()\n */\nexport function when<T>(\n condition: unknown,\n fn: () => T\n): T | undefined {\n if (condition) {\n return fn()\n }\n return undefined\n}\n\n/**\n * Returns value when condition is truthy, undefined otherwise.\n * Replaces: `condition && value`\n *\n * @example\n * const className = whenValue(isActive, 'active')\n * // Instead of: isActive && 'active'\n */\nexport function whenValue<T>(\n condition: unknown,\n value: T\n): T | undefined {\n return condition ? value : undefined\n}\n","/**\n * Executes a function unless condition is truthy.\n * Replaces: `!condition && doSomething()`\n *\n * @example\n * unless(user.isBlocked, () => allowAccess())\n *\n * // Instead of:\n * !user.isBlocked && allowAccess()\n */\nexport function unless<T>(\n condition: unknown,\n fn: () => T\n): T | undefined {\n if (!condition) {\n return fn()\n }\n return undefined\n}\n\n/**\n * Returns value unless condition is truthy, undefined otherwise.\n *\n * @example\n * const message = unlessValue(isHidden, 'Hello!')\n */\nexport function unlessValue<T>(\n condition: unknown,\n value: T\n): T | undefined {\n return !condition ? value : undefined\n}\n","/**\n * Returns one of two values based on a condition.\n * Replaces: `condition ? valueA : valueB`\n *\n * @example\n * const status = ifElse(isOnline, 'Online', 'Offline')\n * const greeting = ifElse(user.name, `Hello ${user.name}`, 'Hello Guest')\n *\n * // Instead of:\n * const status = isOnline ? 'Online' : 'Offline'\n */\nexport function ifElse<T, F>(\n condition: unknown,\n whenTrue: T,\n whenFalse: F\n): T | F {\n return condition ? whenTrue : whenFalse\n}\n\n/**\n * Lazy version - executes functions instead of evaluating values.\n * Useful when values are expensive to compute.\n *\n * @example\n * const result = ifElseLazy(\n * shouldCompute,\n * () => expensiveComputation(),\n * () => cachedValue\n * )\n */\nexport function ifElseLazy<T, F>(\n condition: unknown,\n whenTrue: () => T,\n whenFalse: () => F\n): T | F {\n return condition ? whenTrue() : whenFalse()\n}\n","/**\n * Pattern matching with multiple conditions.\n * Replaces nested ternaries or switch statements.\n *\n * @example\n * const message = cond(\n * [score >= 90, 'Excellent'],\n * [score >= 70, 'Good'],\n * [score >= 50, 'Pass'],\n * [true, 'Fail'] // default\n * )\n *\n * // Instead of:\n * const message = score >= 90 ? 'Excellent'\n * : score >= 70 ? 'Good'\n * : score >= 50 ? 'Pass'\n * : 'Fail'\n */\nexport function cond<T>(\n ...pairs: readonly [condition: unknown, value: T][]\n): T | undefined {\n for (const [condition, value] of pairs) {\n if (condition) {\n return value\n }\n }\n return undefined\n}\n\n/**\n * Lazy version - evaluates functions instead of values.\n *\n * @example\n * const result = condLazy(\n * [isAdmin, () => getAdminData()],\n * [isUser, () => getUserData()],\n * [true, () => getGuestData()]\n * )\n */\nexport function condLazy<T>(\n ...pairs: readonly [condition: unknown, fn: () => T][]\n): T | undefined {\n for (const [condition, fn] of pairs) {\n if (condition) {\n return fn()\n }\n }\n return undefined\n}\n\n/**\n * Cond with predicate functions for more complex matching.\n *\n * @example\n * const category = condBy(\n * age,\n * [n => n < 13, 'child'],\n * [n => n < 20, 'teen'],\n * [n => n < 60, 'adult'],\n * [() => true, 'senior']\n * )\n */\nexport function condBy<V, T>(\n value: V,\n ...pairs: readonly [predicate: (v: V) => boolean, result: T][]\n): T | undefined {\n for (const [predicate, result] of pairs) {\n if (predicate(value)) {\n return result\n }\n }\n return undefined\n}\n","/**\n * Type-safe pattern matching on values.\n * Replaces switch statements with exhaustive checking.\n *\n * @example\n * type Status = 'pending' | 'success' | 'error'\n *\n * const message = matchValue(status, {\n * pending: 'Loading...',\n * success: 'Done!',\n * error: 'Failed!',\n * })\n *\n * // Instead of:\n * let message: string\n * switch (status) {\n * case 'pending': message = 'Loading...'; break\n * case 'success': message = 'Done!'; break\n * case 'error': message = 'Failed!'; break\n * }\n */\nexport function matchValue<T extends string | number, R>(\n value: T,\n cases: Record<T, R>\n): R {\n return cases[value]\n}\n\n/**\n * Pattern matching with a default case.\n *\n * @example\n * const icon = matchWithDefault(status, {\n * success: '✓',\n * error: '✗',\n * }, '?')\n */\nexport function matchWithDefault<T extends string | number, R, D>(\n value: T,\n cases: Partial<Record<T, R>>,\n defaultValue: D\n): R | D {\n const result = cases[value]\n return result !== undefined ? result : defaultValue\n}\n\n/**\n * Lazy pattern matching - executes functions.\n *\n * @example\n * const result = matchLazy(action.type, {\n * increment: () => state + 1,\n * decrement: () => state - 1,\n * reset: () => 0,\n * })\n */\nexport function matchLazy<T extends string | number, R>(\n value: T,\n cases: Record<T, () => R>\n): R {\n return cases[value]()\n}\n\n/**\n * Pattern matching with type guards.\n *\n * @example\n * const result = matchType(value, [\n * [isString, (s) => s.toUpperCase()],\n * [isNumber, (n) => n * 2],\n * [isArray, (arr) => arr.length],\n * ])\n */\nexport function matchType<T, R>(\n value: T,\n matchers: readonly [guard: (v: T) => boolean, handler: (v: T) => R][]\n): R | undefined {\n for (const [guard, handler] of matchers) {\n if (guard(value)) {\n return handler(value)\n }\n }\n return undefined\n}\n","/**\n * Returns the last value if all values are truthy, otherwise the first falsy value.\n * Replaces: `a && b && c`\n *\n * @example\n * const result = and(user, user.isActive, user.hasPermission)\n * // Instead of: user && user.isActive && user.hasPermission\n *\n * // With callback\n * const data = and(isReady, hasData, () => processData())\n */\nexport function and<T>(...values: readonly T[]): T | undefined {\n if (values.length === 0) return undefined\n\n for (let i = 0; i < values.length - 1; i++) {\n const value = values[i]\n if (!value) return value\n }\n\n const last = values[values.length - 1]\n return typeof last === 'function' ? (last as () => T)() : last\n}\n\n/**\n * Returns true if all values are truthy.\n *\n * @example\n * if (allTrue(isLoggedIn, hasPermission, isActive)) {\n * // proceed\n * }\n */\nexport function allTrue(...values: readonly unknown[]): boolean {\n return values.every(Boolean)\n}\n\n/**\n * Returns the result of the callback if all conditions are truthy.\n *\n * @example\n * const result = andThen(\n * [user, user?.isAdmin, user?.canEdit],\n * () => editDocument()\n * )\n */\nexport function andThen<T>(\n conditions: readonly unknown[],\n fn: () => T\n): T | undefined {\n return conditions.every(Boolean) ? fn() : undefined\n}\n","/**\n * Returns the first truthy value, or the last value if none are truthy.\n * Replaces: `a || b || c`\n *\n * @example\n * const name = or(user.nickname, user.firstName, user.email, 'Anonymous')\n * // Instead of: user.nickname || user.firstName || user.email || 'Anonymous'\n */\nexport function or<T>(...values: readonly T[]): T | undefined {\n if (values.length === 0) return undefined\n\n for (const value of values) {\n if (value) return value\n }\n\n return values[values.length - 1]\n}\n\n/**\n * Returns true if any value is truthy.\n *\n * @example\n * if (anyTrue(isAdmin, isModerator, isOwner)) {\n * // has elevated permissions\n * }\n */\nexport function anyTrue(...values: readonly unknown[]): boolean {\n return values.some(Boolean)\n}\n\n/**\n * Returns the result of the callback if any condition is truthy.\n *\n * @example\n * const result = orThen(\n * [isAdmin, isModerator],\n * () => showModTools()\n * )\n */\nexport function orThen<T>(\n conditions: readonly unknown[],\n fn: () => T\n): T | undefined {\n return conditions.some(Boolean) ? fn() : undefined\n}\n","/**\n * Negates a value.\n * Replaces: `!value`\n *\n * @example\n * const isInactive = not(user.isActive)\n *\n * // Useful in functional composition\n * users.filter(not(isAdmin))\n */\nexport function not<T>(value: T): boolean {\n return !value\n}\n\n/**\n * Creates a negated predicate function.\n *\n * @example\n * const isNotEmpty = notFn(isEmpty)\n * const validItems = items.filter(isNotEmpty)\n */\nexport function notFn<T extends readonly unknown[]>(\n predicate: (...args: T) => boolean\n): (...args: T) => boolean {\n return (...args: T) => !predicate(...args)\n}\n","/**\n * Returns the first non-nullish value (not null or undefined).\n * Replaces: `a ?? b ?? c`\n *\n * @example\n * const value = coalesce(config.timeout, defaultConfig.timeout, 5000)\n * // Instead of: config.timeout ?? defaultConfig.timeout ?? 5000\n *\n * // Handles 0 and '' correctly (unlike ||)\n * coalesce(0, 10) // 0\n * coalesce('', 'default') // ''\n */\nexport function coalesce<T>(...values: readonly (T | null | undefined)[]): T | undefined {\n for (const value of values) {\n if (value !== null && value !== undefined) {\n return value\n }\n }\n return undefined\n}\n\n/**\n * Lazy version - evaluates functions only if needed.\n *\n * @example\n * const config = coalesceLazy(\n * () => getUserConfig(),\n * () => getDefaultConfig(),\n * () => ({ timeout: 5000 })\n * )\n */\nexport function coalesceLazy<T>(\n ...fns: readonly (() => T | null | undefined)[]\n): T | undefined {\n for (const fn of fns) {\n const value = fn()\n if (value !== null && value !== undefined) {\n return value\n }\n }\n return undefined\n}\n","/**\n * Returns the value if it's not nullish, otherwise returns the default.\n * Replaces: `value ?? defaultValue`\n *\n * @example\n * const timeout = defaultTo(config.timeout, 5000)\n * // Instead of: config.timeout ?? 5000\n */\nexport function defaultTo<T, D>(\n value: T | null | undefined,\n defaultValue: D\n): T | D {\n return value ?? defaultValue\n}\n\n/**\n * Lazy version - evaluates default only if needed.\n *\n * @example\n * const user = defaultToLazy(cachedUser, () => fetchUser())\n */\nexport function defaultToLazy<T, D>(\n value: T | null | undefined,\n getDefault: () => D\n): T | D {\n return value ?? getDefault()\n}\n\n/**\n * Returns the value if it passes the predicate, otherwise returns the default.\n *\n * @example\n * const validAge = defaultToIf(age, n => n >= 0 && n <= 150, 0)\n */\nexport function defaultToIf<T, D>(\n value: T,\n predicate: (v: T) => boolean,\n defaultValue: D\n): T | D {\n return predicate(value) ? value : defaultValue\n}\n\n/**\n * Returns the value if it's not empty (null, undefined, '', [], {}), otherwise returns the default.\n *\n * @example\n * const name = defaultToIfEmpty(user.name, 'Anonymous')\n */\nexport function defaultToIfEmpty<T, D>(\n value: T | null | undefined,\n defaultValue: D\n): T | D {\n if (value === null || value === undefined) return defaultValue\n if (value === '') return defaultValue\n if (Array.isArray(value) && value.length === 0) return defaultValue\n if (typeof value === 'object' && Object.keys(value).length === 0) return defaultValue\n return value\n}\n","/**\n * Returns the first truthy value from an array.\n *\n * @example\n * const source = firstTruthy([null, '', 0, 'hello', 'world'])\n * // 'hello'\n */\nexport function firstTruthy<T>(values: readonly T[]): T | undefined {\n for (const value of values) {\n if (value) return value\n }\n return undefined\n}\n\n/**\n * Returns the first value that passes the predicate.\n *\n * @example\n * const validEmail = firstWhere(\n * [user.email, user.backupEmail, 'default@example.com'],\n * isValidEmail\n * )\n */\nexport function firstWhere<T>(\n values: readonly T[],\n predicate: (value: T) => boolean\n): T | undefined {\n for (const value of values) {\n if (predicate(value)) return value\n }\n return undefined\n}\n\n/**\n * Returns the first non-nullish value from an array.\n *\n * @example\n * const value = firstDefined([null, undefined, 0, '', false])\n * // 0 (first non-nullish value)\n */\nexport function firstDefined<T>(\n values: readonly (T | null | undefined)[]\n): T | undefined {\n for (const value of values) {\n if (value !== null && value !== undefined) return value\n }\n return undefined\n}\n","/**\n * Returns true if all values are truthy.\n *\n * @example\n * if (allTruthy([user, user.isActive, user.hasPermission])) {\n * // proceed\n * }\n */\nexport function allTruthy(values: readonly unknown[]): boolean {\n return values.every(Boolean)\n}\n\n/**\n * Returns true if all values pass the predicate.\n *\n * @example\n * const allValid = allWhere([email1, email2, email3], isValidEmail)\n */\nexport function allWhere<T>(\n values: readonly T[],\n predicate: (value: T) => boolean\n): boolean {\n return values.every(predicate)\n}\n\n/**\n * Returns true if all values are defined (not null or undefined).\n *\n * @example\n * if (allDefined([user, user.profile, user.profile.settings])) {\n * // safe to access user.profile.settings\n * }\n */\nexport function allDefined(\n values: readonly unknown[]\n): boolean {\n return values.every((v) => v !== null && v !== undefined)\n}\n","/**\n * Safely gets a nested property value using a path.\n * Replaces: `obj?.a?.b?.c`\n *\n * @example\n * const city = get(user, 'address', 'city')\n * // Instead of: user?.address?.city\n *\n * const firstItem = get(data, 'items', 0, 'name')\n * // Instead of: data?.items?.[0]?.name\n */\nexport function get<T>(\n obj: unknown,\n ...path: readonly PropertyKey[]\n): T | undefined {\n let current: unknown = obj\n\n for (const key of path) {\n if (current === null || current === undefined) {\n return undefined\n }\n current = (current as Record<PropertyKey, unknown>)[key]\n }\n\n return current as T | undefined\n}\n\n/**\n * Type-safe get for known object structures.\n *\n * @example\n * interface User { profile: { name: string } }\n * const name = getTyped<User, string>(user, ['profile', 'name'])\n */\nexport function getTyped<T, R>(\n obj: T,\n path: readonly PropertyKey[]\n): R | undefined {\n return get<R>(obj, ...path)\n}\n\n/**\n * Gets a value using a dot-notation path string.\n *\n * @example\n * const city = getPath(user, 'address.city')\n * const item = getPath(data, 'items.0.name')\n */\nexport function getPath<T>(\n obj: unknown,\n path: string\n): T | undefined {\n const keys = path.split('.').map((k) => {\n const num = Number(k)\n return Number.isNaN(num) ? k : num\n })\n return get<T>(obj, ...keys)\n}\n","/**\n * Safely gets a nested property value, returning a default if not found.\n * Replaces: `obj?.a?.b?.c ?? defaultValue`\n *\n * @example\n * const city = getOr(user, 'Unknown', 'address', 'city')\n * // Instead of: user?.address?.city ?? 'Unknown'\n */\nexport function getOr<T>(\n obj: unknown,\n defaultValue: T,\n ...path: readonly PropertyKey[]\n): T {\n let current: unknown = obj\n\n for (const key of path) {\n if (current === null || current === undefined) {\n return defaultValue\n }\n current = (current as Record<PropertyKey, unknown>)[key]\n }\n\n return (current ?? defaultValue) as T\n}\n\n/**\n * Gets a value using dot-notation path, with default.\n *\n * @example\n * const city = getPathOr(user, 'Unknown', 'address.city')\n */\nexport function getPathOr<T>(\n obj: unknown,\n defaultValue: T,\n path: string\n): T {\n const keys = path.split('.').map((k) => {\n const num = Number(k)\n return Number.isNaN(num) ? k : num\n })\n return getOr<T>(obj, defaultValue, ...keys)\n}\n\n/**\n * Lazy version - computes default only if needed.\n *\n * @example\n * const config = getOrLazy(settings, () => computeDefault(), 'theme', 'colors')\n */\nexport function getOrLazy<T>(\n obj: unknown,\n getDefault: () => T,\n ...path: readonly PropertyKey[]\n): T {\n let current: unknown = obj\n\n for (const key of path) {\n if (current === null || current === undefined) {\n return getDefault()\n }\n current = (current as Record<PropertyKey, unknown>)[key]\n }\n\n return current !== null && current !== undefined ? (current as T) : getDefault()\n}\n","/**\n * Tries to get a value, catching any errors.\n * Useful for accessing properties that might throw.\n *\n * @example\n * const value = tryGet(() => JSON.parse(str).data.value)\n * // Instead of: try { JSON.parse(str).data.value } catch { undefined }\n */\nexport function tryGet<T>(fn: () => T): T | undefined {\n try {\n return fn()\n } catch {\n return undefined\n }\n}\n\n/**\n * Tries to get a value, returning default on error.\n *\n * @example\n * const config = tryGetOr(() => JSON.parse(str), defaultConfig)\n */\nexport function tryGetOr<T>(fn: () => T, defaultValue: T): T {\n try {\n return fn()\n } catch {\n return defaultValue\n }\n}\n\n/**\n * Tries to get a value, returning Result type.\n *\n * @example\n * const result = tryGetResult(() => riskyOperation())\n * if (result.ok) {\n * console.log(result.value)\n * } else {\n * console.error(result.error)\n * }\n */\nexport function tryGetResult<T>(\n fn: () => T\n): { ok: true; value: T } | { ok: false; error: unknown } {\n try {\n return { ok: true, value: fn() }\n } catch (error) {\n return { ok: false, error }\n }\n}\n","/**\n * Wraps an object to make all property access safe (returns undefined instead of throwing).\n * Creates a proxy that handles undefined/null gracefully.\n *\n * @example\n * const safeUser = safe(user)\n * const city = safeUser.address.city.name // undefined if any part is missing\n *\n * // Instead of:\n * const city = user?.address?.city?.name\n */\nexport function safe<T extends object>(obj: T | null | undefined): SafeProxy<T> {\n const handler: ProxyHandler<object> = {\n get(target, prop) {\n if (target === null || target === undefined) {\n return createNullProxy()\n }\n\n const value = (target as Record<PropertyKey, unknown>)[prop]\n\n if (value === null || value === undefined) {\n return createNullProxy()\n }\n\n if (typeof value === 'object') {\n return new Proxy(value as object, handler)\n }\n\n return value\n },\n }\n\n if (obj === null || obj === undefined) {\n return createNullProxy() as SafeProxy<T>\n }\n\n return new Proxy(obj, handler) as SafeProxy<T>\n}\n\nfunction createNullProxy(): unknown {\n const handler: ProxyHandler<object> = {\n get() {\n return createNullProxy()\n },\n }\n return new Proxy({}, handler)\n}\n\n/**\n * Unwraps a safe proxy to get the actual value (or undefined).\n *\n * @example\n * const safeUser = safe(user)\n * const city = unwrap(safeUser.address.city) // string | undefined\n */\nexport function unwrap<T>(value: T): T | undefined {\n if (value === null || value === undefined) return undefined\n if (typeof value === 'object' && Object.keys(value as object).length === 0) {\n return undefined\n }\n return value\n}\n\ntype SafeProxy<T> = T extends object\n ? { [K in keyof T]: SafeProxy<T[K]> }\n : T | undefined\n","/**\n * Chains operations on a value, stopping if any returns null/undefined.\n * Replaces: `a?.method1()?.method2()?.method3()`\n *\n * @example\n * const result = chain(user)\n * .map(u => u.profile)\n * .map(p => p.settings)\n * .map(s => s.theme)\n * .value()\n *\n * // Instead of:\n * const result = user?.profile?.settings?.theme\n */\nexport function chain<T>(value: T | null | undefined): Chain<T> {\n return {\n map<U>(fn: (v: T) => U | null | undefined): Chain<U> {\n if (value === null || value === undefined) {\n return chain<U>(undefined)\n }\n return chain(fn(value))\n },\n\n flatMap<U>(fn: (v: T) => Chain<U>): Chain<U> {\n if (value === null || value === undefined) {\n return chain<U>(undefined)\n }\n return fn(value)\n },\n\n filter(predicate: (v: T) => boolean): Chain<T> {\n if (value === null || value === undefined) {\n return chain<T>(undefined)\n }\n return predicate(value) ? chain(value) : chain<T>(undefined)\n },\n\n tap(fn: (v: T) => void): Chain<T> {\n if (value !== null && value !== undefined) {\n fn(value)\n }\n return chain(value)\n },\n\n value(): T | undefined {\n return value ?? undefined\n },\n\n valueOr<D>(defaultValue: D): T | D {\n return value ?? defaultValue\n },\n\n valueOrThrow(message?: string): T {\n if (value === null || value === undefined) {\n throw new Error(message ?? 'Value is null or undefined')\n }\n return value\n },\n }\n}\n\ninterface Chain<T> {\n map<U>(fn: (v: T) => U | null | undefined): Chain<U>\n flatMap<U>(fn: (v: T) => Chain<U>): Chain<U>\n filter(predicate: (v: T) => boolean): Chain<T>\n tap(fn: (v: T) => void): Chain<T>\n value(): T | undefined\n valueOr<D>(defaultValue: D): T | D\n valueOrThrow(message?: string): T\n}\n\nexport type { Chain }\n","/**\n * Calls a method on an object only if the object exists.\n * Replaces: `obj?.method(args)`\n *\n * @example\n * optional(user, u => u.getName())\n * optional(array, a => a.map(x => x * 2))\n *\n * // Instead of:\n * user?.getName()\n * array?.map(x => x * 2)\n */\nexport function optional<T, R>(\n value: T | null | undefined,\n fn: (v: T) => R\n): R | undefined {\n if (value === null || value === undefined) {\n return undefined\n }\n return fn(value)\n}\n\n/**\n * Calls a method with a default value if the object doesn't exist.\n *\n * @example\n * const length = optionalOr(str, s => s.length, 0)\n * // Instead of: str?.length ?? 0\n */\nexport function optionalOr<T, R, D>(\n value: T | null | undefined,\n fn: (v: T) => R,\n defaultValue: D\n): R | D {\n if (value === null || value === undefined) {\n return defaultValue\n }\n return fn(value)\n}\n\n/**\n * Applies multiple optional operations in sequence.\n *\n * @example\n * const result = optionalChain(\n * user,\n * u => u.profile,\n * p => p.settings,\n * s => s.theme\n * )\n * // Instead of: user?.profile?.settings?.theme\n */\nexport function optionalChain<T, A>(\n value: T | null | undefined,\n fn1: (v: T) => A | null | undefined\n): A | undefined\nexport function optionalChain<T, A, B>(\n value: T | null | undefined,\n fn1: (v: T) => A | null | undefined,\n fn2: (v: A) => B | null | undefined\n): B | undefined\nexport function optionalChain<T, A, B, C>(\n value: T | null | undefined,\n fn1: (v: T) => A | null | undefined,\n fn2: (v: A) => B | null | undefined,\n fn3: (v: B) => C | null | undefined\n): C | undefined\nexport function optionalChain<T, A, B, C, D>(\n value: T | null | undefined,\n fn1: (v: T) => A | null | undefined,\n fn2: (v: A) => B | null | undefined,\n fn3: (v: B) => C | null | undefined,\n fn4: (v: C) => D | null | undefined\n): D | undefined\nexport function optionalChain(\n value: unknown,\n ...fns: readonly ((v: unknown) => unknown)[]\n): unknown {\n let current = value\n for (const fn of fns) {\n if (current === null || current === undefined) {\n return undefined\n }\n current = fn(current)\n }\n return current ?? undefined\n}\n"]}
|