@blackglory/cache-js 0.9.0 → 0.9.2

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 CHANGED
@@ -9,6 +9,11 @@ yarn add @blackglory/cache-js
9
9
  ## API
10
10
  ### CacheClient
11
11
  ```ts
12
+ interface IStats {
13
+ namespace: string
14
+ items: number
15
+ }
16
+
12
17
  interface IMetadata {
13
18
  updatedAt: number
14
19
  timeToLive: number | null
@@ -29,30 +34,30 @@ class CacheClient {
29
34
  getAllNamespaces(timeout?: number): Promise<string[]>
30
35
  getAllItemKeys(namespace: string, timeout?: number): Promise<string[]>
31
36
 
32
- hasItem(namespace: string, key: string, timeout?: number): Promise<boolean>
37
+ hasItem(namespace: string, itemKey: string, timeout?: number): Promise<boolean>
33
38
 
34
- getItem(namespace: string, key: string, timeout?: number): Promise<string | null>
39
+ getItem(namespace: string, itemKey: string, timeout?: number): Promise<string | null>
35
40
 
36
- getItemWithMetadata(namespace: string, key: string, timeout?: number): Promise<{
41
+ getItemWithMetadata(namespace: string, itemKey: string, timeout?: number): Promise<{
37
42
  value: string
38
43
  metadata: IMetadata
39
44
  } | null>
40
45
 
41
46
  getItems(
42
47
  namespace: string
43
- , keys: string[]
48
+ , itemKeys: string[]
44
49
  , timeout?: number
45
50
  ): Promise<Array<string | null>>
46
51
 
47
52
  setItem(
48
53
  namespace: string
49
- , key: string
50
- , value: string
54
+ , itemKey: string
55
+ , itemValue: string
51
56
  , timeToLive: number | null
52
57
  , timeout?: number
53
58
  ): Promise<void>
54
59
 
55
- removeItem(namespace: string, key: string, timeout?: number): Promise<void>
60
+ removeItem(namespace: string, itemKey: string, timeout?: number): Promise<void>
56
61
 
57
62
  clearItemsByNamespace(namespace: string, timeout?: number): Promise<void>
58
63
  }
@@ -1,9 +1,5 @@
1
- import { IStats } from './contract.js';
2
- export { IStats } from './contract.js';
3
- export interface IMetadata {
4
- updatedAt: number;
5
- timeToLive: number | null;
6
- }
1
+ import { IStats, IMetadata } from './contract.js';
2
+ export { IStats, IMetadata } from './contract.js';
7
3
  export interface ICacheClientOptions {
8
4
  server: string;
9
5
  timeout?: number;
@@ -15,21 +11,21 @@ export declare class CacheClient {
15
11
  private batchProxy;
16
12
  private closeClients;
17
13
  private timeout?;
14
+ static create(options: ICacheClientOptions): Promise<CacheClient>;
15
+ private constructor();
16
+ close(): Promise<void>;
18
17
  stats(namespace: string, timeout?: number): Promise<IStats>;
19
18
  getAllNamespaces(timeout?: number): Promise<string[]>;
20
19
  getAllItemKeys(namespace: string, timeout?: number): Promise<string[]>;
21
- private constructor();
22
- static create(options: ICacheClientOptions): Promise<CacheClient>;
23
- close(): Promise<void>;
24
- hasItem(namespace: string, key: string, timeout?: number): Promise<boolean>;
25
- getItem(namespace: string, key: string, timeout?: number): Promise<string | null>;
26
- getItemWithMetadata(namespace: string, key: string, timeout?: number): Promise<{
20
+ hasItem(namespace: string, itemKey: string, timeout?: number): Promise<boolean>;
21
+ getItem(namespace: string, itemKey: string, timeout?: number): Promise<string | null>;
22
+ getItemWithMetadata(namespace: string, itemKey: string, timeout?: number): Promise<{
27
23
  value: string;
28
24
  metadata: IMetadata;
29
25
  } | null>;
30
- getItems(namespace: string, keys: string[], timeout?: number): Promise<Array<string | null>>;
31
- setItem(namespace: string, key: string, value: string, timeToLive: number | null, timeout?: number): Promise<void>;
32
- removeItem(namespace: string, key: string, timeout?: number): Promise<void>;
26
+ getItems(namespace: string, itemKeys: string[], timeout?: number): Promise<Array<string | null>>;
27
+ setItem(namespace: string, itemKey: string, itemValue: string, timeToLive: number | null, timeout?: number): Promise<void>;
28
+ removeItem(namespace: string, itemKey: string, timeout?: number): Promise<void>;
33
29
  clearItemsByNamespace(namespace: string, timeout?: number): Promise<void>;
34
30
  private withTimeout;
35
31
  }
@@ -1,6 +1,5 @@
1
1
  import { createRPCClient } from "./utils/rpc-client.js";
2
2
  import { timeoutSignal, withAbortSignal } from 'extra-abort';
3
- import { isNull } from '@blackglory/prelude';
4
3
  export class CacheClient {
5
4
  constructor(client, batchClient, batchProxy, closeClients, timeout) {
6
5
  this.client = client;
@@ -9,6 +8,13 @@ export class CacheClient {
9
8
  this.closeClients = closeClients;
10
9
  this.timeout = timeout;
11
10
  }
11
+ static async create(options) {
12
+ const { client, batchClient, proxy, close } = await createRPCClient(options.server);
13
+ return new CacheClient(client, batchClient, proxy, close, options.timeout);
14
+ }
15
+ async close() {
16
+ await this.closeClients();
17
+ }
12
18
  async stats(namespace, timeout) {
13
19
  return await this.withTimeout(() => this.client.stats(namespace), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
14
20
  }
@@ -18,44 +24,26 @@ export class CacheClient {
18
24
  async getAllItemKeys(namespace, timeout) {
19
25
  return await this.withTimeout(() => this.client.getAllItemKeys(namespace), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
20
26
  }
21
- static async create(options) {
22
- const { client, batchClient, proxy, close } = await createRPCClient(options.server);
23
- return new CacheClient(client, batchClient, proxy, close, options.timeout);
24
- }
25
- async close() {
26
- await this.closeClients();
27
- }
28
- async hasItem(namespace, key, timeout) {
29
- return await this.withTimeout(() => this.client.hasItem(namespace, key), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
27
+ async hasItem(namespace, itemKey, timeout) {
28
+ return await this.withTimeout(() => this.client.hasItem(namespace, itemKey), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
30
29
  }
31
- async getItem(namespace, key, timeout) {
32
- return await this.withTimeout(() => this.client.getItem(namespace, key), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
30
+ async getItem(namespace, itemKey, timeout) {
31
+ return await this.withTimeout(() => this.client.getItem(namespace, itemKey), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
33
32
  }
34
- async getItemWithMetadata(namespace, key, timeout) {
35
- return await this.withTimeout(async () => {
36
- const result = await this.client.getItemWithMetadata(namespace, key);
37
- if (isNull(result))
38
- return null;
39
- return {
40
- value: result.value,
41
- metadata: {
42
- updatedAt: result.metadata.updatedAt,
43
- timeToLive: result.metadata.timeToLive
44
- }
45
- };
46
- }, timeout !== null && timeout !== void 0 ? timeout : this.timeout);
33
+ async getItemWithMetadata(namespace, itemKey, timeout) {
34
+ return await this.withTimeout(() => this.client.getItemWithMetadata(namespace, itemKey), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
47
35
  }
48
- async getItems(namespace, keys, timeout) {
36
+ async getItems(namespace, itemKeys, timeout) {
49
37
  return await this.withTimeout(async () => {
50
- const results = await this.batchClient.parallel(...keys.map(key => this.batchProxy.getItem(namespace, key)));
38
+ const results = await this.batchClient.parallel(...itemKeys.map(key => this.batchProxy.getItem(namespace, key)));
51
39
  return results.map(result => result.unwrap());
52
40
  }, timeout !== null && timeout !== void 0 ? timeout : this.timeout);
53
41
  }
54
- async setItem(namespace, key, value, timeToLive, timeout) {
55
- await this.withTimeout(() => this.client.setItem(namespace, key, value, timeToLive), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
42
+ async setItem(namespace, itemKey, itemValue, timeToLive, timeout) {
43
+ await this.withTimeout(() => this.client.setItem(namespace, itemKey, itemValue, timeToLive), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
56
44
  }
57
- async removeItem(namespace, key, timeout) {
58
- await this.withTimeout(() => this.client.removeItem(namespace, key), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
45
+ async removeItem(namespace, itemKey, timeout) {
46
+ await this.withTimeout(() => this.client.removeItem(namespace, itemKey), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
59
47
  }
60
48
  async clearItemsByNamespace(namespace, timeout) {
61
49
  await this.withTimeout(() => this.client.clearItemsByNamespace(namespace), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
@@ -69,4 +57,4 @@ export class CacheClient {
69
57
  }
70
58
  }
71
59
  }
72
- //# sourceMappingURL=cache.js.map
60
+ //# sourceMappingURL=cache-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-client.js","sourceRoot":"","sources":["../src/cache-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,8BAA4B;AAGtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAS5D,MAAM,OAAO,WAAW;IAMtB,YACU,MAAyB,EACzB,WAAwB,EACxB,UAA2C,EAC3C,YAAiC,EACjC,OAAgB;QAJhB,WAAM,GAAN,MAAM,CAAmB;QACzB,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAiC;QAC3C,iBAAY,GAAZ,YAAY,CAAqB;QACjC,YAAO,GAAP,OAAO,CAAS;IACvB,CAAC;IAXJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAA4B;QAC9C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnF,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5E,CAAC;IAUD,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,OAAgB;QAC7C,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAClC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAgB;QACrC,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EACpC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,OAAgB;QACtD,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAC3C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAgB;QAChE,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAC7C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,OAAe,EACf,OAAgB;QAEhB,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAC7C,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAgB;QAI5E,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,EACzD,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAAiB,EACjB,QAAkB,EAClB,OAAgB;QAEhB,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,KAAK,IAAI,EAAE;YACT,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC7C,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAChE,CAAA;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/C,CAAC,EACD,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,OAAe,EACf,SAAiB,EACjB,UAAyB,EACzB,OAAgB;QAEhB,MAAM,IAAI,CAAC,WAAW,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CACvB,SAAS,EACT,OAAO,EACP,SAAS,EACT,UAAU,CACX,EACD,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAgB;QACnE,MAAM,IAAI,CAAC,WAAW,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,EAChD,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,SAAiB,EAAE,OAAgB;QAC7D,MAAM,IAAI,CAAC,WAAW,CACpB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAClD,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,EAAwB,EACxB,UAA8B,IAAI,CAAC,OAAO;QAE1C,IAAI,OAAO,EAAE;YACX,OAAO,MAAM,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;SACzD;aAAM;YACL,OAAO,MAAM,EAAE,EAAE,CAAA;SAClB;IACH,CAAC;CACF"}
package/lib/contract.d.ts CHANGED
@@ -1,23 +1,23 @@
1
1
  export declare const expectedVersion = "^0.8.0";
2
+ export interface IStats {
3
+ namespace: string;
4
+ items: number;
5
+ }
6
+ export interface IMetadata {
7
+ updatedAt: number;
8
+ timeToLive: number | null;
9
+ }
2
10
  export interface IAPI {
3
11
  stats(namespace: string): IStats;
4
12
  getAllNamespaces(): string[];
5
13
  getAllItemKeys(namespace: string): string[];
6
- hasItem(namespace: string, key: string): boolean;
7
- getItem(namespace: string, key: string): string | null;
8
- getItemWithMetadata(namespace: string, key: string): {
14
+ hasItem(namespace: string, itemKey: string): boolean;
15
+ getItem(namespace: string, itemKey: string): string | null;
16
+ getItemWithMetadata(namespace: string, itemKey: string): {
9
17
  value: string;
10
18
  metadata: IMetadata;
11
19
  } | null;
12
- setItem(namespace: string, key: string, value: string, timeToLive: number | null): null;
13
- removeItem(namespace: string, key: string): null;
20
+ setItem(namespace: string, itemKey: string, itemValue: string, timeToLive: number | null): null;
21
+ removeItem(namespace: string, itemKey: string): null;
14
22
  clearItemsByNamespace(namespace: string): null;
15
23
  }
16
- export interface IStats {
17
- namespace: string;
18
- items: number;
19
- }
20
- export interface IMetadata {
21
- updatedAt: number;
22
- timeToLive: number | null;
23
- }
package/lib/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './cache.js';
1
+ export * from './cache-client.js';
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export * from './cache.js';
1
+ export * from './cache-client.js';
2
2
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blackglory/cache-js",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
@@ -54,7 +54,6 @@
54
54
  "husky": "4",
55
55
  "jest": "^29.4.1",
56
56
  "jest-resolve": "^29.4.1",
57
- "msw": "^1.0.0",
58
57
  "npm-run-all": "^4.1.5",
59
58
  "rimraf": "^3.0.2",
60
59
  "standard-version": "^9.5.0",
package/lib/cache.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}