@nlozgachev/pipelined 0.58.0 → 0.60.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/README.md +4 -4
- package/dist/composition.cjs +13 -1
- package/dist/composition.d.cts +9 -0
- package/dist/composition.d.ts +9 -0
- package/dist/{chunk-JSG7SFXS.js → composition.mjs} +56 -19
- package/dist/core.cjs +13 -1
- package/dist/core.d.cts +7 -0
- package/dist/core.d.ts +7 -0
- package/dist/{chunk-VYHAA4KO.js → core.mjs} +41 -7
- package/dist/data.cjs +53 -45
- package/dist/{chunk-FVWJMPQI.js → data.mjs} +314 -52
- package/dist/index.cjs +79 -47
- package/dist/index.mjs +4464 -0
- package/dist/{chunk-OIIOGDHK.js → types.mjs} +2 -3
- package/package.json +41 -21
- package/dist/composition.js +0 -65
- package/dist/core.js +0 -49
- package/dist/data.js +0 -22
- package/dist/index.js +0 -136
- package/dist/types.js +0 -10
package/dist/index.cjs
CHANGED
|
@@ -296,13 +296,25 @@ function juxt(fns) {
|
|
|
296
296
|
var memoize = (f, options) => {
|
|
297
297
|
const cache = /* @__PURE__ */ new Map();
|
|
298
298
|
const keyFn = options?.key ?? ((a) => a);
|
|
299
|
+
const maxSize = options?.maxSize;
|
|
299
300
|
return (a) => {
|
|
300
301
|
const key = keyFn(a);
|
|
301
302
|
if (cache.has(key)) {
|
|
302
|
-
|
|
303
|
+
const cached = cache.get(key);
|
|
304
|
+
if (maxSize !== void 0) {
|
|
305
|
+
cache.delete(key);
|
|
306
|
+
cache.set(key, cached);
|
|
307
|
+
}
|
|
308
|
+
return cached;
|
|
303
309
|
}
|
|
304
310
|
const result = f(a);
|
|
305
311
|
cache.set(key, result);
|
|
312
|
+
if (maxSize !== void 0 && cache.size > maxSize) {
|
|
313
|
+
const firstKey = cache.keys().next().value;
|
|
314
|
+
if (firstKey !== void 0) {
|
|
315
|
+
cache.delete(firstKey);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
306
318
|
return result;
|
|
307
319
|
};
|
|
308
320
|
};
|
|
@@ -2312,6 +2324,7 @@ var Stream;
|
|
|
2312
2324
|
Stream2.make = (options) => ({
|
|
2313
2325
|
options,
|
|
2314
2326
|
_listeners: /* @__PURE__ */ new Set(),
|
|
2327
|
+
_listenerArray: null,
|
|
2315
2328
|
_queue: [],
|
|
2316
2329
|
_isEmitting: false
|
|
2317
2330
|
});
|
|
@@ -2325,7 +2338,10 @@ var Stream;
|
|
|
2325
2338
|
try {
|
|
2326
2339
|
while (stream._queue.length > 0) {
|
|
2327
2340
|
const nextMsg = stream._queue.shift();
|
|
2328
|
-
|
|
2341
|
+
if (stream._listenerArray === null) {
|
|
2342
|
+
stream._listenerArray = Array.from(stream._listeners);
|
|
2343
|
+
}
|
|
2344
|
+
const listeners = stream._listenerArray;
|
|
2329
2345
|
for (const listener of listeners) {
|
|
2330
2346
|
try {
|
|
2331
2347
|
listener(nextMsg);
|
|
@@ -2356,8 +2372,10 @@ var Stream;
|
|
|
2356
2372
|
}
|
|
2357
2373
|
};
|
|
2358
2374
|
options.from._listeners.add(handler);
|
|
2375
|
+
options.from._listenerArray = null;
|
|
2359
2376
|
return () => {
|
|
2360
2377
|
options.from._listeners.delete(handler);
|
|
2378
|
+
options.from._listenerArray = null;
|
|
2361
2379
|
};
|
|
2362
2380
|
};
|
|
2363
2381
|
Stream2.listen = (stream, events, options) => {
|
|
@@ -2411,12 +2429,15 @@ var Stream;
|
|
|
2411
2429
|
currentState = reducer(msg, currentState);
|
|
2412
2430
|
if (isOnce) {
|
|
2413
2431
|
stream._listeners.delete(listenerFn);
|
|
2432
|
+
stream._listenerArray = null;
|
|
2414
2433
|
}
|
|
2415
2434
|
});
|
|
2416
2435
|
const unsubscribe = () => {
|
|
2417
2436
|
stream._listeners.delete(listenerFn);
|
|
2437
|
+
stream._listenerArray = null;
|
|
2418
2438
|
};
|
|
2419
2439
|
stream._listeners.add(listenerFn);
|
|
2440
|
+
stream._listenerArray = null;
|
|
2420
2441
|
return { unsubscribe, getState: () => currentState };
|
|
2421
2442
|
},
|
|
2422
2443
|
tap: (effect) => {
|
|
@@ -2424,12 +2445,15 @@ var Stream;
|
|
|
2424
2445
|
effect(msg);
|
|
2425
2446
|
if (isOnce) {
|
|
2426
2447
|
stream._listeners.delete(listenerFn);
|
|
2448
|
+
stream._listenerArray = null;
|
|
2427
2449
|
}
|
|
2428
2450
|
});
|
|
2429
2451
|
const unsubscribe = () => {
|
|
2430
2452
|
stream._listeners.delete(listenerFn);
|
|
2453
|
+
stream._listenerArray = null;
|
|
2431
2454
|
};
|
|
2432
2455
|
stream._listeners.add(listenerFn);
|
|
2456
|
+
stream._listenerArray = null;
|
|
2433
2457
|
return unsubscribe;
|
|
2434
2458
|
}
|
|
2435
2459
|
};
|
|
@@ -3329,7 +3353,7 @@ var Arr;
|
|
|
3329
3353
|
}
|
|
3330
3354
|
return result;
|
|
3331
3355
|
};
|
|
3332
|
-
Arr2.uniq = (data) => [...new Set(data)];
|
|
3356
|
+
Arr2.uniq = (data) => data.length <= 1 ? data : [...new Set(data)];
|
|
3333
3357
|
Arr2.uniqBy = (f) => (data) => {
|
|
3334
3358
|
const seen = /* @__PURE__ */ new Set();
|
|
3335
3359
|
const result = [];
|
|
@@ -3984,10 +4008,20 @@ var Num;
|
|
|
3984
4008
|
|
|
3985
4009
|
// src/Data/Rec.ts
|
|
3986
4010
|
var _isNonEmpty = (data) => Object.keys(data).length > 0;
|
|
4011
|
+
var _setKey = (record, key, value) => {
|
|
4012
|
+
if (key === "__proto__") {
|
|
4013
|
+
Object.defineProperty(record, key, { value, writable: true, enumerable: true, configurable: true });
|
|
4014
|
+
} else {
|
|
4015
|
+
record[key] = value;
|
|
4016
|
+
}
|
|
4017
|
+
};
|
|
3987
4018
|
var RecMaybe;
|
|
3988
4019
|
((RecMaybe2) => {
|
|
3989
4020
|
RecMaybe2.traverse = (f) => (data) => {
|
|
3990
4021
|
const recordKeys = Object.keys(data);
|
|
4022
|
+
if (recordKeys.length === 0) {
|
|
4023
|
+
return { kind: "Some", value: {} };
|
|
4024
|
+
}
|
|
3991
4025
|
const result = {};
|
|
3992
4026
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
3993
4027
|
const key = recordKeys[i];
|
|
@@ -3995,7 +4029,7 @@ var RecMaybe;
|
|
|
3995
4029
|
if (maybeVal.kind === "None") {
|
|
3996
4030
|
return maybeVal;
|
|
3997
4031
|
}
|
|
3998
|
-
|
|
4032
|
+
_setKey(result, key, maybeVal.value);
|
|
3999
4033
|
}
|
|
4000
4034
|
return { kind: "Some", value: result };
|
|
4001
4035
|
};
|
|
@@ -4012,7 +4046,7 @@ var RecResult;
|
|
|
4012
4046
|
if (res.kind === "Err") {
|
|
4013
4047
|
return res;
|
|
4014
4048
|
}
|
|
4015
|
-
|
|
4049
|
+
_setKey(result, key, res.value);
|
|
4016
4050
|
}
|
|
4017
4051
|
return { kind: "Ok", value: result };
|
|
4018
4052
|
};
|
|
@@ -4065,12 +4099,7 @@ var Rec;
|
|
|
4065
4099
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
4066
4100
|
const maybeVal = f(recordValues[i]);
|
|
4067
4101
|
if (maybeVal.kind === "Some") {
|
|
4068
|
-
|
|
4069
|
-
value: maybeVal.value,
|
|
4070
|
-
writable: true,
|
|
4071
|
-
enumerable: true,
|
|
4072
|
-
configurable: true
|
|
4073
|
-
});
|
|
4102
|
+
_setKey(result, recordKeys[i], maybeVal.value);
|
|
4074
4103
|
}
|
|
4075
4104
|
}
|
|
4076
4105
|
return result;
|
|
@@ -4081,16 +4110,7 @@ var Rec;
|
|
|
4081
4110
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
4082
4111
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
4083
4112
|
const key = recordKeys[i];
|
|
4084
|
-
|
|
4085
|
-
Object.defineProperty(result, "__proto__", {
|
|
4086
|
-
value: f(key, recordValues[i]),
|
|
4087
|
-
writable: true,
|
|
4088
|
-
enumerable: true,
|
|
4089
|
-
configurable: true
|
|
4090
|
-
});
|
|
4091
|
-
} else {
|
|
4092
|
-
result[key] = f(key, recordValues[i]);
|
|
4093
|
-
}
|
|
4113
|
+
_setKey(result, key, f(key, recordValues[i]));
|
|
4094
4114
|
}
|
|
4095
4115
|
return result;
|
|
4096
4116
|
};
|
|
@@ -4100,12 +4120,7 @@ var Rec;
|
|
|
4100
4120
|
const result = Object.create(Object.getPrototypeOf(data));
|
|
4101
4121
|
for (let i = 0; i < recordKeys.length; i++) {
|
|
4102
4122
|
if (predicate(recordValues[i])) {
|
|
4103
|
-
|
|
4104
|
-
value: recordValues[i],
|
|
4105
|
-
writable: true,
|
|
4106
|
-
enumerable: true,
|
|
4107
|
-
configurable: true
|
|
4108
|
-
});
|
|
4123
|
+
_setKey(result, recordKeys[i], recordValues[i]);
|
|
4109
4124
|
}
|
|
4110
4125
|
}
|
|
4111
4126
|
return result;
|
|
@@ -4114,7 +4129,7 @@ var Rec;
|
|
|
4114
4129
|
const result = {};
|
|
4115
4130
|
for (const [k, v] of Object.entries(data)) {
|
|
4116
4131
|
if (predicate(k, v)) {
|
|
4117
|
-
|
|
4132
|
+
_setKey(result, k, v);
|
|
4118
4133
|
}
|
|
4119
4134
|
}
|
|
4120
4135
|
return result;
|
|
@@ -4134,7 +4149,7 @@ var Rec;
|
|
|
4134
4149
|
if (Object.hasOwn(result, key)) {
|
|
4135
4150
|
result[key].push(item);
|
|
4136
4151
|
} else {
|
|
4137
|
-
|
|
4152
|
+
_setKey(result, key, [item]);
|
|
4138
4153
|
}
|
|
4139
4154
|
}
|
|
4140
4155
|
return result;
|
|
@@ -4143,7 +4158,7 @@ var Rec;
|
|
|
4143
4158
|
const result = {};
|
|
4144
4159
|
for (const key of pickedKeys) {
|
|
4145
4160
|
if (Object.hasOwn(data, key)) {
|
|
4146
|
-
|
|
4161
|
+
_setKey(result, key, data[key]);
|
|
4147
4162
|
}
|
|
4148
4163
|
}
|
|
4149
4164
|
return result;
|
|
@@ -4153,12 +4168,7 @@ var Rec;
|
|
|
4153
4168
|
const result = {};
|
|
4154
4169
|
for (const key of Object.keys(data)) {
|
|
4155
4170
|
if (!omitSet.has(key)) {
|
|
4156
|
-
|
|
4157
|
-
value: data[key],
|
|
4158
|
-
writable: true,
|
|
4159
|
-
enumerable: true,
|
|
4160
|
-
configurable: true
|
|
4161
|
-
});
|
|
4171
|
+
_setKey(result, key, data[key]);
|
|
4162
4172
|
}
|
|
4163
4173
|
}
|
|
4164
4174
|
return result;
|
|
@@ -4199,26 +4209,42 @@ var Rec;
|
|
|
4199
4209
|
Rec2.mergeWith = mergeWith;
|
|
4200
4210
|
Rec2.size = (data) => Object.keys(data).length;
|
|
4201
4211
|
Rec2.mapKeys = (f) => (data) => {
|
|
4212
|
+
const keys2 = Object.keys(data);
|
|
4213
|
+
if (keys2.length === 0) {
|
|
4214
|
+
return data;
|
|
4215
|
+
}
|
|
4202
4216
|
const result = {};
|
|
4203
|
-
for (
|
|
4204
|
-
|
|
4217
|
+
for (let i = 0; i < keys2.length; i++) {
|
|
4218
|
+
const k = keys2[i];
|
|
4219
|
+
_setKey(result, f(k), data[k]);
|
|
4205
4220
|
}
|
|
4206
4221
|
return result;
|
|
4207
4222
|
};
|
|
4208
4223
|
Rec2.compact = (data) => {
|
|
4224
|
+
const keys2 = Object.keys(data);
|
|
4225
|
+
if (keys2.length === 0) {
|
|
4226
|
+
return {};
|
|
4227
|
+
}
|
|
4209
4228
|
const result = {};
|
|
4210
|
-
for (
|
|
4229
|
+
for (let i = 0; i < keys2.length; i++) {
|
|
4230
|
+
const k = keys2[i];
|
|
4231
|
+
const v = data[k];
|
|
4211
4232
|
if (v.kind === "Some") {
|
|
4212
|
-
|
|
4233
|
+
_setKey(result, k, v.value);
|
|
4213
4234
|
}
|
|
4214
4235
|
}
|
|
4215
4236
|
return result;
|
|
4216
4237
|
};
|
|
4217
4238
|
Rec2.mapEntries = (f) => (data) => {
|
|
4239
|
+
const keys2 = Object.keys(data);
|
|
4240
|
+
if (keys2.length === 0) {
|
|
4241
|
+
return {};
|
|
4242
|
+
}
|
|
4218
4243
|
const result = {};
|
|
4219
|
-
for (
|
|
4220
|
-
const
|
|
4221
|
-
|
|
4244
|
+
for (let i = 0; i < keys2.length; i++) {
|
|
4245
|
+
const k = keys2[i];
|
|
4246
|
+
const [newKey, newVal] = f(k, data[k]);
|
|
4247
|
+
_setKey(result, newKey, newVal);
|
|
4222
4248
|
}
|
|
4223
4249
|
return result;
|
|
4224
4250
|
};
|
|
@@ -4290,8 +4316,11 @@ var Str;
|
|
|
4290
4316
|
* ```
|
|
4291
4317
|
*/
|
|
4292
4318
|
int: (s) => {
|
|
4293
|
-
|
|
4294
|
-
|
|
4319
|
+
if (s.length === 0) {
|
|
4320
|
+
return Maybe.make.none();
|
|
4321
|
+
}
|
|
4322
|
+
const n = Number.parseInt(s, 10);
|
|
4323
|
+
return Number.isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
4295
4324
|
},
|
|
4296
4325
|
/**
|
|
4297
4326
|
* Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
|
|
@@ -4304,8 +4333,11 @@ var Str;
|
|
|
4304
4333
|
* ```
|
|
4305
4334
|
*/
|
|
4306
4335
|
float: (s) => {
|
|
4307
|
-
|
|
4308
|
-
|
|
4336
|
+
if (s.length === 0) {
|
|
4337
|
+
return Maybe.make.none();
|
|
4338
|
+
}
|
|
4339
|
+
const n = Number.parseFloat(s);
|
|
4340
|
+
return Number.isNaN(n) ? Maybe.make.none() : Maybe.make.some(n);
|
|
4309
4341
|
}
|
|
4310
4342
|
};
|
|
4311
4343
|
Str2.parseJson = (s) => {
|