@goatlab/node-backend 0.0.13 → 0.0.15

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/dist/Cache.d.ts CHANGED
@@ -1,23 +1,26 @@
1
1
  import { type Milliseconds } from '@goatlab/js-utils';
2
2
  import { Options } from 'keyv';
3
3
  declare const Keyv: any;
4
- export declare class Cache extends Keyv {
4
+ export declare class Cache<T extends object = any> extends Keyv<T> {
5
5
  private _ns;
6
+ private _tenantId?;
6
7
  private usesLRUMemory?;
7
8
  private keyvLru;
8
9
  private memoryCache;
9
10
  constructor({ connection, opts }: {
10
11
  connection: string | undefined;
11
- opts?: Options<any> & {
12
+ opts?: Options<T> & {
12
13
  usesLRUMemory?: boolean;
14
+ tenantId?: string;
13
15
  };
14
16
  });
17
+ get tenantId(): string | undefined;
15
18
  private isValidResult;
16
19
  private isNotNullish;
17
20
  private isNotEmptyString;
18
21
  private isNotEmptyArray;
19
22
  private isNotEmptyObject;
20
- get<T>(key: string | string[]): Promise<T>;
23
+ get(key: string | string[]): Promise<T>;
21
24
  delete(key: string): Promise<boolean>;
22
25
  has(key: string[]): Promise<boolean[]>;
23
26
  has(key: string): Promise<boolean>;
@@ -28,20 +31,20 @@ export declare class Cache extends Keyv {
28
31
  * @param int $ms - time in milliseconds
29
32
  * @param $callback
30
33
  */
31
- remember<T>(key: string, ms: Milliseconds, fx: () => Promise<T>): Promise<T>;
34
+ remember(key: string, ms: Milliseconds, fx: () => Promise<T>): Promise<T>;
32
35
  /**
33
36
  * Get an item from the cache, or execute the given Closure and store the result forever.
34
37
  *
35
38
  * @param string $key
36
39
  * @param \Closure $callback
37
40
  */
38
- rememberForever<T>(key: string, fx: () => Promise<T>): Promise<T>;
41
+ rememberForever(key: string, fx: () => Promise<T>): Promise<T>;
39
42
  /**
40
43
  * Retrieve an item from the cache and delete it.
41
44
  *
42
45
  * @param string $key
43
46
  */
44
- pull(key: string): Promise<any>;
47
+ pull(key: string): Promise<T>;
45
48
  /**
46
49
  * Remove an item from the cache.
47
50
  *
package/dist/Cache.js CHANGED
@@ -4,33 +4,47 @@ exports.Cache = void 0;
4
4
  const js_utils_1 = require("@goatlab/js-utils");
5
5
  const redis_1 = require("@keyv/redis");
6
6
  const Keyv = require('keyv');
7
- const keyv_lru_1 = require("keyv-lru");
7
+ const KeyvLrus_1 = require("./cache/KeyvLrus");
8
8
  class Cache extends Keyv {
9
+ _ns;
10
+ _tenantId;
11
+ usesLRUMemory;
12
+ keyvLru;
13
+ memoryCache;
9
14
  constructor({ connection, opts }) {
15
+ const tenantId = opts?.tenantId;
16
+ const namespace = opts?.namespace || '';
17
+ // Build the full namespace including tenant ID if provided
18
+ const fullNamespace = tenantId
19
+ ? (namespace ? `${tenantId}:${namespace}` : tenantId)
20
+ : namespace;
10
21
  super({
11
22
  store: connection
12
23
  ? new redis_1.default(connection)
13
- : new keyv_lru_1.KeyvLru({
24
+ : new KeyvLrus_1.KeyvLru({
14
25
  max: 1000,
15
- notify: false,
16
- ttl: 0,
17
- expire: 0
26
+ resetTtl: false,
27
+ ttl: 0
18
28
  }),
19
- ...opts
29
+ ...opts,
30
+ namespace: fullNamespace
20
31
  });
21
- this.keyvLru = new keyv_lru_1.KeyvLru({
32
+ this.keyvLru = new KeyvLrus_1.KeyvLru({
22
33
  max: 1000,
23
- notify: false,
24
- ttl: 0,
25
- expire: 0
34
+ resetTtl: false,
35
+ ttl: 0
26
36
  });
27
37
  this.memoryCache = new Keyv({
28
38
  store: this.keyvLru,
29
- namespace: opts?.namespace || ''
39
+ namespace: fullNamespace
30
40
  });
31
- this._ns = opts?.namespace || '';
41
+ this._ns = fullNamespace;
42
+ this._tenantId = tenantId;
32
43
  this.usesLRUMemory = opts?.usesLRUMemory || false;
33
44
  }
45
+ get tenantId() {
46
+ return this._tenantId;
47
+ }
34
48
  isValidResult(result) {
35
49
  return (this.isNotNullish(result) &&
36
50
  this.isNotEmptyString(result) &&
@@ -56,7 +70,7 @@ class Cache extends Keyv {
56
70
  async get(key) {
57
71
  // Search first in LRU memory
58
72
  // It will greatly improve performance
59
- // for "frequent" users
73
+ // for "frequent" uses
60
74
  if (this.usesLRUMemory) {
61
75
  const memoryVal = await this.memoryCache.get(`${this._ns}:${key}`);
62
76
  if (memoryVal) {
@@ -149,32 +163,67 @@ class Cache extends Keyv {
149
163
  }
150
164
  async deleteWhereStartsWith(value) {
151
165
  if (!this.iterator) {
152
- await js_utils_1.Promises.map(Object.keys(this.opts.store['cache']['cache']), async (k) => {
166
+ await js_utils_1.Promises.map(Object.keys(this.opts.store['cache']['items']), async (k) => {
153
167
  if (k.startsWith(`${this._ns}:${value}`)) {
154
168
  await this.delete(k.replace(`${this._ns}:`, ''));
155
169
  }
156
170
  });
157
171
  return;
158
172
  }
173
+ // When using iterator with compound namespaces (e.g., tenant:namespace),
174
+ // keyv may not strip the full namespace correctly. We need to handle this.
175
+ const namespaceParts = this._ns.split(':');
176
+ const hasCompoundNamespace = namespaceParts.length > 1;
159
177
  for await (const [key] of this.iterator(this._ns)) {
160
- if (key.startsWith(value)) {
161
- await this.delete(key);
178
+ let keyToCheck = key;
179
+ // If we have a compound namespace and the key still contains part of it,
180
+ // we need to strip the remaining namespace parts
181
+ if (hasCompoundNamespace && key.includes(':')) {
182
+ // Check if the key starts with any remaining namespace parts
183
+ for (let i = 1; i < namespaceParts.length; i++) {
184
+ const remainingNamespace = namespaceParts.slice(i).join(':');
185
+ if (key.startsWith(`${remainingNamespace}:`)) {
186
+ keyToCheck = key.substring(remainingNamespace.length + 1);
187
+ break;
188
+ }
189
+ }
190
+ }
191
+ if (keyToCheck.startsWith(value)) {
192
+ // Use the processed key (without namespace parts) for deletion
193
+ await this.delete(keyToCheck);
162
194
  }
163
195
  }
164
196
  }
165
197
  async getValueWhereKeyStartsWith(value) {
166
198
  const result = [];
167
199
  if (!this.iterator) {
168
- await js_utils_1.Promises.map(Object.keys(this.opts.store['cache']['cache']), async (k) => {
200
+ await js_utils_1.Promises.map(Object.keys(this.opts.store['cache']['items']), async (k) => {
169
201
  if (k.startsWith(`${this._ns}:${value}`)) {
170
- const val = JSON.parse(this.opts.store['cache']['cache'][k].value).value;
202
+ const val = JSON.parse(this.opts.store['cache']['items'][k].value).value;
171
203
  result.push(val);
172
204
  }
173
205
  });
174
206
  return result;
175
207
  }
208
+ // When using iterator with compound namespaces (e.g., tenant:namespace),
209
+ // keyv may not strip the full namespace correctly. We need to handle this.
210
+ const namespaceParts = this._ns.split(':');
211
+ const hasCompoundNamespace = namespaceParts.length > 1;
176
212
  for await (const [key, val] of this.iterator(this._ns)) {
177
- if (key.startsWith(value)) {
213
+ let keyToCheck = key;
214
+ // If we have a compound namespace and the key still contains part of it,
215
+ // we need to strip the remaining namespace parts
216
+ if (hasCompoundNamespace && key.includes(':')) {
217
+ // Check if the key starts with any remaining namespace parts
218
+ for (let i = 1; i < namespaceParts.length; i++) {
219
+ const remainingNamespace = namespaceParts.slice(i).join(':');
220
+ if (key.startsWith(`${remainingNamespace}:`)) {
221
+ keyToCheck = key.substring(remainingNamespace.length + 1);
222
+ break;
223
+ }
224
+ }
225
+ }
226
+ if (keyToCheck.startsWith(value)) {
178
227
  result.push(val);
179
228
  }
180
229
  }
package/dist/Cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { LRU } from 'tiny-lru';
2
+ import type { ExpirableItem, MapInterface } from './lrutypes';
3
+ export type KeyvLruOptions = {
4
+ max: number;
5
+ ttl?: number;
6
+ resetTtl?: boolean;
7
+ serialize?: (data: any) => string;
8
+ deserialize?: (data: string) => any;
9
+ };
10
+ /**
11
+ * An adapter from tiny-lru to the MapInterface API.
12
+ */
13
+ export declare class KeyvLru<T> implements MapInterface {
14
+ cache: LRU<T>;
15
+ private defaultTtl?;
16
+ serialize?: (data: any) => string;
17
+ deserialize?: (data: string) => any;
18
+ opts?: {
19
+ serialize?: (data: any) => string;
20
+ deserialize?: (data: string) => any;
21
+ };
22
+ constructor(options?: KeyvLruOptions);
23
+ clear(): void;
24
+ delete(key: string): boolean;
25
+ get(key: string): ExpirableItem<T> | undefined;
26
+ set(key: string, value: T): 1 | 0;
27
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyvLru = void 0;
4
+ const tiny_lru_1 = require("tiny-lru");
5
+ /**
6
+ * An adapter from tiny-lru to the MapInterface API.
7
+ */
8
+ class KeyvLru {
9
+ cache;
10
+ defaultTtl;
11
+ serialize;
12
+ deserialize;
13
+ opts;
14
+ constructor(options = { max: 500 }) {
15
+ this.defaultTtl = options.ttl;
16
+ this.cache = new tiny_lru_1.LRU(options.max, this.defaultTtl, options.resetTtl);
17
+ this.serialize = options.serialize;
18
+ this.deserialize = options.deserialize;
19
+ // Expose opts to match test expectations
20
+ this.opts = {
21
+ deserialize: options.deserialize,
22
+ serialize: options.serialize
23
+ };
24
+ }
25
+ clear() {
26
+ this.cache.clear();
27
+ }
28
+ delete(key) {
29
+ if (!this.cache.has(key)) {
30
+ return false;
31
+ }
32
+ this.cache.delete(key);
33
+ return true;
34
+ }
35
+ get(key) {
36
+ return this.cache.get(key);
37
+ }
38
+ set(key, value) {
39
+ if (typeof value === 'symbol') {
40
+ const e = new Error();
41
+ e.message = 'symbol cannot be serialized';
42
+ throw e;
43
+ }
44
+ this.cache.set(key, value);
45
+ return 1;
46
+ }
47
+ }
48
+ exports.KeyvLru = KeyvLru;
49
+ //# sourceMappingURL=KeyvLrus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyvLrus.js","sourceRoot":"","sources":["../../src/cache/KeyvLrus.ts"],"names":[],"mappings":";;;AAAA,uCAA8B;AAW9B;;GAEG;AACH,MAAa,OAAO;IAClB,KAAK,CAAQ;IACL,UAAU,CAAS;IAC3B,SAAS,CAAwB;IACjC,WAAW,CAAwB;IACnC,IAAI,CAGH;IAED,YAAY,UAA0B,EAAE,GAAG,EAAE,GAAG,EAAE;QAChD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,cAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAEpE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QAEtC,yCAAyC;QACzC,IAAI,CAAC,IAAI,GAAG;YACV,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAA;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAiC,CAAA;IAC5D,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE,CAAA;YACrB,CAAC,CAAC,OAAO,GAAG,6BAA6B,CAAA;YACzC,MAAM,CAAC,CAAA;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC1B,OAAO,CAAC,CAAA;IACV,CAAC;CACF;AAlDD,0BAkDC"}
@@ -0,0 +1,10 @@
1
+ export type ExpirableItem<T> = {
2
+ expires?: number;
3
+ data: T;
4
+ };
5
+ export interface MapInterface {
6
+ clear(): void;
7
+ delete(key: string): boolean;
8
+ get(key: string): any;
9
+ set(key: string, value: any, ttl: number): 1 | 0;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=lrutypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lrutypes.js","sourceRoot":"","sources":["../../src/cache/lrutypes.ts"],"names":[],"mappings":""}