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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mol_wire_pub",
3
- "version": "1.0.29",
3
+ "version": "1.0.33",
4
4
  "main": "node.js",
5
5
  "module": "node.esm.js",
6
6
  "browser": "web.js",
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 = $mol_wire_fiber.persist(this, func, ...args.slice(0, keys));
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(host, task, ...args) {
2347
+ static persist(task, keys) {
2347
2348
  const field = task.name + '()';
2348
- let dict, key, existen, fiber;
2349
- if (args.length) {
2350
- key = `${host?.[Symbol.toStringTag] ?? host}.${task.name}(${args.map(v => $mol_key(v)).join(',')})`;
2351
- dict = Object.getOwnPropertyDescriptor(host ?? task, field)?.value;
2352
- if (dict)
2353
- existen = dict.get(key);
2354
- else
2355
- dict = (host ?? task)[field] = new Map();
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
- key = `${host?.[Symbol.toStringTag] ?? host}.${field}`;
2359
- existen = Object.getOwnPropertyDescriptor(host ?? task, field)?.value;
2360
- }
2361
- reuse: if (existen) {
2362
- if (!(existen instanceof $mol_wire_fiber))
2363
- break reuse;
2364
- if (existen.host !== host)
2365
- break reuse;
2366
- if (existen.task !== task)
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 = [];