@cloudbase/database 1.4.3-alpha.0 → 1.5.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.
Files changed (194) 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.js +4 -3
  35. package/dist/commonjs/operator-map.js +7 -6
  36. package/dist/commonjs/query.d.ts +8 -4
  37. package/dist/commonjs/query.js +308 -201
  38. package/dist/commonjs/regexp/index.d.ts +1 -1
  39. package/dist/commonjs/regexp/index.js +16 -9
  40. package/dist/commonjs/serializer/common.d.ts +2 -2
  41. package/dist/commonjs/serializer/common.js +59 -22
  42. package/dist/commonjs/serializer/datatype.d.ts +2 -2
  43. package/dist/commonjs/serializer/datatype.js +58 -21
  44. package/dist/commonjs/serializer/query.d.ts +1 -1
  45. package/dist/commonjs/serializer/query.js +137 -127
  46. package/dist/commonjs/serializer/update.d.ts +1 -1
  47. package/dist/commonjs/serializer/update.js +83 -78
  48. package/dist/commonjs/serverDate/index.d.ts +1 -1
  49. package/dist/commonjs/serverDate/index.js +16 -9
  50. package/dist/commonjs/transaction/collection.d.ts +1 -1
  51. package/dist/commonjs/transaction/collection.js +5 -2
  52. package/dist/commonjs/transaction/document.d.ts +1 -1
  53. package/dist/commonjs/transaction/document.js +5 -5
  54. package/dist/commonjs/transaction/index.js +196 -86
  55. package/dist/commonjs/transaction/query.d.ts +39 -1
  56. package/dist/commonjs/transaction/query.js +252 -1
  57. package/dist/commonjs/typings/index.d.ts +4 -4
  58. package/dist/commonjs/typings/realtime.d.ts +16 -16
  59. package/dist/commonjs/util.js +123 -92
  60. package/dist/commonjs/utils/error.d.ts +2 -1
  61. package/dist/commonjs/utils/error.js +74 -38
  62. package/dist/commonjs/utils/symbol.js +33 -14
  63. package/dist/commonjs/utils/type.d.ts +1 -1
  64. package/dist/commonjs/utils/type.js +25 -13
  65. package/dist/commonjs/utils/utils.d.ts +4 -1
  66. package/dist/commonjs/utils/utils.js +93 -22
  67. package/dist/commonjs/validate.js +79 -63
  68. package/dist/esm/ObjectId/index.d.ts +1 -1
  69. package/dist/esm/ObjectId/index.js +15 -8
  70. package/dist/esm/aggregate.js +118 -66
  71. package/dist/esm/collection.d.ts +3 -2
  72. package/dist/esm/collection.js +125 -52
  73. package/dist/esm/command.d.ts +5 -5
  74. package/dist/esm/command.js +175 -147
  75. package/dist/esm/commands/logic.js +30 -20
  76. package/dist/esm/commands/query.d.ts +1 -1
  77. package/dist/esm/commands/query.js +91 -71
  78. package/dist/esm/commands/update.js +8 -6
  79. package/dist/esm/config/error.config.js +1 -1
  80. package/dist/esm/const/code.js +1 -1
  81. package/dist/esm/constant.d.ts +7 -7
  82. package/dist/esm/constant.js +12 -11
  83. package/dist/esm/document.d.ts +10 -6
  84. package/dist/esm/document.js +297 -185
  85. package/dist/esm/geo/interface.js +1 -0
  86. package/dist/esm/geo/lineString.d.ts +1 -1
  87. package/dist/esm/geo/lineString.js +57 -28
  88. package/dist/esm/geo/multiLineString.d.ts +1 -1
  89. package/dist/esm/geo/multiLineString.js +66 -27
  90. package/dist/esm/geo/multiPoint.d.ts +1 -1
  91. package/dist/esm/geo/multiPoint.js +53 -24
  92. package/dist/esm/geo/multiPolygon.d.ts +1 -1
  93. package/dist/esm/geo/multiPolygon.js +91 -31
  94. package/dist/esm/geo/point.d.ts +1 -1
  95. package/dist/esm/geo/point.js +26 -19
  96. package/dist/esm/geo/polygon.d.ts +1 -1
  97. package/dist/esm/geo/polygon.js +73 -34
  98. package/dist/esm/helper/symbol.js +13 -13
  99. package/dist/esm/index.d.ts +8 -2
  100. package/dist/esm/index.js +62 -9
  101. package/dist/esm/lib/util.js +1 -2
  102. package/dist/esm/operator-map.js +4 -4
  103. package/dist/esm/query.d.ts +8 -4
  104. package/dist/esm/query.js +299 -192
  105. package/dist/esm/regexp/index.d.ts +1 -1
  106. package/dist/esm/regexp/index.js +15 -8
  107. package/dist/esm/serializer/common.d.ts +2 -2
  108. package/dist/esm/serializer/common.js +49 -13
  109. package/dist/esm/serializer/datatype.d.ts +2 -2
  110. package/dist/esm/serializer/datatype.js +44 -8
  111. package/dist/esm/serializer/query.d.ts +1 -1
  112. package/dist/esm/serializer/query.js +112 -102
  113. package/dist/esm/serializer/update.d.ts +1 -1
  114. package/dist/esm/serializer/update.js +69 -64
  115. package/dist/esm/serverDate/index.d.ts +1 -1
  116. package/dist/esm/serverDate/index.js +15 -8
  117. package/dist/esm/transaction/collection.d.ts +1 -1
  118. package/dist/esm/transaction/collection.js +4 -2
  119. package/dist/esm/transaction/document.d.ts +1 -1
  120. package/dist/esm/transaction/document.js +2 -3
  121. package/dist/esm/transaction/index.js +191 -81
  122. package/dist/esm/transaction/query.d.ts +39 -1
  123. package/dist/esm/transaction/query.js +251 -1
  124. package/dist/esm/typings/index.d.ts +4 -4
  125. package/dist/esm/typings/index.js +1 -0
  126. package/dist/esm/typings/realtime.d.ts +16 -16
  127. package/dist/esm/typings/realtime.js +1 -0
  128. package/dist/esm/util.js +121 -90
  129. package/dist/esm/utils/error.d.ts +2 -1
  130. package/dist/esm/utils/error.js +70 -35
  131. package/dist/esm/utils/symbol.js +33 -14
  132. package/dist/esm/utils/type.d.ts +1 -1
  133. package/dist/esm/utils/type.js +12 -12
  134. package/dist/esm/utils/utils.d.ts +4 -1
  135. package/dist/esm/utils/utils.js +78 -16
  136. package/dist/esm/validate.js +65 -49
  137. package/jest.config.js +14 -0
  138. package/package.json +14 -10
  139. package/src/aggregate.ts +1 -5
  140. package/src/collection.ts +15 -2
  141. package/src/document.ts +45 -34
  142. package/src/index.ts +51 -4
  143. package/src/query.ts +33 -29
  144. package/src/serializer/query.ts +18 -6
  145. package/src/transaction/index.ts +1 -1
  146. package/src/typings/index.ts +0 -4
  147. package/src/utils/utils.ts +46 -0
  148. package/src/validate.ts +3 -6
  149. package/tests/gateway-contract.test.ts +180 -0
  150. package/tests/index.test.ts +283 -0
  151. package/tests/transaction-query.test.ts +207 -0
  152. package/tsconfig.esm.json +4 -2
  153. package/tsconfig.json +16 -6
  154. package/tsconfig.test.json +15 -0
  155. package/dist/commonjs/realtime/error.d.ts +0 -7
  156. package/dist/commonjs/realtime/error.js +0 -11
  157. package/dist/commonjs/realtime/listener.d.ts +0 -14
  158. package/dist/commonjs/realtime/listener.js +0 -17
  159. package/dist/commonjs/realtime/message.d.ts +0 -3
  160. package/dist/commonjs/realtime/message.js +0 -10
  161. package/dist/commonjs/realtime/snapshot.d.ts +0 -16
  162. package/dist/commonjs/realtime/snapshot.js +0 -42
  163. package/dist/commonjs/realtime/virtual-websocket-client.d.ts +0 -63
  164. package/dist/commonjs/realtime/virtual-websocket-client.js +0 -736
  165. package/dist/commonjs/realtime/websocket-client.d.ts +0 -78
  166. package/dist/commonjs/realtime/websocket-client.js +0 -567
  167. package/dist/commonjs/realtime/ws-event.d.ts +0 -126
  168. package/dist/commonjs/realtime/ws-event.js +0 -139
  169. package/dist/commonjs/transaction.d.ts +0 -42
  170. package/dist/commonjs/transaction.js +0 -126
  171. package/dist/esm/realtime/error.d.ts +0 -7
  172. package/dist/esm/realtime/error.js +0 -8
  173. package/dist/esm/realtime/listener.d.ts +0 -14
  174. package/dist/esm/realtime/listener.js +0 -14
  175. package/dist/esm/realtime/message.d.ts +0 -3
  176. package/dist/esm/realtime/message.js +0 -6
  177. package/dist/esm/realtime/snapshot.d.ts +0 -16
  178. package/dist/esm/realtime/snapshot.js +0 -39
  179. package/dist/esm/realtime/virtual-websocket-client.d.ts +0 -63
  180. package/dist/esm/realtime/virtual-websocket-client.js +0 -733
  181. package/dist/esm/realtime/websocket-client.d.ts +0 -78
  182. package/dist/esm/realtime/websocket-client.js +0 -564
  183. package/dist/esm/realtime/ws-event.d.ts +0 -126
  184. package/dist/esm/realtime/ws-event.js +0 -137
  185. package/dist/esm/transaction.d.ts +0 -42
  186. package/dist/esm/transaction.js +0 -121
  187. package/src/realtime/error.ts +0 -19
  188. package/src/realtime/listener.ts +0 -35
  189. package/src/realtime/message.ts +0 -14
  190. package/src/realtime/snapshot.ts +0 -60
  191. package/src/realtime/virtual-websocket-client.ts +0 -1195
  192. package/src/realtime/websocket-client.ts +0 -995
  193. package/src/realtime/ws-event.ts +0 -163
  194. package/src/transaction.ts +0 -190
@@ -1,126 +0,0 @@
1
- import { CloudSDKError } from '../utils/error';
2
- export declare const CLOSE_EVENT_CODE_INFO: {
3
- 1000: {
4
- code: number;
5
- name: string;
6
- description: string;
7
- };
8
- 1001: {
9
- code: number;
10
- name: string;
11
- description: string;
12
- };
13
- 1002: {
14
- code: number;
15
- name: string;
16
- description: string;
17
- };
18
- 1003: {
19
- code: number;
20
- name: string;
21
- description: string;
22
- };
23
- 1005: {
24
- code: number;
25
- name: string;
26
- description: string;
27
- };
28
- 1006: {
29
- code: number;
30
- name: string;
31
- description: string;
32
- };
33
- 1007: {
34
- code: number;
35
- name: string;
36
- description: string;
37
- };
38
- 1008: {
39
- code: number;
40
- name: string;
41
- description: string;
42
- };
43
- 1009: {
44
- code: number;
45
- name: string;
46
- description: string;
47
- };
48
- 1010: {
49
- code: number;
50
- name: string;
51
- description: string;
52
- };
53
- 1011: {
54
- code: number;
55
- name: string;
56
- description: string;
57
- };
58
- 1012: {
59
- code: number;
60
- name: string;
61
- description: string;
62
- };
63
- 1013: {
64
- code: number;
65
- name: string;
66
- description: string;
67
- };
68
- 1014: {
69
- code: number;
70
- name: string;
71
- description: string;
72
- };
73
- 1015: {
74
- code: number;
75
- name: string;
76
- description: string;
77
- };
78
- 3000: {
79
- code: number;
80
- name: string;
81
- description: string;
82
- };
83
- 3001: {
84
- code: number;
85
- name: string;
86
- description: string;
87
- };
88
- 3002: {
89
- code: number;
90
- name: string;
91
- description: string;
92
- };
93
- 3003: {
94
- code: number;
95
- name: string;
96
- description: string;
97
- };
98
- 3050: {
99
- code: number;
100
- name: string;
101
- description: string;
102
- };
103
- };
104
- export declare enum CLOSE_EVENT_CODE {
105
- NormalClosure = 1000,
106
- GoingAway = 1001,
107
- ProtocolError = 1002,
108
- UnsupportedData = 1003,
109
- NoStatusReceived = 1005,
110
- AbnormalClosure = 1006,
111
- InvalidFramePayloadData = 1007,
112
- PolicyViolation = 1008,
113
- MessageTooBig = 1009,
114
- MissingExtension = 1010,
115
- InternalError = 1011,
116
- ServiceRestart = 1012,
117
- TryAgainLater = 1013,
118
- BadGateway = 1014,
119
- TLSHandshake = 1015,
120
- ReconnectWebSocket = 3000,
121
- NoRealtimeListeners = 3001,
122
- HeartbeatPingError = 3002,
123
- HeartbeatPongTimeoutError = 3003,
124
- NoAuthentication = 3050
125
- }
126
- export declare const getWSCloseError: (code: CLOSE_EVENT_CODE, reason?: string) => CloudSDKError;
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const error_1 = require("../utils/error");
4
- const error_config_1 = require("../config/error.config");
5
- exports.CLOSE_EVENT_CODE_INFO = {
6
- 1000: {
7
- code: 1000,
8
- name: 'Normal Closure',
9
- description: 'Normal closure; the connection successfully completed whatever purpose for which it was created.'
10
- },
11
- 1001: {
12
- code: 1001,
13
- name: 'Going Away',
14
- description: 'The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection.'
15
- },
16
- 1002: {
17
- code: 1002,
18
- name: 'Protocol Error',
19
- description: 'The endpoint is terminating the connection due to a protocol error.'
20
- },
21
- 1003: {
22
- code: 1003,
23
- name: 'Unsupported Data',
24
- description: 'The connection is being terminated because the endpoint received data of a type it cannot accept (for example, a text-only endpoint received binary data).'
25
- },
26
- 1005: {
27
- code: 1005,
28
- name: 'No Status Received',
29
- description: 'Indicates that no status code was provided even though one was expected.'
30
- },
31
- 1006: {
32
- code: 1006,
33
- name: 'Abnormal Closure',
34
- description: 'Used to indicate that a connection was closed abnormally (that is, with no close frame being sent) when a status code is expected.'
35
- },
36
- 1007: {
37
- code: 1007,
38
- name: 'Invalid frame payload data',
39
- description: 'The endpoint is terminating the connection because a message was received that contained inconsistent data (e.g., non-UTF-8 data within a text message).'
40
- },
41
- 1008: {
42
- code: 1008,
43
- name: 'Policy Violation',
44
- description: 'The endpoint is terminating the connection because it received a message that violates its policy. This is a generic status code, used when codes 1003 and 1009 are not suitable.'
45
- },
46
- 1009: {
47
- code: 1009,
48
- name: 'Message too big',
49
- description: 'The endpoint is terminating the connection because a data frame was received that is too large.'
50
- },
51
- 1010: {
52
- code: 1010,
53
- name: 'Missing Extension',
54
- description: "The client is terminating the connection because it expected the server to negotiate one or more extension, but the server didn't."
55
- },
56
- 1011: {
57
- code: 1011,
58
- name: 'Internal Error',
59
- description: 'The server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request.'
60
- },
61
- 1012: {
62
- code: 1012,
63
- name: 'Service Restart',
64
- description: 'The server is terminating the connection because it is restarting.'
65
- },
66
- 1013: {
67
- code: 1013,
68
- name: 'Try Again Later',
69
- description: 'The server is terminating the connection due to a temporary condition, e.g. it is overloaded and is casting off some of its clients.'
70
- },
71
- 1014: {
72
- code: 1014,
73
- name: 'Bad Gateway',
74
- description: 'The server was acting as a gateway or proxy and received an invalid response from the upstream server. This is similar to 502 HTTP Status Code.'
75
- },
76
- 1015: {
77
- code: 1015,
78
- name: 'TLS Handshake',
79
- description: "Indicates that the connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified)."
80
- },
81
- 3000: {
82
- code: 3000,
83
- name: 'Reconnect WebSocket',
84
- description: 'The client is terminating the connection because it wants to reconnect'
85
- },
86
- 3001: {
87
- code: 3001,
88
- name: 'No Realtime Listeners',
89
- description: 'The client is terminating the connection because no more realtime listeners exist'
90
- },
91
- 3002: {
92
- code: 3002,
93
- name: 'Heartbeat Ping Error',
94
- description: 'The client is terminating the connection due to its failure in sending heartbeat messages'
95
- },
96
- 3003: {
97
- code: 3003,
98
- name: 'Heartbeat Pong Timeout Error',
99
- description: 'The client is terminating the connection because no heartbeat response is received from the server'
100
- },
101
- 3050: {
102
- code: 3050,
103
- name: 'Server Close',
104
- description: 'The client is terminating the connection because no heartbeat response is received from the server'
105
- }
106
- };
107
- var CLOSE_EVENT_CODE;
108
- (function (CLOSE_EVENT_CODE) {
109
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["NormalClosure"] = 1000] = "NormalClosure";
110
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["GoingAway"] = 1001] = "GoingAway";
111
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["ProtocolError"] = 1002] = "ProtocolError";
112
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["UnsupportedData"] = 1003] = "UnsupportedData";
113
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["NoStatusReceived"] = 1005] = "NoStatusReceived";
114
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["AbnormalClosure"] = 1006] = "AbnormalClosure";
115
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["InvalidFramePayloadData"] = 1007] = "InvalidFramePayloadData";
116
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["PolicyViolation"] = 1008] = "PolicyViolation";
117
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["MessageTooBig"] = 1009] = "MessageTooBig";
118
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["MissingExtension"] = 1010] = "MissingExtension";
119
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["InternalError"] = 1011] = "InternalError";
120
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["ServiceRestart"] = 1012] = "ServiceRestart";
121
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["TryAgainLater"] = 1013] = "TryAgainLater";
122
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["BadGateway"] = 1014] = "BadGateway";
123
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["TLSHandshake"] = 1015] = "TLSHandshake";
124
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["ReconnectWebSocket"] = 3000] = "ReconnectWebSocket";
125
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["NoRealtimeListeners"] = 3001] = "NoRealtimeListeners";
126
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["HeartbeatPingError"] = 3002] = "HeartbeatPingError";
127
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["HeartbeatPongTimeoutError"] = 3003] = "HeartbeatPongTimeoutError";
128
- CLOSE_EVENT_CODE[CLOSE_EVENT_CODE["NoAuthentication"] = 3050] = "NoAuthentication";
129
- })(CLOSE_EVENT_CODE = exports.CLOSE_EVENT_CODE || (exports.CLOSE_EVENT_CODE = {}));
130
- exports.getWSCloseError = (code, reason) => {
131
- const info = exports.CLOSE_EVENT_CODE_INFO[code];
132
- const errMsg = !info
133
- ? `code ${code}`
134
- : `${info.name}, code ${code}, reason ${reason || info.description}`;
135
- return new error_1.CloudSDKError({
136
- errCode: error_config_1.ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED,
137
- errMsg
138
- });
139
- };
@@ -1,42 +0,0 @@
1
- import { DocumentReference } from './document';
2
- import { Db } from './index';
3
- declare class DocumentSnapshot {
4
- private _data;
5
- requestId: string;
6
- constructor(data: any, requestId: any);
7
- data(): any;
8
- }
9
- export declare class Transaction {
10
- private _id;
11
- private _db;
12
- private _request;
13
- constructor(db: Db);
14
- init(): Promise<void>;
15
- get(documentRef: DocumentReference): Promise<DocumentSnapshot>;
16
- set(documentRef: DocumentReference, data: Object): Promise<SetResult>;
17
- update(documentRef: DocumentReference, data: Object): Promise<UpdateResult>;
18
- delete(documentRef: DocumentReference): Promise<DeleteResult>;
19
- commit(): Promise<CommitResult>;
20
- rollback(): Promise<RollbackResult>;
21
- }
22
- export declare function startTransaction(): Promise<Transaction>;
23
- export declare function runTransaction(callback: (transaction: Transaction) => void | Promise<any>, times?: number): Promise<void>;
24
- declare type JsonString = string;
25
- interface CommitResult {
26
- requestId: string;
27
- }
28
- interface RollbackResult {
29
- requestId: string;
30
- }
31
- interface UpdateResult {
32
- requestId: string;
33
- updated: number;
34
- }
35
- interface SetResult extends UpdateResult {
36
- upserted: JsonString;
37
- }
38
- interface DeleteResult {
39
- requestId: string;
40
- deleted: number | string;
41
- }
42
- export {};
@@ -1,126 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const bson_1 = require("bson");
4
- const index_1 = require("./index");
5
- class DocumentSnapshot {
6
- constructor(data, requestId) {
7
- this._data = data;
8
- this.requestId = requestId;
9
- }
10
- data() {
11
- return this._data;
12
- }
13
- }
14
- const START = 'database.startTransaction';
15
- const COMMIT = 'database.commitTransaction';
16
- const ABORT = 'database.abortTransaction';
17
- const GET_DOC = 'database.getInTransaction';
18
- const UPDATE_DOC = 'database.updateDocInTransaction';
19
- const DELETE_DOC = 'database.deleteDocInTransaction';
20
- class Transaction {
21
- constructor(db) {
22
- this._db = db;
23
- this._request = new index_1.Db.reqClass(this._db.config);
24
- }
25
- async init() {
26
- const res = await this._request.send(START, {});
27
- if (res.code) {
28
- throw res;
29
- }
30
- this._id = res.transactionId;
31
- }
32
- async get(documentRef) {
33
- const param = {
34
- collectionName: documentRef._coll,
35
- transactionId: this._id,
36
- _id: documentRef.id
37
- };
38
- const res = await this._request.send(GET_DOC, param);
39
- if (res.code)
40
- throw res;
41
- return new DocumentSnapshot(bson_1.EJSON.parse(res.data), res.requestId);
42
- }
43
- async set(documentRef, data) {
44
- const param = {
45
- collectionName: documentRef._coll,
46
- transactionId: this._id,
47
- _id: documentRef.id,
48
- data: bson_1.EJSON.stringify(data, { relaxed: false }),
49
- upsert: true
50
- };
51
- const res = await this._request.send(UPDATE_DOC, param);
52
- if (res.code)
53
- throw res;
54
- return Object.assign(Object.assign({}, res), { updated: bson_1.EJSON.parse(res.updated), upserted: res.upserted
55
- ? JSON.parse(res.upserted)
56
- : null });
57
- }
58
- async update(documentRef, data) {
59
- const param = {
60
- collectionName: documentRef._coll,
61
- transactionId: this._id,
62
- _id: documentRef.id,
63
- data: bson_1.EJSON.stringify({
64
- $set: data
65
- }, {
66
- relaxed: false
67
- })
68
- };
69
- const res = await this._request.send(UPDATE_DOC, param);
70
- if (res.code)
71
- throw res;
72
- return Object.assign(Object.assign({}, res), { updated: bson_1.EJSON.parse(res.updated) });
73
- }
74
- async delete(documentRef) {
75
- const param = {
76
- collectionName: documentRef._coll,
77
- transactionId: this._id,
78
- _id: documentRef.id
79
- };
80
- const res = await this._request.send(DELETE_DOC, param);
81
- if (res.code)
82
- throw res;
83
- return Object.assign(Object.assign({}, res), { deleted: bson_1.EJSON.parse(res.deleted) });
84
- }
85
- async commit() {
86
- const param = {
87
- transactionId: this._id
88
- };
89
- const res = await this._request.send(COMMIT, param);
90
- if (res.code)
91
- throw res;
92
- return res;
93
- }
94
- async rollback() {
95
- const param = {
96
- transactionId: this._id
97
- };
98
- const res = await this._request.send(ABORT, param);
99
- if (res.code)
100
- throw res;
101
- return res;
102
- }
103
- }
104
- exports.Transaction = Transaction;
105
- async function startTransaction() {
106
- const transaction = new Transaction(this);
107
- await transaction.init();
108
- return transaction;
109
- }
110
- exports.startTransaction = startTransaction;
111
- async function runTransaction(callback, times = 3) {
112
- if (times <= 0) {
113
- throw new Error('Transaction failed');
114
- }
115
- try {
116
- const transaction = new Transaction(this);
117
- await transaction.init();
118
- await callback(transaction);
119
- await transaction.commit();
120
- }
121
- catch (error) {
122
- console.log(error);
123
- return runTransaction.bind(this)(callback, --times);
124
- }
125
- }
126
- exports.runTransaction = runTransaction;
@@ -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,8 +0,0 @@
1
- export class RealtimeErrorMessageError extends Error {
2
- constructor(serverErrorMsg) {
3
- super(`Watch Error ${JSON.stringify(serverErrorMsg.msgData)} (requestid: ${serverErrorMsg.requestId})`);
4
- this.isRealtimeErrorMessageError = true;
5
- this.payload = serverErrorMsg;
6
- }
7
- }
8
- export const 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,14 +0,0 @@
1
- export class RealtimeListener {
2
- constructor(options) {
3
- this.close = options.close;
4
- this.onChange = options.onChange;
5
- this.onError = options.onError;
6
- if (options.debug) {
7
- Object.defineProperty(this, 'virtualClient', {
8
- get: () => {
9
- return options.virtualClient;
10
- }
11
- });
12
- }
13
- }
14
- }
@@ -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,6 +0,0 @@
1
- export function genRequestId(prefix = '') {
2
- return `${prefix ? `${prefix}_` : ''}${+new Date()}_${Math.random()}`;
3
- }
4
- export function isInitEventMessage(msg) {
5
- return msg.msgType === 'INIT_EVENT';
6
- }
@@ -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,39 +0,0 @@
1
- export class Snapshot {
2
- constructor(options) {
3
- const { id, docChanges, docs, msgType, type } = options;
4
- let cachedDocChanges;
5
- let cachedDocs;
6
- Object.defineProperties(this, {
7
- id: {
8
- get: () => id,
9
- enumerable: true
10
- },
11
- docChanges: {
12
- get: () => {
13
- if (!cachedDocChanges) {
14
- cachedDocChanges = JSON.parse(JSON.stringify(docChanges));
15
- }
16
- return cachedDocChanges;
17
- },
18
- enumerable: true
19
- },
20
- docs: {
21
- get: () => {
22
- if (!cachedDocs) {
23
- cachedDocs = JSON.parse(JSON.stringify(docs));
24
- }
25
- return cachedDocs;
26
- },
27
- enumerable: true
28
- },
29
- msgType: {
30
- get: () => msgType,
31
- enumerable: true
32
- },
33
- type: {
34
- get: () => type,
35
- enumerable: true
36
- }
37
- });
38
- }
39
- }
@@ -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 {};