ctx-core 5.36.4 → 5.38.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.
- package/all/calling/index.browser.d.ts +1 -0
- package/all/calling/index.browser.js +1 -0
- package/all/calling/index.d.ts +1 -0
- package/all/calling/index.js +4 -0
- package/all/calling/index.test.ts +13 -0
- package/all/debounce/index.js +2 -1
- package/all/index.browser.js +1 -0
- package/all/index.d.ts +1 -0
- package/all/index.js +1 -0
- package/all/rate_limit/index.js +8 -7
- package/all/rmemo/index.d.ts +3 -3
- package/all/rmemo/index.js +24 -24
- package/all/rmemo__wait/index.js +3 -1
- package/all/throttle/index.js +3 -3
- package/all/timeout_promise/index.js +1 -4
- package/function/index.browser.js +1 -0
- package/function/index.d.ts +1 -0
- package/function/index.js +1 -0
- package/package.json +6 -6
- package/rmemo/index.browser.js +1 -0
- package/rmemo/index.d.ts +1 -0
- package/rmemo/index.js +1 -0
- package/run/index.browser.js +1 -0
- package/run/index.d.ts +1 -0
- package/run/index.js +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './index.js'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './index.js'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function calling<F extends (...arg_a:unknown[])=>unknown>(fn:F):F
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { test } from 'uvu'
|
|
2
|
+
import { equal } from 'uvu/assert'
|
|
3
|
+
import { calling } from './index.js'
|
|
4
|
+
test('calling', ()=>{
|
|
5
|
+
let count = 0
|
|
6
|
+
const fn = ()=>{
|
|
7
|
+
count++
|
|
8
|
+
}
|
|
9
|
+
equal(count, 0)
|
|
10
|
+
equal(calling(fn), fn)
|
|
11
|
+
equal(count, 1)
|
|
12
|
+
})
|
|
13
|
+
test.run()
|
package/all/debounce/index.js
CHANGED
|
@@ -17,6 +17,7 @@ export function debounce(func, wait, immediate) {
|
|
|
17
17
|
resolve = in_resolve
|
|
18
18
|
reject = in_reject
|
|
19
19
|
})
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
20
21
|
const apply_this = this
|
|
21
22
|
const later = async ()=>{
|
|
22
23
|
timeout = null
|
|
@@ -31,7 +32,7 @@ export function debounce(func, wait, immediate) {
|
|
|
31
32
|
if (callNow) {
|
|
32
33
|
await invoke()
|
|
33
34
|
}
|
|
34
|
-
return promise
|
|
35
|
+
return promise.finally(()=>clearTimeout(timeout))
|
|
35
36
|
async function invoke() {
|
|
36
37
|
try {
|
|
37
38
|
const in_rv = func.apply(apply_this, arg_a)
|
package/all/index.browser.js
CHANGED
|
@@ -71,6 +71,7 @@ export * from './call/index.browser.js'
|
|
|
71
71
|
export * from './call_assign/index.browser.js'
|
|
72
72
|
export * from './call_fn_a/index.browser.js'
|
|
73
73
|
export * from './call_or_fn/index.browser.js'
|
|
74
|
+
export * from './calling/index.browser.js'
|
|
74
75
|
export * from './cancel/index.browser.js'
|
|
75
76
|
export * from './chain/index.browser.js'
|
|
76
77
|
export * from './chunk_aa/index.browser.js'
|
package/all/index.d.ts
CHANGED
|
@@ -71,6 +71,7 @@ export * from './call/index.js'
|
|
|
71
71
|
export * from './call_assign/index.js'
|
|
72
72
|
export * from './call_fn_a/index.js'
|
|
73
73
|
export * from './call_or_fn/index.js'
|
|
74
|
+
export * from './calling/index.js'
|
|
74
75
|
export * from './cancel/index.js'
|
|
75
76
|
export * from './chain/index.js'
|
|
76
77
|
export * from './chunk_aa/index.js'
|
package/all/index.js
CHANGED
|
@@ -71,6 +71,7 @@ export * from './call/index.js'
|
|
|
71
71
|
export * from './call_assign/index.js'
|
|
72
72
|
export * from './call_fn_a/index.js'
|
|
73
73
|
export * from './call_or_fn/index.js'
|
|
74
|
+
export * from './calling/index.js'
|
|
74
75
|
export * from './cancel/index.js'
|
|
75
76
|
export * from './chain/index.js'
|
|
76
77
|
export * from './chunk_aa/index.js'
|
package/all/rate_limit/index.js
CHANGED
|
@@ -22,22 +22,23 @@ export function rate_limit_(
|
|
|
22
22
|
start = now
|
|
23
23
|
}
|
|
24
24
|
rate = ops_num / (allow_bursts ? 1 : elapsed)
|
|
25
|
-
|
|
25
|
+
let timeout_id
|
|
26
|
+
return new Promise((resolve, reject)=>{
|
|
26
27
|
try {
|
|
27
28
|
if (rate < max_rate) {
|
|
28
29
|
if (queue_a.length) {
|
|
29
|
-
if (fn) queue_a.push(async ()=>resolve(await fn())
|
|
30
|
-
)
|
|
30
|
+
if (fn) queue_a.push(async ()=>resolve(await fn()))
|
|
31
31
|
ops_num += 1
|
|
32
32
|
queue_a.shift()().then()
|
|
33
33
|
} else {
|
|
34
34
|
ops_num += 1
|
|
35
|
-
|
|
35
|
+
fn()
|
|
36
|
+
.then(val=>resolve(val))
|
|
37
|
+
.finally(()=>clearTimeout(timeout_id))
|
|
36
38
|
}
|
|
37
39
|
} else {
|
|
38
|
-
if (fn) queue_a.push(async ()=>resolve(await fn())
|
|
39
|
-
)
|
|
40
|
-
setTimeout(rate_limit, 1 / max_rate)
|
|
40
|
+
if (fn) queue_a.push(async ()=>resolve(await fn()))
|
|
41
|
+
timeout_id = setTimeout(rate_limit, 1 / max_rate)
|
|
41
42
|
}
|
|
42
43
|
} catch (err) {
|
|
43
44
|
reject(err)
|
package/all/rmemo/index.d.ts
CHANGED
|
@@ -66,8 +66,8 @@ export type memo_def_T<val_T, E = unknown> = (sig:sig_T<val_T, E>)=>val_T
|
|
|
66
66
|
export type rmemo_a_T = unknown[]
|
|
67
67
|
export type rmemo_add_def_T<val_T, add_val_T, E = unknown> = (sig:sig_T<val_T, E>)=>add_val_T
|
|
68
68
|
export type rmemo_f_T = (()=>void)&{
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
readonly l:number
|
|
70
|
+
readonly s:rmemo_T<unknown>[]
|
|
71
|
+
readonly t:rmemo_T<unknown>[]
|
|
72
72
|
}
|
|
73
73
|
export type rmemo_r_T = WeakRef<rmemo_f_T>&{ readonly d?: ()=>rmemo_f_T }
|
package/all/rmemo/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/// <reference types="./index.d.ts" />
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @type {{ c?:memo_T, q:Set<memo_T> }}
|
|
4
|
+
* $.c child memo calling the memo
|
|
5
|
+
* $.q queue
|
|
6
|
+
*/
|
|
7
|
+
let $ = globalThis.rmemo ??= { q: new Set }
|
|
6
8
|
/**
|
|
7
9
|
* @param {memo_def_T}memo_def
|
|
8
10
|
* @param {rmemo_add_def_T}add_def_a
|
|
@@ -15,17 +17,15 @@ export function memo_(memo_def, ...add_def_a) {
|
|
|
15
17
|
if (!('val' in memo)) {
|
|
16
18
|
memo.f()
|
|
17
19
|
}
|
|
18
|
-
if (
|
|
19
|
-
if (!memo.t.includes(
|
|
20
|
-
|
|
21
|
-
)) {
|
|
22
|
-
memo.t.push(cur_memo.s)
|
|
20
|
+
if ($.c) {
|
|
21
|
+
if (!memo.t.includes($.c.s ??= new WeakRef($.c.f))) {
|
|
22
|
+
memo.t.push($.c.s)
|
|
23
23
|
}
|
|
24
|
-
if (
|
|
25
|
-
// memo is called by
|
|
26
|
-
|
|
27
|
-
// prevent memo from GC while
|
|
28
|
-
if (
|
|
24
|
+
if ($.c.f.l < memo.f.l + 1) $.c.f.l = memo.f.l + 1
|
|
25
|
+
// memo is called by $.c's conditional execution...next change to memo will notify $.c
|
|
26
|
+
$.c.f.s.push(memo)
|
|
27
|
+
// prevent memo from GC while $.c still has a strong reference
|
|
28
|
+
if (!$.c.f.t.includes(memo)) $.c.f.t.push(memo)
|
|
29
29
|
}
|
|
30
30
|
return memo.val
|
|
31
31
|
}
|
|
@@ -35,8 +35,8 @@ export function memo_(memo_def, ...add_def_a) {
|
|
|
35
35
|
if (memo.val !== val) {
|
|
36
36
|
memo.t = memo.t.filter(r=>{
|
|
37
37
|
r = r.deref()
|
|
38
|
-
if (r
|
|
39
|
-
|
|
38
|
+
if (r?.s.includes(memo)) { // if added by $.c.f.s.push(memo), add to $.q
|
|
39
|
+
$.q.add(r)
|
|
40
40
|
}
|
|
41
41
|
return r
|
|
42
42
|
})
|
|
@@ -46,11 +46,11 @@ export function memo_(memo_def, ...add_def_a) {
|
|
|
46
46
|
memo.a = []
|
|
47
47
|
add_def_a.map(memo.add)
|
|
48
48
|
}
|
|
49
|
-
cur_refresh_loop:for (let cur_refresh of
|
|
50
|
-
|
|
51
|
-
for (let queue_refresh of
|
|
49
|
+
cur_refresh_loop:for (let cur_refresh of $.q) {
|
|
50
|
+
$.q.delete(cur_refresh)
|
|
51
|
+
for (let queue_refresh of $.q) {
|
|
52
52
|
if (cur_refresh.l > queue_refresh.l) {
|
|
53
|
-
|
|
53
|
+
$.q.add(cur_refresh)
|
|
54
54
|
continue cur_refresh_loop
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -76,15 +76,15 @@ export function memo_(memo_def, ...add_def_a) {
|
|
|
76
76
|
}
|
|
77
77
|
memo.memo_ = memo_
|
|
78
78
|
memo.f = ()=>{
|
|
79
|
-
let prev_memo =
|
|
80
|
-
|
|
81
|
-
memo.f.s = [] // reset references in memo_def conditional execution path...see
|
|
79
|
+
let prev_memo = $.c
|
|
80
|
+
$.c = memo
|
|
81
|
+
memo.f.s = [] // reset references in memo_def conditional execution path...see $.c.f.s.push(memo)
|
|
82
82
|
try {
|
|
83
83
|
memo._ = memo_def(memo)
|
|
84
84
|
} catch (err) {
|
|
85
85
|
console.error(err)
|
|
86
86
|
}
|
|
87
|
-
|
|
87
|
+
$.c = prev_memo // catch does not throw
|
|
88
88
|
}
|
|
89
89
|
memo.f.l = 0
|
|
90
90
|
memo.f.s = []
|
package/all/rmemo__wait/index.js
CHANGED
|
@@ -16,7 +16,7 @@ export function rmemo__wait(
|
|
|
16
16
|
error
|
|
17
17
|
) {
|
|
18
18
|
let memo
|
|
19
|
-
|
|
19
|
+
let _subscribe_wait = new Promise(resolve=>{
|
|
20
20
|
memo = memo_(()=>{
|
|
21
21
|
if (condition_fn(rmemo())) {
|
|
22
22
|
resolve(rmemo())
|
|
@@ -32,5 +32,7 @@ export function rmemo__wait(
|
|
|
32
32
|
error)
|
|
33
33
|
// prevent GC
|
|
34
34
|
promise.m = memo
|
|
35
|
+
let timeout_id = setTimeout(()=>promise.m(), timeout)
|
|
36
|
+
promise.catch(()=>{}).finally(()=>clearTimeout(timeout_id))
|
|
35
37
|
return promise
|
|
36
38
|
}
|
package/all/throttle/index.js
CHANGED
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export function throttle(fn, threshold = 250, _this) {
|
|
9
9
|
threshold || (threshold = 250)
|
|
10
|
-
let last,
|
|
10
|
+
let last, defer_timeout_id
|
|
11
11
|
return function(...arg_a) {
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
13
13
|
_this ||= this
|
|
14
14
|
const now = +new Date
|
|
15
15
|
if (last && now < last + threshold) {
|
|
16
16
|
// hold on to it
|
|
17
|
-
clearTimeout(
|
|
18
|
-
|
|
17
|
+
clearTimeout(defer_timeout_id)
|
|
18
|
+
defer_timeout_id = setTimeout(()=>{
|
|
19
19
|
last = now
|
|
20
20
|
fn.apply(_this, arg_a)
|
|
21
21
|
}, threshold)
|
|
@@ -22,10 +22,7 @@ export function timeout_promise(
|
|
|
22
22
|
typeof promise === 'function' ? promise() : promise,
|
|
23
23
|
timeout,
|
|
24
24
|
cancel_promise,
|
|
25
|
-
]).
|
|
26
|
-
clearTimeout(id)
|
|
27
|
-
return result
|
|
28
|
-
})
|
|
25
|
+
]).finally(()=>clearTimeout(id))
|
|
29
26
|
ret_promise.cancel = cancel_promise__resolve
|
|
30
27
|
return ret_promise
|
|
31
28
|
}
|
|
@@ -24,6 +24,7 @@ export * from '../all/bind_map_call/index.browser.js'
|
|
|
24
24
|
export * from '../all/call/index.browser.js'
|
|
25
25
|
export * from '../all/call_fn_a/index.browser.js'
|
|
26
26
|
export * from '../all/call_or_fn/index.browser.js'
|
|
27
|
+
export * from '../all/calling/index.browser.js'
|
|
27
28
|
export * from '../all/cancel/index.browser.js'
|
|
28
29
|
export * from '../all/compose/index.browser.js'
|
|
29
30
|
export * from '../all/concat/index.browser.js'
|
package/function/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export * from '../all/bind_map_call/index.js'
|
|
|
24
24
|
export * from '../all/call/index.js'
|
|
25
25
|
export * from '../all/call_fn_a/index.js'
|
|
26
26
|
export * from '../all/call_or_fn/index.js'
|
|
27
|
+
export * from '../all/calling/index.js'
|
|
27
28
|
export * from '../all/cancel/index.js'
|
|
28
29
|
export * from '../all/compose/index.js'
|
|
29
30
|
export * from '../all/concat/index.js'
|
package/function/index.js
CHANGED
|
@@ -24,6 +24,7 @@ export * from '../all/bind_map_call/index.js'
|
|
|
24
24
|
export * from '../all/call/index.js'
|
|
25
25
|
export * from '../all/call_fn_a/index.js'
|
|
26
26
|
export * from '../all/call_or_fn/index.js'
|
|
27
|
+
export * from '../all/calling/index.js'
|
|
27
28
|
export * from '../all/cancel/index.js'
|
|
28
29
|
export * from '../all/compose/index.js'
|
|
29
30
|
export * from '../all/concat/index.js'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ctx-core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.38.0",
|
|
4
4
|
"description": "ctx-core core library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ctx-core",
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
"@ctx-core/preprocess": "^0.1.1",
|
|
297
297
|
"@size-limit/preset-small-lib": "^11.0.2",
|
|
298
298
|
"@types/jsdom": "^21.1.6",
|
|
299
|
-
"@types/node": "^20.11.
|
|
299
|
+
"@types/node": "^20.11.16",
|
|
300
300
|
"@types/sinon": "^17.0.3",
|
|
301
301
|
"c8": "^9.1.0",
|
|
302
302
|
"check-dts": "^0.7.2",
|
|
@@ -362,28 +362,28 @@
|
|
|
362
362
|
"import": {
|
|
363
363
|
"./rmemo": "{ memo_ }"
|
|
364
364
|
},
|
|
365
|
-
"limit": "
|
|
365
|
+
"limit": "372 B"
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
"name": "memo_ sig_",
|
|
369
369
|
"import": {
|
|
370
370
|
"./rmemo": "{ sig_, memo_ }"
|
|
371
371
|
},
|
|
372
|
-
"limit": "
|
|
372
|
+
"limit": "391 B"
|
|
373
373
|
},
|
|
374
374
|
{
|
|
375
375
|
"name": "memo_ sig_ be_ ctx_",
|
|
376
376
|
"import": {
|
|
377
377
|
"./rmemo": "{ sig_, memo_, be_, ctx_ }"
|
|
378
378
|
},
|
|
379
|
-
"limit": "
|
|
379
|
+
"limit": "499 B"
|
|
380
380
|
},
|
|
381
381
|
{
|
|
382
382
|
"name": "memo_ sig_ be_ ctx_ be_memo_pair_ be_sig_triple_",
|
|
383
383
|
"import": {
|
|
384
384
|
"./rmemo": "{ sig_, memo_, be_, ctx_, be_memo_pair_, be_sig_triple_ }"
|
|
385
385
|
},
|
|
386
|
-
"limit": "
|
|
386
|
+
"limit": "589 B"
|
|
387
387
|
},
|
|
388
388
|
{
|
|
389
389
|
"name": "uuid",
|
package/rmemo/index.browser.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from '../all/be_lock_memosig_triple/index.browser.js'
|
|
|
6
6
|
export * from '../all/be_memo_pair/index.browser.js'
|
|
7
7
|
export * from '../all/be_memosig_triple/index.browser.js'
|
|
8
8
|
export * from '../all/be_sig_triple/index.browser.js'
|
|
9
|
+
export * from '../all/calling/index.browser.js'
|
|
9
10
|
export * from '../all/cancel/index.browser.js'
|
|
10
11
|
export * from '../all/ctx/index.browser.js'
|
|
11
12
|
export * from '../all/nullish/index.browser.js'
|
package/rmemo/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from '../all/be_lock_memosig_triple/index.js'
|
|
|
6
6
|
export * from '../all/be_memo_pair/index.js'
|
|
7
7
|
export * from '../all/be_memosig_triple/index.js'
|
|
8
8
|
export * from '../all/be_sig_triple/index.js'
|
|
9
|
+
export * from '../all/calling/index.js'
|
|
9
10
|
export * from '../all/cancel/index.js'
|
|
10
11
|
export * from '../all/ctx/index.js'
|
|
11
12
|
export * from '../all/nullish/index.js'
|
package/rmemo/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from '../all/be_lock_memosig_triple/index.js'
|
|
|
6
6
|
export * from '../all/be_memo_pair/index.js'
|
|
7
7
|
export * from '../all/be_memosig_triple/index.js'
|
|
8
8
|
export * from '../all/be_sig_triple/index.js'
|
|
9
|
+
export * from '../all/calling/index.js'
|
|
9
10
|
export * from '../all/cancel/index.js'
|
|
10
11
|
export * from '../all/ctx/index.js'
|
|
11
12
|
export * from '../all/nullish/index.js'
|
package/run/index.browser.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from '../all/bind_map_call/index.browser.js'
|
|
|
8
8
|
export * from '../all/call/index.browser.js'
|
|
9
9
|
export * from '../all/call_fn_a/index.browser.js'
|
|
10
10
|
export * from '../all/call_or_fn/index.browser.js'
|
|
11
|
+
export * from '../all/calling/index.browser.js'
|
|
11
12
|
export * from '../all/run/index.browser.js'
|
|
12
13
|
export * from '../all/run_or_val/index.browser.js'
|
|
13
14
|
export * from '../all/tap/index.browser.js'
|
package/run/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from '../all/bind_map_call/index.js'
|
|
|
8
8
|
export * from '../all/call/index.js'
|
|
9
9
|
export * from '../all/call_fn_a/index.js'
|
|
10
10
|
export * from '../all/call_or_fn/index.js'
|
|
11
|
+
export * from '../all/calling/index.js'
|
|
11
12
|
export * from '../all/run/index.js'
|
|
12
13
|
export * from '../all/run_or_val/index.js'
|
|
13
14
|
export * from '../all/tap/index.js'
|
package/run/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from '../all/bind_map_call/index.js'
|
|
|
8
8
|
export * from '../all/call/index.js'
|
|
9
9
|
export * from '../all/call_fn_a/index.js'
|
|
10
10
|
export * from '../all/call_or_fn/index.js'
|
|
11
|
+
export * from '../all/calling/index.js'
|
|
11
12
|
export * from '../all/run/index.js'
|
|
12
13
|
export * from '../all/run_or_val/index.js'
|
|
13
14
|
export * from '../all/tap/index.js'
|