@welshman/lib 0.0.31 → 0.0.33
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/README.md +10 -8
- package/build/src/Context.cjs +17 -0
- package/build/src/Context.cjs.map +1 -1
- package/build/src/Context.d.ts +17 -0
- package/build/src/Context.mjs +17 -0
- package/build/src/Context.mjs.map +1 -1
- package/build/src/Deferred.cjs +9 -0
- package/build/src/Deferred.cjs.map +1 -1
- package/build/src/Deferred.d.ts +11 -0
- package/build/src/Deferred.mjs +9 -0
- package/build/src/Deferred.mjs.map +1 -1
- package/build/src/Emitter.cjs +9 -0
- package/build/src/Emitter.cjs.map +1 -1
- package/build/src/Emitter.d.ts +9 -0
- package/build/src/Emitter.mjs +9 -0
- package/build/src/Emitter.mjs.map +1 -1
- package/build/src/LRUCache.cjs +16 -0
- package/build/src/LRUCache.cjs.map +1 -1
- package/build/src/LRUCache.d.ts +16 -0
- package/build/src/LRUCache.mjs +16 -0
- package/build/src/LRUCache.mjs.map +1 -1
- package/build/src/Tools.cjs +468 -19
- package/build/src/Tools.cjs.map +1 -1
- package/build/src/Tools.d.ts +458 -17
- package/build/src/Tools.mjs +464 -16
- package/build/src/Tools.mjs.map +1 -1
- package/build/src/Worker.cjs +27 -1
- package/build/src/Worker.cjs.map +1 -1
- package/build/src/Worker.d.ts +25 -0
- package/build/src/Worker.mjs +27 -1
- package/build/src/Worker.mjs.map +1 -1
- package/build/src/index.cjs +0 -1
- package/build/src/index.cjs.map +1 -1
- package/build/src/index.d.ts +0 -1
- package/build/src/index.mjs +0 -1
- package/build/src/index.mjs.map +1 -1
- package/package.json +1 -1
- package/build/src/Fluent.cjs +0 -47
- package/build/src/Fluent.cjs.map +0 -1
- package/build/src/Fluent.d.ts +0 -34
- package/build/src/Fluent.mjs +0 -43
- package/build/src/Fluent.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# @welshman/lib [](https://npmjs.com/package/@welshman/lib)
|
|
2
2
|
|
|
3
|
-
Some general-purpose utilities
|
|
3
|
+
Some general-purpose utilities for use in @welshman apps.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- `
|
|
11
|
-
-
|
|
5
|
+
Includes:
|
|
6
|
+
|
|
7
|
+
- LRU cache implementation
|
|
8
|
+
- Worker for throttling work to avoid locking up the UI
|
|
9
|
+
- URL normalization (taken from normalize-url)
|
|
10
|
+
- A global `ctx` variable which can be used for global configuration
|
|
11
|
+
- CustomPromise, which provides an error type, and `defer` utility
|
|
12
|
+
- Ramda-like utilities, but without auto-currying
|
|
13
|
+
- Utils for throttling, working with nil, json, fetch, deep equals, etc.
|
package/build/src/Context.cjs
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setContext = exports.ctx = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A global context variable for configuring libraries and applications.
|
|
6
|
+
*
|
|
7
|
+
* In your application, you'll want to add something like the following to your types.d.ts:
|
|
8
|
+
* type MyContext = {
|
|
9
|
+
* x: number
|
|
10
|
+
* }
|
|
11
|
+
*
|
|
12
|
+
* declare module "@welshman/lib" {
|
|
13
|
+
* interface Context {
|
|
14
|
+
* net: MyContext
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
*/
|
|
4
18
|
exports.ctx = {};
|
|
19
|
+
/**
|
|
20
|
+
* Adds data to ctx.
|
|
21
|
+
*/
|
|
5
22
|
const setContext = (newCtx) => Object.assign(exports.ctx, newCtx);
|
|
6
23
|
exports.setContext = setContext;
|
|
7
24
|
//# sourceMappingURL=Context.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.cjs","sourceRoot":"","sources":["../../src/Context.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Context.cjs","sourceRoot":"","sources":["../../src/Context.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;GAaG;AACU,QAAA,GAAG,GAAY,EAAE,CAAA;AAE9B;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAG,EAAE,MAAM,CAAC,CAAA;AAA5D,QAAA,UAAU,cAAkD"}
|
package/build/src/Context.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
1
|
import type { Context } from '@welshman/lib';
|
|
2
|
+
/**
|
|
3
|
+
* A global context variable for configuring libraries and applications.
|
|
4
|
+
*
|
|
5
|
+
* In your application, you'll want to add something like the following to your types.d.ts:
|
|
6
|
+
* type MyContext = {
|
|
7
|
+
* x: number
|
|
8
|
+
* }
|
|
9
|
+
*
|
|
10
|
+
* declare module "@welshman/lib" {
|
|
11
|
+
* interface Context {
|
|
12
|
+
* net: MyContext
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
2
16
|
export declare const ctx: Context;
|
|
17
|
+
/**
|
|
18
|
+
* Adds data to ctx.
|
|
19
|
+
*/
|
|
3
20
|
export declare const setContext: (newCtx: Context) => Context;
|
package/build/src/Context.mjs
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A global context variable for configuring libraries and applications.
|
|
3
|
+
*
|
|
4
|
+
* In your application, you'll want to add something like the following to your types.d.ts:
|
|
5
|
+
* type MyContext = {
|
|
6
|
+
* x: number
|
|
7
|
+
* }
|
|
8
|
+
*
|
|
9
|
+
* declare module "@welshman/lib" {
|
|
10
|
+
* interface Context {
|
|
11
|
+
* net: MyContext
|
|
12
|
+
* }
|
|
13
|
+
* }
|
|
14
|
+
*/
|
|
1
15
|
export const ctx = {};
|
|
16
|
+
/**
|
|
17
|
+
* Adds data to ctx.
|
|
18
|
+
*/
|
|
2
19
|
export const setContext = (newCtx) => Object.assign(ctx, newCtx);
|
|
3
20
|
//# sourceMappingURL=Context.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.mjs","sourceRoot":"","sources":["../../src/Context.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAY,EAAE,CAAA;AAE9B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"Context.mjs","sourceRoot":"","sources":["../../src/Context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,GAAG,GAAY,EAAE,CAAA;AAE9B;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA"}
|
package/build/src/Deferred.cjs
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defer = exports.makePromise = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a Promise with strongly typed error
|
|
6
|
+
* @param executor - Promise executor function
|
|
7
|
+
* @returns Promise with typed error
|
|
8
|
+
*/
|
|
4
9
|
function makePromise(executor) {
|
|
5
10
|
return new Promise(executor);
|
|
6
11
|
}
|
|
7
12
|
exports.makePromise = makePromise;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a Deferred promise
|
|
15
|
+
* @returns Promise with resolve/reject methods exposed
|
|
16
|
+
*/
|
|
8
17
|
const defer = () => {
|
|
9
18
|
let resolve, reject;
|
|
10
19
|
const p = makePromise((resolve_, reject_) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Deferred.cjs","sourceRoot":"","sources":["../../src/Deferred.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Deferred.cjs","sourceRoot":"","sources":["../../src/Deferred.ts"],"names":[],"mappings":";;;AAKA;;;;GAIG;AACH,SAAgB,WAAW,CACzB,QAGS;IAET,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAwB,CAAA;AACrD,CAAC;AAPD,kCAOC;AAQD;;;GAGG;AACI,MAAM,KAAK,GAAG,GAA6B,EAAE;IAClD,IAAI,OAAO,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC1C,OAAO,GAAG,QAAQ,CAAA;QAClB,MAAM,GAAG,OAAO,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,OAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,CAA+B,CAAA;AAC3E,CAAC,CAAA;AARY,QAAA,KAAK,SAQjB"}
|
package/build/src/Deferred.d.ts
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
/** Promise type with strongly typed error */
|
|
1
2
|
export type CustomPromise<T, E> = Promise<T> & {
|
|
2
3
|
__errorType: E;
|
|
3
4
|
};
|
|
5
|
+
/**
|
|
6
|
+
* Creates a Promise with strongly typed error
|
|
7
|
+
* @param executor - Promise executor function
|
|
8
|
+
* @returns Promise with typed error
|
|
9
|
+
*/
|
|
4
10
|
export declare function makePromise<T, E>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason: E) => void) => void): CustomPromise<T, E>;
|
|
11
|
+
/** Promise with exposed resolve/reject functions and typed error */
|
|
5
12
|
export type Deferred<T, E = T> = CustomPromise<T, E> & {
|
|
6
13
|
resolve: (arg: T) => void;
|
|
7
14
|
reject: (arg: E) => void;
|
|
8
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Creates a Deferred promise
|
|
18
|
+
* @returns Promise with resolve/reject methods exposed
|
|
19
|
+
*/
|
|
9
20
|
export declare const defer: <T, E = T>() => Deferred<T, E>;
|
package/build/src/Deferred.mjs
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a Promise with strongly typed error
|
|
3
|
+
* @param executor - Promise executor function
|
|
4
|
+
* @returns Promise with typed error
|
|
5
|
+
*/
|
|
1
6
|
export function makePromise(executor) {
|
|
2
7
|
return new Promise(executor);
|
|
3
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a Deferred promise
|
|
11
|
+
* @returns Promise with resolve/reject methods exposed
|
|
12
|
+
*/
|
|
4
13
|
export const defer = () => {
|
|
5
14
|
let resolve, reject;
|
|
6
15
|
const p = makePromise((resolve_, reject_) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Deferred.mjs","sourceRoot":"","sources":["../../src/Deferred.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Deferred.mjs","sourceRoot":"","sources":["../../src/Deferred.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,QAGS;IAET,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAwB,CAAA;AACrD,CAAC;AAQD;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,GAA6B,EAAE;IAClD,IAAI,OAAO,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC1C,OAAO,GAAG,QAAQ,CAAA;QAClB,MAAM,GAAG,OAAO,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,OAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,CAA+B,CAAA;AAC3E,CAAC,CAAA"}
|
package/build/src/Emitter.cjs
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Emitter = void 0;
|
|
4
4
|
const events_1 = require("events");
|
|
5
|
+
/**
|
|
6
|
+
* Extended EventEmitter that also emits all events to '*' listeners
|
|
7
|
+
*/
|
|
5
8
|
class Emitter extends events_1.EventEmitter {
|
|
9
|
+
/**
|
|
10
|
+
* Emits an event to listeners and to '*' listeners
|
|
11
|
+
* @param type - Event type/name
|
|
12
|
+
* @param args - Arguments to pass to listeners
|
|
13
|
+
* @returns True if event had listeners
|
|
14
|
+
*/
|
|
6
15
|
emit(type, ...args) {
|
|
7
16
|
const a = super.emit(type, ...args);
|
|
8
17
|
const b = super.emit('*', type, ...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Emitter.cjs","sourceRoot":"","sources":["../../src/Emitter.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AAEnC,MAAa,OAAQ,SAAQ,qBAAY;IACvC,IAAI,CAAC,IAAY,EAAE,GAAG,IAAW;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAExC,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"Emitter.cjs","sourceRoot":"","sources":["../../src/Emitter.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AAEnC;;GAEG;AACH,MAAa,OAAQ,SAAQ,qBAAY;IACvC;;;;;OAKG;IACH,IAAI,CAAC,IAAY,EAAE,GAAG,IAAW;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAExC,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;CACF;AAbD,0BAaC"}
|
package/build/src/Emitter.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* Extended EventEmitter that also emits all events to '*' listeners
|
|
4
|
+
*/
|
|
2
5
|
export declare class Emitter extends EventEmitter {
|
|
6
|
+
/**
|
|
7
|
+
* Emits an event to listeners and to '*' listeners
|
|
8
|
+
* @param type - Event type/name
|
|
9
|
+
* @param args - Arguments to pass to listeners
|
|
10
|
+
* @returns True if event had listeners
|
|
11
|
+
*/
|
|
3
12
|
emit(type: string, ...args: any[]): boolean;
|
|
4
13
|
}
|
package/build/src/Emitter.mjs
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* Extended EventEmitter that also emits all events to '*' listeners
|
|
4
|
+
*/
|
|
2
5
|
export class Emitter extends EventEmitter {
|
|
6
|
+
/**
|
|
7
|
+
* Emits an event to listeners and to '*' listeners
|
|
8
|
+
* @param type - Event type/name
|
|
9
|
+
* @param args - Arguments to pass to listeners
|
|
10
|
+
* @returns True if event had listeners
|
|
11
|
+
*/
|
|
3
12
|
emit(type, ...args) {
|
|
4
13
|
const a = super.emit(type, ...args);
|
|
5
14
|
const b = super.emit('*', type, ...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Emitter.mjs","sourceRoot":"","sources":["../../src/Emitter.ts"],"names":[],"mappings":"OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ;AAEnC,MAAM,OAAO,OAAQ,SAAQ,YAAY;IACvC,IAAI,CAAC,IAAY,EAAE,GAAG,IAAW;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAExC,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"Emitter.mjs","sourceRoot":"","sources":["../../src/Emitter.ts"],"names":[],"mappings":"OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ;AAEnC;;GAEG;AACH,MAAM,OAAO,OAAQ,SAAQ,YAAY;IACvC;;;;;OAKG;IACH,IAAI,CAAC,IAAY,EAAE,GAAG,IAAW;QAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAExC,OAAO,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;CACF"}
|
package/build/src/LRUCache.cjs
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.simpleCache = exports.cached = exports.LRUCache = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Least Recently Used (LRU) cache implementation
|
|
6
|
+
* @template T - Type of cache keys
|
|
7
|
+
* @template U - Type of cache values
|
|
8
|
+
*/
|
|
4
9
|
class LRUCache {
|
|
5
10
|
constructor(maxSize = Infinity) {
|
|
6
11
|
this.maxSize = maxSize;
|
|
@@ -29,6 +34,12 @@ class LRUCache {
|
|
|
29
34
|
}
|
|
30
35
|
}
|
|
31
36
|
exports.LRUCache = LRUCache;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a memoized function with LRU caching
|
|
39
|
+
* @template T - Cache key type
|
|
40
|
+
* @template V - Cache value type
|
|
41
|
+
* @template Args - Function argument types
|
|
42
|
+
*/
|
|
32
43
|
function cached({ maxSize, getKey, getValue, }) {
|
|
33
44
|
const cache = new LRUCache(maxSize);
|
|
34
45
|
const get = (...args) => {
|
|
@@ -44,6 +55,11 @@ function cached({ maxSize, getKey, getValue, }) {
|
|
|
44
55
|
return get;
|
|
45
56
|
}
|
|
46
57
|
exports.cached = cached;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a simple memoized function with default settings
|
|
60
|
+
* @template V - Cache value type
|
|
61
|
+
* @template Args - Function argument types
|
|
62
|
+
*/
|
|
47
63
|
function simpleCache(getValue) {
|
|
48
64
|
return cached({ maxSize: 10 ** 5, getKey: xs => xs.join(':'), getValue });
|
|
49
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LRUCache.cjs","sourceRoot":"","sources":["../../src/LRUCache.ts"],"names":[],"mappings":";;;AAAA,MAAa,QAAQ;IAInB,YAAqB,UAAkB,QAAQ;QAA1B,YAAO,GAAP,OAAO,CAAmB;QAH/C,QAAG,GAAG,IAAI,GAAG,EAAQ,CAAA;QACrB,SAAI,GAAQ,EAAE,CAAA;IAEoC,CAAC;IAEnD,GAAG,CAAC,CAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,CAAI;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEzB,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAM,CAAC,CAAA;YAEtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAChC;SACF;QAED,OAAO,CAAC,CAAA;IACV,CAAC;IAED,GAAG,CAAC,CAAI,EAAE,CAAI;QACZ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAO,CAAC,CAAA;SACxC;IACH,CAAC;CACF;AAhCD,4BAgCC;AAED,SAAgB,MAAM,CAA2B,EAC/C,OAAO,EACP,MAAM,EACN,QAAQ,GAKT;IACC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAO,OAAO,CAAC,CAAA;IAEzC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAU,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAEtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;SAC7B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;IACtB,CAAC,CAAA;IAED,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IACjB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEvB,OAAO,GAAG,CAAA;AACZ,CAAC;AA1BD,wBA0BC;AAED,SAAgB,WAAW,CAAwB,QAA2B;IAC5E,OAAO,MAAM,CAAC,EAAC,OAAO,EAAE,EAAE,IAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAC,CAAC,CAAA;AACvE,CAAC;AAFD,kCAEC"}
|
|
1
|
+
{"version":3,"file":"LRUCache.cjs","sourceRoot":"","sources":["../../src/LRUCache.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAa,QAAQ;IAInB,YAAqB,UAAkB,QAAQ;QAA1B,YAAO,GAAP,OAAO,CAAmB;QAH/C,QAAG,GAAG,IAAI,GAAG,EAAQ,CAAA;QACrB,SAAI,GAAQ,EAAE,CAAA;IAEoC,CAAC;IAEnD,GAAG,CAAC,CAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,CAAI;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEzB,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAM,CAAC,CAAA;YAEtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAChC;SACF;QAED,OAAO,CAAC,CAAA;IACV,CAAC;IAED,GAAG,CAAC,CAAI,EAAE,CAAI;QACZ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAO,CAAC,CAAA;SACxC;IACH,CAAC;CACF;AAhCD,4BAgCC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAA2B,EAC/C,OAAO,EACP,MAAM,EACN,QAAQ,GAKT;IACC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAO,OAAO,CAAC,CAAA;IAEzC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAU,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAEtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;SAC7B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;IACtB,CAAC,CAAA;IAED,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IACjB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEvB,OAAO,GAAG,CAAA;AACZ,CAAC;AA1BD,wBA0BC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAwB,QAA2B;IAC5E,OAAO,MAAM,CAAC,EAAC,OAAO,EAAE,EAAE,IAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAC,CAAC,CAAA;AACvE,CAAC;AAFD,kCAEC"}
|
package/build/src/LRUCache.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Least Recently Used (LRU) cache implementation
|
|
3
|
+
* @template T - Type of cache keys
|
|
4
|
+
* @template U - Type of cache values
|
|
5
|
+
*/
|
|
1
6
|
export declare class LRUCache<T, U> {
|
|
2
7
|
readonly maxSize: number;
|
|
3
8
|
map: Map<T, U>;
|
|
@@ -7,6 +12,12 @@ export declare class LRUCache<T, U> {
|
|
|
7
12
|
get(k: T): U | undefined;
|
|
8
13
|
set(k: T, v: U): void;
|
|
9
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates a memoized function with LRU caching
|
|
17
|
+
* @template T - Cache key type
|
|
18
|
+
* @template V - Cache value type
|
|
19
|
+
* @template Args - Function argument types
|
|
20
|
+
*/
|
|
10
21
|
export declare function cached<T, V, Args extends any[]>({ maxSize, getKey, getValue, }: {
|
|
11
22
|
maxSize: number;
|
|
12
23
|
getKey: (args: Args) => T;
|
|
@@ -17,6 +28,11 @@ export declare function cached<T, V, Args extends any[]>({ maxSize, getKey, getV
|
|
|
17
28
|
getKey: (args: Args) => T;
|
|
18
29
|
getValue: (args: Args) => V;
|
|
19
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Creates a simple memoized function with default settings
|
|
33
|
+
* @template V - Cache value type
|
|
34
|
+
* @template Args - Function argument types
|
|
35
|
+
*/
|
|
20
36
|
export declare function simpleCache<V, Args extends any[]>(getValue: (args: Args) => V): {
|
|
21
37
|
(...args: Args): NonNullable<V>;
|
|
22
38
|
cache: LRUCache<string, V>;
|
package/build/src/LRUCache.mjs
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Least Recently Used (LRU) cache implementation
|
|
3
|
+
* @template T - Type of cache keys
|
|
4
|
+
* @template U - Type of cache values
|
|
5
|
+
*/
|
|
1
6
|
export class LRUCache {
|
|
2
7
|
constructor(maxSize = Infinity) {
|
|
3
8
|
this.maxSize = maxSize;
|
|
@@ -25,6 +30,12 @@ export class LRUCache {
|
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a memoized function with LRU caching
|
|
35
|
+
* @template T - Cache key type
|
|
36
|
+
* @template V - Cache value type
|
|
37
|
+
* @template Args - Function argument types
|
|
38
|
+
*/
|
|
28
39
|
export function cached({ maxSize, getKey, getValue, }) {
|
|
29
40
|
const cache = new LRUCache(maxSize);
|
|
30
41
|
const get = (...args) => {
|
|
@@ -39,6 +50,11 @@ export function cached({ maxSize, getKey, getValue, }) {
|
|
|
39
50
|
get.getValue = getValue;
|
|
40
51
|
return get;
|
|
41
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a simple memoized function with default settings
|
|
55
|
+
* @template V - Cache value type
|
|
56
|
+
* @template Args - Function argument types
|
|
57
|
+
*/
|
|
42
58
|
export function simpleCache(getValue) {
|
|
43
59
|
return cached({ maxSize: 10 ** 5, getKey: xs => xs.join(':'), getValue });
|
|
44
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LRUCache.mjs","sourceRoot":"","sources":["../../src/LRUCache.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAQ;IAInB,YAAqB,UAAkB,QAAQ;QAA1B,YAAO,GAAP,OAAO,CAAmB;QAH/C,QAAG,GAAG,IAAI,GAAG,EAAQ,CAAA;QACrB,SAAI,GAAQ,EAAE,CAAA;IAEoC,CAAC;IAEnD,GAAG,CAAC,CAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,CAAI;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEzB,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAM,CAAC,CAAA;YAEtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAChC;SACF;QAED,OAAO,CAAC,CAAA;IACV,CAAC;IAED,GAAG,CAAC,CAAI,EAAE,CAAI;QACZ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAO,CAAC,CAAA;SACxC;IACH,CAAC;CACF;AAED,MAAM,UAAU,MAAM,CAA2B,EAC/C,OAAO,EACP,MAAM,EACN,QAAQ,GAKT;IACC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAO,OAAO,CAAC,CAAA;IAEzC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAU,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAEtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;SAC7B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;IACtB,CAAC,CAAA;IAED,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IACjB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEvB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,WAAW,CAAwB,QAA2B;IAC5E,OAAO,MAAM,CAAC,EAAC,OAAO,EAAE,EAAE,IAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAC,CAAC,CAAA;AACvE,CAAC"}
|
|
1
|
+
{"version":3,"file":"LRUCache.mjs","sourceRoot":"","sources":["../../src/LRUCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IAInB,YAAqB,UAAkB,QAAQ;QAA1B,YAAO,GAAP,OAAO,CAAmB;QAH/C,QAAG,GAAG,IAAI,GAAG,EAAQ,CAAA;QACrB,SAAI,GAAQ,EAAE,CAAA;IAEoC,CAAC;IAEnD,GAAG,CAAC,CAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,CAAI;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEzB,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAM,CAAC,CAAA;YAEtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAChC;SACF;QAED,OAAO,CAAC,CAAA;IACV,CAAC;IAED,GAAG,CAAC,CAAI,EAAE,CAAI;QACZ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAO,CAAC,CAAA;SACxC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAA2B,EAC/C,OAAO,EACP,MAAM,EACN,QAAQ,GAKT;IACC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAO,OAAO,CAAC,CAAA;IAEzC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAU,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAEtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACjB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;SAC7B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;IACtB,CAAC,CAAA;IAED,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IACjB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEvB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAwB,QAA2B;IAC5E,OAAO,MAAM,CAAC,EAAC,OAAO,EAAE,EAAE,IAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAC,CAAC,CAAA;AACvE,CAAC"}
|