ctx-core 4.6.2 → 4.7.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.
@@ -1,5 +1,5 @@
1
1
  import type { Be, be__val__new_T, be_config_T, Ctx } from '../be_/index.js'
2
- import type { memo_T } from '../rmemo/index.js'
2
+ import type { memo_T, sig_T } from '../rmemo/index.js'
3
3
  export declare function be_memo_pair_<
4
4
  val_T,
5
5
  _memo_T extends memo_T<val_T> = memo_T<val_T>,
@@ -12,8 +12,8 @@ export declare function be_memo_pair_<
12
12
  >(
13
13
  rmemo__new:be__val__new_T<val_T>,
14
14
  ...subscriber_a_THEN_config:
15
- |[...((ctx:Ctx, memo:_memo_T)=>unknown)[]]
16
- |[...((ctx:Ctx, memo:_memo_T)=>unknown)[], config:be_config_T]
15
+ |[...((ctx:Ctx, memosig:sig_T<val_T>)=>unknown)[]]
16
+ |[...((ctx:Ctx, memosig:sig_T<val_T>)=>unknown)[], config:be_config_T]
17
17
  ):be_memo_pair_T<val_T, _memo_T, ctx_T>
18
18
  export type be_memo_pair_T<
19
19
  val_T,
@@ -64,6 +64,26 @@ test('be_memo_pair_|+id|+is_source_|+oninit|+subscriber_a', ()=>{
64
64
  equal(subscriber_count, 2)
65
65
  equal(subscriber_dep_(ctx), 5)
66
66
  })
67
+ test('be_memo_pair_|subscriber|receives a memosig to set the value of the memo', ()=>{
68
+ const ctx = ctx__new()
69
+ const [
70
+ ,
71
+ base_,
72
+ base__set,
73
+ ] = be_sig_triple_(()=>1)
74
+ const [
75
+ foobar$_,
76
+ foobar_,
77
+ ] = be_memo_pair_(ctx=>1,
78
+ (ctx, foobar$)=>{
79
+ foobar$._ = base_(ctx) + 1
80
+ })
81
+ equal(foobar$_(ctx)._, 2)
82
+ equal(foobar_(ctx), 2)
83
+ base__set(ctx, 2)
84
+ equal(foobar$_(ctx)._, 3)
85
+ equal(foobar_(ctx), 3)
86
+ })
67
87
  test('be_memo_pair_|be', ()=>{
68
88
  const ctx = ctx__new()
69
89
  let subscriber_count = 0
package/all/index.d.ts CHANGED
@@ -224,6 +224,7 @@ export * from './maybe/index.js'
224
224
  export * from './mean/index.js'
225
225
  export * from './median/index.js'
226
226
  export * from './memo/index.js'
227
+ export * from './rmemo__wait/index.js'
227
228
  export * from './merge/index.js'
228
229
  export * from './minute/index.js'
229
230
  export * from './minute/index.js'
@@ -309,7 +310,6 @@ export * from './rank/index.js'
309
310
  export * from './rate_limit/index.js'
310
311
  export * from './reduce/index.js'
311
312
  export * from './reject/index.js'
312
- export * from './rmemo/index.js'
313
313
  export * from './remove/index.js'
314
314
  export * from './remove_idx/index.js'
315
315
  export * from './resolver_curry/index.js'
@@ -319,6 +319,7 @@ export * from './response_pair/index.js'
319
319
  export * from './reverse/index.js'
320
320
  export * from './right_and/index.js'
321
321
  export * from './right_or/index.js'
322
+ export * from './rmemo/index.js'
322
323
  export * from './round/index.js'
323
324
  export * from './run/index.js'
324
325
  export * from './run_pipe/index.js'
package/all/index.js CHANGED
@@ -224,6 +224,7 @@ export * from './maybe/index.js'
224
224
  export * from './mean/index.js'
225
225
  export * from './median/index.js'
226
226
  export * from './memo/index.js'
227
+ export * from './rmemo__wait/index.js'
227
228
  export * from './merge/index.js'
228
229
  export * from './minute/index.js'
229
230
  export * from './minute/index.js'
@@ -309,7 +310,6 @@ export * from './rank/index.js'
309
310
  export * from './rate_limit/index.js'
310
311
  export * from './reduce/index.js'
311
312
  export * from './reject/index.js'
312
- export * from './rmemo/index.js'
313
313
  export * from './remove/index.js'
314
314
  export * from './remove_idx/index.js'
315
315
  export * from './resolver_curry/index.js'
@@ -319,6 +319,7 @@ export * from './response_pair/index.js'
319
319
  export * from './reverse/index.js'
320
320
  export * from './right_and/index.js'
321
321
  export * from './right_or/index.js'
322
+ export * from './rmemo/index.js'
322
323
  export * from './round/index.js'
323
324
  export * from './run/index.js'
324
325
  export * from './run_pipe/index.js'
@@ -7,7 +7,7 @@
7
7
  export async function promise_timeout(
8
8
  promise,
9
9
  ms,
10
- error = new Error(`Timed out after ${ms}ms.`),
10
+ error = new Error(`Timeout ${ms}ms`),
11
11
  ) {
12
12
  let id
13
13
  let timeout = new Promise((_resolve, reject)=>{
@@ -0,0 +1,8 @@
1
+ import type { rmemo_T, rmemo_val_T } from '../rmemo/index.js'
2
+ export declare function rmemo__wait<
3
+ _rmemo_T extends rmemo_T<unknown> = rmemo_T<unknown>
4
+ >(
5
+ memo:_rmemo_T,
6
+ condition_fn:(val:rmemo_val_T<_rmemo_T>)=>unknown,
7
+ timeout?:number
8
+ ):Promise<rmemo_val_T<_rmemo_T>>
@@ -0,0 +1,21 @@
1
+ /// <reference types="../rmemo/index.d.ts" />
2
+ /// <reference types="./index.d.ts" />
3
+ import { isNumber_ } from '../isNumber/index.js'
4
+ import { promise_timeout } from '../promise_timeout/index.js'
5
+ import { memo_ } from '../rmemo/index.js'
6
+ /**
7
+ * @param {rmemo_T}rmemo
8
+ * @param {(val:unknown)=>unknown}condition_fn
9
+ * @param {number}[timeout]
10
+ * @returns {Promise<*>|Promise<unknown>}
11
+ */
12
+ export function rmemo__wait(rmemo, condition_fn, timeout) {
13
+ const _subscribe_wait = new Promise(resolve=>{
14
+ memo_(()=>{
15
+ if (condition_fn(rmemo())) {
16
+ resolve(rmemo())
17
+ }
18
+ })()
19
+ })
20
+ return isNumber_(timeout) ? promise_timeout(_subscribe_wait, timeout) : _subscribe_wait
21
+ }
@@ -0,0 +1,23 @@
1
+ import { test } from 'uvu'
2
+ import { equal } from 'uvu/assert'
3
+ import { sig_ } from '../rmemo/index.js'
4
+ import { rmemo__wait } from './index.js'
5
+ test('rmemo__wait', async ()=>{
6
+ const subject = await new Promise(resolve=>{
7
+ let subject = -1
8
+ const subject$ = sig_(subject)
9
+ rmemo__wait(subject$, $=>$ >= 0, 10_000).then(_subject=>{
10
+ subject = _subject
11
+ equal(_subject, 1)
12
+ equal(subject, 1)
13
+ resolve(_subject)
14
+ return _subject
15
+ })
16
+ equal(subject, -1)
17
+ subject$._ = 1
18
+ equal(subject, -1)
19
+ equal(subject$(), 1)
20
+ }).catch($=>console.trace($))
21
+ equal(subject, 1)
22
+ })
23
+ test.run()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ctx-core",
3
- "version": "4.6.2",
3
+ "version": "4.7.0",
4
4
  "description": "ctx-core core library",
5
5
  "keywords": [
6
6
  "ctx-core",
package/rmemo/index.d.ts CHANGED
@@ -4,3 +4,4 @@ export * from '../all/be_memo_pair/index.js'
4
4
  export * from '../all/be_sig_triple/index.js'
5
5
  export * from '../all/ctx/index.js'
6
6
  export * from '../all/rmemo/index.js'
7
+ export * from '../all/rmemo__wait/index.js'
package/rmemo/index.js CHANGED
@@ -3,3 +3,4 @@ export * from '../all/be_memo_pair/index.js'
3
3
  export * from '../all/be_sig_triple/index.js'
4
4
  export * from '../all/ctx/index.js'
5
5
  export * from '../all/rmemo/index.js'
6
+ export * from '../all/rmemo__wait/index.js'