ctx-core 4.1.1 → 4.3.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.
@@ -0,0 +1,25 @@
1
+ import type { Be, be__val__new_T, be_config_T, Ctx } from '../be_/index.js'
2
+ import type { r_rmemo_T, rmemo_def_T } from '../rmemo/index.js'
3
+ export declare function be_r_rmemo_pair_<
4
+ val_T,
5
+ _r_rmemo_T extends r_rmemo_T<val_T> = r_rmemo_T<val_T>,
6
+ ctx_T extends Ctx = Ctx
7
+ >(be: Be<_r_rmemo_T, ctx_T>):be_r_rmemo_pair_T<val_T, _r_rmemo_T, ctx_T>
8
+ export declare function be_r_rmemo_pair_<
9
+ val_T,
10
+ _r_rmemo_T extends r_rmemo_T<val_T> = r_rmemo_T<val_T>,
11
+ ctx_T extends Ctx = Ctx
12
+ >(
13
+ rmemo__new:be__val__new_T<val_T>,
14
+ ...subscriber_a_THEN_config:
15
+ |[...rmemo_def_T<val_T>[]]
16
+ |[...rmemo_def_T<val_T>[], config:be_config_T]
17
+ ):be_r_rmemo_pair_T<val_T, _r_rmemo_T, ctx_T>
18
+ export type be_r_rmemo_pair_T<
19
+ val_T,
20
+ _r_rmemo_T extends r_rmemo_T<val_T> = r_rmemo_T<val_T>,
21
+ ctx_T extends Ctx = Ctx
22
+ > = [
23
+ Be<_r_rmemo_T, ctx_T>,
24
+ (ctx:ctx_T)=>val_T
25
+ ]
@@ -1,17 +1,17 @@
1
1
  import { be_ } from '../be_/index.js'
2
- import { rmemo_ } from '../rmemo/index.js'
2
+ import { r_rmemo_ } from '../rmemo/index.js'
3
3
  /** @typedef {import('../be_/index.d.ts').Be} */
4
4
  /** @typedef {import('../be_/index.d.ts').be__val__new_T} */
5
5
  /** @typedef {import('../be_/index.d.ts').be_config_T} */
6
6
  /** @typedef {import('../rmemo/index.d.ts').rmemo_subscriber_T} */
7
- /** @typedef {import('./index.d.ts').be_rmemo_pair_T} */
7
+ /** @typedef {import('./index.d.ts').be_r_rmemo_pair_T} */
8
8
  /**
9
9
  * @param {Be|be__val__new_T<unknown>}be_OR_val__new
10
10
  * @param {rmemo_subscriber_T[]|[...rmemo_subscriber_T[], be_config_T]}subscriber_a_THEN_config
11
- * @returns {be_rmemo_pair_T}
11
+ * @returns {be_r_rmemo_pair_T}
12
12
  * @private
13
13
  */
14
- export function be_rmemo_pair_(
14
+ export function be_r_rmemo_pair_(
15
15
  be_OR_val__new,
16
16
  ...subscriber_a_THEN_config
17
17
  ) {
@@ -24,7 +24,7 @@ export function be_rmemo_pair_(
24
24
  be_OR_val__new.is_be
25
25
  ? be_OR_val__new
26
26
  : be_(ctx=>
27
- rmemo_(()=>be_OR_val__new(ctx), ...subscriber_a_THEN_config),
27
+ r_rmemo_(()=>be_OR_val__new(ctx), ...subscriber_a_THEN_config),
28
28
  config)
29
29
  return [
30
30
  be,
@@ -1,21 +1,21 @@
1
1
  import { test } from 'uvu'
2
2
  import { equal } from 'uvu/assert'
3
3
  import { be_ } from '../be_/index.js'
4
- import { be_rsig_triple_ } from '../be_rsig_triple/index.js'
4
+ import { be_rw_rmemo_triple_ } from '../be_rw_rmemo_triple/index.js'
5
5
  import { ctx__new } from '../ctx/index.js'
6
- import type { read_rmemo_T, readwrite_rmemo_T } from '../rmemo/index.js'
7
- import { rmemo_ } from '../rmemo/index.js'
8
- import { be_rmemo_pair_ } from './index.js'
9
- test('be_rmemo_pair_', ()=>{
6
+ import type { r_rmemo_T, rw_rmemo_T } from '../rmemo/index.js'
7
+ import { r_rmemo_ } from '../rmemo/index.js'
8
+ import { be_r_rmemo_pair_ } from './index.js'
9
+ test('be_r_rmemo_pair_', ()=>{
10
10
  const [
11
11
  ,
12
12
  base_,
13
13
  base__set,
14
- ] = be_rsig_triple_(()=>1)
14
+ ] = be_rw_rmemo_triple_(()=>1)
15
15
  const [
16
16
  foobar$_,
17
17
  foobar_,
18
- ] = be_rmemo_pair_(ctx=>base_(ctx) + 1)
18
+ ] = be_r_rmemo_pair_(ctx=>base_(ctx) + 1)
19
19
  const ctx = ctx__new()
20
20
  equal(foobar$_(ctx)._, 2)
21
21
  equal(foobar_(ctx), 2)
@@ -23,19 +23,19 @@ test('be_rmemo_pair_', ()=>{
23
23
  equal(foobar$_(ctx)._, 3)
24
24
  equal(foobar_(ctx), 3)
25
25
  })
26
- test('be_rmemo_pair_|+id|+is_source_|+oninit|+subscriber_a', ()=>{
26
+ test('be_r_rmemo_pair_|+id|+is_source_|+oninit|+subscriber_a', ()=>{
27
27
  const ctx = ctx__new()
28
28
  let subscriber_count = 0
29
29
  const [
30
30
  ,
31
31
  base_,
32
32
  base__set,
33
- ] = be_rsig_triple_(()=>1,
33
+ ] = be_rw_rmemo_triple_(()=>1,
34
34
  { is_source_: map_ctx=>map_ctx === ctx })
35
35
  const [
36
36
  foobar$_,
37
37
  foobar_,
38
- ] = be_rmemo_pair_(ctx=>base_(ctx) + 1,
38
+ ] = be_r_rmemo_pair_(ctx=>base_(ctx) + 1,
39
39
  ()=>subscriber_count++,
40
40
  {
41
41
  id: 'foobar',
@@ -46,34 +46,34 @@ test('be_rmemo_pair_|+id|+is_source_|+oninit|+subscriber_a', ()=>{
46
46
  equal(foobar_([ctx__new(), ctx]), 2)
47
47
  equal(foobar$_(ctx)._, 2)
48
48
  equal(foobar_(ctx), 2)
49
- equal((ctx.get('foobar') as read_rmemo_T<number>)._, 2)
49
+ equal((ctx.get('foobar') as r_rmemo_T<number>)._, 2)
50
50
  equal(subscriber_count, 1)
51
51
  base__set(ctx, 2)
52
52
  equal(foobar$_([ctx__new(), ctx])._, 3)
53
53
  equal(foobar_([ctx__new(), ctx]), 3)
54
54
  equal(foobar$_(ctx)._, 3)
55
55
  equal(foobar_(ctx), 3)
56
- equal((ctx.get('foobar') as read_rmemo_T<number>)._, 3)
56
+ equal((ctx.get('foobar') as r_rmemo_T<number>)._, 3)
57
57
  equal(subscriber_count, 1)
58
58
  })
59
- test('be_rmemo_pair_|be', ()=>{
59
+ test('be_r_rmemo_pair_|be', ()=>{
60
60
  const ctx = ctx__new()
61
61
  let subscriber_count = 0
62
62
  const [
63
63
  ,
64
64
  base_,
65
65
  base__set,
66
- ] = be_rsig_triple_(()=>1,
66
+ ] = be_rw_rmemo_triple_(()=>1,
67
67
  { is_source_: map_ctx=>map_ctx === ctx })
68
68
  const [
69
69
  foobar$_,
70
70
  foobar_,
71
- ] = be_rmemo_pair_<number, custom_rmemo_T>(
71
+ ] = be_r_rmemo_pair_<number, custom_r_rmemo_T>(
72
72
  be_(_ctx=>{
73
- const foobar$ = rmemo_(
73
+ const foobar$ = r_rmemo_(
74
74
  ()=>base_(ctx) + 1,
75
75
  ()=>subscriber_count++
76
- ) as custom_rmemo_T
76
+ ) as custom_r_rmemo_T
77
77
  if (Array.isArray(_ctx)) equal(_ctx[1], ctx)
78
78
  else equal(_ctx, ctx)
79
79
  foobar$.custom = 'custom-val'
@@ -87,7 +87,7 @@ test('be_rmemo_pair_|be', ()=>{
87
87
  equal(foobar_([ctx__new(), ctx]), 2)
88
88
  equal(foobar$_(ctx)._, 2)
89
89
  equal(foobar_(ctx), 2)
90
- equal((ctx.get('foobar') as read_rmemo_T<number>)._, 2)
90
+ equal((ctx.get('foobar') as r_rmemo_T<number>)._, 2)
91
91
  equal(foobar$_(ctx).custom, 'custom-val')
92
92
  equal(subscriber_count, 1)
93
93
  base__set(ctx, 2)
@@ -95,9 +95,9 @@ test('be_rmemo_pair_|be', ()=>{
95
95
  equal(foobar_([ctx__new(), ctx]), 3)
96
96
  equal(foobar$_(ctx)._, 3)
97
97
  equal(foobar_(ctx), 3)
98
- equal((ctx.get('foobar') as read_rmemo_T<number>)._, 3)
98
+ equal((ctx.get('foobar') as r_rmemo_T<number>)._, 3)
99
99
  equal(foobar$_(ctx).custom, 'custom-val')
100
100
  equal(subscriber_count, 1)
101
101
  })
102
102
  test.run()
103
- type custom_rmemo_T = readwrite_rmemo_T<number>&{ custom:string }
103
+ type custom_r_rmemo_T = rw_rmemo_T<number>&{ custom:string }
@@ -0,0 +1,26 @@
1
+ import type { Be, be__val__new_T, be_config_T, Ctx } from '../be_/index.js'
2
+ import type { rw_rmemo_T, rmemo_def_T } from '../rmemo/index.js'
3
+ export declare function be_rw_rmemo_triple_<
4
+ val_T,
5
+ _rw_rmemo_T extends rw_rmemo_T<val_T> = rw_rmemo_T<val_T>,
6
+ ctx_T extends Ctx = Ctx
7
+ >(be: Be<_rw_rmemo_T, ctx_T>):be_rw_rmemo_triple_T<val_T, _rw_rmemo_T, ctx_T>
8
+ export declare function be_rw_rmemo_triple_<
9
+ val_T,
10
+ _rw_rmemo_T extends rw_rmemo_T<val_T> = rw_rmemo_T<val_T>,
11
+ ctx_T extends Ctx = Ctx
12
+ >(
13
+ rmemo__new:be__val__new_T<val_T>,
14
+ ...subscriber_a_THEN_config:
15
+ |[...rmemo_def_T<val_T>[]]
16
+ |[...rmemo_def_T<val_T>[], config:be_config_T]
17
+ ):be_rw_rmemo_triple_T<val_T, _rw_rmemo_T, ctx_T>
18
+ export type be_rw_rmemo_triple_T<
19
+ val_T,
20
+ _rw_rmemo_T extends rw_rmemo_T<val_T> = rw_rmemo_T<val_T>,
21
+ ctx_T extends Ctx = Ctx
22
+ > = [
23
+ Be<_rw_rmemo_T>,
24
+ (ctx:ctx_T)=>val_T,
25
+ (ctx:ctx_T, val:val_T)=>void
26
+ ]
@@ -1,18 +1,18 @@
1
1
  import { be_ } from '../be_/index.js'
2
- import { rsig_ } from '../rmemo/index.js'
2
+ import { rw_rmemo_ } from '../rmemo/index.js'
3
3
  /** @typedef {import('../be_/index.d.ts').Be} */
4
4
  /** @typedef {import('../be_/index.d.ts').be__val__new_T} */
5
5
  /** @typedef {import('../be_/index.d.ts').be_config_T} */
6
- /** @typedef {import('../rmemo/index.d.ts').rsig_T} */
6
+ /** @typedef {import('../rmemo/index.d.ts').rw_rmemo_T} */
7
7
  /** @typedef {import('../rmemo/index.d.ts').rmemo_subscriber_T} */
8
- /** @typedef {import('./index.d.ts').be_rsig_triple_T} */
8
+ /** @typedef {import('./index.d.ts').be_rw_rmemo_triple_T} */
9
9
  /**
10
- * @param {Be<rsig_T>|be__val__new_T<unknown>}be_OR_val__new
10
+ * @param {Be<rw_rmemo_T>|be__val__new_T<unknown>}be_OR_val__new
11
11
  * @param {rmemo_subscriber_T[]|[...rmemo_subscriber_T[], be_config_T]}subscriber_a_THEN_config
12
- * @returns {be_rsig_triple_T}
12
+ * @returns {be_rw_rmemo_triple_T}
13
13
  * @private
14
14
  */
15
- export function be_rsig_triple_(
15
+ export function be_rw_rmemo_triple_(
16
16
  be_OR_val__new,
17
17
  ...subscriber_a_THEN_config
18
18
  ) {
@@ -20,11 +20,11 @@ export function be_rsig_triple_(
20
20
  typeof subscriber_a_THEN_config[subscriber_a_THEN_config.length - 1] === 'object'
21
21
  ? subscriber_a_THEN_config.pop()
22
22
  : undefined
23
- /** @type {Be<rsig_T>} */
23
+ /** @type {Be<rw_rmemo_T>} */
24
24
  let be =
25
25
  be_OR_val__new.is_be
26
26
  ? be_OR_val__new
27
- : be_(ctx=>rsig_(be_OR_val__new(ctx), ...subscriber_a_THEN_config),
27
+ : be_(ctx=>rw_rmemo_(be_OR_val__new(ctx), ...subscriber_a_THEN_config),
28
28
  config)
29
29
  return [
30
30
  be,
@@ -2,14 +2,14 @@ import { test } from 'uvu'
2
2
  import { equal } from 'uvu/assert'
3
3
  import { be_ } from '../be_/index.js'
4
4
  import { ctx__new } from '../ctx/index.js'
5
- import { type readwrite_rmemo_T, rsig_ } from '../rmemo/index.js'
6
- import { be_rsig_triple_ } from './index.js'
7
- test('be_rsig_triple_', ()=>{
5
+ import { type rw_rmemo_T, rw_rmemo_ } from '../rmemo/index.js'
6
+ import { be_rw_rmemo_triple_ } from './index.js'
7
+ test('be_rw_rmemo_triple_', ()=>{
8
8
  const [
9
9
  foobar$_,
10
10
  foobar_,
11
11
  foobar__set,
12
- ] = be_rsig_triple_(()=>1)
12
+ ] = be_rw_rmemo_triple_(()=>1)
13
13
  const ctx = ctx__new()
14
14
  equal(foobar$_(ctx)._, 1)
15
15
  equal(foobar_(ctx), 1)
@@ -17,14 +17,14 @@ test('be_rsig_triple_', ()=>{
17
17
  equal(foobar$_(ctx)._, 2)
18
18
  equal(foobar_(ctx), 2)
19
19
  })
20
- test('be_rsig_triple_|+id|+is_source_', ()=>{
20
+ test('be_rw_rmemo_triple_|+id|+is_source_', ()=>{
21
21
  const ctx = ctx__new()
22
22
  let subscriber_count = 0
23
23
  const [
24
24
  foobar$_,
25
25
  foobar_,
26
26
  foobar__set,
27
- ] = be_rsig_triple_(
27
+ ] = be_rw_rmemo_triple_(
28
28
  ()=>1,
29
29
  ()=>subscriber_count++,
30
30
  { id: 'foobar', is_source_: map_ctx=>map_ctx === ctx },)
@@ -34,26 +34,26 @@ test('be_rsig_triple_|+id|+is_source_', ()=>{
34
34
  equal(foobar$_(ctx)._, 1)
35
35
  equal(foobar_(ctx), 1)
36
36
  equal(subscriber_count, 1)
37
- equal((ctx.get('foobar') as readwrite_rmemo_T<number>)._, 1)
37
+ equal((ctx.get('foobar') as rw_rmemo_T<number>)._, 1)
38
38
  foobar__set([ctx__new(), ctx], 2)
39
39
  equal(foobar$_([ctx__new(), ctx])._, 2)
40
40
  equal(foobar_([ctx__new(), ctx]), 2)
41
41
  equal(foobar$_(ctx)._, 2)
42
42
  equal(foobar_(ctx), 2)
43
- equal((ctx.get('foobar') as readwrite_rmemo_T<number>)._, 2)
43
+ equal((ctx.get('foobar') as rw_rmemo_T<number>)._, 2)
44
44
  equal(subscriber_count, 1)
45
45
  })
46
- test('be_rsig_triple_|+be', ()=>{
46
+ test('be_rw_rmemo_triple_|+be', ()=>{
47
47
  const ctx = ctx__new()
48
48
  let subscriber_count = 0
49
49
  const [
50
50
  foobar$_,
51
51
  foobar_,
52
52
  foobar__set,
53
- ] = be_rsig_triple_<number, custom_rsig_T>(
53
+ ] = be_rw_rmemo_triple_<number, custom_rw_rmemo_T>(
54
54
  be_(()=>{
55
55
  const foobar$ =
56
- rsig_(1, ()=>subscriber_count++) as custom_rsig_T
56
+ rw_rmemo_(1, ()=>subscriber_count++) as custom_rw_rmemo_T
57
57
  foobar$.custom = 'custom-val'
58
58
  return foobar$
59
59
  }, { id: 'foobar', is_source_: map_ctx=>map_ctx === ctx }))
@@ -63,16 +63,16 @@ test('be_rsig_triple_|+be', ()=>{
63
63
  equal(foobar$_(ctx)._, 1)
64
64
  equal(foobar_(ctx), 1)
65
65
  equal(subscriber_count, 1)
66
- equal((ctx.get('foobar') as readwrite_rmemo_T<number>)._, 1)
66
+ equal((ctx.get('foobar') as rw_rmemo_T<number>)._, 1)
67
67
  equal(foobar$_(ctx).custom, 'custom-val')
68
68
  foobar__set([ctx__new(), ctx], 2)
69
69
  equal(foobar$_([ctx__new(), ctx])._, 2)
70
70
  equal(foobar_([ctx__new(), ctx]), 2)
71
71
  equal(foobar$_(ctx)._, 2)
72
72
  equal(foobar_(ctx), 2)
73
- equal((ctx.get('foobar') as readwrite_rmemo_T<number>)._, 2)
73
+ equal((ctx.get('foobar') as rw_rmemo_T<number>)._, 2)
74
74
  equal(foobar$_(ctx).custom, 'custom-val')
75
75
  equal(subscriber_count, 1)
76
76
  })
77
77
  test.run()
78
- type custom_rsig_T = readwrite_rmemo_T<number>&{ custom:string }
78
+ type custom_rw_rmemo_T = rw_rmemo_T<number>&{ custom:string }
package/all/index.d.ts CHANGED
@@ -44,8 +44,8 @@ export * from './base64__buffer/index.js'
44
44
  export * from './batch_queue/index.js'
45
45
  export * from './be/index.js'
46
46
  export * from './be_/index.js'
47
- export * from './be_rmemo_pair/index.js'
48
- export * from './be_rsig_triple/index.js'
47
+ export * from './be_r_rmemo_pair/index.js'
48
+ export * from './be_rw_rmemo_triple/index.js'
49
49
  export * from './binary_sort_rank/index.js'
50
50
  export * from './bind_apply/index.js'
51
51
  export * from './bind_call/index.js'
package/all/index.js CHANGED
@@ -44,8 +44,8 @@ export * from './base64__buffer/index.js'
44
44
  export * from './batch_queue/index.js'
45
45
  export * from './be/index.js'
46
46
  export * from './be_/index.js'
47
- export * from './be_rmemo_pair/index.js'
48
- export * from './be_rsig_triple/index.js'
47
+ export * from './be_r_rmemo_pair/index.js'
48
+ export * from './be_rw_rmemo_triple/index.js'
49
49
  export * from './binary_sort_rank/index.js'
50
50
  export * from './bind_apply/index.js'
51
51
  export * from './bind_call/index.js'
@@ -1,31 +1,27 @@
1
- export declare function rmemo_<val_T>(
1
+ export declare function r_rmemo_<val_T>(
2
2
  def:rmemo_def_T<val_T>,
3
3
  ...subscriber_a:rmemo_subscriber_T<val_T>[]
4
- ):read_rmemo_T<val_T>
5
- export declare function rsig_<val_T>(
4
+ ):r_rmemo_T<val_T>
5
+ export declare function rw_rmemo_<val_T>(
6
6
  init_val:val_T,
7
7
  ...subscriber_a:rmemo_subscriber_T<val_T>[]
8
- ):readwrite_rmemo_T<val_T>
9
- export type rmemo_T<val_T> = readwrite_rmemo_T<val_T>|read_rmemo_T<val_T>
10
- export type read_rmemo_T<val_T> = (()=>val_T)&read_rmemo_o_T<val_T>
11
- export type readwrite_rmemo_T<val_T> = ((val?:val_T)=>val_T)&rmemo_o_T<val_T>
12
- export type rsig_T<val_T> = readwrite_rmemo_T<val_T>
13
- export type rmemo_val_T<readwrite_rmemo_T> = readwrite_rmemo_T extends {
8
+ ):rw_rmemo_T<val_T>
9
+ export type r_rmemo_T<val_T> = (()=>val_T)&r_rmemo_o_T<val_T>
10
+ export type rw_rmemo_T<val_T> = ((val?:val_T)=>val_T)&rw_r_rmemo_o_T<val_T>
11
+ export type rmemo_val_T<rw_rmemo_T> = rw_rmemo_T extends {
14
12
  (): infer val_T
15
13
  }
16
14
  ? val_T
17
15
  : unknown
18
- export type rmemo_def_T<val_T> = (rmemo:readwrite_rmemo_T<val_T>)=>val_T
19
- export type rmemo_subscriber_T<val_T> = (rmemo:readwrite_rmemo_T<val_T>)=>unknown
20
- export type rmemo_o_T<val_T> = {
21
- _:val_T
22
- go():unknown
23
- onset(val:val_T):unknown
24
- refresh():val_T
25
- }&read_rmemo_o_T<val_T>
26
- export type read_rmemo_o_T<val_T> = {
16
+ export type rmemo_def_T<val_T> = (rw_rmemo:rw_rmemo_T<val_T>)=>val_T
17
+ export type rmemo_subscriber_T<val_T> = (rw_rmemo:rw_rmemo_T<val_T>)=>unknown
18
+ export type r_rmemo_o_T<val_T> = {
27
19
  readonly _:val_T
20
+ val:val_T
21
+ go():unknown
22
+ }
23
+ export type rw_r_rmemo_o_T<val_T> = {
24
+ _:val_T
25
+ val:val_T
28
26
  go():unknown
29
- onset(val:val_T):unknown
30
- refresh():val_T
31
- }
27
+ }
@@ -1,85 +1,78 @@
1
- /** @typedef {import('./index.d.ts').rmemo_T} */
1
+ /** @typedef {import('./index.d.ts').rmemo_def_T} */
2
+ /** @typedef {import('./index.d.ts').r_rmemo_T} */
2
3
  /** @typedef {import('./index.d.ts').rmemo_subscriber_T} */
3
- /** @type {WeakRef<rmemo_T>} */
4
- let cur_ref
4
+ /** @type {WeakRef<r_rmemo_T>} */
5
+ let cur_r
5
6
  /** @type {(()=>unknown)[]} */
6
7
  let queue = []
7
8
  /**
8
- * @param {(rmemo:rmemo_T<unknown>)=>unknown}_f
9
+ * @param {rmemo_def_T}rmemo_def
9
10
  * @param {rmemo_subscriber_T<unknown>[]}subscriber_a
10
- * @returns {rmemo_T}
11
+ * @returns {r_rmemo_T}
11
12
  * @private
12
13
  */
13
- export function rmemo_(_f, ...subscriber_a) {
14
- let rmemo = (...arg_a)=>arg_a.length ? rmemo._ = arg_a[0] : rmemo._
15
- let _a = []
16
- let _r = new WeakRef(()=>rmemo.refresh(_f(rmemo)))
17
- _r.l = 0
18
- rmemo._a = _a
19
- rmemo._f = _f
20
- rmemo._r = _r
21
- rmemo._rS = new Set
22
- rmemo.go = ()=>(rmemo(), rmemo)
23
- rmemo.onset = ()=>0
24
- Object.defineProperty(rmemo, '_', {
25
- get() {
26
- if (!_a.length) {
27
- let prev_ref = cur_ref
28
- cur_ref = _r
14
+ export function r_rmemo_(rmemo_def, ...subscriber_a) {
15
+ let init
16
+ let r_rmemo = {
17
+ get _() {
18
+ if (!('val' in r_rmemo)) {
19
+ let prev_r = cur_r
20
+ cur_r = r_rmemo._r
29
21
  try {
30
- rmemo._ = _f(rmemo)
22
+ init()
31
23
  } finally {
32
- cur_ref = prev_ref
24
+ cur_r = prev_r
33
25
  }
34
26
  }
35
- // allow self-referencing
36
- if (cur_ref && cur_ref !== _r) {
37
- cur_ref.l = cur_ref.l < _r.l + 1 ? _r.l + 1 : cur_ref.l
38
- rmemo._rS.add(cur_ref)
27
+ if (cur_r) {
28
+ cur_r.l = cur_r.l < r_rmemo._r.l + 1 ? r_rmemo._r.l + 1 : cur_r.l
29
+ r_rmemo._rs.add(cur_r)
39
30
  }
40
- return _a[0]
31
+ return r_rmemo.val
41
32
  },
42
- set(val) {
43
- if (!_a.length || val !== _a[0]) {
44
- rmemo.refresh(val)
45
- }
46
- }
47
- })
48
- rmemo.refresh = val=>{
49
- if (val !== _a[0]) {
50
- _a[0] = val
51
- rmemo.onset(val)
52
- let run_queue = !queue[0]
53
- for (let ref of rmemo._rS) {
54
- if (!~queue.indexOf(ref)) queue.push(ref)
55
- }
56
- if (!rmemo._sa) {
57
- rmemo._sa = subscriber_a.map(subscriber=>
58
- rmemo_(()=>subscriber(rmemo)).go())
59
- }
60
- if (run_queue) {
61
- // eslint-disable-next-line no-cond-assign
62
- for (let ref; ref = queue.shift();) {
63
- if (queue.some(_ref=>ref.l > _ref.l)) {
64
- queue.push(ref)
65
- } else {
66
- (ref.deref() || rmemo._rS.delete)(ref)
33
+ set _(val) {
34
+ if (val !== r_rmemo.val) {
35
+ r_rmemo.val = val
36
+ r_rmemo._s?.(val)
37
+ let run_queue = !queue[0]
38
+ for (let r of r_rmemo._rs) {
39
+ if (!~queue.indexOf(r)) queue.push(r)
40
+ }
41
+ if (!r_rmemo._sa) {
42
+ r_rmemo._sa = subscriber_a.map(subscriber=>
43
+ r_rmemo_(()=>subscriber(r_rmemo)).go())
44
+ }
45
+ if (run_queue) {
46
+ // eslint-disable-next-line no-cond-assign
47
+ for (let r; r = queue.shift();) {
48
+ if (queue.some(queue_r=>r.l > queue_r.l)) {
49
+ queue.push(r)
50
+ } else {
51
+ (r.deref() || r_rmemo._rs.delete)(r)
52
+ }
67
53
  }
68
54
  }
69
55
  }
70
- }
56
+ },
57
+ go: ()=>(r_rmemo._, r_rmemo),
58
+ get: ()=>r_rmemo._,
59
+ set: val=>r_rmemo._ = val,
60
+ _rs: new Set,
71
61
  }
72
- return rmemo
62
+ init = ()=>r_rmemo._ = rmemo_def(r_rmemo)
63
+ r_rmemo._r = new WeakRef(init)
64
+ r_rmemo._r.l = 0
65
+ return r_rmemo
73
66
  }
74
67
  /**
75
68
  * @param {unknown}init_val
76
69
  * @param {rmemo_subscriber_T[]}subscriber_a
77
- * @returns {rmemo_T}
70
+ * @returns {r_rmemo_T}
78
71
  * @private
79
72
  */
80
- export function rsig_(init_val, ...subscriber_a) {
81
- let rsig = rmemo_(_rsig=>_rsig._v, ...subscriber_a)
82
- rsig.onset = val=>rsig._v = val
83
- rsig._v = init_val
84
- return rsig
73
+ export function rw_rmemo_(init_val, ...subscriber_a) {
74
+ let rw_rmemo = r_rmemo_(_rw_rmemo=>_rw_rmemo._v, ...subscriber_a)
75
+ rw_rmemo._s = val=>rw_rmemo._v = val
76
+ rw_rmemo._v = init_val
77
+ return rw_rmemo
85
78
  }
@@ -2,84 +2,84 @@ import { deepStrictEqual } from 'node:assert'
2
2
  import { test } from 'uvu'
3
3
  import { equal } from 'uvu/assert'
4
4
  import { sleep } from '../sleep/index.js'
5
- import { rmemo_, rmemo_T, rsig_ } from './index.js'
6
- test('rmemo_|static value', ()=>{
5
+ import { r_rmemo_, type r_rmemo_T, rw_rmemo_ } from './index.js'
6
+ test('r_rmemo_|static value', ()=>{
7
7
  let count = 0
8
- let rmemo$ = rmemo_(rmemo=>{
8
+ const r_rmemo = r_rmemo_(()=>{
9
9
  count++
10
10
  return 'rmemo-value'
11
11
  })
12
12
  equal(count, 0)
13
- equal(rmemo$(), 'rmemo-value')
13
+ equal(r_rmemo._, 'rmemo-value')
14
14
  equal(count, 1)
15
- equal(rmemo$(), 'rmemo-value')
15
+ equal(r_rmemo._, 'rmemo-value')
16
16
  equal(count, 1)
17
17
  })
18
- test('rsig_', ()=>{
19
- let rsig$ = rsig_('val0')
20
- equal(rsig$(), 'val0')
21
- rsig$('val1')
22
- equal(rsig$(), 'val1')
18
+ test('rw_rmemo_', ()=>{
19
+ const rw_rmemo = rw_rmemo_('val0')
20
+ equal(rw_rmemo._, 'val0')
21
+ rw_rmemo._ = 'val1'
22
+ equal(rw_rmemo._, 'val1')
23
23
  })
24
- test('rmemo_|def function|rmemo$ argument', ()=>{
25
- let rsig$ = rsig_('val0')
26
- let rmemo$:rmemo_T<string>&{custom?:string} = rmemo_<string>((_rmemo$:rmemo_T<string>&{custom?:string})=>
27
- `${_rmemo$.custom}-${rsig$()}`)
28
- rmemo$.custom = 'custom_val0'
29
- equal(rmemo$(), 'custom_val0-val0')
30
- rmemo$.custom = 'custom_val1'
31
- equal(rmemo$(), 'custom_val0-val0')
32
- rsig$('val1')
33
- equal(rmemo$(), 'custom_val1-val1')
24
+ test('r_rmemo_|def function|rmemo$ argument', ()=>{
25
+ const rw_rmemo = rw_rmemo_('val0')
26
+ const r_rmemo:r_rmemo_T<string>&{custom?:string} = r_rmemo_<string>((_rmemo$:r_rmemo_T<string>&{custom?:string})=>
27
+ `${_rmemo$.custom}-${rw_rmemo._}`)
28
+ r_rmemo.custom = 'custom_val0'
29
+ equal(r_rmemo._, 'custom_val0-val0')
30
+ r_rmemo.custom = 'custom_val1'
31
+ equal(r_rmemo._, 'custom_val0-val0')
32
+ rw_rmemo._ = 'val1'
33
+ equal(r_rmemo._, 'custom_val1-val1')
34
34
  })
35
- test('rsig_|async subsubscriber|case 1', async ()=>{
35
+ test('rw_rmemo_|async subsubscriber|case 1', async ()=>{
36
36
  let resolve:(user:{ id:string })=>void
37
- let user0 = { id: 'id-0' }
38
- let user1 = { id: 'id-1' }
39
- let id$ = rsig_('id-0')
37
+ const user0 = { id: 'id-0' }
38
+ const user1 = { id: 'id-1' }
39
+ const id$ = rw_rmemo_('id-0')
40
40
  let count = 0
41
- let user$ = rsig_<{ id:string }|null>(
41
+ const user$ = rw_rmemo_<{ id:string }|null>(
42
42
  null,
43
43
  async (_user$)=>{
44
44
  count++
45
- id$()
46
- let user:{ id:string } = await new Promise(_resolve=>resolve = _resolve)
47
- _user$(user)
45
+ id$._
46
+ const user:{ id:string } = await new Promise(_resolve=>resolve = _resolve)
47
+ _user$._ = (user)
48
48
  })
49
49
  equal(count, 0)
50
- equal(user$(), null)
50
+ equal(user$._, null)
51
51
  equal(count, 1)
52
52
  resolve!(user0)
53
53
  await sleep(0)
54
54
  equal(count, 1)
55
- equal(user$(), user0)
55
+ equal(user$._, user0)
56
56
  equal(count, 1)
57
- id$('id-1')
57
+ id$._ = 'id-1'
58
58
  equal(count, 2)
59
- equal(user$(), user0)
59
+ equal(user$._, user0)
60
60
  resolve!(user1)
61
61
  await sleep(0)
62
62
  equal(count, 2)
63
63
  })
64
- test('rsig_|async subsubscriber|case 2', async ()=>{
65
- let a$ = rsig_(1)
66
- let b$ = rsig_(2)
67
- let sleepCycles = 5
68
- let taskArgumentsCalls:number[][] = []
69
- let sum$ = rsig_<null|number>(null,
64
+ test('rw_rmemo_|async subsubscriber|case 2', async ()=>{
65
+ const a$ = rw_rmemo_(1)
66
+ const b$ = rw_rmemo_(2)
67
+ const sleepCycles = 5
68
+ const taskArgumentsCalls:number[][] = []
69
+ const sum$ = rw_rmemo_<null|number>(null,
70
70
  async sum$=>{
71
- taskArgumentsCalls.push([a$(), b$()])
71
+ taskArgumentsCalls.push([a$._, b$._])
72
72
  for (let i = 0; i < sleepCycles; i++) {
73
73
  await Promise.resolve()
74
74
  }
75
- sum$(a$() + b$())
75
+ sum$._ = a$._ + b$._
76
76
  })
77
- equal(sum$(), null)
77
+ equal(sum$._, null)
78
78
  deepStrictEqual(taskArgumentsCalls, [[1, 2]])
79
- a$(10)
80
- b$(20)
79
+ a$._ = 10
80
+ b$._ = 20
81
81
  for (let i = 0; i < sleepCycles; i++) {
82
- equal(sum$(), null)
82
+ equal(sum$._, null)
83
83
  await Promise.resolve()
84
84
  deepStrictEqual(taskArgumentsCalls, [
85
85
  [1, 2],
@@ -87,107 +87,103 @@ test('rsig_|async subsubscriber|case 2', async ()=>{
87
87
  [10, 20]
88
88
  ])
89
89
  }
90
- equal(sum$(), 30)
90
+ equal(sum$._, 30)
91
91
  deepStrictEqual(taskArgumentsCalls, [
92
92
  [1, 2],
93
93
  [10, 2],
94
94
  [10, 20]
95
95
  ])
96
96
  })
97
- test('rmemo_+rsig_|simple graph', ()=>{
98
- let base$ = rsig_('base0')
99
- let dep0$ = rmemo_(()=>base$() + '-dep0')
100
- let dep1$ = rmemo_(()=>dep0$() + '-dep1')
101
- let dep2$ = rmemo_(()=>dep1$() + '-dep2')
102
- let dep3$ = rmemo_(()=>dep2$() + '-dep3')
103
- let dep4$ = rmemo_(()=>dep3$() + '-dep4')
104
- equal(dep4$(), 'base0-dep0-dep1-dep2-dep3-dep4')
105
- equal(dep3$(), 'base0-dep0-dep1-dep2-dep3')
106
- equal(dep2$(), 'base0-dep0-dep1-dep2')
107
- equal(dep1$(), 'base0-dep0-dep1')
108
- equal(dep0$(), 'base0-dep0')
109
- equal(base$(), 'base0')
110
- base$('base1')
111
- equal(base$(), 'base1')
112
- equal(dep0$(), 'base1-dep0')
113
- equal(dep1$(), 'base1-dep0-dep1')
114
- equal(dep2$(), 'base1-dep0-dep1-dep2')
115
- equal(dep3$(), 'base1-dep0-dep1-dep2-dep3')
116
- equal(dep4$(), 'base1-dep0-dep1-dep2-dep3-dep4')
97
+ test('r_rmemo_+rw_rmemo_|simple graph', ()=>{
98
+ const base$ = rw_rmemo_('base0')
99
+ const dep0$ = r_rmemo_(()=>base$._ + '-dep0')
100
+ const dep1$ = r_rmemo_(()=>dep0$._ + '-dep1')
101
+ const dep2$ = r_rmemo_(()=>dep1$._ + '-dep2')
102
+ const dep3$ = r_rmemo_(()=>dep2$._ + '-dep3')
103
+ const dep4$ = r_rmemo_(()=>dep3$._ + '-dep4')
104
+ equal(dep4$._, 'base0-dep0-dep1-dep2-dep3-dep4')
105
+ equal(dep3$._, 'base0-dep0-dep1-dep2-dep3')
106
+ equal(dep2$._, 'base0-dep0-dep1-dep2')
107
+ equal(dep1$._, 'base0-dep0-dep1')
108
+ equal(dep0$._, 'base0-dep0')
109
+ equal(base$._, 'base0')
110
+ base$._ = 'base1'
111
+ equal(base$._, 'base1')
112
+ equal(dep0$._, 'base1-dep0')
113
+ equal(dep1$._, 'base1-dep0-dep1')
114
+ equal(dep2$._, 'base1-dep0-dep1-dep2')
115
+ equal(dep3$._, 'base1-dep0-dep1-dep2-dep3')
116
+ equal(dep4$._, 'base1-dep0-dep1-dep2-dep3-dep4')
117
117
  })
118
118
  test('prevents diamond dependency problem 1', ()=>{
119
- let store$ = rsig_(0)
120
- let values:string[] = []
121
- let a$ = rmemo_(()=>`a${store$()}`)
122
- let b$ = rmemo_(()=>a$().replace('a', 'b'))
123
- let c$ = rmemo_(()=>a$().replace('a', 'c'))
124
- let d$ = rmemo_(()=>a$().replace('a', 'd'))
125
- rmemo_(()=>`${b$()}${c$()}${d$()}`,
119
+ const store$ = rw_rmemo_(0)
120
+ const values:string[] = []
121
+ const a$ = r_rmemo_(()=>`a${store$._}`)
122
+ const b$ = r_rmemo_(()=>a$._.replace('a', 'b'))
123
+ const c$ = r_rmemo_(()=>a$._.replace('a', 'c'))
124
+ const d$ = r_rmemo_(()=>a$._.replace('a', 'd'))
125
+ r_rmemo_(()=>`${b$._}${c$._}${d$._}`,
126
126
  combined$=>
127
- values.push(combined$())
127
+ values.push(combined$._)
128
128
  ).go()
129
129
  deepStrictEqual(values, ['b0c0d0'])
130
- store$(1)
131
- store$(2)
130
+ store$._ = 1
131
+ store$._ = 2
132
132
  deepStrictEqual(values, ['b0c0d0', 'b1c1d1', 'b2c2d2'])
133
133
  })
134
134
  test('prevents diamond dependency problem 2', ()=>{
135
- let store$ = rsig_(0)
136
- let values:string[] = []
137
- let a$ = rmemo_(()=>`a${store$()}`)
138
- let b$ = rmemo_(()=>a$().replace('a', 'b'))
139
- let c$ = rmemo_(()=>b$().replace('b', 'c'))
140
- let d$ = rmemo_(()=>c$().replace('c', 'd'))
141
- let e$ = rmemo_(()=>d$().replace('d', 'e'))
142
- rmemo_<string>(
143
- ()=>[a$(), e$()].join(''),
144
- combined$=>values.push(combined$())
135
+ const store$ = rw_rmemo_(0)
136
+ const values:string[] = []
137
+ const a$ = r_rmemo_(()=>`a${store$._}`)
138
+ const b$ = r_rmemo_(()=>a$._.replace('a', 'b'))
139
+ const c$ = r_rmemo_(()=>b$._.replace('b', 'c'))
140
+ const d$ = r_rmemo_(()=>c$._.replace('c', 'd'))
141
+ const e$ = r_rmemo_(()=>d$._.replace('d', 'e'))
142
+ r_rmemo_<string>(
143
+ ()=>[a$._, e$._].join(''),
144
+ $=>values.push($._)
145
145
  ).go()
146
146
  deepStrictEqual(values, ['a0e0'])
147
- store$(1)
147
+ store$._ = 1
148
148
  deepStrictEqual(values, ['a0e0', 'a1e1'])
149
149
  })
150
150
  test('prevents diamond dependency problem 3', ()=>{
151
- let store$ = rsig_(0)
152
- let values:string[] = []
153
- let a$ = rmemo_(()=>`a${store$()}`)
154
- let b$ = rmemo_(()=>a$().replace('a', 'b'))
155
- let c$ = rmemo_(()=>b$().replace('b', 'c'))
156
- let d$ = rmemo_(()=>c$().replace('c', 'd'))
157
- rmemo_<string>(
158
- ()=>`${a$()}${b$()}${c$()}${d$()}`,
159
- combined$=>values.push(combined$())
151
+ const store$ = rw_rmemo_(0)
152
+ const values:string[] = []
153
+ const a$ = r_rmemo_(()=>`a${store$._}`)
154
+ const b$ = r_rmemo_(()=>a$._.replace('a', 'b'))
155
+ const c$ = r_rmemo_(()=>b$._.replace('b', 'c'))
156
+ const d$ = r_rmemo_(()=>c$._.replace('c', 'd'))
157
+ r_rmemo_<string>(
158
+ ()=>`${a$._}${b$._}${c$._}${d$._}`,
159
+ combined$=>values.push(combined$._)
160
160
  ).go()
161
161
  deepStrictEqual(values, ['a0b0c0d0'])
162
- store$(1)
162
+ store$._ = 1
163
163
  deepStrictEqual(values, ['a0b0c0d0', 'a1b1c1d1'])
164
164
  })
165
165
  test('autosubscribe: prevents diamond dependency problem 4 (complex)', ()=>{
166
- let store1$ = rsig_(0)
167
- let store2$ = rsig_(0)
168
- let values:string[] = []
169
- let fn =
170
- (name:string)=>
171
- (...v:(number|string)[])=>
172
- `${name}${v.join('')}`
173
- let a$ = rmemo_(()=>`a${store1$()}`)
174
- let b$ = rmemo_(()=>`b${store2$()}`)
175
- let c$ = rmemo_(()=>`c${a$()}${b$()}`)
176
- let d$ = rmemo_(()=>`d${a$()}`)
177
- let e$ = rmemo_(()=>`e${c$()}${d$()}`)
178
- let f$ = rmemo_(()=>`f${e$()}`)
179
- let g$ = rmemo_(()=>`g${f$()}`)
180
- rmemo_(
181
- ()=>e$(),
182
- combined1$=>values.push(combined1$())
166
+ const store1$ = rw_rmemo_(0)
167
+ const store2$ = rw_rmemo_(0)
168
+ const values:string[] = []
169
+ const a$ = r_rmemo_(()=>`a${store1$._}`)
170
+ const b$ = r_rmemo_(()=>`b${store2$._}`)
171
+ const c$ = r_rmemo_(()=>`c${a$._}${b$._}`)
172
+ const d$ = r_rmemo_(()=>`d${a$._}`)
173
+ const e$ = r_rmemo_(()=>`e${c$._}${d$._}`)
174
+ const f$ = r_rmemo_(()=>`f${e$._}`)
175
+ const g$ = r_rmemo_(()=>`g${f$._}`)
176
+ r_rmemo_(
177
+ ()=>e$._,
178
+ combined1$=>values.push(combined1$._)
183
179
  ).go()
184
- rmemo_(
185
- ()=>[e$(), g$()].join(''),
186
- combined2$=>values.push(combined2$())
180
+ r_rmemo_(
181
+ ()=>[e$._, g$._].join(''),
182
+ combined2$=>values.push(combined2$._)
187
183
  ).go()
188
184
  deepStrictEqual(values, ['eca0b0da0', 'eca0b0da0gfeca0b0da0'])
189
- store1$(1)
190
- store2$(2)
185
+ store1$._ = 1
186
+ store2$._ = 2
191
187
  deepStrictEqual(values, [
192
188
  'eca0b0da0',
193
189
  'eca0b0da0gfeca0b0da0',
@@ -199,66 +195,66 @@ test('autosubscribe: prevents diamond dependency problem 4 (complex)', ()=>{
199
195
  })
200
196
  test('prevents diamond dependency problem 5', ()=>{
201
197
  let events = ''
202
- let firstName$ = rsig_('John')
203
- let lastName$ = rsig_('Doe')
204
- let fullName$ = rmemo_(()=>{
198
+ const firstName$ = rw_rmemo_('John')
199
+ const lastName$ = rw_rmemo_('Doe')
200
+ const fullName$ = r_rmemo_(()=>{
205
201
  events += 'full '
206
- return `${firstName$()} ${lastName$()}`
202
+ return `${firstName$._} ${lastName$._}`
207
203
  })
208
- let isFirstShort$ = rmemo_(()=>{
204
+ const isFirstShort$ = r_rmemo_(()=>{
209
205
  events += 'short '
210
- return firstName$().length < 10
206
+ return firstName$._.length < 10
211
207
  })
212
- let displayName$ = rmemo_(
208
+ const displayName$ = r_rmemo_(
213
209
  ()=>{
214
210
  events += 'display '
215
- return isFirstShort$() ? fullName$() : firstName$()
211
+ return isFirstShort$._ ? fullName$._ : firstName$._
216
212
  }
217
213
  )
218
214
  equal(events, '')
219
- equal(displayName$(), 'John Doe')
215
+ equal(displayName$._, 'John Doe')
220
216
  equal(events, 'display short full ')
221
- firstName$('Benedict')
222
- equal(displayName$(), 'Benedict Doe')
217
+ firstName$._ = 'Benedict'
218
+ equal(displayName$._, 'Benedict Doe')
223
219
  equal(events, 'display short full short full display ')
224
- firstName$('Montgomery')
225
- equal(displayName$(), 'Montgomery')
220
+ firstName$._ = 'Montgomery'
221
+ equal(displayName$._, 'Montgomery')
226
222
  equal(events, 'display short full short full display short full display ')
227
223
  })
228
224
  test('prevents diamond dependency problem 6', ()=>{
229
- let store1$ = rsig_(0)
230
- let store2$ = rsig_(0)
231
- let values:string[] = []
232
- let a$ = rmemo_(()=>`a${store1$()}`)
233
- let b$ = rmemo_(()=>`b${store2$()}`)
234
- let c$ = rmemo_(()=>b$().replace('b', 'c'))
235
- rmemo_(
236
- ()=>`${a$()}${c$()}`,
237
- combined$=>values.push(combined$())
225
+ const store1$ = rw_rmemo_(0)
226
+ const store2$ = rw_rmemo_(0)
227
+ const values:string[] = []
228
+ const a$ = r_rmemo_(()=>`a${store1$._}`)
229
+ const b$ = r_rmemo_(()=>`b${store2$._}`)
230
+ const c$ = r_rmemo_(()=>b$._.replace('b', 'c'))
231
+ r_rmemo_(
232
+ ()=>`${a$._}${c$._}`,
233
+ combined$=>values.push(combined$._)
238
234
  ).go()
239
235
  deepStrictEqual(values, ['a0c0'])
240
- store1$(1)
236
+ store1$._ = 1
241
237
  deepStrictEqual(values, ['a0c0', 'a1c0'])
242
238
  })
243
239
  test('prevents dependency listeners from being out of order', ()=>{
244
- let base$ = rsig_(0)
245
- let a$ = rmemo_(()=>{
246
- return `${base$()}a`
240
+ const base$ = rw_rmemo_(0)
241
+ const a$ = r_rmemo_(()=>{
242
+ return `${base$._}a`
247
243
  })
248
- let values:string[] = []
249
- let b$ = rmemo_(()=>{
250
- return `${a$()}b`
251
- }, b$=>values.push(b$()))
252
- equal(b$(), '0ab')
244
+ const values:string[] = []
245
+ const b$ = r_rmemo_(()=>{
246
+ return `${a$._}b`
247
+ }, b$=>values.push(b$._))
248
+ equal(b$._, '0ab')
253
249
  deepStrictEqual(values, ['0ab'])
254
- equal(a$(), '0a')
255
- base$(1)
250
+ equal(a$._, '0a')
251
+ base$._ = 1
256
252
  deepStrictEqual(values, ['0ab', '1ab'])
257
253
  })
258
254
  test('computes initial value when argument is undefined', ()=>{
259
- let one$ = rsig_<string|undefined>(undefined)
260
- let two$ = rmemo_(()=>!!one$())
261
- equal(one$(), undefined)
262
- equal(two$(), false)
255
+ const one$ = rw_rmemo_<string|undefined>(undefined)
256
+ const two$ = r_rmemo_(()=>!!one$._)
257
+ equal(one$._, undefined)
258
+ equal(two$._, false)
263
259
  })
264
260
  test.run()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ctx-core",
3
- "version": "4.1.1",
3
+ "version": "4.3.0",
4
4
  "description": "ctx-core core library",
5
5
  "keywords": [
6
6
  "ctx-core",
@@ -107,14 +107,14 @@
107
107
  "devDependencies": {
108
108
  "@arethetypeswrong/cli": "^0.13.1",
109
109
  "@size-limit/preset-small-lib": "^11.0.0",
110
- "@types/node": "^20.9.2",
111
- "@types/sinon": "^17.0.1",
110
+ "@types/node": "^20.9.3",
111
+ "@types/sinon": "^17.0.2",
112
112
  "c8": "^8.0.1",
113
113
  "check-dts": "^0.7.2",
114
114
  "sinon": "^17.0.1",
115
115
  "size-limit": "^11.0.0",
116
116
  "ts-node": "^10.9.1",
117
- "tsx": "^4.1.4",
117
+ "tsx": "^4.2.0",
118
118
  "typescript": "next",
119
119
  "uvu": "^0.5.6"
120
120
  },
@@ -146,32 +146,32 @@
146
146
  "limit": "187 B"
147
147
  },
148
148
  {
149
- "name": "rmemo_",
149
+ "name": "r_rmemo_",
150
150
  "import": {
151
- "./rmemo": "{ rmemo_ }"
151
+ "./rmemo": "{ r_rmemo_ }"
152
152
  },
153
- "limit": "344 B"
153
+ "limit": "289 B"
154
154
  },
155
155
  {
156
- "name": "rmemo_ signal_",
156
+ "name": "r_rmemo_ signal_",
157
157
  "import": {
158
- "./rmemo": "{ rsig_, rmemo_ }"
158
+ "./rmemo": "{ rw_rmemo_, r_rmemo_ }"
159
159
  },
160
- "limit": "372 B"
160
+ "limit": "318 B"
161
161
  },
162
162
  {
163
- "name": "rmemo_ signal_ be_ ctx_",
163
+ "name": "r_rmemo_ signal_ be_ ctx_",
164
164
  "import": {
165
- "./rmemo": "{ rsig_, rmemo_, be_, ctx_ }"
165
+ "./rmemo": "{ rw_rmemo_, r_rmemo_, be_, ctx_ }"
166
166
  },
167
- "limit": "532 B"
167
+ "limit": "475 B"
168
168
  },
169
169
  {
170
- "name": "rmemo_ signal_ be_ ctx_ be_rmemo_pair_ be_rsig_triple_",
170
+ "name": "r_rmemo_ signal_ be_ ctx_ be_r_rmemo_pair_ be_rw_rmemo_triple_",
171
171
  "import": {
172
- "./rmemo": "{ rsig_, rmemo_, be_, ctx_, be_rmemo_pair_, be_rsig_triple_ }"
172
+ "./rmemo": "{ rw_rmemo_, r_rmemo_, be_, ctx_, be_r_rmemo_pair_, be_rw_rmemo_triple_ }"
173
173
  },
174
- "limit": "613 B"
174
+ "limit": "557 B"
175
175
  }
176
176
  ],
177
177
  "scripts": {
package/rmemo/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from '../all/be_/index.js'
2
- export * from '../all/be_rmemo_pair/index.js'
3
- export * from '../all/be_rsig_triple/index.js'
2
+ export * from '../all/be_r_rmemo_pair/index.js'
3
+ export * from '../all/be_rw_rmemo_triple/index.js'
4
4
  export * from '../all/ctx/index.js'
5
5
  export * from '../all/rmemo/index.js'
package/rmemo/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from '../all/be_/index.js'
2
- export * from '../all/be_rmemo_pair/index.js'
3
- export * from '../all/be_rsig_triple/index.js'
2
+ export * from '../all/be_r_rmemo_pair/index.js'
3
+ export * from '../all/be_rw_rmemo_triple/index.js'
4
4
  export * from '../all/ctx/index.js'
5
5
  export * from '../all/rmemo/index.js'
@@ -1,25 +0,0 @@
1
- import type { Be, be__val__new_T, be_config_T, Ctx } from '../be_/index.js'
2
- import type { read_rmemo_T, rmemo_def_T } from '../rmemo/index.js'
3
- export declare function be_rmemo_pair_<
4
- val_T,
5
- rmemo_T extends read_rmemo_T<val_T> = read_rmemo_T<val_T>,
6
- ctx_T extends Ctx = Ctx
7
- >(be: Be<rmemo_T, ctx_T>):be_rmemo_pair_T<val_T, rmemo_T, ctx_T>
8
- export declare function be_rmemo_pair_<
9
- val_T,
10
- rmemo_T extends read_rmemo_T<val_T> = read_rmemo_T<val_T>,
11
- ctx_T extends Ctx = Ctx
12
- >(
13
- rmemo__new:be__val__new_T<val_T>,
14
- ...subscriber_a_THEN_config:
15
- |[...rmemo_def_T<val_T>[]]
16
- |[...rmemo_def_T<val_T>[], config:be_config_T]
17
- ):be_rmemo_pair_T<val_T, rmemo_T, ctx_T>
18
- export type be_rmemo_pair_T<
19
- val_T,
20
- rmemo_T extends read_rmemo_T<val_T> = read_rmemo_T<val_T>,
21
- ctx_T extends Ctx = Ctx
22
- > = [
23
- Be<rmemo_T, ctx_T>,
24
- (ctx:ctx_T)=>val_T
25
- ]
@@ -1,26 +0,0 @@
1
- import type { Be, be__val__new_T, be_config_T, Ctx } from '../be_/index.js'
2
- import type { readwrite_rmemo_T, rmemo_def_T } from '../rmemo/index.js'
3
- export declare function be_rsig_triple_<
4
- val_T,
5
- rsig_T extends readwrite_rmemo_T<val_T> = readwrite_rmemo_T<val_T>,
6
- ctx_T extends Ctx = Ctx
7
- >(be: Be<rsig_T, ctx_T>):be_rsig_triple_T<val_T, rsig_T, ctx_T>
8
- export declare function be_rsig_triple_<
9
- val_T,
10
- rsig_T extends readwrite_rmemo_T<val_T> = readwrite_rmemo_T<val_T>,
11
- ctx_T extends Ctx = Ctx
12
- >(
13
- rmemo__new:be__val__new_T<val_T>,
14
- ...subscriber_a_THEN_config:
15
- |[...rmemo_def_T<val_T>[]]
16
- |[...rmemo_def_T<val_T>[], config:be_config_T]
17
- ):be_rsig_triple_T<val_T, rsig_T, ctx_T>
18
- export type be_rsig_triple_T<
19
- val_T,
20
- rsig_T extends readwrite_rmemo_T<val_T> = readwrite_rmemo_T<val_T>,
21
- ctx_T extends Ctx = Ctx
22
- > = [
23
- Be<rsig_T>,
24
- (ctx:ctx_T)=>val_T,
25
- (ctx:ctx_T, val:val_T)=>void
26
- ]