ctx-core 5.17.1 → 5.18.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.
@@ -3,6 +3,11 @@ export declare function memo_<val_T>(def:memo_def_T<val_T>):memo_T<val_T>
3
3
  export declare function sig_<val_T>(init_val:val_T):sig_T<val_T>
4
4
  export declare function memosig_<val_T>(def:memo_def_T<val_T>):sig_T<val_T>
5
5
  export declare function lock_memosig_<val_T>(def:memo_def_T<val_T>):sig_T<val_T>
6
+ export declare function memo__bind<A extends unknown[], R>(
7
+ fn:(...arg_a:A)=>R
8
+ ):((...arg_a:A)=>R)&{
9
+ memo_<val_T>(def:memo_def_T<val_T>):memo_T<val_T>
10
+ }
6
11
  export declare function rmemo__on<val_T>(rmemo:rmemo_T<val_T>, off_fn?:(rmemo:rmemo_T<val_T>)=>unknown):void
7
12
  export declare function rmemo__off<val_T>(rmemo:rmemo_T<val_T>):void
8
13
  export declare function rmemo__off__add<val_T>(rmemo:rmemo_T<val_T>, off_fn:(rmemo:rmemo_T<val_T>)=>unknown):void
@@ -18,6 +23,9 @@ export type memo_T<val_T> = (()=>val_T)&{
18
23
  readonly f?:rmemo_f_T
19
24
  readonly s?:rmemo_r_T
20
25
  readonly t:rmemo_r_T[]
26
+ readonly l:number
27
+ readonly u:rmemo_T<unknown>[]
28
+ readonly v:rmemo_T<unknown>[]
21
29
  readonly val:val_T
22
30
  add<add_val_T>(add_def:rmemo_add_def_T<val_T, add_val_T>):memo_T<val_T>
23
31
  memo_<_val_T>(def:memo_def_T<_val_T>):memo_T<_val_T>
@@ -30,6 +38,9 @@ export type sig_T<val_T> = (()=>val_T)&{
30
38
  readonly f?:rmemo_f_T
31
39
  readonly s?:rmemo_r_T
32
40
  readonly t:rmemo_r_T[]
41
+ readonly l:number
42
+ readonly u:rmemo_T<unknown>[]
43
+ readonly v:rmemo_T<unknown>[]
33
44
  readonly val:val_T
34
45
  add<add_val_T>(fn:rmemo_add_def_T<val_T, add_val_T>):sig_T<val_T>
35
46
  memo_<_val_T>(def:memo_def_T<_val_T>):memo_T<_val_T>
@@ -48,8 +59,8 @@ export type memo_def_T<val_T> = (sig:sig_T<val_T>)=>val_T
48
59
  export type rmemo_a_T = unknown[]
49
60
  export type rmemo_add_def_T<val_T, add_val_T> = (sig:sig_T<val_T>)=>add_val_T
50
61
  export type rmemo_f_T = (()=>void)&{
51
- readonly l:number
52
- readonly s:rmemo_T<unknown>[]
53
- readonly t:rmemo_T<unknown>[]
62
+ // readonly l:number
63
+ // readonly s:rmemo_T<unknown>[]
64
+ // readonly t:rmemo_T<unknown>[]
54
65
  }
55
66
  export type rmemo_r_T = WeakRef<rmemo_f_T>&{ readonly d?: ()=>rmemo_f_T }
@@ -1,7 +1,7 @@
1
1
  /// <reference types="./index.d.ts" />
2
2
  /** @type {memo_T} */
3
3
  let cur_memo
4
- /** @type {Set<(()=>unknown)&{ l:number }>} */
4
+ /** @type {Set<memo_T>} */
5
5
  let queue = new Set
6
6
  /**
7
7
  * @param {memo_def_T}memo_def
@@ -138,6 +138,15 @@ export function sig_(init_val, ...add_def_a) {
138
138
  : init_val,
139
139
  ...add_def_a)
140
140
  }
141
+ /**
142
+ * @param {(...arg_a:unknown[])=>unknown}fn
143
+ * @returns {((...arg_a:unknown[])=>unknown)&{ memo_: typeof memo_ }}
144
+ * @private
145
+ */
146
+ export function memo__bind(fn) {
147
+ fn.memo_ = memo_
148
+ return fn
149
+ }
141
150
  /**
142
151
  * Call the rmemo & enable updates from it's parents.
143
152
  * @param {rmemo_T}rmemo
@@ -6,7 +6,7 @@ import { equal } from 'uvu/assert'
6
6
  import { sleep } from '../sleep/index.js'
7
7
  import {
8
8
  lock_memosig_,
9
- memo_,
9
+ memo_, memo__bind,
10
10
  type memo_T,
11
11
  memosig_,
12
12
  rmemo__add,
@@ -491,7 +491,17 @@ test('computes initial value when argument is undefined', ()=>{
491
491
  equal(one$(), undefined)
492
492
  equal(two$(), false)
493
493
  })
494
- test('.rmemo__on,.rmemo__off__add,.rmemo__off', ()=>{
494
+ test('memo__bind', ()=>{
495
+ const base$ = sig_(1)
496
+ const bind_fn = memo__bind(()=>base$() + 10)
497
+ const bind_memo$ = bind_fn.memo_(bind_fn)
498
+ equal(bind_fn(), 11)
499
+ equal(bind_memo$(), 11)
500
+ base$._ = 2
501
+ equal(bind_fn(), 12)
502
+ equal(bind_memo$(), 12)
503
+ })
504
+ test('rmemo__on,rmemo__off__add,rmemo__off', ()=>{
495
505
  const base$ = sig_(1)
496
506
  let count = 0
497
507
  const rmemo__off__add_arg_aa:[rmemo_T<number>][] = []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ctx-core",
3
- "version": "5.17.1",
3
+ "version": "5.18.0",
4
4
  "description": "ctx-core core library",
5
5
  "keywords": [
6
6
  "ctx-core",
@@ -220,7 +220,7 @@
220
220
  "import": {
221
221
  "./rmemo": "{ sig_, memo_, be_, ctx_, be_memo_pair_, be_sig_triple_ }"
222
222
  },
223
- "limit": "566 B"
223
+ "limit": "576 B"
224
224
  },
225
225
  {
226
226
  "name": "uuid",
package/rmemo/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { rmemo__off, rmemo__on, rmemo__add } from '../rmemo/index.js'
2
- export { rmemo__off as off, rmemo__on as on, rmemo__add as subscribe }
1
+ import { memo__bind, rmemo__off, rmemo__on, rmemo__add } from '../rmemo/index.js'
2
+ export { memo__bind as _, memo__bind as bind, rmemo__off as off, rmemo__on as on, rmemo__add as subscribe }
3
3
  export * from '../all/be/index.js'
4
4
  export * from '../all/be_/index.js'
5
5
  export * from '../all/be_lock_memosig_triple/index.js'
package/rmemo/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { rmemo__off, rmemo__on, rmemo__add } from '../rmemo/index.js'
2
- export { rmemo__off as off, rmemo__on as on, rmemo__add as subscribe }
1
+ import { memo__bind, rmemo__add, rmemo__off, rmemo__on } from '../rmemo/index.js'
2
+ export { memo__bind as _, memo__bind as bind, rmemo__off as off, rmemo__on as on, rmemo__add as subscribe }
3
3
  export * from '../all/be/index.js'
4
4
  export * from '../all/be_/index.js'
5
5
  export * from '../all/be_lock_memosig_triple/index.js'