@cloudbase/database 0.9.17-beta → 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 (218) 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 -263
  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 -32
  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 -262
  52. package/dist/commonjs/realtime/error.d.ts +7 -7
  53. package/dist/commonjs/realtime/error.js +11 -27
  54. package/dist/commonjs/realtime/listener.d.ts +14 -14
  55. package/dist/commonjs/realtime/listener.js +17 -18
  56. package/dist/commonjs/realtime/message.d.ts +3 -3
  57. package/dist/commonjs/realtime/message.js +10 -11
  58. package/dist/commonjs/realtime/snapshot.d.ts +16 -16
  59. package/dist/commonjs/realtime/snapshot.js +42 -43
  60. package/dist/commonjs/realtime/virtual-websocket-client.d.ts +63 -63
  61. package/dist/commonjs/realtime/virtual-websocket-client.js +736 -990
  62. package/dist/commonjs/realtime/websocket-client.d.ts +78 -78
  63. package/dist/commonjs/realtime/websocket-client.js +567 -788
  64. package/dist/commonjs/realtime/ws-event.d.ts +126 -126
  65. package/dist/commonjs/realtime/ws-event.js +139 -139
  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 -42
  87. package/dist/commonjs/transaction.js +126 -126
  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 -2
  101. package/dist/commonjs/utils/utils.js +36 -14
  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 -261
  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 -32
  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 -260
  153. package/dist/esm/realtime/error.d.ts +7 -7
  154. package/dist/esm/realtime/error.js +8 -25
  155. package/dist/esm/realtime/listener.d.ts +14 -14
  156. package/dist/esm/realtime/listener.js +14 -16
  157. package/dist/esm/realtime/message.d.ts +3 -3
  158. package/dist/esm/realtime/message.js +6 -7
  159. package/dist/esm/realtime/snapshot.d.ts +16 -16
  160. package/dist/esm/realtime/snapshot.js +39 -41
  161. package/dist/esm/realtime/virtual-websocket-client.d.ts +63 -63
  162. package/dist/esm/realtime/virtual-websocket-client.js +733 -988
  163. package/dist/esm/realtime/websocket-client.d.ts +78 -78
  164. package/dist/esm/realtime/websocket-client.js +564 -786
  165. package/dist/esm/realtime/ws-event.d.ts +126 -126
  166. package/dist/esm/realtime/ws-event.js +137 -137
  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 -42
  188. package/dist/esm/transaction.js +121 -121
  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 -2
  200. package/dist/esm/utils/utils.js +33 -12
  201. package/dist/esm/validate.d.ts +1 -1
  202. package/dist/esm/validate.js +57 -57
  203. package/package.json +4 -1
  204. package/src/aggregate.ts +11 -0
  205. package/src/document.ts +3 -15
  206. package/src/index.ts +2 -0
  207. package/src/query.ts +4 -16
  208. package/src/utils/utils.ts +28 -0
  209. package/.DS_Store +0 -0
  210. package/src/.DS_Store +0 -0
  211. package/src/realtime/error.ts +0 -19
  212. package/src/realtime/listener.ts +0 -35
  213. package/src/realtime/message.ts +0 -14
  214. package/src/realtime/snapshot.ts +0 -60
  215. package/src/realtime/virtual-websocket-client.ts +0 -1195
  216. package/src/realtime/websocket-client.ts +0 -995
  217. package/src/realtime/ws-event.ts +0 -163
  218. package/src/regexp/.DS_Store +0 -0
package/README.md CHANGED
@@ -15,7 +15,7 @@ yarn add @cloudbase/database
15
15
 
16
16
  ## 使用
17
17
 
18
- 使用 `@cloudbase/database` 时,需要提供发送请求的类 `reqClass`。
18
+ 使用 `@cloudbase/database` 时,需要提供发送请求的类 `reqClass`。
19
19
 
20
20
  ```js
21
21
  // index.js
@@ -38,23 +38,23 @@ class Tcb {
38
38
  // request.js
39
39
 
40
40
  // 进一步处理,鉴权等...
41
- const requestHandler = require('requestHandler');
41
+ const requestHandler = require('requestHandler')
42
42
 
43
43
  class Request {
44
44
  constructor(config) {
45
- this.config = config;
45
+ this.config = config
46
46
  }
47
47
 
48
48
  async send(action, data) {
49
49
  const params = Object.assign({}, data, {
50
50
  action
51
- });
51
+ })
52
52
 
53
53
  const slowQueryWarning = setTimeout(() => {
54
54
  console.warn(
55
55
  'Database operation is longer than 3s. Please check query performance and your network environment.'
56
- );
57
- }, 3000);
56
+ )
57
+ }, 3000)
58
58
 
59
59
  try {
60
60
  return await requestHandler({
@@ -65,14 +65,14 @@ class Request {
65
65
  headers: {
66
66
  'content-type': 'application/json'
67
67
  }
68
- });
68
+ })
69
69
  } finally {
70
- clearTimeout(slowQueryWarning);
70
+ clearTimeout(slowQueryWarning)
71
71
  }
72
72
  }
73
73
  }
74
74
 
75
- module.exports = Request;
75
+ module.exports = Request
76
76
  ```
77
77
 
78
78
  请求数据样例
@@ -94,4 +94,26 @@ module.exports = Request;
94
94
  },
95
95
  "json": true
96
96
  }
97
- ```
97
+ ```
98
+
99
+ ## 开发指南
100
+
101
+ ### 注意
102
+
103
+ 当前 database 库是通过分支来控制了两个不同的版本,主干版提供给@cloudbase/js-sdk 库使用,feature/support_db_2.0 分支提供给@cloudbase/node-sdk 库使用。
104
+
105
+ 两个分支区别:
106
+ support_db_2.0 分支进行了数据库接口的升级,将原有的 json 协议转换为 mongo 支持的 bson 协议处理,目的是解决旧接口存在的问题,描述如下
107
+
108
+ - 日期对象 是走约定协议处理,即转换为 {$date: timestamp},这种方式应摒弃(EJSON 协议可解决)
109
+ - 无法支持 null, NaN 等特殊类型处理(EJSON 协议可解决)
110
+ - serverDate 这种自定义类型的实现,是继续保留 还是摒弃
111
+ - 接口实现混杂,普通 CRUD 接口均走 flexdb,而聚合,事务又用 runcommand 方式
112
+ - 原插入文档接口返回 docId 形式混杂
113
+
114
+ 目前仅针对服务端 sdk @cloudbase/node-sdk 完成了升级,而客户端 sdk @cloudbase/js-sdk 以及 小程序端 SDK 仍保留为旧接口形式。
115
+
116
+ ### 开发及发布事项
117
+
118
+ 1. 数据库接口的改动务必补充测试用例验证
119
+ 2. 发布时,约定 feature/support_db_2.0 分支上发布正式版(for @cloudbase/node-sdk)使用,master 分支上发布 beta 版 (for @cloudbase/js-sdk)使用。两 sdk 均通过锁版本方式依赖该库,不会受自动更新依赖影响。
@@ -0,0 +1,11 @@
1
+ export declare class ObjectId {
2
+ id: string;
3
+ constructor({ id }?: {
4
+ id?: string;
5
+ });
6
+ readonly _internalType: import("../utils/symbol").InternalSymbol;
7
+ parse(): {
8
+ $oid: string;
9
+ };
10
+ }
11
+ export declare function ObjectIdConstructor(opt: any): ObjectId;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const symbol_1 = require("../helper/symbol");
4
+ class ObjectId {
5
+ constructor({ id = '' } = {}) {
6
+ this.id = id;
7
+ }
8
+ get _internalType() {
9
+ return symbol_1.SYMBOL_OBJECTID;
10
+ }
11
+ parse() {
12
+ return {
13
+ $oid: this.id
14
+ };
15
+ }
16
+ }
17
+ exports.ObjectId = ObjectId;
18
+ function ObjectIdConstructor(opt) {
19
+ return new ObjectId(opt);
20
+ }
21
+ exports.ObjectIdConstructor = ObjectIdConstructor;
@@ -1,29 +1,29 @@
1
- export default class Aggregation {
2
- _db: any;
3
- _request: any;
4
- _stages: any[];
5
- _collectionName: string;
6
- constructor(db?: any, collectionName?: any);
7
- end(): Promise<any>;
8
- unwrap(): any[];
9
- done(): {
10
- [x: number]: any;
11
- }[];
12
- _pipe(stage: any, param: any): this;
13
- addFields(param: any): this;
14
- bucket(param: any): this;
15
- bucketAuto(param: any): this;
16
- count(param: any): this;
17
- geoNear(param: any): this;
18
- group(param: any): this;
19
- limit(param: any): this;
20
- match(param: any): this;
21
- project(param: any): this;
22
- lookup(param: any): this;
23
- replaceRoot(param: any): this;
24
- sample(param: any): this;
25
- skip(param: any): this;
26
- sort(param: any): this;
27
- sortByCount(param: any): this;
28
- unwind(param: any): this;
29
- }
1
+ export default class Aggregation {
2
+ _db: any;
3
+ _request: any;
4
+ _stages: any[];
5
+ _collectionName: string;
6
+ constructor(db?: any, collectionName?: any);
7
+ end(): Promise<any>;
8
+ unwrap(): any[];
9
+ done(): {
10
+ [x: number]: any;
11
+ }[];
12
+ _pipe(stage: any, param: any): this;
13
+ addFields(param: any): this;
14
+ bucket(param: any): this;
15
+ bucketAuto(param: any): this;
16
+ count(param: any): this;
17
+ geoNear(param: any): this;
18
+ group(param: any): this;
19
+ limit(param: any): this;
20
+ match(param: any): this;
21
+ project(param: any): this;
22
+ lookup(param: any): this;
23
+ replaceRoot(param: any): this;
24
+ sample(param: any): this;
25
+ skip(param: any): this;
26
+ sort(param: any): this;
27
+ sortByCount(param: any): this;
28
+ unwind(param: any): this;
29
+ }
@@ -1,146 +1,156 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- var index_1 = require("./index");
40
- var bson_1 = require("bson");
41
- var query_1 = require("./serializer/query");
42
- var Aggregation = (function () {
43
- function Aggregation(db, collectionName) {
44
- this._stages = [];
45
- if (db && collectionName) {
46
- this._db = db;
47
- this._request = new index_1.Db.reqClass(this._db.config);
48
- this._collectionName = collectionName;
49
- }
50
- }
51
- Aggregation.prototype.end = function () {
52
- return __awaiter(this, void 0, void 0, function () {
53
- var result;
54
- return __generator(this, function (_a) {
55
- switch (_a.label) {
56
- case 0:
57
- if (!this._collectionName || !this._db) {
58
- throw new Error('Aggregation pipeline cannot send request');
59
- }
60
- return [4, this._request.send('database.aggregate', {
61
- collectionName: this._collectionName,
62
- stages: this._stages
63
- })];
64
- case 1:
65
- result = _a.sent();
66
- if (result && result.data && result.data.list) {
67
- return [2, {
68
- requestId: result.requestId,
69
- data: JSON.parse(result.data.list).map(bson_1.EJSON.parse)
70
- }];
71
- }
72
- return [2, result];
73
- }
74
- });
75
- });
76
- };
77
- Aggregation.prototype.unwrap = function () {
78
- return this._stages;
79
- };
80
- Aggregation.prototype.done = function () {
81
- return this._stages.map(function (_a) {
82
- var _b;
83
- var stageKey = _a.stageKey, stageValue = _a.stageValue;
84
- return _b = {},
85
- _b[stageKey] = JSON.parse(stageValue),
86
- _b;
87
- });
88
- };
89
- Aggregation.prototype._pipe = function (stage, param) {
90
- this._stages.push({
91
- stageKey: "$" + stage,
92
- stageValue: JSON.stringify(param)
93
- });
94
- return this;
95
- };
96
- Aggregation.prototype.addFields = function (param) {
97
- return this._pipe('addFields', param);
98
- };
99
- Aggregation.prototype.bucket = function (param) {
100
- return this._pipe('bucket', param);
101
- };
102
- Aggregation.prototype.bucketAuto = function (param) {
103
- return this._pipe('bucketAuto', param);
104
- };
105
- Aggregation.prototype.count = function (param) {
106
- return this._pipe('count', param);
107
- };
108
- Aggregation.prototype.geoNear = function (param) {
109
- return this._pipe('geoNear', param);
110
- };
111
- Aggregation.prototype.group = function (param) {
112
- return this._pipe('group', param);
113
- };
114
- Aggregation.prototype.limit = function (param) {
115
- return this._pipe('limit', param);
116
- };
117
- Aggregation.prototype.match = function (param) {
118
- return this._pipe('match', query_1.QuerySerializer.encode(param));
119
- };
120
- Aggregation.prototype.project = function (param) {
121
- return this._pipe('project', param);
122
- };
123
- Aggregation.prototype.lookup = function (param) {
124
- return this._pipe('lookup', param);
125
- };
126
- Aggregation.prototype.replaceRoot = function (param) {
127
- return this._pipe('replaceRoot', param);
128
- };
129
- Aggregation.prototype.sample = function (param) {
130
- return this._pipe('sample', param);
131
- };
132
- Aggregation.prototype.skip = function (param) {
133
- return this._pipe('skip', param);
134
- };
135
- Aggregation.prototype.sort = function (param) {
136
- return this._pipe('sort', param);
137
- };
138
- Aggregation.prototype.sortByCount = function (param) {
139
- return this._pipe('sortByCount', param);
140
- };
141
- Aggregation.prototype.unwind = function (param) {
142
- return this._pipe('unwind', param);
143
- };
144
- return Aggregation;
145
- }());
146
- exports.default = Aggregation;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var index_1 = require("./index");
40
+ var bson_1 = require("bson");
41
+ var query_1 = require("./serializer/query");
42
+ var geo_1 = require("./geo");
43
+ var Aggregation = (function () {
44
+ function Aggregation(db, collectionName) {
45
+ this._stages = [];
46
+ if (db && collectionName) {
47
+ this._db = db;
48
+ this._request = new index_1.Db.reqClass(this._db.config);
49
+ this._collectionName = collectionName;
50
+ }
51
+ }
52
+ Aggregation.prototype.end = function () {
53
+ return __awaiter(this, void 0, void 0, function () {
54
+ var result;
55
+ return __generator(this, function (_a) {
56
+ switch (_a.label) {
57
+ case 0:
58
+ if (!this._collectionName || !this._db) {
59
+ throw new Error('Aggregation pipeline cannot send request');
60
+ }
61
+ return [4, this._request.send('database.aggregate', {
62
+ collectionName: this._collectionName,
63
+ stages: this._stages
64
+ })];
65
+ case 1:
66
+ result = _a.sent();
67
+ if (result && result.data && result.data.list) {
68
+ return [2, {
69
+ requestId: result.requestId,
70
+ data: JSON.parse(result.data.list).map(bson_1.EJSON.parse)
71
+ }];
72
+ }
73
+ return [2, result];
74
+ }
75
+ });
76
+ });
77
+ };
78
+ Aggregation.prototype.unwrap = function () {
79
+ return this._stages;
80
+ };
81
+ Aggregation.prototype.done = function () {
82
+ return this._stages.map(function (_a) {
83
+ var _b;
84
+ var stageKey = _a.stageKey, stageValue = _a.stageValue;
85
+ return _b = {},
86
+ _b[stageKey] = JSON.parse(stageValue),
87
+ _b;
88
+ });
89
+ };
90
+ Aggregation.prototype._pipe = function (stage, param) {
91
+ this._stages.push({
92
+ stageKey: "$" + stage,
93
+ stageValue: JSON.stringify(param)
94
+ });
95
+ return this;
96
+ };
97
+ Aggregation.prototype.addFields = function (param) {
98
+ return this._pipe('addFields', param);
99
+ };
100
+ Aggregation.prototype.bucket = function (param) {
101
+ return this._pipe('bucket', param);
102
+ };
103
+ Aggregation.prototype.bucketAuto = function (param) {
104
+ return this._pipe('bucketAuto', param);
105
+ };
106
+ Aggregation.prototype.count = function (param) {
107
+ return this._pipe('count', param);
108
+ };
109
+ Aggregation.prototype.geoNear = function (param) {
110
+ if (param.query) {
111
+ param.query = query_1.QuerySerializer.encode(param.query);
112
+ }
113
+ if (param.distanceMultiplier && typeof (param.distanceMultiplier) === 'number') {
114
+ param.distanceMultiplier = param.distanceMultiplier;
115
+ }
116
+ if (param.near) {
117
+ param.near = new geo_1.Point(param.near.longitude, param.near.latitude).toJSON();
118
+ }
119
+ return this._pipe('geoNear', param);
120
+ };
121
+ Aggregation.prototype.group = function (param) {
122
+ return this._pipe('group', param);
123
+ };
124
+ Aggregation.prototype.limit = function (param) {
125
+ return this._pipe('limit', param);
126
+ };
127
+ Aggregation.prototype.match = function (param) {
128
+ return this._pipe('match', query_1.QuerySerializer.encode(param));
129
+ };
130
+ Aggregation.prototype.project = function (param) {
131
+ return this._pipe('project', param);
132
+ };
133
+ Aggregation.prototype.lookup = function (param) {
134
+ return this._pipe('lookup', param);
135
+ };
136
+ Aggregation.prototype.replaceRoot = function (param) {
137
+ return this._pipe('replaceRoot', param);
138
+ };
139
+ Aggregation.prototype.sample = function (param) {
140
+ return this._pipe('sample', param);
141
+ };
142
+ Aggregation.prototype.skip = function (param) {
143
+ return this._pipe('skip', param);
144
+ };
145
+ Aggregation.prototype.sort = function (param) {
146
+ return this._pipe('sort', param);
147
+ };
148
+ Aggregation.prototype.sortByCount = function (param) {
149
+ return this._pipe('sortByCount', param);
150
+ };
151
+ Aggregation.prototype.unwind = function (param) {
152
+ return this._pipe('unwind', param);
153
+ };
154
+ return Aggregation;
155
+ }());
156
+ exports.default = Aggregation;
@@ -1,9 +1,9 @@
1
- import { DocumentReference } from './document';
2
- import { Query } from './query';
3
- import Aggregation from './aggregate';
4
- export declare class CollectionReference extends Query {
5
- readonly name: string;
6
- doc(docID?: string | number): DocumentReference;
7
- add(data: Object, callback?: any): Promise<any>;
8
- aggregate(): Aggregation;
9
- }
1
+ import { DocumentReference } from './document';
2
+ import { Query } from './query';
3
+ import Aggregation from './aggregate';
4
+ export declare class CollectionReference extends Query {
5
+ readonly name: string;
6
+ doc(docID?: string | number): DocumentReference;
7
+ add(data: Object, callback?: any): Promise<any>;
8
+ aggregate(): Aggregation;
9
+ }
@@ -1,46 +1,46 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- var document_1 = require("./document");
17
- var query_1 = require("./query");
18
- var aggregate_1 = require("./aggregate");
19
- var CollectionReference = (function (_super) {
20
- __extends(CollectionReference, _super);
21
- function CollectionReference(db, coll) {
22
- return _super.call(this, db, coll) || this;
23
- }
24
- Object.defineProperty(CollectionReference.prototype, "name", {
25
- get: function () {
26
- return this._coll;
27
- },
28
- enumerable: true,
29
- configurable: true
30
- });
31
- CollectionReference.prototype.doc = function (docID) {
32
- if (typeof docID !== 'string' && typeof docID !== 'number') {
33
- throw new Error('docId必须为字符串或数字');
34
- }
35
- return new document_1.DocumentReference(this._db, this._coll, docID);
36
- };
37
- CollectionReference.prototype.add = function (data, callback) {
38
- var docRef = new document_1.DocumentReference(this._db, this._coll, undefined);
39
- return docRef.create(data, callback);
40
- };
41
- CollectionReference.prototype.aggregate = function () {
42
- return new aggregate_1.default(this._db, this._coll);
43
- };
44
- return CollectionReference;
45
- }(query_1.Query));
46
- exports.CollectionReference = CollectionReference;
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ var document_1 = require("./document");
17
+ var query_1 = require("./query");
18
+ var aggregate_1 = require("./aggregate");
19
+ var CollectionReference = (function (_super) {
20
+ __extends(CollectionReference, _super);
21
+ function CollectionReference(db, coll) {
22
+ return _super.call(this, db, coll) || this;
23
+ }
24
+ Object.defineProperty(CollectionReference.prototype, "name", {
25
+ get: function () {
26
+ return this._coll;
27
+ },
28
+ enumerable: true,
29
+ configurable: true
30
+ });
31
+ CollectionReference.prototype.doc = function (docID) {
32
+ if (typeof docID !== 'string' && typeof docID !== 'number') {
33
+ throw new Error('docId必须为字符串或数字');
34
+ }
35
+ return new document_1.DocumentReference(this._db, this._coll, docID);
36
+ };
37
+ CollectionReference.prototype.add = function (data, callback) {
38
+ var docRef = new document_1.DocumentReference(this._db, this._coll, undefined);
39
+ return docRef.create(data, callback);
40
+ };
41
+ CollectionReference.prototype.aggregate = function () {
42
+ return new aggregate_1.default(this._db, this._coll);
43
+ };
44
+ return CollectionReference;
45
+ }(query_1.Query));
46
+ exports.CollectionReference = CollectionReference;