@adviser/cement 0.4.35 → 0.4.36
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/cjs/coerce-binary.cjs +2 -1
- package/cjs/coerce-binary.cjs.map +1 -1
- package/cjs/coerce-binary.d.ts.map +1 -1
- package/cjs/crypto.cjs +2 -1
- package/cjs/crypto.cjs.map +1 -1
- package/cjs/crypto.d.ts.map +1 -1
- package/cjs/load-asset.cjs.map +1 -1
- package/cjs/lru-map-set.cjs +34 -20
- package/cjs/lru-map-set.cjs.map +1 -1
- package/cjs/lru-map-set.d.ts +27 -23
- package/cjs/lru-map-set.d.ts.map +1 -1
- package/cjs/lru-map-set.test.cjs +20 -0
- package/cjs/lru-map-set.test.cjs.map +1 -1
- package/cjs/resolve-once.cjs +8 -6
- package/cjs/resolve-once.cjs.map +1 -1
- package/cjs/resolve-once.d.ts +27 -17
- package/cjs/resolve-once.d.ts.map +1 -1
- package/cjs/resolve-once.test.cjs +4 -4
- package/cjs/resolve-once.test.cjs.map +1 -1
- package/cjs/utils/stripper.cjs.map +1 -1
- package/cjs/version.cjs +1 -1
- package/deno.json +1 -1
- package/esm/coerce-binary.d.ts.map +1 -1
- package/esm/coerce-binary.js +2 -1
- package/esm/coerce-binary.js.map +1 -1
- package/esm/crypto.d.ts.map +1 -1
- package/esm/crypto.js +2 -1
- package/esm/crypto.js.map +1 -1
- package/esm/load-asset.js.map +1 -1
- package/esm/lru-map-set.d.ts +27 -23
- package/esm/lru-map-set.d.ts.map +1 -1
- package/esm/lru-map-set.js +34 -20
- package/esm/lru-map-set.js.map +1 -1
- package/esm/lru-map-set.test.js +20 -0
- package/esm/lru-map-set.test.js.map +1 -1
- package/esm/resolve-once.d.ts +27 -17
- package/esm/resolve-once.d.ts.map +1 -1
- package/esm/resolve-once.js +8 -6
- package/esm/resolve-once.js.map +1 -1
- package/esm/resolve-once.test.js +4 -4
- package/esm/resolve-once.test.js.map +1 -1
- package/esm/utils/stripper.js.map +1 -1
- package/esm/version.js +1 -1
- package/package.json +7 -7
- package/src/coerce-binary.ts +2 -1
- package/src/crypto.ts +7 -9
- package/src/load-asset.ts +1 -1
- package/src/lru-map-set.ts +75 -53
- package/src/resolve-once.ts +39 -25
- package/src/utils/stripper.ts +0 -1
- package/ts/cjs/coerce-binary.d.ts.map +1 -1
- package/ts/cjs/coerce-binary.js +2 -1
- package/ts/cjs/coerce-binary.js.map +1 -1
- package/ts/cjs/crypto.d.ts.map +1 -1
- package/ts/cjs/crypto.js +2 -1
- package/ts/cjs/crypto.js.map +1 -1
- package/ts/cjs/load-asset.js.map +1 -1
- package/ts/cjs/lru-map-set.d.ts +27 -23
- package/ts/cjs/lru-map-set.d.ts.map +1 -1
- package/ts/cjs/lru-map-set.js +34 -20
- package/ts/cjs/lru-map-set.js.map +1 -1
- package/ts/cjs/lru-map-set.test.js +20 -0
- package/ts/cjs/lru-map-set.test.js.map +1 -1
- package/ts/cjs/resolve-once.d.ts +27 -17
- package/ts/cjs/resolve-once.d.ts.map +1 -1
- package/ts/cjs/resolve-once.js +8 -6
- package/ts/cjs/resolve-once.js.map +1 -1
- package/ts/cjs/resolve-once.test.js +4 -4
- package/ts/cjs/resolve-once.test.js.map +1 -1
- package/ts/cjs/utils/stripper.js.map +1 -1
- package/ts/cjs/version.js +1 -1
- package/ts/esm/coerce-binary.d.ts.map +1 -1
- package/ts/esm/coerce-binary.js +2 -1
- package/ts/esm/coerce-binary.js.map +1 -1
- package/ts/esm/crypto.d.ts.map +1 -1
- package/ts/esm/crypto.js +2 -1
- package/ts/esm/crypto.js.map +1 -1
- package/ts/esm/load-asset.js.map +1 -1
- package/ts/esm/lru-map-set.d.ts +27 -23
- package/ts/esm/lru-map-set.d.ts.map +1 -1
- package/ts/esm/lru-map-set.js +34 -20
- package/ts/esm/lru-map-set.js.map +1 -1
- package/ts/esm/lru-map-set.test.js +20 -0
- package/ts/esm/lru-map-set.test.js.map +1 -1
- package/ts/esm/resolve-once.d.ts +27 -17
- package/ts/esm/resolve-once.d.ts.map +1 -1
- package/ts/esm/resolve-once.js +8 -6
- package/ts/esm/resolve-once.js.map +1 -1
- package/ts/esm/resolve-once.test.js +4 -4
- package/ts/esm/resolve-once.test.js.map +1 -1
- package/ts/esm/utils/stripper.js.map +1 -1
- package/ts/esm/version.js +1 -1
package/src/lru-map-set.ts
CHANGED
@@ -1,18 +1,24 @@
|
|
1
1
|
import { AppContext } from "./app-context.js";
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
interface MutableLRUParam<T, K> {
|
4
|
+
evict: (param: LRUParam<T, K>, newItem: T, map: LRUMap<K, T>) => boolean;
|
5
|
+
// is called if the params are changed
|
6
|
+
// default it removes the least recently accessed
|
7
|
+
refresh: (param: LRUParam<T, K>, map: Map<K, LRUItem<T>>) => void;
|
8
|
+
maxEntries: number;
|
9
|
+
maxAge: number; // not implemented
|
6
10
|
}
|
7
11
|
|
12
|
+
export type LRUParam<T = string, K = string> = Readonly<MutableLRUParam<T, K>>;
|
13
|
+
|
8
14
|
export class LRUSet<T> {
|
9
15
|
private readonly _lruMap: LRUMap<T, T>;
|
10
16
|
|
11
|
-
constructor(param: Partial<LRUParam
|
17
|
+
constructor(param: Partial<LRUParam<T, T>> = {}) {
|
12
18
|
this._lruMap = new LRUMap<T, T>(param);
|
13
19
|
}
|
14
20
|
|
15
|
-
setParam(param: Partial<LRUParam
|
21
|
+
setParam(param: Partial<LRUParam<T, T>> = {}): void {
|
16
22
|
this._lruMap.setParam(param);
|
17
23
|
}
|
18
24
|
|
@@ -47,22 +53,40 @@ export class LRUSet<T> {
|
|
47
53
|
|
48
54
|
export interface LRUCtx<T, K> {
|
49
55
|
readonly update: boolean;
|
50
|
-
readonly ref: LRUMap<
|
56
|
+
readonly ref: LRUMap<K, T>;
|
51
57
|
readonly stats: LRUMap<T, K>["stats"];
|
52
|
-
readonly item: LRUItem<
|
58
|
+
readonly item: LRUItem<T>;
|
53
59
|
}
|
54
60
|
|
55
|
-
export interface LRUItem<
|
56
|
-
readonly value:
|
61
|
+
export interface LRUItem<V> {
|
62
|
+
readonly value: V;
|
57
63
|
ctx?: AppContext;
|
58
64
|
}
|
59
65
|
|
60
|
-
export type LRUMapFn<K, T> = (
|
66
|
+
export type LRUMapFn<K, T> = (value: T, key: K, meta: LRUCtx<K, T>) => void;
|
61
67
|
export type UnregFn = () => void;
|
62
68
|
|
63
|
-
|
64
|
-
|
65
|
-
|
69
|
+
function defaultRefresh<V, K>(param: LRUParam<V, K>, map: Map<K, LRUItem<V>>): void {
|
70
|
+
if (param.maxEntries > 0 && map.size > param.maxEntries) {
|
71
|
+
const toDelete: K[] = [];
|
72
|
+
let cacheSize = map.size;
|
73
|
+
for (const key of map.keys()) {
|
74
|
+
if (cacheSize > param.maxEntries) {
|
75
|
+
toDelete.push(key);
|
76
|
+
cacheSize--;
|
77
|
+
} else {
|
78
|
+
break;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
for (const key of toDelete) {
|
82
|
+
map.delete(key);
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
export class LRUMap<K, V> {
|
88
|
+
private _map: Map<K, LRUItem<V>> = new Map<K, LRUItem<V>>();
|
89
|
+
private param: MutableLRUParam<V, K>;
|
66
90
|
|
67
91
|
readonly stats = {
|
68
92
|
gets: 0,
|
@@ -70,23 +94,25 @@ export class LRUMap<T, K> {
|
|
70
94
|
deletes: 0,
|
71
95
|
};
|
72
96
|
|
73
|
-
constructor(c: Partial<LRUParam
|
97
|
+
constructor(c: Partial<LRUParam<V, K>> = {}) {
|
74
98
|
this.param = {
|
75
99
|
maxEntries: c.maxEntries || 100,
|
76
100
|
maxAge: c.maxAge || 0,
|
101
|
+
evict: c.evict || ((param, _newItem, map): boolean => param.maxEntries > 0 && map.size >= param.maxEntries),
|
102
|
+
refresh: c.refresh || ((param: LRUParam<V, K>, map: Map<K, LRUItem<V>>): void => defaultRefresh(param, map)),
|
77
103
|
};
|
78
104
|
}
|
79
105
|
|
80
|
-
private _onSetFns: Map<string, LRUMapFn<
|
81
|
-
onSet(fn: LRUMapFn<
|
106
|
+
private _onSetFns: Map<string, LRUMapFn<V, K>> = new Map<string, LRUMapFn<V, K>>();
|
107
|
+
onSet(fn: LRUMapFn<V, K>): UnregFn {
|
82
108
|
const id = Math.random().toString(36);
|
83
109
|
this._onSetFns.set(id, fn);
|
84
110
|
return () => {
|
85
111
|
this._onSetFns.delete(id);
|
86
112
|
};
|
87
113
|
}
|
88
|
-
private _onDeleteFns: Map<string, LRUMapFn<
|
89
|
-
onDelete(fn: LRUMapFn<
|
114
|
+
private _onDeleteFns: Map<string, LRUMapFn<V, K>> = new Map<string, LRUMapFn<V, K>>();
|
115
|
+
onDelete(fn: LRUMapFn<V, K>): UnregFn {
|
90
116
|
const id = Math.random().toString(36);
|
91
117
|
this._onDeleteFns.set(id, fn);
|
92
118
|
return () => {
|
@@ -94,39 +120,35 @@ export class LRUMap<T, K> {
|
|
94
120
|
};
|
95
121
|
}
|
96
122
|
|
97
|
-
private touch(key:
|
123
|
+
private touch(key: K): LRUItem<V> {
|
98
124
|
if (!this._map.has(key)) {
|
99
125
|
throw new Error(`key not found in cache: ${key as unknown as string}`);
|
100
126
|
}
|
101
127
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
102
|
-
const value = this._map.get(key) as LRUItem<
|
128
|
+
const value = this._map.get(key) as LRUItem<V>;
|
103
129
|
this._map.delete(key);
|
104
130
|
this._map.set(key, value);
|
105
131
|
return value;
|
106
132
|
}
|
107
133
|
|
108
|
-
setParam(param: Partial<LRUParam
|
134
|
+
setParam(param: Partial<LRUParam<V, K>> = {}): void {
|
135
|
+
if (param.evict) {
|
136
|
+
this.param.evict = param.evict;
|
137
|
+
}
|
138
|
+
if (param.refresh) {
|
139
|
+
this.param.refresh = param.refresh;
|
140
|
+
}
|
109
141
|
if (typeof param.maxEntries === "number") {
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
for (const key of this._map.keys()) {
|
115
|
-
if (cacheSize > param.maxEntries) {
|
116
|
-
toDelete.push(key);
|
117
|
-
cacheSize--;
|
118
|
-
} else {
|
119
|
-
break;
|
120
|
-
}
|
121
|
-
}
|
122
|
-
for (const key of toDelete) {
|
123
|
-
this._map.delete(key);
|
124
|
-
}
|
125
|
-
}
|
142
|
+
this.param.maxEntries = param.maxEntries;
|
143
|
+
}
|
144
|
+
if (typeof param.maxAge === "number") {
|
145
|
+
this.param.maxAge = param.maxAge;
|
126
146
|
}
|
147
|
+
|
148
|
+
this.param.refresh(this.param, this._map);
|
127
149
|
}
|
128
150
|
|
129
|
-
has(key:
|
151
|
+
has(key: K): boolean {
|
130
152
|
return this._map.has(key);
|
131
153
|
}
|
132
154
|
|
@@ -134,22 +156,22 @@ export class LRUMap<T, K> {
|
|
134
156
|
return this._map.size;
|
135
157
|
}
|
136
158
|
|
137
|
-
async getSet(key:
|
159
|
+
async getSet(key: K, createFN: (key: K) => Promise<V>): Promise<V | undefined> {
|
138
160
|
const val = this.get(key);
|
139
161
|
if (val) {
|
140
162
|
return val;
|
141
163
|
} else {
|
142
164
|
const val = await createFN(key);
|
143
|
-
this.set(key, val as
|
165
|
+
this.set(key, val as V);
|
144
166
|
return val;
|
145
167
|
}
|
146
168
|
}
|
147
169
|
|
148
|
-
get(key:
|
170
|
+
get(key: K): V | undefined {
|
149
171
|
return this.getItem(key)?.value;
|
150
172
|
}
|
151
173
|
|
152
|
-
getItem(key:
|
174
|
+
getItem(key: K): LRUItem<V> | undefined {
|
153
175
|
if (this._map.has(key)) {
|
154
176
|
this.stats.gets++;
|
155
177
|
return this.touch(key);
|
@@ -157,14 +179,14 @@ export class LRUMap<T, K> {
|
|
157
179
|
return undefined;
|
158
180
|
}
|
159
181
|
|
160
|
-
private buildItem(item: LRUItem<
|
182
|
+
private buildItem(item: LRUItem<V> | undefined, value: V): LRUItem<V> {
|
161
183
|
return {
|
162
184
|
...item,
|
163
185
|
value,
|
164
186
|
};
|
165
187
|
}
|
166
188
|
|
167
|
-
set(key:
|
189
|
+
set(key: K, value: V): void {
|
168
190
|
const update = this._map.has(key);
|
169
191
|
let item = this._map.get(key);
|
170
192
|
if (update) {
|
@@ -175,13 +197,13 @@ export class LRUMap<T, K> {
|
|
175
197
|
this._map.delete(key);
|
176
198
|
}
|
177
199
|
item = this.buildItem(item, value);
|
178
|
-
if (this.param.
|
200
|
+
if (this.param.evict(this.param, value, this)) {
|
179
201
|
// delete the least recently accessed
|
180
202
|
// const key = Array.from(this.cache.keys())[0];
|
181
203
|
// this.cache.delete(key) or
|
182
|
-
const
|
183
|
-
if (!
|
184
|
-
this._map.delete(
|
204
|
+
const k = this._map.keys().next();
|
205
|
+
if (!k.done) {
|
206
|
+
this._map.delete(k.value as K);
|
185
207
|
}
|
186
208
|
}
|
187
209
|
this._map.set(key, item);
|
@@ -189,7 +211,7 @@ export class LRUMap<T, K> {
|
|
189
211
|
this._onSetFns.forEach((fn) => fn(key, item?.value, this.buildItemCtx(item, update)));
|
190
212
|
}
|
191
213
|
|
192
|
-
private buildItemCtx(item: LRUItem<
|
214
|
+
private buildItemCtx(item: LRUItem<V>, update: boolean): LRUCtx<V, K> {
|
193
215
|
return {
|
194
216
|
update,
|
195
217
|
ref: this,
|
@@ -198,10 +220,10 @@ export class LRUMap<T, K> {
|
|
198
220
|
};
|
199
221
|
}
|
200
222
|
|
201
|
-
delete(key:
|
223
|
+
delete(key: K): void {
|
202
224
|
if (this._map.has(key)) {
|
203
225
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
204
|
-
const item = this._map.get(key) as LRUItem<
|
226
|
+
const item = this._map.get(key) as LRUItem<V>;
|
205
227
|
this._onDeleteFns.forEach((fn) => fn(key, item?.value, this.buildItemCtx(item, true)));
|
206
228
|
this._map.delete(key);
|
207
229
|
this.stats.deletes++;
|
@@ -217,13 +239,13 @@ export class LRUMap<T, K> {
|
|
217
239
|
this._map.clear();
|
218
240
|
}
|
219
241
|
|
220
|
-
forEach(fn: (value:
|
242
|
+
forEach(fn: (value: V, key: K, ctx: LRUCtx<V, K>) => void): void {
|
221
243
|
this._map.forEach((v, k) => {
|
222
244
|
fn(v.value, k, this.buildItemCtx(v, false));
|
223
245
|
});
|
224
246
|
}
|
225
247
|
|
226
|
-
*entries(): IterableIterator<[
|
248
|
+
*entries(): IterableIterator<[K, V, LRUCtx<V, K>]> {
|
227
249
|
for (const [key, value] of this._map.entries()) {
|
228
250
|
yield [key, value.value, this.buildItemCtx(value, true)];
|
229
251
|
}
|
package/src/resolve-once.ts
CHANGED
@@ -1,18 +1,21 @@
|
|
1
1
|
import { Future } from "./future.js";
|
2
|
-
import {
|
2
|
+
import { UnPromisify } from "./is-promise.js";
|
3
3
|
import { isPromise } from "./is-promise.js";
|
4
4
|
import { LRUMap, LRUParam, UnregFn } from "./lru-map-set.js";
|
5
5
|
import { Result } from "./result.js";
|
6
6
|
import { Option } from "./option.js";
|
7
7
|
|
8
|
-
interface ResolveSeqItem<C, R extends NonPromise<X>, X = string | number | boolean | symbol | object> {
|
9
|
-
|
10
|
-
readonly
|
8
|
+
// interface ResolveSeqItem<C, R extends NonPromise<X>, X = string | number | boolean | symbol | object> {
|
9
|
+
interface ResolveSeqItem<C, T, R> {
|
10
|
+
readonly future: Future<T>;
|
11
|
+
readonly fn: (c?: C) => R;
|
11
12
|
readonly id?: number;
|
12
13
|
}
|
13
14
|
|
14
|
-
export class ResolveSeq<T extends
|
15
|
+
export class ResolveSeq<T, C extends NonNullable<object> = object> {
|
15
16
|
readonly ctx?: C;
|
17
|
+
readonly _seqFutures: ResolveSeqItem<C, T, unknown>[] = [];
|
18
|
+
|
16
19
|
constructor(ctx?: C) {
|
17
20
|
this.ctx = ctx;
|
18
21
|
}
|
@@ -29,14 +32,14 @@ export class ResolveSeq<T extends NonPromise<X>, C = void, X = string | number |
|
|
29
32
|
}
|
30
33
|
return Promise.resolve();
|
31
34
|
}
|
32
|
-
async _step(item?: ResolveSeqItem<C, T,
|
35
|
+
async _step(item?: ResolveSeqItem<C, T, Promise<T> | T>): Promise<void> {
|
33
36
|
if (!item) {
|
34
37
|
// done
|
35
38
|
this._flushWaiting.forEach((f) => f.resolve());
|
36
39
|
this._flushWaiting?.splice(0, this._flushWaiting.length);
|
37
40
|
return Promise.resolve();
|
38
41
|
}
|
39
|
-
let value;
|
42
|
+
let value: T;
|
40
43
|
try {
|
41
44
|
const promiseOrValue = item.fn(this.ctx);
|
42
45
|
if (isPromise(promiseOrValue)) {
|
@@ -44,20 +47,19 @@ export class ResolveSeq<T extends NonPromise<X>, C = void, X = string | number |
|
|
44
47
|
} else {
|
45
48
|
value = promiseOrValue;
|
46
49
|
}
|
47
|
-
item.future.resolve(value
|
50
|
+
item.future.resolve(value);
|
48
51
|
} catch (e) {
|
49
52
|
item.future.reject(e as Error);
|
50
53
|
} finally {
|
51
54
|
this._seqFutures.shift();
|
52
55
|
}
|
53
|
-
return this._step(this._seqFutures[0]);
|
56
|
+
return this._step(this._seqFutures[0] as ResolveSeqItem<C, T, Promise<T> | T>);
|
54
57
|
}
|
55
|
-
readonly _seqFutures: ResolveSeqItem<C, T, X>[] = [];
|
56
58
|
add<R extends Promise<T> | T>(fn: (c?: C) => R, id?: number): R {
|
57
59
|
const future = new Future<T>();
|
58
60
|
this._seqFutures.push({ future, fn, id });
|
59
61
|
if (this._seqFutures.length === 1) {
|
60
|
-
void this._step(this._seqFutures[0]); // exit into eventloop
|
62
|
+
void this._step(this._seqFutures[0] as ResolveSeqItem<C, T, Promise<T> | T>); // exit into eventloop
|
61
63
|
}
|
62
64
|
return future.asPromise() as R; // as Promise<UnPromisify<R>>;
|
63
65
|
}
|
@@ -392,18 +394,23 @@ export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
|
|
392
394
|
}
|
393
395
|
}
|
394
396
|
|
395
|
-
export interface KeyedParam {
|
396
|
-
readonly lru: Partial<LRUParam
|
397
|
+
export interface KeyedParam<K, V> {
|
398
|
+
readonly lru: Partial<LRUParam<V, K>>;
|
397
399
|
}
|
398
400
|
|
399
|
-
|
401
|
+
type AddKeyedParam<K, V, CTX extends NonNullable<object>> = KeyedParam<K, V> & { readonly ctx: CTX };
|
402
|
+
|
403
|
+
export class Keyed<T extends { reset: () => void }, K = string, CTX extends NonNullable<object> = object> {
|
400
404
|
protected readonly _map: LRUMap<K, T>;
|
401
405
|
// #lock = new ResolveSeq<T, K>();
|
406
|
+
readonly #ctx: CTX;
|
402
407
|
|
403
|
-
readonly factory: (
|
404
|
-
|
408
|
+
readonly factory: (ctx: AddKey<CTX, K>) => T;
|
409
|
+
|
410
|
+
constructor(factory: (ctx: AddKey<CTX, K>) => T, ctx: Partial<AddKeyedParam<K, T, CTX>>) {
|
411
|
+
this.#ctx = ctx.ctx || ({} as CTX);
|
405
412
|
this.factory = factory;
|
406
|
-
this._map = new LRUMap<K, T>(
|
413
|
+
this._map = new LRUMap<K, T>(ctx?.lru ?? ({ maxEntries: -1 } as LRUParam<T, K>));
|
407
414
|
}
|
408
415
|
|
409
416
|
onSet(fn: (key: K, value: T) => void): UnregFn {
|
@@ -414,7 +421,7 @@ export class Keyed<T extends { reset: () => void }, K = string> {
|
|
414
421
|
return this._map.onDelete(fn);
|
415
422
|
}
|
416
423
|
|
417
|
-
setParam(params: KeyedParam): void {
|
424
|
+
setParam(params: KeyedParam<K, T>): void {
|
418
425
|
this._map.setParam(params.lru);
|
419
426
|
}
|
420
427
|
|
@@ -428,7 +435,7 @@ export class Keyed<T extends { reset: () => void }, K = string> {
|
|
428
435
|
}
|
429
436
|
let keyed = this._map.get(key);
|
430
437
|
if (!keyed) {
|
431
|
-
keyed = this.factory(key);
|
438
|
+
keyed = this.factory({ ...this.#ctx, key: key });
|
432
439
|
this._map.set(key, keyed);
|
433
440
|
}
|
434
441
|
return keyed;
|
@@ -466,9 +473,9 @@ interface KeyItem<K, V> {
|
|
466
473
|
readonly value: Result<V>;
|
467
474
|
}
|
468
475
|
|
469
|
-
export class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T,
|
470
|
-
constructor(kp: Partial<
|
471
|
-
super((
|
476
|
+
export class KeyedResolvOnce<T, K = string, CTX extends NonNullable<object> = object> extends Keyed<ResolveOnce<T, CTX>, K, CTX> {
|
477
|
+
constructor(kp: Partial<AddKeyedParam<K, ResolveOnce<T, CTX>, CTX>> = {}) {
|
478
|
+
super((ctx) => new ResolveOnce<T, AddKey<CTX, K>>(ctx), kp);
|
472
479
|
}
|
473
480
|
|
474
481
|
*entries(): IterableIterator<KeyItem<K, T>> {
|
@@ -493,9 +500,16 @@ export class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K>
|
|
493
500
|
}
|
494
501
|
}
|
495
502
|
|
496
|
-
|
497
|
-
|
498
|
-
|
503
|
+
type AddKey<X extends NonNullable<object>, K> = X & { key: K };
|
504
|
+
type WithCTX<K, T, CTX extends NonNullable<object>> = KeyedParam<K, ResolveSeq<T, AddKey<CTX, K>>> & { readonly ctx: CTX };
|
505
|
+
|
506
|
+
export class KeyedResolvSeq<T extends NonNullable<unknown>, K = string, CTX extends NonNullable<object> = object> extends Keyed<
|
507
|
+
ResolveSeq<T, AddKey<CTX, K>>,
|
508
|
+
K,
|
509
|
+
CTX
|
510
|
+
> {
|
511
|
+
constructor(kp: Partial<WithCTX<K, T, CTX>> = {}) {
|
512
|
+
super((ctx) => new ResolveSeq<T, AddKey<CTX, K>>(ctx), kp);
|
499
513
|
}
|
500
514
|
}
|
501
515
|
|
package/src/utils/stripper.ts
CHANGED
@@ -53,7 +53,6 @@ function localStripper<T>(path: string | undefined, restrips: RegExp[], obj: T,
|
|
53
53
|
}
|
54
54
|
if (typeof ret[key] === "object") {
|
55
55
|
if (Array.isArray(ret[key])) {
|
56
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
57
56
|
ret[key] = ret[key].reduce((acc: unknown[], v, i) => {
|
58
57
|
const toDelete = matcher(key, `${nextPath}[${i}]`);
|
59
58
|
if (!toDelete) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coerce-binary.d.ts","sourceRoot":"","sources":["../../../src/coerce-binary.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,CAAC;AAExF,wBAAsB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAKpF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAapF;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,
|
1
|
+
{"version":3,"file":"coerce-binary.d.ts","sourceRoot":"","sources":["../../../src/coerce-binary.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,CAAC;AAExF,wBAAsB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAKpF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAapF;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAMpF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAOxF"}
|
package/ts/cjs/coerce-binary.js
CHANGED
@@ -27,7 +27,8 @@ function to_blob(input, encoder) {
|
|
27
27
|
if (input instanceof Blob) {
|
28
28
|
return input;
|
29
29
|
}
|
30
|
-
|
30
|
+
const ab = to_arraybuf(to_uint8(input, encoder));
|
31
|
+
return new Blob([ab]);
|
31
32
|
}
|
32
33
|
function to_arraybuf(input, encoder) {
|
33
34
|
if (input instanceof ArrayBuffer) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coerce-binary.js","sourceRoot":"","sources":["../../../src/coerce-binary.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA4D;AAIrD,KAAK,oBAAoB,KAA+B,EAAuB;IACpF,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AAAA,CACxB;AAED,kBAAyB,KAAwB,EAAE,OAAqB,EAAc;IACpF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,IAAI,IAAA,yCAAqB,GAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,YAAY,WAAW,EAA8C,CAAC;QAC7E,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,KAAmC,CAAC,CAAC;AAAA,CAC5D;AAED,iBAAwB,KAA+B,EAAE,OAAqB,EAAQ;IACpF,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,
|
1
|
+
{"version":3,"file":"coerce-binary.js","sourceRoot":"","sources":["../../../src/coerce-binary.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA4D;AAIrD,KAAK,oBAAoB,KAA+B,EAAuB;IACpF,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AAAA,CACxB;AAED,kBAAyB,KAAwB,EAAE,OAAqB,EAAc;IACpF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,IAAI,IAAA,yCAAqB,GAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,YAAY,WAAW,EAA8C,CAAC;QAC7E,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,KAAmC,CAAC,CAAC;AAAA,CAC5D;AAED,iBAAwB,KAA+B,EAAE,OAAqB,EAAQ;IACpF,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,CACvB;AAED,qBAA4B,KAAwB,EAAE,OAAqB,EAAe;IACxF,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAAgB,CAAC;AAAA,CAErF"}
|
package/ts/cjs/crypto.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/ts/cjs/crypto.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.toCryptoRuntime = toCryptoRuntime;
|
4
|
+
const coerce_binary_js_1 = require("./coerce-binary.js");
|
4
5
|
function randomBytes(crypto) {
|
5
6
|
return (size) => {
|
6
7
|
const bytes = new Uint8Array(size);
|
@@ -12,7 +13,7 @@ function randomBytes(crypto) {
|
|
12
13
|
}
|
13
14
|
function digestSHA256(crypto) {
|
14
15
|
return (data) => {
|
15
|
-
return crypto.subtle.digest("SHA-256", data);
|
16
|
+
return crypto.subtle.digest("SHA-256", (0, coerce_binary_js_1.to_arraybuf)(data));
|
16
17
|
};
|
17
18
|
}
|
18
19
|
function toCryptoRuntime(cryptoOpts = {}) {
|
package/ts/cjs/crypto.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/crypto.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../src/crypto.ts"],"names":[],"mappings":";;;AAAA,yDAAiD;AA6GjD,SAAS,WAAW,CAAC,MAAgC,EAAgC;IACnF,OAAO,CAAC,IAAY,EAAc,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,KAAK,CAAC;IAAA,CACd,CAAC;AAAA,CACH;AAED,SAAS,YAAY,CAAC,MAAgC,EAA8C;IAClG,OAAO,CAAC,IAAgB,EAAwB,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAA,8BAAW,EAAC,IAAI,CAAC,CAAC,CAAC;IAAA,CAC3D,CAAC;AAAA,CACH;AAED,yBAAgC,UAAU,GAA2B,EAAE,EAAiB;IACtF,IAAI,MAAgC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpD,MAAM,GAAG;YAEP,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC1E,MAAM,EAAE;gBACN,SAAS,EAAE,GAAyB,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAAA,CAC1D;gBACD,SAAS,EAAE,GAAG,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAAA,CAC1D;gBACD,OAAO,EAAE,GAAyB,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBAAA,CACxD;gBACD,OAAO,EAAE,GAAyB,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBAAA,CACxD;gBACD,MAAM,EAAE,GAAyB,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAAA,CACvD;aACF;SACqC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,UAAU,CAAC,SAAS,IAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAgC;QAC9G,SAAS,EAAE,UAAU,CAAC,SAAS,IAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAgC;QAC9G,OAAO,EAAE,UAAU,CAAC,OAAO,IAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAA8B;QACtG,OAAO,EAAE,UAAU,CAAC,OAAO,IAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAA8B;QACtG,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC;QAC1D,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC;KAC9D,CAAC;IAEF,OAAO,OAAO,CAAC;AAAA,CAChB"}
|
package/ts/cjs/load-asset.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"load-asset.js","sourceRoot":"","sources":["../../../src/load-asset.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AACxC,2CAAuD;AACvD,6CAAyC;AACzC,2DAA4D;AAC5D,qCAAoD;AAOpD,SAAS,SAAS,CAAC,IAA6B,EAA2B;IACzE,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;AAAA,CACpD;AAED,KAAK,UAAU,cAAc,CAAC,IAA6B,EAAwC;IACjG,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC;IACxB,MAAM,EAAE,GAAG,CAAC,yBAAa,KAAK,
|
1
|
+
{"version":3,"file":"load-asset.js","sourceRoot":"","sources":["../../../src/load-asset.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AACxC,2CAAuD;AACvD,6CAAyC;AACzC,2DAA4D;AAC5D,qCAAoD;AAOpD,SAAS,SAAS,CAAC,IAA6B,EAA2B;IACzE,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;AAAA,CACpD;AAED,KAAK,UAAU,cAAc,CAAC,IAA6B,EAAwC;IACjG,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC;IACxB,MAAM,EAAE,GAAG,CAAC,yBAAa,KAAK,uCAAoB,CAA6B,CAAC;IAChF,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAAA,CACvD;AAWD,SAAS,eAAe,CAAC,IAAiC,EAA0C;IAClG,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC;AAAA,CAC5G;AAED,SAAS,eAAe,CAAC,IAAmB,EAAmB;IAC7D,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;IACT,CAAC;AAAA,CACF;AAED,oBAA2B,GAAc,EAAO;IAC9C,MAAM,GAAG,GAAG,YAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAAA,CAC3D;AAEM,KAAK,oBAAoB,SAAiB,EAAE,IAAmB,EAA2B;IAC/F,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAGN,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/E,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE;QACpC,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,qBAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAC/D,GAAG,IAAI;KACR,CAAC,CAAC;AAAA,CACJ;AAED,KAAK,UAAU,aAAa,CAC1B,OAAmE,EACnE,SAAiB,EACjB,IAEC,EACwB;IACzB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,kBAAM,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAA,sBAAS,GAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1E,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpE,MAAM,GAAG,GAAG,IAAA,yCAAqB,GAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChD,OAAO,kBAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBAEX,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAOD,IAAI,OAAO,CAAC,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACtC,OAAO,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,kBAAM,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,UAAU,GAAG,iBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;QACpB,KAAK,kBAAkB;YACrB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YACnF,MAAM;QACR,KAAK,iBAAiB;YACpB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjF,MAAM;IACV,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,4BAAgB,EAAC,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,KAAK,CAAC,2BAA2B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAAA,CACjD,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAEtC,OAAO,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3D,OAAO,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,kBAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAEtC,OAAO,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACrD,OAAO,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,kBAAM,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,kBAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAAA,CAC1C"}
|
package/ts/cjs/lru-map-set.d.ts
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
import { AppContext } from "./app-context.js";
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
interface MutableLRUParam<T, K> {
|
3
|
+
evict: (param: LRUParam<T, K>, newItem: T, map: LRUMap<K, T>) => boolean;
|
4
|
+
refresh: (param: LRUParam<T, K>, map: Map<K, LRUItem<T>>) => void;
|
5
|
+
maxEntries: number;
|
6
|
+
maxAge: number;
|
5
7
|
}
|
8
|
+
export type LRUParam<T = string, K = string> = Readonly<MutableLRUParam<T, K>>;
|
6
9
|
export declare class LRUSet<T> {
|
7
10
|
private readonly _lruMap;
|
8
|
-
constructor(param?: Partial<LRUParam
|
9
|
-
setParam(param?: Partial<LRUParam
|
11
|
+
constructor(param?: Partial<LRUParam<T, T>>);
|
12
|
+
setParam(param?: Partial<LRUParam<T, T>>): void;
|
10
13
|
get size(): number;
|
11
14
|
has(key: T): boolean;
|
12
15
|
add(key: T): void;
|
@@ -17,17 +20,17 @@ export declare class LRUSet<T> {
|
|
17
20
|
}
|
18
21
|
export interface LRUCtx<T, K> {
|
19
22
|
readonly update: boolean;
|
20
|
-
readonly ref: LRUMap<
|
23
|
+
readonly ref: LRUMap<K, T>;
|
21
24
|
readonly stats: LRUMap<T, K>["stats"];
|
22
|
-
readonly item: LRUItem<
|
25
|
+
readonly item: LRUItem<T>;
|
23
26
|
}
|
24
|
-
export interface LRUItem<
|
25
|
-
readonly value:
|
27
|
+
export interface LRUItem<V> {
|
28
|
+
readonly value: V;
|
26
29
|
ctx?: AppContext;
|
27
30
|
}
|
28
|
-
export type LRUMapFn<K, T> = (
|
31
|
+
export type LRUMapFn<K, T> = (value: T, key: K, meta: LRUCtx<K, T>) => void;
|
29
32
|
export type UnregFn = () => void;
|
30
|
-
export declare class LRUMap<
|
33
|
+
export declare class LRUMap<K, V> {
|
31
34
|
private _map;
|
32
35
|
private param;
|
33
36
|
readonly stats: {
|
@@ -35,24 +38,25 @@ export declare class LRUMap<T, K> {
|
|
35
38
|
puts: number;
|
36
39
|
deletes: number;
|
37
40
|
};
|
38
|
-
constructor(c?: Partial<LRUParam
|
41
|
+
constructor(c?: Partial<LRUParam<V, K>>);
|
39
42
|
private _onSetFns;
|
40
|
-
onSet(fn: LRUMapFn<
|
43
|
+
onSet(fn: LRUMapFn<V, K>): UnregFn;
|
41
44
|
private _onDeleteFns;
|
42
|
-
onDelete(fn: LRUMapFn<
|
45
|
+
onDelete(fn: LRUMapFn<V, K>): UnregFn;
|
43
46
|
private touch;
|
44
|
-
setParam(param?: Partial<LRUParam
|
45
|
-
has(key:
|
47
|
+
setParam(param?: Partial<LRUParam<V, K>>): void;
|
48
|
+
has(key: K): boolean;
|
46
49
|
get size(): number;
|
47
|
-
getSet(key:
|
48
|
-
get(key:
|
49
|
-
getItem(key:
|
50
|
+
getSet(key: K, createFN: (key: K) => Promise<V>): Promise<V | undefined>;
|
51
|
+
get(key: K): V | undefined;
|
52
|
+
getItem(key: K): LRUItem<V> | undefined;
|
50
53
|
private buildItem;
|
51
|
-
set(key:
|
54
|
+
set(key: K, value: V): void;
|
52
55
|
private buildItemCtx;
|
53
|
-
delete(key:
|
56
|
+
delete(key: K): void;
|
54
57
|
clear(): void;
|
55
|
-
forEach(fn: (value:
|
56
|
-
entries(): IterableIterator<[
|
58
|
+
forEach(fn: (value: V, key: K, ctx: LRUCtx<V, K>) => void): void;
|
59
|
+
entries(): IterableIterator<[K, V, LRUCtx<V, K>]>;
|
57
60
|
}
|
61
|
+
export {};
|
58
62
|
//# sourceMappingURL=lru-map-set.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lru-map-set.d.ts","sourceRoot":"","sources":["../../../src/lru-map-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,
|
1
|
+
{"version":3,"file":"lru-map-set.d.ts","sourceRoot":"","sources":["../../../src/lru-map-set.ts"],"names":[],"mappings":"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"}
|