@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
@@ -4,17 +4,18 @@ import { getType, isArray } from '../utils/type';
4
4
  import { operatorToString } from '../operator-map';
5
5
  import { flattenQueryObject, encodeInternalDataType, mergeConditionAfterEncode } from './common';
6
6
  import { stringifyByEJSON } from '../utils/utils';
7
- export class UpdateSerializer {
8
- constructor() { }
9
- static encode(query) {
10
- const stringifier = new UpdateSerializer();
11
- return stringifier.encodeUpdate(query);
7
+ var UpdateSerializer = (function () {
8
+ function UpdateSerializer() {
12
9
  }
13
- static encodeEJSON(query, raw) {
14
- const stringifier = new UpdateSerializer();
10
+ UpdateSerializer.encode = function (query) {
11
+ var stringifier = new UpdateSerializer();
12
+ return stringifier.encodeUpdate(query);
13
+ };
14
+ UpdateSerializer.encodeEJSON = function (query, raw) {
15
+ var stringifier = new UpdateSerializer();
15
16
  return stringifyByEJSON(raw ? query : stringifier.encodeUpdate(query));
16
- }
17
- encodeUpdate(query) {
17
+ };
18
+ UpdateSerializer.prototype.encodeUpdate = function (query) {
18
19
  if (isUpdateCommand(query)) {
19
20
  return this.encodeUpdateCommand(query);
20
21
  }
@@ -24,8 +25,8 @@ export class UpdateSerializer {
24
25
  else {
25
26
  return query;
26
27
  }
27
- }
28
- encodeUpdateCommand(query) {
28
+ };
29
+ UpdateSerializer.prototype.encodeUpdateCommand = function (query) {
29
30
  if (query.fieldName === SYMBOL_UNSET_FIELD_NAME) {
30
31
  throw new Error('Cannot encode a comparison command with unset field name');
31
32
  }
@@ -43,31 +44,33 @@ export class UpdateSerializer {
43
44
  return this.encodeFieldUpdateCommand(query);
44
45
  }
45
46
  }
46
- }
47
- encodeFieldUpdateCommand(query) {
48
- const $op = operatorToString(query.operator);
47
+ };
48
+ UpdateSerializer.prototype.encodeFieldUpdateCommand = function (query) {
49
+ var _a, _b, _c, _d;
50
+ var $op = operatorToString(query.operator);
49
51
  switch (query.operator) {
50
52
  case UPDATE_COMMANDS_LITERAL.REMOVE: {
51
- return {
52
- [$op]: {
53
- [query.fieldName]: ''
54
- }
55
- };
53
+ return _a = {},
54
+ _a[$op] = (_b = {},
55
+ _b[query.fieldName] = '',
56
+ _b),
57
+ _a;
56
58
  }
57
59
  default: {
58
- return {
59
- [$op]: {
60
- [query.fieldName]: query.operands[0]
61
- }
62
- };
60
+ return _c = {},
61
+ _c[$op] = (_d = {},
62
+ _d[query.fieldName] = query.operands[0],
63
+ _d),
64
+ _c;
63
65
  }
64
66
  }
65
- }
66
- encodeArrayUpdateCommand(query) {
67
- const $op = operatorToString(query.operator);
67
+ };
68
+ UpdateSerializer.prototype.encodeArrayUpdateCommand = function (query) {
69
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
70
+ var $op = operatorToString(query.operator);
68
71
  switch (query.operator) {
69
72
  case UPDATE_COMMANDS_LITERAL.PUSH: {
70
- let modifiers;
73
+ var modifiers = void 0;
71
74
  if (isArray(query.operands)) {
72
75
  modifiers = {
73
76
  $each: query.operands.map(encodeInternalDataType)
@@ -76,64 +79,66 @@ export class UpdateSerializer {
76
79
  else {
77
80
  modifiers = query.operands;
78
81
  }
79
- return {
80
- [$op]: {
81
- [query.fieldName]: modifiers
82
- }
83
- };
82
+ return _a = {},
83
+ _a[$op] = (_b = {},
84
+ _b[query.fieldName] = modifiers,
85
+ _b),
86
+ _a;
84
87
  }
85
88
  case UPDATE_COMMANDS_LITERAL.UNSHIFT: {
86
- const modifiers = {
89
+ var modifiers = {
87
90
  $each: query.operands.map(encodeInternalDataType),
88
91
  $position: 0
89
92
  };
90
- return {
91
- [$op]: {
92
- [query.fieldName]: modifiers
93
- }
94
- };
93
+ return _c = {},
94
+ _c[$op] = (_d = {},
95
+ _d[query.fieldName] = modifiers,
96
+ _d),
97
+ _c;
95
98
  }
96
99
  case UPDATE_COMMANDS_LITERAL.POP: {
97
- return {
98
- [$op]: {
99
- [query.fieldName]: 1
100
- }
101
- };
100
+ return _e = {},
101
+ _e[$op] = (_f = {},
102
+ _f[query.fieldName] = 1,
103
+ _f),
104
+ _e;
102
105
  }
103
106
  case UPDATE_COMMANDS_LITERAL.SHIFT: {
104
- return {
105
- [$op]: {
106
- [query.fieldName]: -1
107
- }
108
- };
107
+ return _g = {},
108
+ _g[$op] = (_h = {},
109
+ _h[query.fieldName] = -1,
110
+ _h),
111
+ _g;
109
112
  }
110
113
  default: {
111
- return {
112
- [$op]: {
113
- [query.fieldName]: encodeInternalDataType(query.operands)
114
- }
115
- };
114
+ return _j = {},
115
+ _j[$op] = (_k = {},
116
+ _k[query.fieldName] = encodeInternalDataType(query.operands),
117
+ _k),
118
+ _j;
116
119
  }
117
120
  }
118
- }
119
- encodeUpdateObject(query) {
120
- const flattened = flattenQueryObject(query);
121
- for (const key in flattened) {
121
+ };
122
+ UpdateSerializer.prototype.encodeUpdateObject = function (query) {
123
+ var flattened = flattenQueryObject(query);
124
+ for (var key in flattened) {
122
125
  if (/^\$/.test(key))
123
126
  continue;
124
- let val = flattened[key];
127
+ var val = flattened[key];
125
128
  if (isUpdateCommand(val)) {
126
129
  flattened[key] = val._setFieldName(key);
127
- const condition = this.encodeUpdateCommand(flattened[key]);
130
+ var condition = this.encodeUpdateCommand(flattened[key]);
128
131
  mergeConditionAfterEncode(flattened, condition, key);
129
132
  }
130
133
  else {
131
134
  flattened[key] = val = encodeInternalDataType(val);
132
- const $setCommand = new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val], key);
133
- const condition = this.encodeUpdateCommand($setCommand);
135
+ var $setCommand = new UpdateCommand(UPDATE_COMMANDS_LITERAL.SET, [val], key);
136
+ var condition = this.encodeUpdateCommand($setCommand);
134
137
  mergeConditionAfterEncode(flattened, condition, key);
135
138
  }
136
139
  }
137
140
  return flattened;
138
- }
139
- }
141
+ };
142
+ return UpdateSerializer;
143
+ }());
144
+ export { UpdateSerializer };
@@ -3,7 +3,7 @@ export declare class ServerDate {
3
3
  constructor({ offset }?: {
4
4
  offset?: number;
5
5
  });
6
- readonly _internalType: import("../utils/symbol").InternalSymbol;
6
+ get _internalType(): import("../utils/symbol").InternalSymbol;
7
7
  parse(): {
8
8
  $tcb_server_date: {
9
9
  offset: number;
@@ -1,19 +1,26 @@
1
1
  import { SYMBOL_SERVER_DATE } from '../helper/symbol';
2
- export class ServerDate {
3
- constructor({ offset = 0 } = {}) {
2
+ var ServerDate = (function () {
3
+ function ServerDate(_a) {
4
+ var _b = _a === void 0 ? {} : _a, _c = _b.offset, offset = _c === void 0 ? 0 : _c;
4
5
  this.offset = offset;
5
6
  }
6
- get _internalType() {
7
- return SYMBOL_SERVER_DATE;
8
- }
9
- parse() {
7
+ Object.defineProperty(ServerDate.prototype, "_internalType", {
8
+ get: function () {
9
+ return SYMBOL_SERVER_DATE;
10
+ },
11
+ enumerable: false,
12
+ configurable: true
13
+ });
14
+ ServerDate.prototype.parse = function () {
10
15
  return {
11
16
  $tcb_server_date: {
12
17
  offset: this.offset
13
18
  }
14
19
  };
15
- }
16
- }
20
+ };
21
+ return ServerDate;
22
+ }());
23
+ export { ServerDate };
17
24
  export function ServerDateConstructor(opt) {
18
25
  return new ServerDate(opt);
19
26
  }
@@ -1,7 +1,7 @@
1
1
  import { DocumentReference } from './document';
2
2
  import { Query } from './query';
3
3
  export declare class CollectionReference extends Query {
4
- readonly name: string;
4
+ get name(): string;
5
5
  doc(docID?: string | number): DocumentReference;
6
6
  add(data: any): Promise<any>;
7
7
  }
@@ -2,10 +2,12 @@ var __extends = (this && this.__extends) || (function () {
2
2
  var extendStatics = function (d, b) {
3
3
  extendStatics = Object.setPrototypeOf ||
4
4
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
6
  return extendStatics(d, b);
7
7
  };
8
8
  return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
9
11
  extendStatics(d, b);
10
12
  function __() { this.constructor = d; }
11
13
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -22,7 +24,7 @@ var CollectionReference = (function (_super) {
22
24
  get: function () {
23
25
  return this._coll;
24
26
  },
25
- enumerable: true,
27
+ enumerable: false,
26
28
  configurable: true
27
29
  });
28
30
  CollectionReference.prototype.doc = function (docID) {
@@ -6,7 +6,7 @@ interface UpdateResult {
6
6
  requestId: string;
7
7
  updated: number;
8
8
  }
9
- declare type JsonString = string;
9
+ type JsonString = string;
10
10
  interface SetResult extends UpdateResult {
11
11
  upserted: JsonString;
12
12
  }
@@ -24,7 +24,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
24
24
  function verb(n) { return function (v) { return step([n, v]); }; }
25
25
  function step(op) {
26
26
  if (f) throw new TypeError("Generator is already executing.");
27
- while (_) try {
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
28
  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;
29
29
  if (y = 0, t) op = [op[0] & 2, t.value];
30
30
  switch (op[0]) {
@@ -85,8 +85,7 @@ var DocumentReference = (function () {
85
85
  inserted = EJSON.parse(res.inserted);
86
86
  ok = EJSON.parse(res.ok);
87
87
  if (ok == 1 && inserted == 1) {
88
- return [2, __assign(__assign({}, res), { ok: ok,
89
- inserted: inserted })];
88
+ return [2, __assign(__assign({}, res), { ok: ok, inserted: inserted })];
90
89
  }
91
90
  else {
92
91
  throw new Error(ERRORS.INSERT_DOC_FAIL.message);
@@ -1,100 +1,210 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
1
37
  import { Db } from '../index';
2
38
  import { CollectionReference } from '../collection';
3
39
  import { ERRORS } from '../const/code';
4
- const START = 'database.startTransaction';
5
- const COMMIT = 'database.commitTransaction';
6
- const ABORT = 'database.abortTransaction';
7
- export class Transaction {
8
- constructor(db) {
40
+ var START = 'database.startTransaction';
41
+ var COMMIT = 'database.commitTransaction';
42
+ var ABORT = 'database.abortTransaction';
43
+ var Transaction = (function () {
44
+ function Transaction(db) {
9
45
  this._db = db;
10
- this._request = new Db.reqClass(this._db.config);
46
+ this._request = Db.createRequest(this._db.config);
11
47
  this.aborted = false;
12
48
  this.commited = false;
13
49
  this.inited = false;
14
50
  }
15
- async init() {
16
- const res = await this._request.send(START);
17
- if (res.code) {
18
- throw res;
19
- }
20
- this.inited = true;
21
- this._id = res.transactionId;
22
- }
23
- collection(collName) {
51
+ Transaction.prototype.init = function () {
52
+ return __awaiter(this, void 0, void 0, function () {
53
+ var res;
54
+ return __generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0: return [4, this._request.send(START)];
57
+ case 1:
58
+ res = _a.sent();
59
+ if (res.code) {
60
+ throw res;
61
+ }
62
+ this.inited = true;
63
+ this._id = res.transactionId;
64
+ return [2];
65
+ }
66
+ });
67
+ });
68
+ };
69
+ Transaction.prototype.collection = function (collName) {
24
70
  if (!collName) {
25
71
  throw new Error('Collection name is required');
26
72
  }
27
73
  return new CollectionReference(this._db, collName, {}, this._id);
28
- }
29
- getTransactionId() {
74
+ };
75
+ Transaction.prototype.getTransactionId = function () {
30
76
  return this._id;
31
- }
32
- getRequestMethod() {
77
+ };
78
+ Transaction.prototype.getRequestMethod = function () {
33
79
  return this._request;
34
- }
35
- async commit() {
36
- const param = {
37
- transactionId: this._id
38
- };
39
- const res = await this._request.send(COMMIT, param);
40
- if (res.code)
41
- throw res;
42
- this.commited = true;
43
- return res;
44
- }
45
- async rollback(customRollbackRes) {
46
- const param = {
47
- transactionId: this._id
48
- };
49
- const res = await this._request.send(ABORT, param);
50
- if (res.code)
51
- throw res;
52
- this.aborted = true;
53
- this.abortReason = customRollbackRes;
54
- return res;
55
- }
56
- }
57
- export async function startTransaction() {
58
- const transaction = new Transaction(this);
59
- await transaction.init();
60
- return transaction;
61
- }
62
- export async function runTransaction(callback, times = 3) {
63
- let transaction;
64
- try {
65
- transaction = new Transaction(this);
66
- await transaction.init();
67
- const callbackRes = await callback(transaction);
68
- if (transaction.aborted === true) {
69
- throw transaction.abortReason;
70
- }
71
- await transaction.commit();
72
- return callbackRes;
73
- }
74
- catch (error) {
75
- if (transaction.inited === false) {
76
- throw error;
77
- }
78
- const throwWithRollback = async (error) => {
79
- if (!transaction.aborted && !transaction.commited) {
80
- try {
81
- await transaction.rollback();
80
+ };
81
+ Transaction.prototype.commit = function () {
82
+ return __awaiter(this, void 0, void 0, function () {
83
+ var param, res;
84
+ return __generator(this, function (_a) {
85
+ switch (_a.label) {
86
+ case 0:
87
+ param = {
88
+ transactionId: this._id
89
+ };
90
+ return [4, this._request.send(COMMIT, param)];
91
+ case 1:
92
+ res = _a.sent();
93
+ if (res.code)
94
+ throw res;
95
+ this.commited = true;
96
+ return [2, res];
82
97
  }
83
- catch (err) {
98
+ });
99
+ });
100
+ };
101
+ Transaction.prototype.rollback = function (customRollbackRes) {
102
+ return __awaiter(this, void 0, void 0, function () {
103
+ var param, res;
104
+ return __generator(this, function (_a) {
105
+ switch (_a.label) {
106
+ case 0:
107
+ param = {
108
+ transactionId: this._id
109
+ };
110
+ return [4, this._request.send(ABORT, param)];
111
+ case 1:
112
+ res = _a.sent();
113
+ if (res.code)
114
+ throw res;
115
+ this.aborted = true;
116
+ this.abortReason = customRollbackRes;
117
+ return [2, res];
84
118
  }
85
- throw error;
119
+ });
120
+ });
121
+ };
122
+ return Transaction;
123
+ }());
124
+ export { Transaction };
125
+ export function startTransaction() {
126
+ return __awaiter(this, void 0, void 0, function () {
127
+ var transaction;
128
+ return __generator(this, function (_a) {
129
+ switch (_a.label) {
130
+ case 0:
131
+ transaction = new Transaction(this);
132
+ return [4, transaction.init()];
133
+ case 1:
134
+ _a.sent();
135
+ return [2, transaction];
86
136
  }
87
- if (transaction.aborted === true) {
88
- throw transaction.abortReason;
137
+ });
138
+ });
139
+ }
140
+ export function runTransaction(callback, times) {
141
+ if (times === void 0) { times = 3; }
142
+ return __awaiter(this, void 0, void 0, function () {
143
+ var transaction, callbackRes, error_1, throwWithRollback;
144
+ var _this = this;
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0:
148
+ _a.trys.push([0, 4, , 10]);
149
+ transaction = new Transaction(this);
150
+ return [4, transaction.init()];
151
+ case 1:
152
+ _a.sent();
153
+ return [4, callback(transaction)];
154
+ case 2:
155
+ callbackRes = _a.sent();
156
+ if (transaction.aborted === true) {
157
+ throw transaction.abortReason;
158
+ }
159
+ return [4, transaction.commit()];
160
+ case 3:
161
+ _a.sent();
162
+ return [2, callbackRes];
163
+ case 4:
164
+ error_1 = _a.sent();
165
+ if (transaction.inited === false) {
166
+ throw error_1;
167
+ }
168
+ throwWithRollback = function (error) { return __awaiter(_this, void 0, void 0, function () {
169
+ var err_1;
170
+ return __generator(this, function (_a) {
171
+ switch (_a.label) {
172
+ case 0:
173
+ if (!(!transaction.aborted && !transaction.commited)) return [3, 5];
174
+ _a.label = 1;
175
+ case 1:
176
+ _a.trys.push([1, 3, , 4]);
177
+ return [4, transaction.rollback()];
178
+ case 2:
179
+ _a.sent();
180
+ return [3, 4];
181
+ case 3:
182
+ err_1 = _a.sent();
183
+ return [3, 4];
184
+ case 4: throw error;
185
+ case 5:
186
+ if (transaction.aborted === true) {
187
+ throw transaction.abortReason;
188
+ }
189
+ throw error;
190
+ }
191
+ });
192
+ }); };
193
+ if (!(times <= 0)) return [3, 6];
194
+ return [4, throwWithRollback(error_1)];
195
+ case 5:
196
+ _a.sent();
197
+ _a.label = 6;
198
+ case 6:
199
+ if (!(error_1 && error_1.code === ERRORS.DATABASE_TRANSACTION_CONFLICT.code)) return [3, 8];
200
+ return [4, runTransaction.bind(this)(callback, --times)];
201
+ case 7: return [2, _a.sent()];
202
+ case 8: return [4, throwWithRollback(error_1)];
203
+ case 9:
204
+ _a.sent();
205
+ return [3, 10];
206
+ case 10: return [2];
89
207
  }
90
- throw error;
91
- };
92
- if (times <= 0) {
93
- await throwWithRollback(error);
94
- }
95
- if (error && error.code === ERRORS.DATABASE_TRANSACTION_CONFLICT.code) {
96
- return await runTransaction.bind(this)(callback, --times);
97
- }
98
- await throwWithRollback(error);
99
- }
208
+ });
209
+ });
100
210
  }
@@ -1,5 +1,43 @@
1
1
  import { Transaction } from './index';
2
+ import { OrderByDirection } from '../constant';
3
+ interface QueryOrder {
4
+ field?: string;
5
+ direction?: 'asc' | 'desc';
6
+ }
7
+ interface QueryOption {
8
+ limit?: number;
9
+ offset?: number;
10
+ projection?: Object;
11
+ }
12
+ interface GetResult {
13
+ data: any[];
14
+ requestId: string;
15
+ total?: number;
16
+ limit?: number;
17
+ offset?: number;
18
+ }
19
+ interface UpdateResult {
20
+ requestId: string;
21
+ updated: number;
22
+ }
23
+ interface DeleteResult {
24
+ requestId: string;
25
+ deleted: number | string;
26
+ }
2
27
  export declare class Query {
3
28
  protected _transaction: Transaction;
4
- constructor(transaction: Transaction, coll: string);
29
+ constructor(transaction: Transaction, coll: string, fieldFilters?: Object, fieldOrders?: QueryOrder[], queryOptions?: QueryOption);
30
+ where(query: object): Query;
31
+ orderBy(fieldPath: string, directionStr: OrderByDirection): Query;
32
+ limit(limit: number): Query;
33
+ skip(offset: number): Query;
34
+ field(projection: any): Query;
35
+ get(): Promise<GetResult>;
36
+ count(): Promise<{
37
+ requestId: string;
38
+ total: number;
39
+ }>;
40
+ update(data: Object): Promise<UpdateResult>;
41
+ remove(): Promise<DeleteResult>;
5
42
  }
43
+ export {};