@cloudbase/database 1.4.3 → 1.5.1

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 (197) hide show
  1. package/dist/commonjs/ObjectId/index.d.ts +1 -1
  2. package/dist/commonjs/ObjectId/index.js +16 -9
  3. package/dist/commonjs/aggregate.js +126 -75
  4. package/dist/commonjs/collection.d.ts +3 -2
  5. package/dist/commonjs/collection.js +131 -58
  6. package/dist/commonjs/command.d.ts +5 -5
  7. package/dist/commonjs/command.js +181 -154
  8. package/dist/commonjs/commands/logic.js +30 -20
  9. package/dist/commonjs/commands/query.d.ts +1 -1
  10. package/dist/commonjs/commands/query.js +85 -65
  11. package/dist/commonjs/commands/update.js +9 -7
  12. package/dist/commonjs/config/error.config.js +1 -0
  13. package/dist/commonjs/const/code.js +1 -0
  14. package/dist/commonjs/constant.d.ts +7 -7
  15. package/dist/commonjs/constant.js +13 -11
  16. package/dist/commonjs/document.d.ts +10 -6
  17. package/dist/commonjs/document.js +305 -193
  18. package/dist/commonjs/geo/index.js +20 -9
  19. package/dist/commonjs/geo/lineString.d.ts +1 -1
  20. package/dist/commonjs/geo/lineString.js +62 -33
  21. package/dist/commonjs/geo/multiLineString.d.ts +1 -1
  22. package/dist/commonjs/geo/multiLineString.js +71 -32
  23. package/dist/commonjs/geo/multiPoint.d.ts +1 -1
  24. package/dist/commonjs/geo/multiPoint.js +58 -29
  25. package/dist/commonjs/geo/multiPolygon.d.ts +1 -1
  26. package/dist/commonjs/geo/multiPolygon.js +96 -36
  27. package/dist/commonjs/geo/point.d.ts +1 -1
  28. package/dist/commonjs/geo/point.js +30 -23
  29. package/dist/commonjs/geo/polygon.d.ts +1 -1
  30. package/dist/commonjs/geo/polygon.js +78 -39
  31. package/dist/commonjs/helper/symbol.js +17 -5
  32. package/dist/commonjs/index.d.ts +8 -2
  33. package/dist/commonjs/index.js +73 -20
  34. package/dist/commonjs/lib/util.d.ts +1 -0
  35. package/dist/commonjs/lib/util.js +26 -0
  36. package/dist/commonjs/operator-map.js +7 -6
  37. package/dist/commonjs/query.d.ts +9 -5
  38. package/dist/commonjs/query.js +330 -205
  39. package/dist/commonjs/regexp/index.d.ts +1 -1
  40. package/dist/commonjs/regexp/index.js +16 -9
  41. package/dist/commonjs/serializer/common.d.ts +2 -2
  42. package/dist/commonjs/serializer/common.js +59 -22
  43. package/dist/commonjs/serializer/datatype.d.ts +2 -2
  44. package/dist/commonjs/serializer/datatype.js +58 -21
  45. package/dist/commonjs/serializer/query.d.ts +1 -1
  46. package/dist/commonjs/serializer/query.js +137 -127
  47. package/dist/commonjs/serializer/update.d.ts +1 -1
  48. package/dist/commonjs/serializer/update.js +83 -78
  49. package/dist/commonjs/serverDate/index.d.ts +1 -1
  50. package/dist/commonjs/serverDate/index.js +16 -9
  51. package/dist/commonjs/transaction/collection.d.ts +7 -0
  52. package/dist/commonjs/transaction/collection.js +49 -0
  53. package/dist/commonjs/transaction/document.d.ts +27 -0
  54. package/dist/commonjs/transaction/document.js +205 -0
  55. package/dist/commonjs/transaction/index.js +196 -86
  56. package/dist/commonjs/transaction/query.d.ts +43 -0
  57. package/dist/commonjs/transaction/query.js +261 -0
  58. package/dist/commonjs/typings/index.d.ts +4 -4
  59. package/dist/commonjs/typings/realtime.d.ts +16 -16
  60. package/dist/commonjs/util.js +123 -92
  61. package/dist/commonjs/utils/error.d.ts +2 -1
  62. package/dist/commonjs/utils/error.js +74 -38
  63. package/dist/commonjs/utils/symbol.js +33 -14
  64. package/dist/commonjs/utils/type.d.ts +1 -1
  65. package/dist/commonjs/utils/type.js +25 -13
  66. package/dist/commonjs/utils/utils.d.ts +5 -1
  67. package/dist/commonjs/utils/utils.js +153 -22
  68. package/dist/commonjs/validate.js +79 -63
  69. package/dist/esm/ObjectId/index.d.ts +1 -1
  70. package/dist/esm/ObjectId/index.js +15 -8
  71. package/dist/esm/aggregate.js +118 -66
  72. package/dist/esm/collection.d.ts +3 -2
  73. package/dist/esm/collection.js +125 -52
  74. package/dist/esm/command.d.ts +5 -5
  75. package/dist/esm/command.js +175 -147
  76. package/dist/esm/commands/logic.js +30 -20
  77. package/dist/esm/commands/query.d.ts +1 -1
  78. package/dist/esm/commands/query.js +91 -71
  79. package/dist/esm/commands/update.js +8 -6
  80. package/dist/esm/config/error.config.js +1 -1
  81. package/dist/esm/const/code.js +1 -1
  82. package/dist/esm/constant.d.ts +7 -7
  83. package/dist/esm/constant.js +12 -11
  84. package/dist/esm/document.d.ts +10 -6
  85. package/dist/esm/document.js +297 -185
  86. package/dist/esm/geo/interface.js +1 -0
  87. package/dist/esm/geo/lineString.d.ts +1 -1
  88. package/dist/esm/geo/lineString.js +57 -28
  89. package/dist/esm/geo/multiLineString.d.ts +1 -1
  90. package/dist/esm/geo/multiLineString.js +66 -27
  91. package/dist/esm/geo/multiPoint.d.ts +1 -1
  92. package/dist/esm/geo/multiPoint.js +53 -24
  93. package/dist/esm/geo/multiPolygon.d.ts +1 -1
  94. package/dist/esm/geo/multiPolygon.js +91 -31
  95. package/dist/esm/geo/point.d.ts +1 -1
  96. package/dist/esm/geo/point.js +26 -19
  97. package/dist/esm/geo/polygon.d.ts +1 -1
  98. package/dist/esm/geo/polygon.js +73 -34
  99. package/dist/esm/helper/symbol.js +13 -13
  100. package/dist/esm/index.d.ts +8 -2
  101. package/dist/esm/index.js +62 -9
  102. package/dist/esm/lib/util.d.ts +1 -0
  103. package/dist/esm/lib/util.js +22 -0
  104. package/dist/esm/operator-map.js +4 -4
  105. package/dist/esm/query.d.ts +9 -5
  106. package/dist/esm/query.js +321 -196
  107. package/dist/esm/regexp/index.d.ts +1 -1
  108. package/dist/esm/regexp/index.js +15 -8
  109. package/dist/esm/serializer/common.d.ts +2 -2
  110. package/dist/esm/serializer/common.js +49 -13
  111. package/dist/esm/serializer/datatype.d.ts +2 -2
  112. package/dist/esm/serializer/datatype.js +44 -8
  113. package/dist/esm/serializer/query.d.ts +1 -1
  114. package/dist/esm/serializer/query.js +112 -102
  115. package/dist/esm/serializer/update.d.ts +1 -1
  116. package/dist/esm/serializer/update.js +69 -64
  117. package/dist/esm/serverDate/index.d.ts +1 -1
  118. package/dist/esm/serverDate/index.js +15 -8
  119. package/dist/esm/transaction/collection.d.ts +7 -0
  120. package/dist/esm/transaction/collection.js +46 -0
  121. package/dist/esm/transaction/document.d.ts +27 -0
  122. package/dist/esm/transaction/document.js +202 -0
  123. package/dist/esm/transaction/index.js +191 -81
  124. package/dist/esm/transaction/query.d.ts +43 -0
  125. package/dist/esm/transaction/query.js +258 -0
  126. package/dist/esm/typings/index.d.ts +4 -4
  127. package/dist/esm/typings/index.js +1 -0
  128. package/dist/esm/typings/realtime.d.ts +16 -16
  129. package/dist/esm/typings/realtime.js +1 -0
  130. package/dist/esm/util.js +121 -90
  131. package/dist/esm/utils/error.d.ts +2 -1
  132. package/dist/esm/utils/error.js +70 -35
  133. package/dist/esm/utils/symbol.js +33 -14
  134. package/dist/esm/utils/type.d.ts +1 -1
  135. package/dist/esm/utils/type.js +12 -12
  136. package/dist/esm/utils/utils.d.ts +5 -1
  137. package/dist/esm/utils/utils.js +137 -16
  138. package/dist/esm/validate.js +65 -49
  139. package/jest.config.js +14 -0
  140. package/package.json +14 -10
  141. package/src/aggregate.ts +1 -5
  142. package/src/collection.ts +15 -2
  143. package/src/document.ts +45 -34
  144. package/src/index.ts +51 -4
  145. package/src/query.ts +48 -38
  146. package/src/serializer/query.ts +18 -6
  147. package/src/transaction/index.ts +1 -1
  148. package/src/typings/index.ts +0 -4
  149. package/src/utils/utils.ts +105 -0
  150. package/src/validate.ts +3 -6
  151. package/tests/gateway-contract.test.ts +180 -0
  152. package/tests/index.test.ts +283 -0
  153. package/tests/transaction-query.test.ts +207 -0
  154. package/tests/watch-query.test.ts +144 -0
  155. package/tsconfig.esm.json +4 -2
  156. package/tsconfig.json +16 -6
  157. package/tsconfig.test.json +15 -0
  158. package/dist/commonjs/realtime/error.d.ts +0 -7
  159. package/dist/commonjs/realtime/error.js +0 -11
  160. package/dist/commonjs/realtime/listener.d.ts +0 -14
  161. package/dist/commonjs/realtime/listener.js +0 -17
  162. package/dist/commonjs/realtime/message.d.ts +0 -3
  163. package/dist/commonjs/realtime/message.js +0 -10
  164. package/dist/commonjs/realtime/snapshot.d.ts +0 -16
  165. package/dist/commonjs/realtime/snapshot.js +0 -42
  166. package/dist/commonjs/realtime/virtual-websocket-client.d.ts +0 -63
  167. package/dist/commonjs/realtime/virtual-websocket-client.js +0 -736
  168. package/dist/commonjs/realtime/websocket-client.d.ts +0 -78
  169. package/dist/commonjs/realtime/websocket-client.js +0 -567
  170. package/dist/commonjs/realtime/ws-event.d.ts +0 -126
  171. package/dist/commonjs/realtime/ws-event.js +0 -139
  172. package/dist/commonjs/transaction.d.ts +0 -42
  173. package/dist/commonjs/transaction.js +0 -126
  174. package/dist/esm/realtime/error.d.ts +0 -7
  175. package/dist/esm/realtime/error.js +0 -8
  176. package/dist/esm/realtime/listener.d.ts +0 -14
  177. package/dist/esm/realtime/listener.js +0 -14
  178. package/dist/esm/realtime/message.d.ts +0 -3
  179. package/dist/esm/realtime/message.js +0 -6
  180. package/dist/esm/realtime/snapshot.d.ts +0 -16
  181. package/dist/esm/realtime/snapshot.js +0 -39
  182. package/dist/esm/realtime/virtual-websocket-client.d.ts +0 -63
  183. package/dist/esm/realtime/virtual-websocket-client.js +0 -733
  184. package/dist/esm/realtime/websocket-client.d.ts +0 -78
  185. package/dist/esm/realtime/websocket-client.js +0 -564
  186. package/dist/esm/realtime/ws-event.d.ts +0 -126
  187. package/dist/esm/realtime/ws-event.js +0 -137
  188. package/dist/esm/transaction.d.ts +0 -42
  189. package/dist/esm/transaction.js +0 -121
  190. package/src/realtime/error.ts +0 -19
  191. package/src/realtime/listener.ts +0 -35
  192. package/src/realtime/message.ts +0 -14
  193. package/src/realtime/snapshot.ts +0 -60
  194. package/src/realtime/virtual-websocket-client.ts +0 -1195
  195. package/src/realtime/websocket-client.ts +0 -995
  196. package/src/realtime/ws-event.ts +0 -163
  197. package/src/transaction.ts +0 -190
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Query.watch() 回归测试
3
+ *
4
+ * 1.5.0 引入的回归:where() 改用 QuerySerializer.encodeEJSON() 后
5
+ * _fieldFilters 已是 EJSON 字符串,watch() 若再 JSON.stringify 会产生
6
+ * 双重编码(线上 INIT_WATCH 失败、errorCode=100003 的根因)。
7
+ * 伴生问题:orderBy() 改存对象 {field: 1|-1} 后,watch() 仍按 0.12.x
8
+ * 数组形态调用 order.reduce(),带 orderBy 的 watch 会直接抛 TypeError。
9
+ *
10
+ * 第二轮真实环境实测(2026-09-03)追加约束:服务端 watch 查询引擎只认
11
+ * 0.12.x legacy 内部编码——数字裸值、日期 { $date: epoch 毫秒数字 }。
12
+ * canonical EJSON($numberInt/$numberLong/$date ISO)虽不报错但静默匹配
13
+ * 不到文档,因此 watch query 须由 canonical EJSON 转换为 legacy 形态。
14
+ */
15
+ import { Db } from '../src/index'
16
+
17
+ describe('Query.watch() 参数序列化', () => {
18
+ let watchArgs: any[]
19
+
20
+ class MockRequest {
21
+ constructor(_config: any) {}
22
+ async send(_action: string, _data: any) {
23
+ return { data: { ok: 1 }, requestId: 'mock' }
24
+ }
25
+ }
26
+
27
+ class MockWsClient {
28
+ constructor(_opts: any) {}
29
+ watch(args: any) {
30
+ watchArgs.push(args)
31
+ return { close: () => {} }
32
+ }
33
+ }
34
+
35
+ beforeEach(() => {
36
+ Db.reqClass = MockRequest as any
37
+ Db.wsClientClass = MockWsClient as any
38
+ watchArgs = []
39
+ })
40
+
41
+ function makeDb() {
42
+ // getWsInstance 按 env 缓存实例,每个用例用独立 env
43
+ return new Db({ env: `env-${Math.random()}` } as any)
44
+ }
45
+
46
+ it('数字条件应为裸值(legacy 编码),无 $numberInt/$numberLong 标记', () => {
47
+ const db = makeDb()
48
+ db.collection('test-collection')
49
+ .where({ ts: { $gt: 1788421619261 } } as any)
50
+ .watch({ onChange: () => {}, onError: () => {} })
51
+
52
+ expect(watchArgs).toHaveLength(1)
53
+ const query = watchArgs[0].query
54
+ // legacy 形态:数字裸值
55
+ expect(query).toBe('{"ts":{"$gt":1788421619261}}')
56
+ // 双重编码的标志形态:外层以引号开头 —— 必须不存在
57
+ expect(query.startsWith('"')).toBe(false)
58
+ // canonical 标记 —— 必须不存在
59
+ expect(query).not.toContain('$numberInt')
60
+ expect(query).not.toContain('$numberLong')
61
+ })
62
+
63
+ it('where() + command 查询条件同样转为裸数字', () => {
64
+ const db = makeDb()
65
+ db.collection('test-collection')
66
+ .where({ count: db.command.gt(10) } as any)
67
+ .watch({ onChange: () => {}, onError: () => {} })
68
+
69
+ expect(watchArgs[0].query).toBe('{"count":{"$gt":10}}')
70
+ })
71
+
72
+ it('日期条件应转为 { $date: epoch 毫秒数字 }(0.12.x legacy 形态)', () => {
73
+ const db = makeDb()
74
+ const date = new Date('2020-01-01T00:00:00.000Z')
75
+ db.collection('test-collection')
76
+ .where({ createdAt: db.command.gt(date) } as any)
77
+ .watch({ onChange: () => {}, onError: () => {} })
78
+
79
+ expect(watchArgs[0].query).toBe(`{"createdAt":{"$gt":{"$date":${+date}}}}`)
80
+ })
81
+
82
+ it('db.RegExp / 原生 RegExp 应转为 { $regex, $options }($regularExpression 不被服务端识别)', () => {
83
+ const db = makeDb()
84
+ db.collection('test-collection')
85
+ .where({ text: db.RegExp({ regexp: 'probe-\\d+', options: 'i' }) } as any)
86
+ .watch({ onChange: () => {}, onError: () => {} })
87
+ // canonical 编码为 $regularExpression,watch 须转为 0.12.x 的 $regex/$options
88
+ expect(watchArgs[0].query).toBe('{"text":{"$regex":"probe-\\\\d+","$options":"i"}}')
89
+ expect(watchArgs[0].query).not.toContain('$regularExpression')
90
+
91
+ db.collection('test-collection')
92
+ .where({ text: /probe-\d+/i } as any)
93
+ .watch({ onChange: () => {}, onError: () => {} })
94
+ expect(watchArgs[1].query).toBe('{"text":{"$regex":"probe-\\\\d+","$options":"i"}}')
95
+ })
96
+
97
+ it('ObjectId 条件应保持 { $oid } 形态', () => {
98
+ const db = makeDb()
99
+ // 该仓库 ObjectId 构造签名为 { id } 对象形式(bson 风格位置参数会静默得到空 id)
100
+ db.collection('test-collection')
101
+ .where({ _id: db.ObjectId({ id: '507f1f77bcf86cd799439011' }) } as any)
102
+ .watch({ onChange: () => {}, onError: () => {} })
103
+
104
+ expect(watchArgs[0].query).toBe('{"_id":{"$oid":"507f1f77bcf86cd799439011"}}')
105
+ })
106
+
107
+ it('无 where() 时 query 回退为 "{}"', () => {
108
+ const db = makeDb()
109
+ db.collection('test-collection').watch({ onChange: () => {}, onError: () => {} })
110
+
111
+ expect(watchArgs[0].query).toBe('{}')
112
+ })
113
+
114
+ it('字符串等基本类型条件保持原样', () => {
115
+ const db = makeDb()
116
+ db.collection('test-collection')
117
+ .where({ _id: 'xxx', name: 'foo' } as any)
118
+ .watch({ onChange: () => {}, onError: () => {} })
119
+
120
+ expect(watchArgs[0].query).toBe('{"_id":"xxx","name":"foo"}')
121
+ })
122
+
123
+ it('orderBy() 后 watch() 不抛错且方向映射为 asc/desc', () => {
124
+ const db = makeDb()
125
+ expect(() => {
126
+ db.collection('test-collection')
127
+ .where({ ts: { $gt: 1 } } as any)
128
+ .orderBy('ts', 'desc')
129
+ .watch({ onChange: () => {}, onError: () => {} })
130
+ }).not.toThrow()
131
+
132
+ expect(watchArgs[0].orderBy).toEqual({ ts: 'desc' })
133
+ })
134
+
135
+ it('limit 应透传到 watch 参数', () => {
136
+ const db = makeDb()
137
+ db.collection('test-collection')
138
+ .where({ a: 1 } as any)
139
+ .limit(10)
140
+ .watch({ onChange: () => {}, onError: () => {} })
141
+
142
+ expect(watchArgs[0].limit).toBe(10)
143
+ })
144
+ })
package/tsconfig.esm.json CHANGED
@@ -20,10 +20,11 @@
20
20
  "pretty": true,
21
21
  "removeComments": true,
22
22
  "stripInternal": true,
23
+ "downlevelIteration": true,
23
24
  "skipDefaultLibCheck": true,
24
25
  "skipLibCheck": true,
25
26
  "moduleResolution": "node",
26
- "target": "es2017",
27
+ "target": "es5",
27
28
  "lib": [
28
29
  "es2015",
29
30
  "es6",
@@ -35,6 +36,7 @@
35
36
  ],
36
37
  "exclude": [
37
38
  // "node_modules",
38
- "test"
39
+ "test",
40
+ "tests"
39
41
  ]
40
42
  }
package/tsconfig.json CHANGED
@@ -4,7 +4,6 @@
4
4
  "allowJs": false,
5
5
  "allowUnreachableCode": false,
6
6
  "allowUnusedLabels": false,
7
- "charset": "utf8",
8
7
  "declaration": true,
9
8
  "experimentalDecorators": true,
10
9
  "emitDecoratorMetadata": true,
@@ -21,10 +20,21 @@
21
20
  "removeComments": true,
22
21
  "stripInternal": true,
23
22
  "skipDefaultLibCheck": true,
23
+ "downlevelIteration": true,
24
24
  "skipLibCheck": true,
25
- "target": "es2017",
26
- "lib": ["es2015", "es6", "dom"]
25
+ "target": "es5",
26
+ "lib": [
27
+ "es2015",
28
+ "es6",
29
+ "dom"
30
+ ]
27
31
  },
28
- "include": ["src/**/*"],
29
- "exclude": ["node_modules", "test"]
30
- }
32
+ "include": [
33
+ "src/**/*"
34
+ ],
35
+ "exclude": [
36
+ "node_modules",
37
+ "test",
38
+ "tests"
39
+ ]
40
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "target": "es6",
5
+ "module": "commonjs",
6
+ "isolatedModules": true,
7
+ "skipLibCheck": true,
8
+ "strict": false,
9
+ "esModuleInterop": true,
10
+ "moduleResolution": "node",
11
+ "allowJs": true
12
+ },
13
+ "include": ["tests/**/*.ts", "src/**/*.ts"],
14
+ "exclude": ["node_modules"]
15
+ }
@@ -1,7 +0,0 @@
1
- import { IResponseMessageErrorMsg } from '../typings/realtime';
2
- export declare class RealtimeErrorMessageError extends Error {
3
- isRealtimeErrorMessageError: boolean;
4
- payload: IResponseMessageErrorMsg;
5
- constructor(serverErrorMsg: IResponseMessageErrorMsg);
6
- }
7
- export declare const isRealtimeErrorMessageError: (e: any) => e is RealtimeErrorMessageError;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class RealtimeErrorMessageError extends Error {
4
- constructor(serverErrorMsg) {
5
- super(`Watch Error ${JSON.stringify(serverErrorMsg.msgData)} (requestid: ${serverErrorMsg.requestId})`);
6
- this.isRealtimeErrorMessageError = true;
7
- this.payload = serverErrorMsg;
8
- }
9
- }
10
- exports.RealtimeErrorMessageError = RealtimeErrorMessageError;
11
- exports.isRealtimeErrorMessageError = (e) => e && e.isRealtimeErrorMessageError;
@@ -1,14 +0,0 @@
1
- import { VirtualWebSocketClient } from './virtual-websocket-client';
2
- import { IRealtimeListenerConstructorOptions, DBRealtimeListener } from '../typings/index';
3
- interface IRealtimeListenerOptions extends IRealtimeListenerConstructorOptions {
4
- close: () => void;
5
- debug?: boolean;
6
- virtualClient?: VirtualWebSocketClient;
7
- }
8
- export declare class RealtimeListener implements DBRealtimeListener {
9
- close: () => void;
10
- onChange: (res: any) => void;
11
- onError: (error: any) => void;
12
- constructor(options: IRealtimeListenerOptions);
13
- }
14
- export {};
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class RealtimeListener {
4
- constructor(options) {
5
- this.close = options.close;
6
- this.onChange = options.onChange;
7
- this.onError = options.onError;
8
- if (options.debug) {
9
- Object.defineProperty(this, 'virtualClient', {
10
- get: () => {
11
- return options.virtualClient;
12
- }
13
- });
14
- }
15
- }
16
- }
17
- exports.RealtimeListener = RealtimeListener;
@@ -1,3 +0,0 @@
1
- import { IResponseMessage, IResponseMessageInitEventMsg } from '../typings/realtime';
2
- export declare function genRequestId(prefix?: string): string;
3
- export declare function isInitEventMessage(msg: IResponseMessage): msg is IResponseMessageInitEventMsg;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function genRequestId(prefix = '') {
4
- return `${prefix ? `${prefix}_` : ''}${+new Date()}_${Math.random()}`;
5
- }
6
- exports.genRequestId = genRequestId;
7
- function isInitEventMessage(msg) {
8
- return msg.msgType === 'INIT_EVENT';
9
- }
10
- exports.isInitEventMessage = isInitEventMessage;
@@ -1,16 +0,0 @@
1
- import { ISingleDBEvent, SnapshotType, ISnapshot } from '../typings/index';
2
- interface ISnapshotConstructorOptions {
3
- id: number;
4
- docChanges: ISingleDBEvent[];
5
- docs: Record<string, any>[];
6
- type?: SnapshotType;
7
- msgType?: String;
8
- }
9
- export declare class Snapshot implements ISnapshot {
10
- id: number;
11
- docChanges: ISingleDBEvent[];
12
- docs: Record<string, any>[];
13
- type?: 'init';
14
- constructor(options: ISnapshotConstructorOptions);
15
- }
16
- export {};
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Snapshot {
4
- constructor(options) {
5
- const { id, docChanges, docs, msgType, type } = options;
6
- let cachedDocChanges;
7
- let cachedDocs;
8
- Object.defineProperties(this, {
9
- id: {
10
- get: () => id,
11
- enumerable: true
12
- },
13
- docChanges: {
14
- get: () => {
15
- if (!cachedDocChanges) {
16
- cachedDocChanges = JSON.parse(JSON.stringify(docChanges));
17
- }
18
- return cachedDocChanges;
19
- },
20
- enumerable: true
21
- },
22
- docs: {
23
- get: () => {
24
- if (!cachedDocs) {
25
- cachedDocs = JSON.parse(JSON.stringify(docs));
26
- }
27
- return cachedDocs;
28
- },
29
- enumerable: true
30
- },
31
- msgType: {
32
- get: () => msgType,
33
- enumerable: true
34
- },
35
- type: {
36
- get: () => type,
37
- enumerable: true
38
- }
39
- });
40
- }
41
- }
42
- exports.Snapshot = Snapshot;
@@ -1,63 +0,0 @@
1
- import { IResponseMessage } from '../typings/realtime';
2
- import { RealtimeListener } from './listener';
3
- import { IWSSendOptions } from './websocket-client';
4
- import { IWatchOptions } from '../typings/index';
5
- interface IVirtualWebSocketClientConstructorOptions extends IWatchOptions {
6
- envId?: string;
7
- collectionName: string;
8
- query: string;
9
- limit?: number;
10
- orderBy?: Record<string, string>;
11
- send: <T = any>(opts: IWSSendOptions) => Promise<T>;
12
- login: (envId?: string, refresh?: boolean) => Promise<any>;
13
- isWSConnected: () => boolean;
14
- onceWSConnected: () => Promise<void>;
15
- getWaitExpectedTimeoutLength: () => number;
16
- onWatchStart: (client: VirtualWebSocketClient, queryID: string) => void;
17
- onWatchClose: (client: VirtualWebSocketClient, queryID: string) => void;
18
- debug?: boolean;
19
- }
20
- export declare class VirtualWebSocketClient {
21
- watchId: string;
22
- private envId?;
23
- private collectionName;
24
- private query;
25
- private limit;
26
- private orderBy;
27
- private send;
28
- private login;
29
- private isWSConnected;
30
- private onceWSConnected;
31
- private getWaitExpectedTimeoutLength;
32
- private onWatchStart;
33
- private onWatchClose;
34
- private debug?;
35
- listener: RealtimeListener;
36
- private watchStatus;
37
- private _availableRetries;
38
- private _ackTimeoutId?;
39
- private _initWatchPromise?;
40
- private _rebuildWatchPromise?;
41
- private sessionInfo?;
42
- private _waitExpectedTimeoutId?;
43
- constructor(options: IVirtualWebSocketClientConstructorOptions);
44
- private _login;
45
- private initWatch;
46
- private rebuildWatch;
47
- private handleWatchEstablishmentError;
48
- private closeWatch;
49
- private scheduleSendACK;
50
- private clearACKSchedule;
51
- private sendACK;
52
- private handleCommonError;
53
- private useRetryTicket;
54
- private handleServerEvents;
55
- private _handleServerEvents;
56
- private _postHandleServerEventsValidityCheck;
57
- private clearWaitExpectedEvent;
58
- onMessage(msg: IResponseMessage): void;
59
- closeWithError(error: any): void;
60
- pause(): void;
61
- resume(): Promise<void>;
62
- }
63
- export {};