@blackglory/cache-js 0.9.1 → 0.10.0

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,7 +9,11 @@ yarn add @blackglory/cache-js
9
9
  ## API
10
10
  ### CacheClient
11
11
  ```ts
12
- interface IMetadata {
12
+ interface INamespaceStats {
13
+ items: number
14
+ }
15
+
16
+ interface IItemMetadata {
13
17
  updatedAt: number
14
18
  timeToLive: number | null
15
19
  }
@@ -25,29 +29,37 @@ class CacheClient {
25
29
 
26
30
  close(): Promise<void>
27
31
 
28
- stats(namespace: string, timeout?: number): Promise<IStats>
32
+ getNamespaceStats(namespace: string, timeout?: number): Promise<INamespaceStats>
33
+
29
34
  getAllNamespaces(timeout?: number): Promise<string[]>
35
+
30
36
  getAllItemKeys(namespace: string, timeout?: number): Promise<string[]>
31
37
 
32
38
  hasItem(namespace: string, itemKey: string, timeout?: number): Promise<boolean>
33
39
 
34
- getItem(namespace: string, itemKey: string, timeout?: number): Promise<string | null>
40
+ getItem(namespace: string, itemKey: string, timeout?: number): Promise<
41
+ {
42
+ value: JSONValue
43
+ metadata: IItemMetadata
44
+ } | null
45
+ >
35
46
 
36
- getItemWithMetadata(namespace: string, itemKey: string, timeout?: number): Promise<{
37
- value: string
38
- metadata: IMetadata
39
- } | null>
47
+ getItemValue(
48
+ namespace: string
49
+ , itemKey: string
50
+ , timeout?: number
51
+ ): Promise<JSONValue | null>
40
52
 
41
- getItems(
53
+ getItemValues(
42
54
  namespace: string
43
55
  , itemKeys: string[]
44
56
  , timeout?: number
45
- ): Promise<Array<string | null>>
57
+ ): Promise<Array<JSONValue | null>>
46
58
 
47
59
  setItem(
48
60
  namespace: string
49
61
  , itemKey: string
50
- , itemValue: string
62
+ , itemValue: JSONValue
51
63
  , timeToLive: number | null
52
64
  , timeout?: number
53
65
  ): Promise<void>
@@ -1,9 +1,6 @@
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 { INamespaceStats, IItemMetadata } from './contract.js';
2
+ import { JSONValue } from '@blackglory/prelude';
3
+ export { INamespaceStats, IItemMetadata } from './contract.js';
7
4
  export interface ICacheClientOptions {
8
5
  server: string;
9
6
  timeout?: number;
@@ -15,20 +12,20 @@ export declare class CacheClient {
15
12
  private batchProxy;
16
13
  private closeClients;
17
14
  private timeout?;
18
- stats(namespace: string, timeout?: number): Promise<IStats>;
19
- getAllNamespaces(timeout?: number): Promise<string[]>;
20
- getAllItemKeys(namespace: string, timeout?: number): Promise<string[]>;
21
- private constructor();
22
15
  static create(options: ICacheClientOptions): Promise<CacheClient>;
16
+ private constructor();
23
17
  close(): Promise<void>;
18
+ getNamespaceStats(namespace: string, timeout?: number): Promise<INamespaceStats>;
19
+ getAllNamespaces(timeout?: number): Promise<string[]>;
20
+ getAllItemKeys(namespace: string, timeout?: number): Promise<string[]>;
24
21
  hasItem(namespace: string, itemKey: string, timeout?: number): Promise<boolean>;
25
- getItem(namespace: string, itemKey: string, timeout?: number): Promise<string | null>;
26
- getItemWithMetadata(namespace: string, itemKey: string, timeout?: number): Promise<{
27
- value: string;
28
- metadata: IMetadata;
22
+ getItem(namespace: string, itemKey: string, timeout?: number): Promise<{
23
+ value: JSONValue;
24
+ metadata: IItemMetadata;
29
25
  } | null>;
30
- getItems(namespace: string, itemKeys: string[], timeout?: number): Promise<Array<string | null>>;
31
- setItem(namespace: string, itemKey: string, itemValue: string, timeToLive: number | null, timeout?: number): Promise<void>;
26
+ getItemValue(namespace: string, itemKey: string, timeout?: number): Promise<JSONValue | null>;
27
+ getItemValues(namespace: string, itemKeys: string[], timeout?: number): Promise<Array<JSONValue | null>>;
28
+ setItem(namespace: string, itemKey: string, itemValue: JSONValue, timeToLive: number | null, timeout?: number): Promise<void>;
32
29
  removeItem(namespace: string, itemKey: string, timeout?: number): Promise<void>;
33
30
  clearItemsByNamespace(namespace: string, timeout?: number): Promise<void>;
34
31
  private withTimeout;
@@ -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,15 +8,6 @@ export class CacheClient {
9
8
  this.closeClients = closeClients;
10
9
  this.timeout = timeout;
11
10
  }
12
- async stats(namespace, timeout) {
13
- return await this.withTimeout(() => this.client.stats(namespace), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
14
- }
15
- async getAllNamespaces(timeout) {
16
- return await this.withTimeout(() => this.client.getAllNamespaces(), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
17
- }
18
- async getAllItemKeys(namespace, timeout) {
19
- return await this.withTimeout(() => this.client.getAllItemKeys(namespace), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
20
- }
21
11
  static async create(options) {
22
12
  const { client, batchClient, proxy, close } = await createRPCClient(options.server);
23
13
  return new CacheClient(client, batchClient, proxy, close, options.timeout);
@@ -25,29 +15,27 @@ export class CacheClient {
25
15
  async close() {
26
16
  await this.closeClients();
27
17
  }
18
+ async getNamespaceStats(namespace, timeout) {
19
+ return await this.withTimeout(() => this.client.getNamespaceStats(namespace), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
20
+ }
21
+ async getAllNamespaces(timeout) {
22
+ return await this.withTimeout(() => this.client.getAllNamespaces(), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
23
+ }
24
+ async getAllItemKeys(namespace, timeout) {
25
+ return await this.withTimeout(() => this.client.getAllItemKeys(namespace), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
26
+ }
28
27
  async hasItem(namespace, itemKey, timeout) {
29
28
  return await this.withTimeout(() => this.client.hasItem(namespace, itemKey), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
30
29
  }
31
30
  async getItem(namespace, itemKey, timeout) {
32
31
  return await this.withTimeout(() => this.client.getItem(namespace, itemKey), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
33
32
  }
34
- async getItemWithMetadata(namespace, itemKey, timeout) {
35
- return await this.withTimeout(async () => {
36
- const result = await this.client.getItemWithMetadata(namespace, itemKey);
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 getItemValue(namespace, itemKey, timeout) {
34
+ return await this.withTimeout(() => this.client.getItemValue(namespace, itemKey), timeout !== null && timeout !== void 0 ? timeout : this.timeout);
47
35
  }
48
- async getItems(namespace, itemKeys, timeout) {
36
+ async getItemValues(namespace, itemKeys, timeout) {
49
37
  return await this.withTimeout(async () => {
50
- const results = await this.batchClient.parallel(...itemKeys.map(key => this.batchProxy.getItem(namespace, key)));
38
+ const results = await this.batchClient.parallel(...itemKeys.map(key => this.batchProxy.getItemValue(namespace, key)));
51
39
  return results.map(result => result.unwrap());
52
40
  }, timeout !== null && timeout !== void 0 ? timeout : this.timeout);
53
41
  }
@@ -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":"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"}
package/lib/contract.d.ts CHANGED
@@ -1,23 +1,23 @@
1
- export declare const expectedVersion = "^0.8.0";
2
- export interface IStats {
3
- namespace: string;
1
+ import { JSONValue } from '@blackglory/prelude';
2
+ export declare const expectedVersion = "^0.9.0";
3
+ export interface INamespaceStats {
4
4
  items: number;
5
5
  }
6
- export interface IMetadata {
6
+ export interface IItemMetadata {
7
7
  updatedAt: number;
8
8
  timeToLive: number | null;
9
9
  }
10
10
  export interface IAPI {
11
- stats(namespace: string): IStats;
12
11
  getAllNamespaces(): string[];
13
12
  getAllItemKeys(namespace: string): string[];
13
+ getNamespaceStats(namespace: string): INamespaceStats;
14
14
  hasItem(namespace: string, itemKey: string): boolean;
15
- getItem(namespace: string, itemKey: string): string | null;
16
- getItemWithMetadata(namespace: string, itemKey: string): {
17
- value: string;
18
- metadata: IMetadata;
15
+ getItem(namespace: string, itemKey: string): {
16
+ value: JSONValue;
17
+ metadata: IItemMetadata;
19
18
  } | null;
20
- setItem(namespace: string, itemKey: string, itemValue: string, timeToLive: number | null): null;
19
+ getItemValue(namespace: string, itemKey: string): JSONValue | null;
20
+ setItem(namespace: string, itemKey: string, itemValue: JSONValue, timeToLive: number | null): null;
21
21
  removeItem(namespace: string, itemKey: string): null;
22
22
  clearItemsByNamespace(namespace: string): null;
23
23
  }
package/lib/contract.js CHANGED
@@ -1,2 +1,2 @@
1
- export const expectedVersion = '^0.8.0';
1
+ export const expectedVersion = '^0.9.0';
2
2
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAA"}
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.1",
3
+ "version": "0.10.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
@@ -43,18 +43,17 @@
43
43
  },
44
44
  "devDependencies": {
45
45
  "@blackglory/jest-resolver": "^0.3.0",
46
- "@commitlint/cli": "^17.4.2",
47
- "@commitlint/config-conventional": "^17.4.2",
48
- "@types/jest": "^29.4.0",
46
+ "@commitlint/cli": "^17.5.1",
47
+ "@commitlint/config-conventional": "^17.4.4",
48
+ "@types/jest": "^29.5.0",
49
49
  "@types/ws": "^8.5.4",
50
- "@typescript-eslint/eslint-plugin": "^5.49.0",
51
- "@typescript-eslint/parser": "^5.49.0",
50
+ "@typescript-eslint/eslint-plugin": "^5.57.0",
51
+ "@typescript-eslint/parser": "^5.57.0",
52
52
  "cross-env": "^7.0.3",
53
- "eslint": "^8.33.0",
53
+ "eslint": "^8.36.0",
54
54
  "husky": "4",
55
- "jest": "^29.4.1",
56
- "jest-resolve": "^29.4.1",
57
- "msw": "^1.0.0",
55
+ "jest": "^29.5.0",
56
+ "jest-resolve": "^29.5.0",
58
57
  "npm-run-all": "^4.1.5",
59
58
  "rimraf": "^3.0.2",
60
59
  "standard-version": "^9.5.0",
@@ -66,12 +65,12 @@
66
65
  },
67
66
  "dependencies": {
68
67
  "@blackglory/prelude": "^0.3.1",
69
- "@delight-rpc/extra-native-websocket": "^0.4.0",
70
- "@delight-rpc/extra-websocket": "^0.4.0",
71
- "delight-rpc": "^5.0.3",
72
- "extra-abort": "^0.3.1",
68
+ "@delight-rpc/extra-native-websocket": "^0.5.1",
69
+ "@delight-rpc/extra-websocket": "^0.6.1",
70
+ "delight-rpc": "^6.0.1",
71
+ "extra-abort": "^0.3.4",
73
72
  "extra-native-websocket": "^0.3.1",
74
73
  "extra-websocket": "^0.3.0",
75
- "ws": "^8.12.0"
74
+ "ws": "^8.13.0"
76
75
  }
77
76
  }
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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"}