@blackglory/estore-js 0.6.1 → 0.7.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
@@ -54,7 +54,7 @@ export class EStoreClient {
54
54
  ): Promise<number>
55
55
 
56
56
  /**
57
- * @param nextEventIndex 如果指定, 则会在eventIndex不等于下一个index时抛出EventIndexConflict错误.
57
+ * @param nextEventIndex 如果指定, 则会在不匹配下一个index时抛出EventIndexConflict错误.
58
58
  * @throws {EventIndexConflict}
59
59
  */
60
60
  appendEvent(
@@ -65,6 +65,17 @@ export class EStoreClient {
65
65
  , signal?: ABortSignal
66
66
  ): Promise<void>
67
67
 
68
+ /**
69
+ * @param lastEventIndex 如果指定, 则会在不匹配最后一个index时抛出EventIndexConflict错误.
70
+ * @throws {EventIndexConflict}
71
+ */
72
+ popEvent(
73
+ namespace: string
74
+ , itemId: string
75
+ , lastEventIndex?: number
76
+ , signal?: AbortSignal
77
+ ): Promise<void>
78
+
68
79
  getEvent(
69
80
  namespace: string
70
81
  , itemId: string
package/lib/contract.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { CustomError } from '@blackglory/errors';
2
2
  import { JSONValue } from 'justypes';
3
- export declare const expectedVersion = "^0.4.0";
3
+ export declare const expectedVersion = "^0.4.1";
4
4
  export interface INamespaceStats {
5
5
  items: number;
6
6
  }
@@ -22,6 +22,14 @@ export interface IAPI {
22
22
  event: JSONValue,
23
23
  nextEventIndex: number
24
24
  ]): null;
25
+ popEvent(...args: [
26
+ namespace: string,
27
+ itemId: string
28
+ ] | [
29
+ namespace: string,
30
+ itemId: string,
31
+ lastEventIndex: number
32
+ ]): null;
25
33
  getEvent(namespace: string, itemId: string, eventIndex: number): JSONValue | null;
26
34
  }
27
35
  export declare class EventIndexConflict extends CustomError {
package/lib/contract.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { CustomError } from '@blackglory/errors';
2
- export const expectedVersion = '^0.4.0';
2
+ export const expectedVersion = '^0.4.1';
3
3
  export class EventIndexConflict extends CustomError {
4
4
  }
5
5
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAA;AAgDvC,MAAM,OAAO,kBAAmB,SAAQ,WAAW;CAAG"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAA;AAgEvC,MAAM,OAAO,kBAAmB,SAAQ,WAAW;CAAG"}
@@ -22,6 +22,7 @@ export declare class EStoreClient {
22
22
  removeItem(namespace: string, itemId: string, signal?: AbortSignal): Promise<void>;
23
23
  getItemSize(namespace: string, itemId: string, signal?: AbortSignal): Promise<number>;
24
24
  appendEvent(namespace: string, itemId: string, event: JSONValue, nextEventIndex?: number, signal?: AbortSignal): Promise<void>;
25
+ popEvent(namespace: string, itemId: string, lastEventIndex?: number, signal?: AbortSignal): Promise<void>;
25
26
  getEvent(namespace: string, itemId: string, index: number, signal?: AbortSignal): Promise<JSONValue | null>;
26
27
  private withTimeout;
27
28
  }
@@ -44,6 +44,14 @@ export class EStoreClient {
44
44
  await this.client.appendEvent(namespace, itemId, event, nextEventIndex, this.withTimeout(signal));
45
45
  }
46
46
  }
47
+ async popEvent(namespace, itemId, lastEventIndex, signal) {
48
+ if (isUndefined(lastEventIndex)) {
49
+ await this.client.popEvent(namespace, itemId, this.withTimeout(signal));
50
+ }
51
+ else {
52
+ await this.client.popEvent(namespace, itemId, lastEventIndex, this.withTimeout(signal));
53
+ }
54
+ }
47
55
  async getEvent(namespace, itemId, index, signal) {
48
56
  return await this.client.getEvent(namespace, itemId, index, this.withTimeout(signal));
49
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"estore-client.js","sourceRoot":"","sources":["../src/estore-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"estore-client.js","sourceRoot":"","sources":["../src/estore-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blackglory/estore-js",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
@@ -41,36 +41,36 @@
41
41
  }
42
42
  },
43
43
  "devDependencies": {
44
- "@commitlint/cli": "^19.8.1",
45
- "@commitlint/config-conventional": "^19.8.1",
46
- "@eslint/js": "^9.31.0",
44
+ "@commitlint/cli": "^20.4.4",
45
+ "@commitlint/config-conventional": "^20.4.4",
46
+ "@eslint/js": "^10.0.1",
47
47
  "@types/ws": "^8.18.1",
48
- "cross-env": "^7.0.3",
49
- "eslint": "^9.31.0",
50
- "extra-utils": "^5.19.0",
48
+ "cross-env": "^10.1.0",
49
+ "eslint": "^10.0.3",
50
+ "extra-utils": "^6.1.0",
51
51
  "husky": "4",
52
52
  "npm-run-all": "^4.1.5",
53
- "rimraf": "^6.0.1",
53
+ "rimraf": "^6.1.3",
54
54
  "standard-version": "^9.3.2",
55
55
  "ts-patch": "^3.3.0",
56
56
  "tslib": "^2.8.1",
57
- "typescript": "5.8.3",
58
- "typescript-eslint": "^8.38.0",
59
- "typescript-transform-paths": "^3.5.5",
60
- "vite": "^7.0.5",
61
- "vite-tsconfig-paths": "^5.1.4",
62
- "vitest": "^3.2.4"
57
+ "typescript": "5.9.3",
58
+ "typescript-eslint": "^8.57.0",
59
+ "typescript-transform-paths": "^3.5.6",
60
+ "vite": "^8.0.0",
61
+ "vite-tsconfig-paths": "^6.1.1",
62
+ "vitest": "^4.1.0"
63
63
  },
64
64
  "dependencies": {
65
- "@blackglory/errors": "^3.0.3",
65
+ "@blackglory/errors": "^3.1.0",
66
66
  "@blackglory/prelude": "^0.4.0",
67
- "@delight-rpc/extra-native-websocket": "^0.6.1",
68
- "@delight-rpc/extra-websocket": "^0.7.1",
69
- "delight-rpc": "^6.1.2",
70
- "extra-abort": "^0.4.0",
71
- "extra-native-websocket": "^0.5.0",
72
- "extra-websocket": "^0.5.0",
73
- "justypes": "^4.4.1",
74
- "ws": "^8.18.3"
67
+ "@delight-rpc/extra-native-websocket": "^0.6.6",
68
+ "@delight-rpc/extra-websocket": "^0.7.8",
69
+ "delight-rpc": "^7.0.0",
70
+ "extra-abort": "^0.4.1",
71
+ "extra-native-websocket": "^0.5.1",
72
+ "extra-websocket": "^0.5.1",
73
+ "justypes": "^4.5.0",
74
+ "ws": "^8.19.0"
75
75
  }
76
76
  }
package/src/contract.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { CustomError } from '@blackglory/errors'
2
2
  import { JSONValue } from 'justypes'
3
3
 
4
- export const expectedVersion = '^0.4.0'
4
+ export const expectedVersion = '^0.4.1'
5
5
 
6
6
  export interface INamespaceStats {
7
7
  items: number
@@ -25,7 +25,7 @@ export interface IAPI {
25
25
  getItemSize(namespace: string, itemId: string): number
26
26
 
27
27
  /**
28
- * @param nextEventIndex 如果指定, 则会在eventIndex不等于下一个index时抛出EventIndexConflict错误.
28
+ * @param nextEventIndex 如果指定, 则会在不匹配下一个index时抛出EventIndexConflict错误.
29
29
  * @throws {EventIndexConflict}
30
30
  */
31
31
  appendEvent(...args:
@@ -42,6 +42,22 @@ export interface IAPI {
42
42
  ]
43
43
  ): null
44
44
 
45
+ /**
46
+ * @param lastEventIndex 如果指定, 则会在不匹配最后一个index时抛出EventIndexConflict错误.
47
+ * @throws {EventIndexConflict}
48
+ */
49
+ popEvent(...args:
50
+ | [
51
+ namespace: string
52
+ , itemId: string
53
+ ]
54
+ | [
55
+ namespace: string
56
+ , itemId: string
57
+ , lastEventIndex: number
58
+ ]
59
+ ): null
60
+
45
61
  getEvent(
46
62
  namespace: string
47
63
  , itemId: string
@@ -93,7 +93,7 @@ export class EStoreClient {
93
93
  }
94
94
 
95
95
  /**
96
- * @param nextEventIndex 如果指定, 则会在eventIndex不等于下一个index时抛出EventIndexConflict错误.
96
+ * @param nextEventIndex 如果指定, 则会在不匹配下一个index时抛出EventIndexConflict错误.
97
97
  * @throws {EventIndexConflict}
98
98
  */
99
99
  async appendEvent(
@@ -121,6 +121,32 @@ export class EStoreClient {
121
121
  }
122
122
  }
123
123
 
124
+ /**
125
+ * @param lastEventIndex 如果指定, 则会在不匹配最后一个index时抛出EventIndexConflict错误.
126
+ * @throws {EventIndexConflict}
127
+ */
128
+ async popEvent(
129
+ namespace: string
130
+ , itemId: string
131
+ , lastEventIndex?: number
132
+ , signal?: AbortSignal
133
+ ): Promise<void> {
134
+ if (isUndefined(lastEventIndex)) {
135
+ await this.client.popEvent(
136
+ namespace
137
+ , itemId
138
+ , this.withTimeout(signal)
139
+ )
140
+ } else {
141
+ await this.client.popEvent(
142
+ namespace
143
+ , itemId
144
+ , lastEventIndex
145
+ , this.withTimeout(signal)
146
+ )
147
+ }
148
+ }
149
+
124
150
  async getEvent(
125
151
  namespace: string
126
152
  , itemId: string