@welshman/lib 0.0.32 → 0.0.34

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.
Files changed (42) hide show
  1. package/README.md +10 -8
  2. package/build/src/Context.cjs +17 -0
  3. package/build/src/Context.cjs.map +1 -1
  4. package/build/src/Context.d.ts +17 -0
  5. package/build/src/Context.mjs +17 -0
  6. package/build/src/Context.mjs.map +1 -1
  7. package/build/src/Deferred.cjs +9 -0
  8. package/build/src/Deferred.cjs.map +1 -1
  9. package/build/src/Deferred.d.ts +11 -0
  10. package/build/src/Deferred.mjs +9 -0
  11. package/build/src/Deferred.mjs.map +1 -1
  12. package/build/src/Emitter.cjs +9 -0
  13. package/build/src/Emitter.cjs.map +1 -1
  14. package/build/src/Emitter.d.ts +9 -0
  15. package/build/src/Emitter.mjs +9 -0
  16. package/build/src/Emitter.mjs.map +1 -1
  17. package/build/src/LRUCache.cjs +16 -0
  18. package/build/src/LRUCache.cjs.map +1 -1
  19. package/build/src/LRUCache.d.ts +16 -0
  20. package/build/src/LRUCache.mjs +16 -0
  21. package/build/src/LRUCache.mjs.map +1 -1
  22. package/build/src/Tools.cjs +478 -12
  23. package/build/src/Tools.cjs.map +1 -1
  24. package/build/src/Tools.d.ts +465 -18
  25. package/build/src/Tools.mjs +471 -9
  26. package/build/src/Tools.mjs.map +1 -1
  27. package/build/src/Worker.cjs +27 -1
  28. package/build/src/Worker.cjs.map +1 -1
  29. package/build/src/Worker.d.ts +25 -0
  30. package/build/src/Worker.mjs +27 -1
  31. package/build/src/Worker.mjs.map +1 -1
  32. package/build/src/index.cjs +0 -1
  33. package/build/src/index.cjs.map +1 -1
  34. package/build/src/index.d.ts +0 -1
  35. package/build/src/index.mjs +0 -1
  36. package/build/src/index.mjs.map +1 -1
  37. package/package.json +1 -1
  38. package/build/src/Fluent.cjs +0 -47
  39. package/build/src/Fluent.cjs.map +0 -1
  40. package/build/src/Fluent.d.ts +0 -34
  41. package/build/src/Fluent.mjs +0 -43
  42. package/build/src/Fluent.mjs.map +0 -1
package/README.md CHANGED
@@ -1,11 +1,13 @@
1
1
  # @welshman/lib [![version](https://badgen.net/npm/v/@welshman/lib)](https://npmjs.com/package/@welshman/lib)
2
2
 
3
- Some general-purpose utilities used elsewhere in @welshman.
3
+ Some general-purpose utilities for use in @welshman apps.
4
4
 
5
- - `Deferred` is just a promise with `resolve` and `reject` methods.
6
- - `Emitter` extends EventEmitter to support `emitter.on('*', ...)`.
7
- - `Fluent` is a wrapper around arrays with chained methods that modify and copy the underlying array.
8
- - `LRUCache` is an implementation of an LRU cache.
9
- - `Worker` is an implementation of an asynchronous queue.
10
- - `Tools` is a collection of general-purpose utility functions.
11
- - `Store` is an implementation of svelte-like subscribable stores with extra features.
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.
@@ -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":";;;AAEa,QAAA,GAAG,GAAY,EAAE,CAAA;AAEvB,MAAM,UAAU,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAG,EAAE,MAAM,CAAC,CAAA;AAA5D,QAAA,UAAU,cAAkD"}
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"}
@@ -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;
@@ -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"}
@@ -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":";;;AAIA,SAAgB,WAAW,CACzB,QAGS;IAET,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAwB,CAAA;AACrD,CAAC;AAPD,kCAOC;AAOM,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"}
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"}
@@ -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>;
@@ -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":"AAIA,MAAM,UAAU,WAAW,CACzB,QAGS;IAET,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAwB,CAAA;AACrD,CAAC;AAOD,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"}
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"}
@@ -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;AAPD,0BAOC"}
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"}
@@ -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
  }
@@ -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"}
@@ -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"}
@@ -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>;
@@ -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"}