@cloudbase/database 0.9.18-next → 0.9.19

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 (204) hide show
  1. package/README.md +32 -10
  2. package/dist/commonjs/ObjectId/index.d.ts +11 -0
  3. package/dist/commonjs/ObjectId/index.js +21 -0
  4. package/dist/commonjs/aggregate.d.ts +29 -29
  5. package/dist/commonjs/aggregate.js +156 -146
  6. package/dist/commonjs/collection.d.ts +9 -9
  7. package/dist/commonjs/collection.js +46 -46
  8. package/dist/commonjs/command.d.ts +175 -175
  9. package/dist/commonjs/command.js +298 -298
  10. package/dist/commonjs/commands/logic.d.ts +24 -24
  11. package/dist/commonjs/commands/logic.js +88 -88
  12. package/dist/commonjs/commands/query.d.ts +68 -68
  13. package/dist/commonjs/commands/query.js +157 -157
  14. package/dist/commonjs/commands/update.d.ts +29 -29
  15. package/dist/commonjs/commands/update.js +50 -50
  16. package/dist/commonjs/config/app.config.d.ts +6 -6
  17. package/dist/commonjs/config/app.config.js +7 -7
  18. package/dist/commonjs/config/error.config.d.ts +3 -3
  19. package/dist/commonjs/config/error.config.js +15 -15
  20. package/dist/commonjs/const/code.d.ts +30 -30
  21. package/dist/commonjs/const/code.js +32 -32
  22. package/dist/commonjs/constant.d.ts +51 -51
  23. package/dist/commonjs/constant.js +74 -74
  24. package/dist/commonjs/document.d.ts +11 -11
  25. package/dist/commonjs/document.js +252 -252
  26. package/dist/commonjs/geo/index.d.ts +6 -6
  27. package/dist/commonjs/geo/index.js +11 -11
  28. package/dist/commonjs/geo/interface.d.ts +24 -24
  29. package/dist/commonjs/geo/interface.js +2 -2
  30. package/dist/commonjs/geo/lineString.d.ts +19 -19
  31. package/dist/commonjs/geo/lineString.js +85 -85
  32. package/dist/commonjs/geo/multiLineString.d.ts +18 -18
  33. package/dist/commonjs/geo/multiLineString.js +94 -94
  34. package/dist/commonjs/geo/multiPoint.d.ts +18 -18
  35. package/dist/commonjs/geo/multiPoint.js +78 -78
  36. package/dist/commonjs/geo/multiPolygon.d.ts +18 -18
  37. package/dist/commonjs/geo/multiPolygon.js +121 -121
  38. package/dist/commonjs/geo/point.d.ts +19 -19
  39. package/dist/commonjs/geo/point.js +49 -49
  40. package/dist/commonjs/geo/polygon.d.ts +19 -19
  41. package/dist/commonjs/geo/polygon.js +108 -108
  42. package/dist/commonjs/helper/symbol.d.ts +14 -14
  43. package/dist/commonjs/helper/symbol.js +19 -19
  44. package/dist/commonjs/index.d.ts +33 -33
  45. package/dist/commonjs/index.js +46 -46
  46. package/dist/commonjs/lib/util.d.ts +1 -1
  47. package/dist/commonjs/lib/util.js +25 -25
  48. package/dist/commonjs/operator-map.d.ts +4 -4
  49. package/dist/commonjs/operator-map.js +23 -23
  50. package/dist/commonjs/query.d.ts +22 -22
  51. package/dist/commonjs/query.js +251 -251
  52. package/dist/commonjs/realtime/error.d.ts +7 -0
  53. package/dist/commonjs/realtime/error.js +11 -0
  54. package/dist/commonjs/realtime/listener.d.ts +14 -0
  55. package/dist/commonjs/realtime/listener.js +17 -0
  56. package/dist/commonjs/realtime/message.d.ts +3 -0
  57. package/dist/commonjs/realtime/message.js +10 -0
  58. package/dist/commonjs/realtime/snapshot.d.ts +16 -0
  59. package/dist/commonjs/realtime/snapshot.js +42 -0
  60. package/dist/commonjs/realtime/virtual-websocket-client.d.ts +63 -0
  61. package/dist/commonjs/realtime/virtual-websocket-client.js +736 -0
  62. package/dist/commonjs/realtime/websocket-client.d.ts +78 -0
  63. package/dist/commonjs/realtime/websocket-client.js +567 -0
  64. package/dist/commonjs/realtime/ws-event.d.ts +126 -0
  65. package/dist/commonjs/realtime/ws-event.js +139 -0
  66. package/dist/commonjs/regexp/index.d.ts +14 -14
  67. package/dist/commonjs/regexp/index.js +32 -32
  68. package/dist/commonjs/serializer/common.d.ts +11 -11
  69. package/dist/commonjs/serializer/common.js +121 -121
  70. package/dist/commonjs/serializer/datatype.d.ts +7 -7
  71. package/dist/commonjs/serializer/datatype.js +126 -126
  72. package/dist/commonjs/serializer/query.d.ts +7 -7
  73. package/dist/commonjs/serializer/query.js +231 -231
  74. package/dist/commonjs/serializer/update.d.ts +15 -15
  75. package/dist/commonjs/serializer/update.js +141 -141
  76. package/dist/commonjs/serverDate/index.d.ts +13 -13
  77. package/dist/commonjs/serverDate/index.js +29 -29
  78. package/dist/commonjs/transaction/collection.d.ts +7 -7
  79. package/dist/commonjs/transaction/collection.js +46 -46
  80. package/dist/commonjs/transaction/document.d.ts +27 -27
  81. package/dist/commonjs/transaction/document.js +205 -205
  82. package/dist/commonjs/transaction/index.d.ts +30 -30
  83. package/dist/commonjs/transaction/index.js +214 -214
  84. package/dist/commonjs/transaction/query.d.ts +5 -5
  85. package/dist/commonjs/transaction/query.js +10 -10
  86. package/dist/commonjs/transaction.d.ts +42 -0
  87. package/dist/commonjs/transaction.js +126 -0
  88. package/dist/commonjs/typings/index.d.ts +40 -40
  89. package/dist/commonjs/typings/index.js +2 -2
  90. package/dist/commonjs/typings/realtime.d.ts +219 -219
  91. package/dist/commonjs/typings/realtime.js +2 -2
  92. package/dist/commonjs/util.d.ts +9 -9
  93. package/dist/commonjs/util.js +144 -144
  94. package/dist/commonjs/utils/error.d.ts +37 -37
  95. package/dist/commonjs/utils/error.js +85 -85
  96. package/dist/commonjs/utils/symbol.d.ts +8 -8
  97. package/dist/commonjs/utils/symbol.js +57 -57
  98. package/dist/commonjs/utils/type.d.ts +13 -13
  99. package/dist/commonjs/utils/type.js +22 -22
  100. package/dist/commonjs/utils/utils.d.ts +4 -4
  101. package/dist/commonjs/utils/utils.js +36 -36
  102. package/dist/commonjs/validate.d.ts +1 -1
  103. package/dist/commonjs/validate.js +59 -59
  104. package/dist/esm/ObjectId/index.d.ts +11 -0
  105. package/dist/esm/ObjectId/index.js +17 -0
  106. package/dist/esm/aggregate.d.ts +29 -29
  107. package/dist/esm/aggregate.js +154 -144
  108. package/dist/esm/collection.d.ts +9 -9
  109. package/dist/esm/collection.js +44 -44
  110. package/dist/esm/command.d.ts +175 -175
  111. package/dist/esm/command.js +296 -296
  112. package/dist/esm/commands/logic.d.ts +24 -24
  113. package/dist/esm/commands/logic.js +84 -84
  114. package/dist/esm/commands/query.d.ts +68 -68
  115. package/dist/esm/commands/query.js +152 -152
  116. package/dist/esm/commands/update.d.ts +29 -29
  117. package/dist/esm/commands/update.js +46 -46
  118. package/dist/esm/config/app.config.d.ts +6 -6
  119. package/dist/esm/config/app.config.js +5 -5
  120. package/dist/esm/config/error.config.d.ts +3 -3
  121. package/dist/esm/config/error.config.js +13 -13
  122. package/dist/esm/const/code.d.ts +30 -30
  123. package/dist/esm/const/code.js +30 -30
  124. package/dist/esm/constant.d.ts +51 -51
  125. package/dist/esm/constant.js +65 -65
  126. package/dist/esm/document.d.ts +11 -11
  127. package/dist/esm/document.js +250 -250
  128. package/dist/esm/geo/index.d.ts +6 -6
  129. package/dist/esm/geo/index.js +6 -6
  130. package/dist/esm/geo/interface.d.ts +24 -24
  131. package/dist/esm/geo/lineString.d.ts +19 -19
  132. package/dist/esm/geo/lineString.js +83 -83
  133. package/dist/esm/geo/multiLineString.d.ts +18 -18
  134. package/dist/esm/geo/multiLineString.js +92 -92
  135. package/dist/esm/geo/multiPoint.d.ts +18 -18
  136. package/dist/esm/geo/multiPoint.js +76 -76
  137. package/dist/esm/geo/multiPolygon.d.ts +18 -18
  138. package/dist/esm/geo/multiPolygon.js +119 -119
  139. package/dist/esm/geo/point.d.ts +19 -19
  140. package/dist/esm/geo/point.js +47 -47
  141. package/dist/esm/geo/polygon.d.ts +19 -19
  142. package/dist/esm/geo/polygon.js +106 -106
  143. package/dist/esm/helper/symbol.d.ts +14 -14
  144. package/dist/esm/helper/symbol.js +14 -14
  145. package/dist/esm/index.d.ts +33 -33
  146. package/dist/esm/index.js +41 -41
  147. package/dist/esm/lib/util.d.ts +1 -1
  148. package/dist/esm/lib/util.js +23 -23
  149. package/dist/esm/operator-map.d.ts +4 -4
  150. package/dist/esm/operator-map.js +20 -20
  151. package/dist/esm/query.d.ts +22 -22
  152. package/dist/esm/query.js +249 -249
  153. package/dist/esm/realtime/error.d.ts +7 -0
  154. package/dist/esm/realtime/error.js +8 -0
  155. package/dist/esm/realtime/listener.d.ts +14 -0
  156. package/dist/esm/realtime/listener.js +14 -0
  157. package/dist/esm/realtime/message.d.ts +3 -0
  158. package/dist/esm/realtime/message.js +6 -0
  159. package/dist/esm/realtime/snapshot.d.ts +16 -0
  160. package/dist/esm/realtime/snapshot.js +39 -0
  161. package/dist/esm/realtime/virtual-websocket-client.d.ts +63 -0
  162. package/dist/esm/realtime/virtual-websocket-client.js +733 -0
  163. package/dist/esm/realtime/websocket-client.d.ts +78 -0
  164. package/dist/esm/realtime/websocket-client.js +564 -0
  165. package/dist/esm/realtime/ws-event.d.ts +126 -0
  166. package/dist/esm/realtime/ws-event.js +137 -0
  167. package/dist/esm/regexp/index.d.ts +14 -14
  168. package/dist/esm/regexp/index.js +29 -29
  169. package/dist/esm/serializer/common.d.ts +11 -11
  170. package/dist/esm/serializer/common.js +113 -113
  171. package/dist/esm/serializer/datatype.d.ts +7 -7
  172. package/dist/esm/serializer/datatype.js +122 -122
  173. package/dist/esm/serializer/query.d.ts +7 -7
  174. package/dist/esm/serializer/query.js +229 -229
  175. package/dist/esm/serializer/update.d.ts +15 -15
  176. package/dist/esm/serializer/update.js +139 -139
  177. package/dist/esm/serverDate/index.d.ts +13 -13
  178. package/dist/esm/serverDate/index.js +26 -26
  179. package/dist/esm/transaction/collection.d.ts +7 -7
  180. package/dist/esm/transaction/collection.js +44 -44
  181. package/dist/esm/transaction/document.d.ts +27 -27
  182. package/dist/esm/transaction/document.js +203 -203
  183. package/dist/esm/transaction/index.d.ts +30 -30
  184. package/dist/esm/transaction/index.js +210 -210
  185. package/dist/esm/transaction/query.d.ts +5 -5
  186. package/dist/esm/transaction/query.js +8 -8
  187. package/dist/esm/transaction.d.ts +42 -0
  188. package/dist/esm/transaction.js +121 -0
  189. package/dist/esm/typings/index.d.ts +40 -40
  190. package/dist/esm/typings/realtime.d.ts +219 -219
  191. package/dist/esm/util.d.ts +9 -9
  192. package/dist/esm/util.js +142 -142
  193. package/dist/esm/utils/error.d.ts +37 -37
  194. package/dist/esm/utils/error.js +82 -82
  195. package/dist/esm/utils/symbol.d.ts +8 -8
  196. package/dist/esm/utils/symbol.js +55 -55
  197. package/dist/esm/utils/type.d.ts +13 -13
  198. package/dist/esm/utils/type.js +20 -20
  199. package/dist/esm/utils/utils.d.ts +4 -4
  200. package/dist/esm/utils/utils.js +33 -33
  201. package/dist/esm/validate.d.ts +1 -1
  202. package/dist/esm/validate.js +57 -57
  203. package/package.json +1 -1
  204. package/src/aggregate.ts +11 -0
package/dist/esm/query.js CHANGED
@@ -1,249 +1,249 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { createPromiseCallback } from './lib/util';
13
- import { QueryType } from './constant';
14
- import { Db } from './index';
15
- import { Validate } from './validate';
16
- import { Util } from './util';
17
- import { QuerySerializer } from './serializer/query';
18
- import { UpdateSerializer } from './serializer/update';
19
- import { ErrorCode } from './constant';
20
- import { getWsInstance } from './utils/utils';
21
- var Query = (function () {
22
- function Query(db, coll, fieldFilters, fieldOrders, queryOptions) {
23
- var _this = this;
24
- this.watch = function (options) {
25
- var ws = getWsInstance(_this._db);
26
- return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify(_this._fieldFilters || {}), limit: _this._queryOptions.limit, orderBy: _this._fieldOrders
27
- ? _this._fieldOrders.reduce(function (acc, cur) {
28
- acc[cur.field] = cur.direction;
29
- return acc;
30
- }, {})
31
- : undefined }));
32
- };
33
- this._db = db;
34
- this._coll = coll;
35
- this._fieldFilters = fieldFilters;
36
- this._fieldOrders = fieldOrders || [];
37
- this._queryOptions = queryOptions || {};
38
- this._request = new Db.reqClass(this._db.config);
39
- }
40
- Query.prototype.get = function (callback) {
41
- callback = callback || createPromiseCallback();
42
- var newOder = [];
43
- if (this._fieldOrders) {
44
- this._fieldOrders.forEach(function (order) {
45
- newOder.push(order);
46
- });
47
- }
48
- var param = {
49
- collectionName: this._coll,
50
- queryType: QueryType.WHERE
51
- };
52
- if (this._fieldFilters) {
53
- param.query = this._fieldFilters;
54
- }
55
- if (newOder.length > 0) {
56
- param.order = newOder;
57
- }
58
- if (this._queryOptions.offset) {
59
- param.offset = this._queryOptions.offset;
60
- }
61
- if (this._queryOptions.limit) {
62
- param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;
63
- }
64
- else {
65
- param.limit = 100;
66
- }
67
- if (this._queryOptions.projection) {
68
- param.projection = this._queryOptions.projection;
69
- }
70
- this._request
71
- .send('database.queryDocument', param)
72
- .then(function (res) {
73
- if (res.code) {
74
- callback(0, res);
75
- }
76
- else {
77
- var documents = Util.formatResDocumentData(res.data.list);
78
- var result = {
79
- data: documents,
80
- requestId: res.requestId
81
- };
82
- if (res.TotalCount)
83
- result.total = res.TotalCount;
84
- if (res.Limit)
85
- result.limit = res.Limit;
86
- if (res.Offset)
87
- result.offset = res.Offset;
88
- callback(0, result);
89
- }
90
- })
91
- .catch(function (err) {
92
- callback(err);
93
- });
94
- return callback.promise;
95
- };
96
- Query.prototype.count = function (callback) {
97
- callback = callback || createPromiseCallback();
98
- var param = {
99
- collectionName: this._coll,
100
- queryType: QueryType.WHERE
101
- };
102
- if (this._fieldFilters) {
103
- param.query = this._fieldFilters;
104
- }
105
- this._request
106
- .send('database.countDocument', param)
107
- .then(function (res) {
108
- if (res.code) {
109
- callback(0, res);
110
- }
111
- else {
112
- callback(0, {
113
- requestId: res.requestId,
114
- total: res.data.total
115
- });
116
- }
117
- })
118
- .catch(function (e) {
119
- callback(e);
120
- });
121
- return callback.promise;
122
- };
123
- Query.prototype.where = function (query) {
124
- if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {
125
- throw Error(ErrorCode.QueryParamTypeError);
126
- }
127
- var keys = Object.keys(query);
128
- var checkFlag = keys.some(function (item) {
129
- return query[item] !== undefined;
130
- });
131
- if (keys.length && !checkFlag) {
132
- throw Error(ErrorCode.QueryParamValueError);
133
- }
134
- return new Query(this._db, this._coll, QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);
135
- };
136
- Query.prototype.orderBy = function (fieldPath, directionStr) {
137
- Validate.isFieldPath(fieldPath);
138
- Validate.isFieldOrder(directionStr);
139
- var newOrder = {
140
- field: fieldPath,
141
- direction: directionStr
142
- };
143
- var combinedOrders = this._fieldOrders.concat(newOrder);
144
- return new Query(this._db, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);
145
- };
146
- Query.prototype.limit = function (limit) {
147
- Validate.isInteger('limit', limit);
148
- var option = __assign({}, this._queryOptions);
149
- option.limit = limit;
150
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
151
- };
152
- Query.prototype.skip = function (offset) {
153
- Validate.isInteger('offset', offset);
154
- var option = __assign({}, this._queryOptions);
155
- option.offset = offset;
156
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
157
- };
158
- Query.prototype.update = function (data, callback) {
159
- callback = callback || createPromiseCallback();
160
- if (!data || typeof data !== 'object') {
161
- return Promise.resolve({
162
- code: 'INVALID_PARAM',
163
- message: '参数必需是非空对象'
164
- });
165
- }
166
- if (data.hasOwnProperty('_id')) {
167
- return Promise.resolve({
168
- code: 'INVALID_PARAM',
169
- message: '不能更新_id的值'
170
- });
171
- }
172
- var param = {
173
- collectionName: this._coll,
174
- query: this._fieldFilters,
175
- queryType: QueryType.WHERE,
176
- multi: true,
177
- merge: true,
178
- upsert: false,
179
- data: UpdateSerializer.encode(data)
180
- };
181
- this._request
182
- .send('database.updateDocument', param)
183
- .then(function (res) {
184
- if (res.code) {
185
- callback(0, res);
186
- }
187
- else {
188
- callback(0, {
189
- requestId: res.requestId,
190
- updated: res.data.updated,
191
- upsertId: res.data.upsert_id
192
- });
193
- }
194
- })
195
- .catch(function (e) {
196
- callback(e);
197
- });
198
- return callback.promise;
199
- };
200
- Query.prototype.field = function (projection) {
201
- for (var k in projection) {
202
- if (projection[k]) {
203
- if (typeof projection[k] !== 'object') {
204
- projection[k] = 1;
205
- }
206
- }
207
- else {
208
- projection[k] = 0;
209
- }
210
- }
211
- var option = __assign({}, this._queryOptions);
212
- option.projection = projection;
213
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
214
- };
215
- Query.prototype.remove = function (callback) {
216
- callback = callback || createPromiseCallback();
217
- if (Object.keys(this._queryOptions).length > 0) {
218
- console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');
219
- }
220
- if (this._fieldOrders.length > 0) {
221
- console.warn('`orderBy` is not supported in remove() operation');
222
- }
223
- var param = {
224
- collectionName: this._coll,
225
- query: QuerySerializer.encode(this._fieldFilters),
226
- queryType: QueryType.WHERE,
227
- multi: true
228
- };
229
- this._request
230
- .send('database.deleteDocument', param)
231
- .then(function (res) {
232
- if (res.code) {
233
- callback(0, res);
234
- }
235
- else {
236
- callback(0, {
237
- requestId: res.requestId,
238
- deleted: res.data.deleted
239
- });
240
- }
241
- })
242
- .catch(function (e) {
243
- callback(e);
244
- });
245
- return callback.promise;
246
- };
247
- return Query;
248
- }());
249
- export { Query };
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { createPromiseCallback } from './lib/util';
13
+ import { QueryType } from './constant';
14
+ import { Db } from './index';
15
+ import { Validate } from './validate';
16
+ import { Util } from './util';
17
+ import { QuerySerializer } from './serializer/query';
18
+ import { UpdateSerializer } from './serializer/update';
19
+ import { ErrorCode } from './constant';
20
+ import { getWsInstance } from './utils/utils';
21
+ var Query = (function () {
22
+ function Query(db, coll, fieldFilters, fieldOrders, queryOptions) {
23
+ var _this = this;
24
+ this.watch = function (options) {
25
+ var ws = getWsInstance(_this._db);
26
+ return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify(_this._fieldFilters || {}), limit: _this._queryOptions.limit, orderBy: _this._fieldOrders
27
+ ? _this._fieldOrders.reduce(function (acc, cur) {
28
+ acc[cur.field] = cur.direction;
29
+ return acc;
30
+ }, {})
31
+ : undefined }));
32
+ };
33
+ this._db = db;
34
+ this._coll = coll;
35
+ this._fieldFilters = fieldFilters;
36
+ this._fieldOrders = fieldOrders || [];
37
+ this._queryOptions = queryOptions || {};
38
+ this._request = new Db.reqClass(this._db.config);
39
+ }
40
+ Query.prototype.get = function (callback) {
41
+ callback = callback || createPromiseCallback();
42
+ var newOder = [];
43
+ if (this._fieldOrders) {
44
+ this._fieldOrders.forEach(function (order) {
45
+ newOder.push(order);
46
+ });
47
+ }
48
+ var param = {
49
+ collectionName: this._coll,
50
+ queryType: QueryType.WHERE
51
+ };
52
+ if (this._fieldFilters) {
53
+ param.query = this._fieldFilters;
54
+ }
55
+ if (newOder.length > 0) {
56
+ param.order = newOder;
57
+ }
58
+ if (this._queryOptions.offset) {
59
+ param.offset = this._queryOptions.offset;
60
+ }
61
+ if (this._queryOptions.limit) {
62
+ param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;
63
+ }
64
+ else {
65
+ param.limit = 100;
66
+ }
67
+ if (this._queryOptions.projection) {
68
+ param.projection = this._queryOptions.projection;
69
+ }
70
+ this._request
71
+ .send('database.queryDocument', param)
72
+ .then(function (res) {
73
+ if (res.code) {
74
+ callback(0, res);
75
+ }
76
+ else {
77
+ var documents = Util.formatResDocumentData(res.data.list);
78
+ var result = {
79
+ data: documents,
80
+ requestId: res.requestId
81
+ };
82
+ if (res.TotalCount)
83
+ result.total = res.TotalCount;
84
+ if (res.Limit)
85
+ result.limit = res.Limit;
86
+ if (res.Offset)
87
+ result.offset = res.Offset;
88
+ callback(0, result);
89
+ }
90
+ })
91
+ .catch(function (err) {
92
+ callback(err);
93
+ });
94
+ return callback.promise;
95
+ };
96
+ Query.prototype.count = function (callback) {
97
+ callback = callback || createPromiseCallback();
98
+ var param = {
99
+ collectionName: this._coll,
100
+ queryType: QueryType.WHERE
101
+ };
102
+ if (this._fieldFilters) {
103
+ param.query = this._fieldFilters;
104
+ }
105
+ this._request
106
+ .send('database.countDocument', param)
107
+ .then(function (res) {
108
+ if (res.code) {
109
+ callback(0, res);
110
+ }
111
+ else {
112
+ callback(0, {
113
+ requestId: res.requestId,
114
+ total: res.data.total
115
+ });
116
+ }
117
+ })
118
+ .catch(function (e) {
119
+ callback(e);
120
+ });
121
+ return callback.promise;
122
+ };
123
+ Query.prototype.where = function (query) {
124
+ if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {
125
+ throw Error(ErrorCode.QueryParamTypeError);
126
+ }
127
+ var keys = Object.keys(query);
128
+ var checkFlag = keys.some(function (item) {
129
+ return query[item] !== undefined;
130
+ });
131
+ if (keys.length && !checkFlag) {
132
+ throw Error(ErrorCode.QueryParamValueError);
133
+ }
134
+ return new Query(this._db, this._coll, QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);
135
+ };
136
+ Query.prototype.orderBy = function (fieldPath, directionStr) {
137
+ Validate.isFieldPath(fieldPath);
138
+ Validate.isFieldOrder(directionStr);
139
+ var newOrder = {
140
+ field: fieldPath,
141
+ direction: directionStr
142
+ };
143
+ var combinedOrders = this._fieldOrders.concat(newOrder);
144
+ return new Query(this._db, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);
145
+ };
146
+ Query.prototype.limit = function (limit) {
147
+ Validate.isInteger('limit', limit);
148
+ var option = __assign({}, this._queryOptions);
149
+ option.limit = limit;
150
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
151
+ };
152
+ Query.prototype.skip = function (offset) {
153
+ Validate.isInteger('offset', offset);
154
+ var option = __assign({}, this._queryOptions);
155
+ option.offset = offset;
156
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
157
+ };
158
+ Query.prototype.update = function (data, callback) {
159
+ callback = callback || createPromiseCallback();
160
+ if (!data || typeof data !== 'object') {
161
+ return Promise.resolve({
162
+ code: 'INVALID_PARAM',
163
+ message: '参数必需是非空对象'
164
+ });
165
+ }
166
+ if (data.hasOwnProperty('_id')) {
167
+ return Promise.resolve({
168
+ code: 'INVALID_PARAM',
169
+ message: '不能更新_id的值'
170
+ });
171
+ }
172
+ var param = {
173
+ collectionName: this._coll,
174
+ query: this._fieldFilters,
175
+ queryType: QueryType.WHERE,
176
+ multi: true,
177
+ merge: true,
178
+ upsert: false,
179
+ data: UpdateSerializer.encode(data)
180
+ };
181
+ this._request
182
+ .send('database.updateDocument', param)
183
+ .then(function (res) {
184
+ if (res.code) {
185
+ callback(0, res);
186
+ }
187
+ else {
188
+ callback(0, {
189
+ requestId: res.requestId,
190
+ updated: res.data.updated,
191
+ upsertId: res.data.upsert_id
192
+ });
193
+ }
194
+ })
195
+ .catch(function (e) {
196
+ callback(e);
197
+ });
198
+ return callback.promise;
199
+ };
200
+ Query.prototype.field = function (projection) {
201
+ for (var k in projection) {
202
+ if (projection[k]) {
203
+ if (typeof projection[k] !== 'object') {
204
+ projection[k] = 1;
205
+ }
206
+ }
207
+ else {
208
+ projection[k] = 0;
209
+ }
210
+ }
211
+ var option = __assign({}, this._queryOptions);
212
+ option.projection = projection;
213
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
214
+ };
215
+ Query.prototype.remove = function (callback) {
216
+ callback = callback || createPromiseCallback();
217
+ if (Object.keys(this._queryOptions).length > 0) {
218
+ console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');
219
+ }
220
+ if (this._fieldOrders.length > 0) {
221
+ console.warn('`orderBy` is not supported in remove() operation');
222
+ }
223
+ var param = {
224
+ collectionName: this._coll,
225
+ query: QuerySerializer.encode(this._fieldFilters),
226
+ queryType: QueryType.WHERE,
227
+ multi: true
228
+ };
229
+ this._request
230
+ .send('database.deleteDocument', param)
231
+ .then(function (res) {
232
+ if (res.code) {
233
+ callback(0, res);
234
+ }
235
+ else {
236
+ callback(0, {
237
+ requestId: res.requestId,
238
+ deleted: res.data.deleted
239
+ });
240
+ }
241
+ })
242
+ .catch(function (e) {
243
+ callback(e);
244
+ });
245
+ return callback.promise;
246
+ };
247
+ return Query;
248
+ }());
249
+ export { Query };
@@ -0,0 +1,7 @@
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;
@@ -0,0 +1,8 @@
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;
@@ -0,0 +1,14 @@
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 {};
@@ -0,0 +1,14 @@
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
+ }
@@ -0,0 +1,3 @@
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;
@@ -0,0 +1,6 @@
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
+ }
@@ -0,0 +1,16 @@
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 {};
@@ -0,0 +1,39 @@
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
+ }