mol_wire_pub 1.0.29 → 1.0.33
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/node.test.js +29 -27
- package/node.test.js.map +1 -1
- package/package.json +1 -1
- package/web.test.js +29 -27
- package/web.test.js.map +1 -1
package/package.json
CHANGED
package/web.test.js
CHANGED
|
@@ -1743,8 +1743,9 @@ var $;
|
|
|
1743
1743
|
$.$mol_wire_mem = $mol_wire_mem;
|
|
1744
1744
|
function $mol_wire_mem_func(keys) {
|
|
1745
1745
|
return (func) => {
|
|
1746
|
+
const persist = $mol_wire_fiber.persist(func, keys);
|
|
1746
1747
|
const wrapper = function (...args) {
|
|
1747
|
-
let atom =
|
|
1748
|
+
let atom = persist.call(this, ...args.slice(0, keys));
|
|
1748
1749
|
if (args.length <= keys || args[keys] === undefined)
|
|
1749
1750
|
return atom.sync();
|
|
1750
1751
|
try {
|
|
@@ -2343,36 +2344,37 @@ var $;
|
|
|
2343
2344
|
}
|
|
2344
2345
|
return new this(host, task, `${host?.[Symbol.toStringTag] ?? host}.${task.name}(#)`, ...args);
|
|
2345
2346
|
}
|
|
2346
|
-
static persist(
|
|
2347
|
+
static persist(task, keys) {
|
|
2347
2348
|
const field = task.name + '()';
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2349
|
+
if (keys) {
|
|
2350
|
+
return function $mol_wire_fiber_persist(...args) {
|
|
2351
|
+
let dict, key, fiber;
|
|
2352
|
+
key = `${this?.[Symbol.toStringTag] ?? this}.${task.name}(${args.map(v => $mol_key(v)).join(',')})`;
|
|
2353
|
+
dict = Object.getOwnPropertyDescriptor(this ?? task, field)?.value;
|
|
2354
|
+
if (dict) {
|
|
2355
|
+
const existen = dict.get(key);
|
|
2356
|
+
if (existen)
|
|
2357
|
+
return existen;
|
|
2358
|
+
}
|
|
2359
|
+
else {
|
|
2360
|
+
dict = (this ?? task)[field] = new Map();
|
|
2361
|
+
}
|
|
2362
|
+
fiber = new $mol_wire_fiber(this, task, key, ...args);
|
|
2363
|
+
dict.set(key, fiber);
|
|
2364
|
+
return fiber;
|
|
2365
|
+
};
|
|
2356
2366
|
}
|
|
2357
2367
|
else {
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
break reuse;
|
|
2368
|
-
return existen;
|
|
2368
|
+
return function $mol_wire_fiber_persist(...args) {
|
|
2369
|
+
const existen = Object.getOwnPropertyDescriptor(this ?? task, field)?.value;
|
|
2370
|
+
if (existen)
|
|
2371
|
+
return existen;
|
|
2372
|
+
const key = `${this?.[Symbol.toStringTag] ?? this}.${field}`;
|
|
2373
|
+
const fiber = new $mol_wire_fiber(this, task, key, ...args);
|
|
2374
|
+
(this ?? task)[field] = fiber;
|
|
2375
|
+
return fiber;
|
|
2376
|
+
};
|
|
2369
2377
|
}
|
|
2370
|
-
fiber = new this(host, task, key, ...args);
|
|
2371
|
-
if (args.length)
|
|
2372
|
-
dict.set(key, fiber);
|
|
2373
|
-
else
|
|
2374
|
-
(host ?? task)[field] = fiber;
|
|
2375
|
-
return fiber;
|
|
2376
2378
|
}
|
|
2377
2379
|
static warm = true;
|
|
2378
2380
|
static planning = [];
|