@cloudbase/database 1.4.3 → 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.
- package/dist/commonjs/ObjectId/index.d.ts +1 -1
- package/dist/commonjs/ObjectId/index.js +16 -9
- package/dist/commonjs/aggregate.js +126 -75
- package/dist/commonjs/collection.d.ts +3 -2
- package/dist/commonjs/collection.js +131 -58
- package/dist/commonjs/command.d.ts +5 -5
- package/dist/commonjs/command.js +181 -154
- package/dist/commonjs/commands/logic.js +30 -20
- package/dist/commonjs/commands/query.d.ts +1 -1
- package/dist/commonjs/commands/query.js +85 -65
- package/dist/commonjs/commands/update.js +9 -7
- package/dist/commonjs/config/error.config.js +1 -0
- package/dist/commonjs/const/code.js +1 -0
- package/dist/commonjs/constant.d.ts +7 -7
- package/dist/commonjs/constant.js +13 -11
- package/dist/commonjs/document.d.ts +10 -6
- package/dist/commonjs/document.js +305 -193
- package/dist/commonjs/geo/index.js +20 -9
- package/dist/commonjs/geo/lineString.d.ts +1 -1
- package/dist/commonjs/geo/lineString.js +62 -33
- package/dist/commonjs/geo/multiLineString.d.ts +1 -1
- package/dist/commonjs/geo/multiLineString.js +71 -32
- package/dist/commonjs/geo/multiPoint.d.ts +1 -1
- package/dist/commonjs/geo/multiPoint.js +58 -29
- package/dist/commonjs/geo/multiPolygon.d.ts +1 -1
- package/dist/commonjs/geo/multiPolygon.js +96 -36
- package/dist/commonjs/geo/point.d.ts +1 -1
- package/dist/commonjs/geo/point.js +30 -23
- package/dist/commonjs/geo/polygon.d.ts +1 -1
- package/dist/commonjs/geo/polygon.js +78 -39
- package/dist/commonjs/helper/symbol.js +17 -5
- package/dist/commonjs/index.d.ts +8 -2
- package/dist/commonjs/index.js +73 -20
- package/dist/commonjs/lib/util.d.ts +1 -0
- package/dist/commonjs/lib/util.js +26 -0
- package/dist/commonjs/operator-map.js +7 -6
- package/dist/commonjs/query.d.ts +8 -4
- package/dist/commonjs/query.js +308 -201
- package/dist/commonjs/regexp/index.d.ts +1 -1
- package/dist/commonjs/regexp/index.js +16 -9
- package/dist/commonjs/serializer/common.d.ts +2 -2
- package/dist/commonjs/serializer/common.js +59 -22
- package/dist/commonjs/serializer/datatype.d.ts +2 -2
- package/dist/commonjs/serializer/datatype.js +58 -21
- package/dist/commonjs/serializer/query.d.ts +1 -1
- package/dist/commonjs/serializer/query.js +137 -127
- package/dist/commonjs/serializer/update.d.ts +1 -1
- package/dist/commonjs/serializer/update.js +83 -78
- package/dist/commonjs/serverDate/index.d.ts +1 -1
- package/dist/commonjs/serverDate/index.js +16 -9
- package/dist/commonjs/transaction/collection.d.ts +7 -0
- package/dist/commonjs/transaction/collection.js +49 -0
- package/dist/commonjs/transaction/document.d.ts +27 -0
- package/dist/commonjs/transaction/document.js +205 -0
- package/dist/commonjs/transaction/index.js +196 -86
- package/dist/commonjs/transaction/query.d.ts +43 -0
- package/dist/commonjs/transaction/query.js +261 -0
- package/dist/commonjs/typings/index.d.ts +4 -4
- package/dist/commonjs/typings/realtime.d.ts +16 -16
- package/dist/commonjs/util.js +123 -92
- package/dist/commonjs/utils/error.d.ts +2 -1
- package/dist/commonjs/utils/error.js +74 -38
- package/dist/commonjs/utils/symbol.js +33 -14
- package/dist/commonjs/utils/type.d.ts +1 -1
- package/dist/commonjs/utils/type.js +25 -13
- package/dist/commonjs/utils/utils.d.ts +4 -1
- package/dist/commonjs/utils/utils.js +93 -22
- package/dist/commonjs/validate.js +79 -63
- package/dist/esm/ObjectId/index.d.ts +1 -1
- package/dist/esm/ObjectId/index.js +15 -8
- package/dist/esm/aggregate.js +118 -66
- package/dist/esm/collection.d.ts +3 -2
- package/dist/esm/collection.js +125 -52
- package/dist/esm/command.d.ts +5 -5
- package/dist/esm/command.js +175 -147
- package/dist/esm/commands/logic.js +30 -20
- package/dist/esm/commands/query.d.ts +1 -1
- package/dist/esm/commands/query.js +91 -71
- package/dist/esm/commands/update.js +8 -6
- package/dist/esm/config/error.config.js +1 -1
- package/dist/esm/const/code.js +1 -1
- package/dist/esm/constant.d.ts +7 -7
- package/dist/esm/constant.js +12 -11
- package/dist/esm/document.d.ts +10 -6
- package/dist/esm/document.js +297 -185
- package/dist/esm/geo/interface.js +1 -0
- package/dist/esm/geo/lineString.d.ts +1 -1
- package/dist/esm/geo/lineString.js +57 -28
- package/dist/esm/geo/multiLineString.d.ts +1 -1
- package/dist/esm/geo/multiLineString.js +66 -27
- package/dist/esm/geo/multiPoint.d.ts +1 -1
- package/dist/esm/geo/multiPoint.js +53 -24
- package/dist/esm/geo/multiPolygon.d.ts +1 -1
- package/dist/esm/geo/multiPolygon.js +91 -31
- package/dist/esm/geo/point.d.ts +1 -1
- package/dist/esm/geo/point.js +26 -19
- package/dist/esm/geo/polygon.d.ts +1 -1
- package/dist/esm/geo/polygon.js +73 -34
- package/dist/esm/helper/symbol.js +13 -13
- package/dist/esm/index.d.ts +8 -2
- package/dist/esm/index.js +62 -9
- package/dist/esm/lib/util.d.ts +1 -0
- package/dist/esm/lib/util.js +22 -0
- package/dist/esm/operator-map.js +4 -4
- package/dist/esm/query.d.ts +8 -4
- package/dist/esm/query.js +299 -192
- package/dist/esm/regexp/index.d.ts +1 -1
- package/dist/esm/regexp/index.js +15 -8
- package/dist/esm/serializer/common.d.ts +2 -2
- package/dist/esm/serializer/common.js +49 -13
- package/dist/esm/serializer/datatype.d.ts +2 -2
- package/dist/esm/serializer/datatype.js +44 -8
- package/dist/esm/serializer/query.d.ts +1 -1
- package/dist/esm/serializer/query.js +112 -102
- package/dist/esm/serializer/update.d.ts +1 -1
- package/dist/esm/serializer/update.js +69 -64
- package/dist/esm/serverDate/index.d.ts +1 -1
- package/dist/esm/serverDate/index.js +15 -8
- package/dist/esm/transaction/collection.d.ts +7 -0
- package/dist/esm/transaction/collection.js +46 -0
- package/dist/esm/transaction/document.d.ts +27 -0
- package/dist/esm/transaction/document.js +202 -0
- package/dist/esm/transaction/index.js +191 -81
- package/dist/esm/transaction/query.d.ts +43 -0
- package/dist/esm/transaction/query.js +258 -0
- package/dist/esm/typings/index.d.ts +4 -4
- package/dist/esm/typings/index.js +1 -0
- package/dist/esm/typings/realtime.d.ts +16 -16
- package/dist/esm/typings/realtime.js +1 -0
- package/dist/esm/util.js +121 -90
- package/dist/esm/utils/error.d.ts +2 -1
- package/dist/esm/utils/error.js +70 -35
- package/dist/esm/utils/symbol.js +33 -14
- package/dist/esm/utils/type.d.ts +1 -1
- package/dist/esm/utils/type.js +12 -12
- package/dist/esm/utils/utils.d.ts +4 -1
- package/dist/esm/utils/utils.js +78 -16
- package/dist/esm/validate.js +65 -49
- package/jest.config.js +14 -0
- package/package.json +14 -10
- package/src/aggregate.ts +1 -5
- package/src/collection.ts +15 -2
- package/src/document.ts +45 -34
- package/src/index.ts +51 -4
- package/src/query.ts +33 -29
- package/src/serializer/query.ts +18 -6
- package/src/transaction/index.ts +1 -1
- package/src/typings/index.ts +0 -4
- package/src/utils/utils.ts +46 -0
- package/src/validate.ts +3 -6
- package/tests/gateway-contract.test.ts +180 -0
- package/tests/index.test.ts +283 -0
- package/tests/transaction-query.test.ts +207 -0
- package/tsconfig.esm.json +4 -2
- package/tsconfig.json +16 -6
- package/tsconfig.test.json +15 -0
- package/dist/commonjs/realtime/error.d.ts +0 -7
- package/dist/commonjs/realtime/error.js +0 -11
- package/dist/commonjs/realtime/listener.d.ts +0 -14
- package/dist/commonjs/realtime/listener.js +0 -17
- package/dist/commonjs/realtime/message.d.ts +0 -3
- package/dist/commonjs/realtime/message.js +0 -10
- package/dist/commonjs/realtime/snapshot.d.ts +0 -16
- package/dist/commonjs/realtime/snapshot.js +0 -42
- package/dist/commonjs/realtime/virtual-websocket-client.d.ts +0 -63
- package/dist/commonjs/realtime/virtual-websocket-client.js +0 -736
- package/dist/commonjs/realtime/websocket-client.d.ts +0 -78
- package/dist/commonjs/realtime/websocket-client.js +0 -567
- package/dist/commonjs/realtime/ws-event.d.ts +0 -126
- package/dist/commonjs/realtime/ws-event.js +0 -139
- package/dist/commonjs/transaction.d.ts +0 -42
- package/dist/commonjs/transaction.js +0 -126
- package/dist/esm/realtime/error.d.ts +0 -7
- package/dist/esm/realtime/error.js +0 -8
- package/dist/esm/realtime/listener.d.ts +0 -14
- package/dist/esm/realtime/listener.js +0 -14
- package/dist/esm/realtime/message.d.ts +0 -3
- package/dist/esm/realtime/message.js +0 -6
- package/dist/esm/realtime/snapshot.d.ts +0 -16
- package/dist/esm/realtime/snapshot.js +0 -39
- package/dist/esm/realtime/virtual-websocket-client.d.ts +0 -63
- package/dist/esm/realtime/virtual-websocket-client.js +0 -733
- package/dist/esm/realtime/websocket-client.d.ts +0 -78
- package/dist/esm/realtime/websocket-client.js +0 -564
- package/dist/esm/realtime/ws-event.d.ts +0 -126
- package/dist/esm/realtime/ws-event.js +0 -137
- package/dist/esm/transaction.d.ts +0 -42
- package/dist/esm/transaction.js +0 -121
- package/src/realtime/error.ts +0 -19
- package/src/realtime/listener.ts +0 -35
- package/src/realtime/message.ts +0 -14
- package/src/realtime/snapshot.ts +0 -60
- package/src/realtime/virtual-websocket-client.ts +0 -1195
- package/src/realtime/websocket-client.ts +0 -995
- package/src/realtime/ws-event.ts +0 -163
- package/src/transaction.ts +0 -190
|
@@ -1,121 +1,130 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const encoder = new QueryEncoder();
|
|
15
|
-
return encoder.encodeQuery(query);
|
|
16
|
-
}
|
|
17
|
-
static encodeEJSON(query, raw) {
|
|
18
|
-
const encoder = new QueryEncoder();
|
|
19
|
-
return utils_1.stringifyByEJSON(raw ? query : encoder.encodeQuery(query));
|
|
3
|
+
exports.QuerySerializer = void 0;
|
|
4
|
+
var query_1 = require("../commands/query");
|
|
5
|
+
var logic_1 = require("../commands/logic");
|
|
6
|
+
var symbol_1 = require("../helper/symbol");
|
|
7
|
+
var type_1 = require("../utils/type");
|
|
8
|
+
var operator_map_1 = require("../operator-map");
|
|
9
|
+
var common_1 = require("./common");
|
|
10
|
+
var utils_1 = require("../utils/utils");
|
|
11
|
+
var validate_1 = require("../validate");
|
|
12
|
+
var QuerySerializer = (function () {
|
|
13
|
+
function QuerySerializer() {
|
|
20
14
|
}
|
|
21
|
-
|
|
15
|
+
QuerySerializer.encode = function (query) {
|
|
16
|
+
var encoder = new QueryEncoder();
|
|
17
|
+
return encoder.encodeQuery(query);
|
|
18
|
+
};
|
|
19
|
+
QuerySerializer.encodeEJSON = function (query, raw) {
|
|
20
|
+
var encoder = new QueryEncoder();
|
|
21
|
+
return (0, utils_1.stringifyByEJSON)(raw ? query : encoder.encodeQuery(query));
|
|
22
|
+
};
|
|
23
|
+
return QuerySerializer;
|
|
24
|
+
}());
|
|
22
25
|
exports.QuerySerializer = QuerySerializer;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
var QueryEncoder = (function () {
|
|
27
|
+
function QueryEncoder() {
|
|
28
|
+
}
|
|
29
|
+
QueryEncoder.prototype.encodeQuery = function (query, key) {
|
|
30
|
+
var _a, _b, _c;
|
|
31
|
+
if ((0, common_1.isConversionRequired)(query)) {
|
|
32
|
+
if ((0, logic_1.isLogicCommand)(query)) {
|
|
27
33
|
return this.encodeLogicCommand(query);
|
|
28
34
|
}
|
|
29
|
-
else if (query_1.isQueryCommand(query)) {
|
|
35
|
+
else if ((0, query_1.isQueryCommand)(query)) {
|
|
30
36
|
return this.encodeQueryCommand(query);
|
|
31
37
|
}
|
|
32
|
-
else if (type_1.isRegExp(query)) {
|
|
33
|
-
return { [key]
|
|
38
|
+
else if ((0, type_1.isRegExp)(query)) {
|
|
39
|
+
return _a = {}, _a[key] = this.encodeRegExp(query), _a;
|
|
34
40
|
}
|
|
35
|
-
else if (type_1.isDate(query)) {
|
|
36
|
-
return { [key]
|
|
41
|
+
else if ((0, type_1.isDate)(query)) {
|
|
42
|
+
return _b = {}, _b[key] = (0, common_1.encodeInternalDataType)(query), _b;
|
|
37
43
|
}
|
|
38
44
|
else {
|
|
39
|
-
return { [key]
|
|
45
|
+
return _c = {}, _c[key] = this.encodeQueryObject(query), _c;
|
|
40
46
|
}
|
|
41
47
|
}
|
|
42
48
|
else {
|
|
43
|
-
if (type_1.isObject(query)) {
|
|
49
|
+
if ((0, type_1.isObject)(query)) {
|
|
44
50
|
return this.encodeQueryObject(query);
|
|
45
51
|
}
|
|
46
52
|
else {
|
|
47
53
|
return query;
|
|
48
54
|
}
|
|
49
55
|
}
|
|
50
|
-
}
|
|
51
|
-
encodeRegExp(query) {
|
|
56
|
+
};
|
|
57
|
+
QueryEncoder.prototype.encodeRegExp = function (query) {
|
|
52
58
|
return {
|
|
53
59
|
$regularExpression: {
|
|
54
60
|
pattern: query.source,
|
|
55
61
|
options: query.flags
|
|
56
62
|
}
|
|
57
63
|
};
|
|
58
|
-
}
|
|
59
|
-
encodeLogicCommand(query) {
|
|
64
|
+
};
|
|
65
|
+
QueryEncoder.prototype.encodeLogicCommand = function (query) {
|
|
66
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
67
|
+
var _this = this;
|
|
60
68
|
switch (query.operator) {
|
|
61
69
|
case logic_1.LOGIC_COMMANDS_LITERAL.NOR:
|
|
62
70
|
case logic_1.LOGIC_COMMANDS_LITERAL.AND:
|
|
63
71
|
case logic_1.LOGIC_COMMANDS_LITERAL.OR: {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
[$op]
|
|
68
|
-
|
|
72
|
+
var $op = (0, operator_map_1.operatorToString)(query.operator);
|
|
73
|
+
var subqueries = query.operands.map(function (oprand) { return _this.encodeQuery(oprand, query.fieldName); });
|
|
74
|
+
return _a = {},
|
|
75
|
+
_a[$op] = subqueries,
|
|
76
|
+
_a;
|
|
69
77
|
}
|
|
70
78
|
case logic_1.LOGIC_COMMANDS_LITERAL.NOT: {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (type_1.isRegExp(operatorExpression)) {
|
|
74
|
-
return {
|
|
75
|
-
[query.fieldName]
|
|
76
|
-
[$op]
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
var $op = (0, operator_map_1.operatorToString)(query.operator);
|
|
80
|
+
var operatorExpression = query.operands[0];
|
|
81
|
+
if ((0, type_1.isRegExp)(operatorExpression)) {
|
|
82
|
+
return _b = {},
|
|
83
|
+
_b[query.fieldName] = (_c = {},
|
|
84
|
+
_c[$op] = this.encodeRegExp(operatorExpression),
|
|
85
|
+
_c),
|
|
86
|
+
_b;
|
|
79
87
|
}
|
|
80
88
|
else {
|
|
81
|
-
|
|
82
|
-
return {
|
|
83
|
-
[query.fieldName]
|
|
84
|
-
[$op]
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
var subqueries = this.encodeQuery(operatorExpression)[query.fieldName];
|
|
90
|
+
return _d = {},
|
|
91
|
+
_d[query.fieldName] = (_e = {},
|
|
92
|
+
_e[$op] = subqueries,
|
|
93
|
+
_e),
|
|
94
|
+
_d;
|
|
87
95
|
}
|
|
88
96
|
}
|
|
89
97
|
default: {
|
|
90
|
-
|
|
98
|
+
var $op = (0, operator_map_1.operatorToString)(query.operator);
|
|
91
99
|
if (query.operands.length === 1) {
|
|
92
|
-
|
|
93
|
-
return {
|
|
94
|
-
[$op]
|
|
95
|
-
|
|
100
|
+
var subquery = this.encodeQuery(query.operands[0]);
|
|
101
|
+
return _f = {},
|
|
102
|
+
_f[$op] = subquery,
|
|
103
|
+
_f;
|
|
96
104
|
}
|
|
97
105
|
else {
|
|
98
|
-
|
|
99
|
-
return {
|
|
100
|
-
[$op]
|
|
101
|
-
|
|
106
|
+
var subqueries = query.operands.map(this.encodeQuery.bind(this));
|
|
107
|
+
return _g = {},
|
|
108
|
+
_g[$op] = subqueries,
|
|
109
|
+
_g;
|
|
102
110
|
}
|
|
103
111
|
}
|
|
104
112
|
}
|
|
105
|
-
}
|
|
106
|
-
encodeQueryCommand(query) {
|
|
107
|
-
if (query_1.isComparisonCommand(query)) {
|
|
113
|
+
};
|
|
114
|
+
QueryEncoder.prototype.encodeQueryCommand = function (query) {
|
|
115
|
+
if ((0, query_1.isComparisonCommand)(query)) {
|
|
108
116
|
return this.encodeComparisonCommand(query);
|
|
109
117
|
}
|
|
110
118
|
else {
|
|
111
119
|
return this.encodeComparisonCommand(query);
|
|
112
120
|
}
|
|
113
|
-
}
|
|
114
|
-
encodeComparisonCommand(query) {
|
|
121
|
+
};
|
|
122
|
+
QueryEncoder.prototype.encodeComparisonCommand = function (query) {
|
|
123
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
115
124
|
if (query.fieldName === symbol_1.SYMBOL_UNSET_FIELD_NAME) {
|
|
116
125
|
throw new Error('Cannot encode a comparison command with unset field name');
|
|
117
126
|
}
|
|
118
|
-
|
|
127
|
+
var $op = (0, operator_map_1.operatorToString)(query.operator);
|
|
119
128
|
switch (query.operator) {
|
|
120
129
|
case query_1.QUERY_COMMANDS_LITERAL.EQ:
|
|
121
130
|
case query_1.QUERY_COMMANDS_LITERAL.NEQ:
|
|
@@ -127,122 +136,122 @@ class QueryEncoder {
|
|
|
127
136
|
case query_1.QUERY_COMMANDS_LITERAL.EXISTS:
|
|
128
137
|
case query_1.QUERY_COMMANDS_LITERAL.SIZE:
|
|
129
138
|
case query_1.QUERY_COMMANDS_LITERAL.MOD: {
|
|
130
|
-
return {
|
|
131
|
-
[query.fieldName]
|
|
132
|
-
[$op]
|
|
133
|
-
|
|
134
|
-
|
|
139
|
+
return _a = {},
|
|
140
|
+
_a[query.fieldName] = (_b = {},
|
|
141
|
+
_b[$op] = (0, common_1.encodeInternalDataType)(query.operands[0]),
|
|
142
|
+
_b),
|
|
143
|
+
_a;
|
|
135
144
|
}
|
|
136
145
|
case query_1.QUERY_COMMANDS_LITERAL.IN:
|
|
137
146
|
case query_1.QUERY_COMMANDS_LITERAL.NIN:
|
|
138
147
|
case query_1.QUERY_COMMANDS_LITERAL.ALL: {
|
|
139
|
-
return {
|
|
140
|
-
[query.fieldName]
|
|
141
|
-
[$op]
|
|
142
|
-
|
|
143
|
-
|
|
148
|
+
return _c = {},
|
|
149
|
+
_c[query.fieldName] = (_d = {},
|
|
150
|
+
_d[$op] = (0, common_1.encodeInternalDataType)(query.operands),
|
|
151
|
+
_d),
|
|
152
|
+
_c;
|
|
144
153
|
}
|
|
145
154
|
case query_1.QUERY_COMMANDS_LITERAL.GEO_NEAR: {
|
|
146
|
-
|
|
147
|
-
return {
|
|
148
|
-
[query.fieldName]
|
|
155
|
+
var options = query.operands[0];
|
|
156
|
+
return _e = {},
|
|
157
|
+
_e[query.fieldName] = {
|
|
149
158
|
$nearSphere: {
|
|
150
159
|
$geometry: options.geometry.toJSON(),
|
|
151
160
|
$maxDistance: options.maxDistance,
|
|
152
161
|
$minDistance: options.minDistance
|
|
153
162
|
}
|
|
154
|
-
}
|
|
155
|
-
|
|
163
|
+
},
|
|
164
|
+
_e;
|
|
156
165
|
}
|
|
157
166
|
case query_1.QUERY_COMMANDS_LITERAL.GEO_WITHIN: {
|
|
158
|
-
|
|
167
|
+
var options = query.operands[0];
|
|
159
168
|
if (options.centerSphere) {
|
|
160
169
|
validate_1.Validate.isCentersPhere(options.centerSphere);
|
|
161
|
-
|
|
170
|
+
var centerSphere = options.centerSphere;
|
|
162
171
|
if (centerSphere[0]._internalType === symbol_1.SYMBOL_GEO_POINT) {
|
|
163
|
-
return {
|
|
164
|
-
[query.fieldName]
|
|
172
|
+
return _f = {},
|
|
173
|
+
_f[query.fieldName] = {
|
|
165
174
|
$geoWithin: {
|
|
166
175
|
$centerSphere: [centerSphere[0].toJSON().coordinates, centerSphere[1]]
|
|
167
176
|
}
|
|
168
|
-
}
|
|
169
|
-
|
|
177
|
+
},
|
|
178
|
+
_f;
|
|
170
179
|
}
|
|
171
|
-
return {
|
|
172
|
-
[query.fieldName]
|
|
180
|
+
return _g = {},
|
|
181
|
+
_g[query.fieldName] = {
|
|
173
182
|
$geoWithin: {
|
|
174
183
|
$centerSphere: options.centerSphere
|
|
175
184
|
}
|
|
176
|
-
}
|
|
177
|
-
|
|
185
|
+
},
|
|
186
|
+
_g;
|
|
178
187
|
}
|
|
179
|
-
return {
|
|
180
|
-
[query.fieldName]
|
|
188
|
+
return _h = {},
|
|
189
|
+
_h[query.fieldName] = {
|
|
181
190
|
$geoWithin: {
|
|
182
191
|
$geometry: options.geometry.toJSON()
|
|
183
192
|
}
|
|
184
|
-
}
|
|
185
|
-
|
|
193
|
+
},
|
|
194
|
+
_h;
|
|
186
195
|
}
|
|
187
196
|
case query_1.QUERY_COMMANDS_LITERAL.GEO_INTERSECTS: {
|
|
188
|
-
|
|
189
|
-
return {
|
|
190
|
-
[query.fieldName]
|
|
197
|
+
var options = query.operands[0];
|
|
198
|
+
return _j = {},
|
|
199
|
+
_j[query.fieldName] = {
|
|
191
200
|
$geoIntersects: {
|
|
192
201
|
$geometry: options.geometry.toJSON()
|
|
193
202
|
}
|
|
194
|
-
}
|
|
195
|
-
|
|
203
|
+
},
|
|
204
|
+
_j;
|
|
196
205
|
}
|
|
197
206
|
default: {
|
|
198
|
-
return {
|
|
199
|
-
[query.fieldName]
|
|
200
|
-
[$op]
|
|
201
|
-
|
|
202
|
-
|
|
207
|
+
return _k = {},
|
|
208
|
+
_k[query.fieldName] = (_l = {},
|
|
209
|
+
_l[$op] = (0, common_1.encodeInternalDataType)(query.operands[0]),
|
|
210
|
+
_l),
|
|
211
|
+
_k;
|
|
203
212
|
}
|
|
204
213
|
}
|
|
205
|
-
}
|
|
206
|
-
encodeQueryObject(query) {
|
|
207
|
-
|
|
208
|
-
for (
|
|
209
|
-
|
|
210
|
-
if (logic_1.isLogicCommand(val)) {
|
|
214
|
+
};
|
|
215
|
+
QueryEncoder.prototype.encodeQueryObject = function (query) {
|
|
216
|
+
var flattened = (0, common_1.flattenQueryObject)(query);
|
|
217
|
+
for (var key in flattened) {
|
|
218
|
+
var val = flattened[key];
|
|
219
|
+
if ((0, logic_1.isLogicCommand)(val)) {
|
|
211
220
|
flattened[key] = val._setFieldName(key);
|
|
212
|
-
|
|
221
|
+
var condition = this.encodeLogicCommand(flattened[key]);
|
|
213
222
|
this.mergeConditionAfterEncode(flattened, condition, key);
|
|
214
223
|
}
|
|
215
|
-
else if (query_1.isComparisonCommand(val)) {
|
|
224
|
+
else if ((0, query_1.isComparisonCommand)(val)) {
|
|
216
225
|
flattened[key] = val._setFieldName(key);
|
|
217
|
-
|
|
226
|
+
var condition = this.encodeComparisonCommand(flattened[key]);
|
|
218
227
|
this.mergeConditionAfterEncode(flattened, condition, key);
|
|
219
228
|
}
|
|
220
|
-
else if (common_1.isConversionRequired(val)) {
|
|
221
|
-
flattened[key] = common_1.encodeInternalDataType(val);
|
|
229
|
+
else if ((0, common_1.isConversionRequired)(val)) {
|
|
230
|
+
flattened[key] = (0, common_1.encodeInternalDataType)(val);
|
|
222
231
|
}
|
|
223
232
|
}
|
|
224
233
|
return flattened;
|
|
225
|
-
}
|
|
226
|
-
mergeConditionAfterEncode(query, condition, key) {
|
|
234
|
+
};
|
|
235
|
+
QueryEncoder.prototype.mergeConditionAfterEncode = function (query, condition, key) {
|
|
227
236
|
if (!condition[key]) {
|
|
228
237
|
delete query[key];
|
|
229
238
|
}
|
|
230
|
-
for (
|
|
239
|
+
for (var conditionKey in condition) {
|
|
231
240
|
if (query[conditionKey]) {
|
|
232
|
-
if (type_1.isArray(query[conditionKey])) {
|
|
241
|
+
if ((0, type_1.isArray)(query[conditionKey])) {
|
|
233
242
|
query[conditionKey] = query[conditionKey].concat(condition[conditionKey]);
|
|
234
243
|
}
|
|
235
|
-
else if (type_1.isObject(query[conditionKey])) {
|
|
236
|
-
if (type_1.isObject(condition[conditionKey])) {
|
|
244
|
+
else if ((0, type_1.isObject)(query[conditionKey])) {
|
|
245
|
+
if ((0, type_1.isObject)(condition[conditionKey])) {
|
|
237
246
|
Object.assign(query, condition);
|
|
238
247
|
}
|
|
239
248
|
else {
|
|
240
|
-
console.warn(
|
|
249
|
+
console.warn("unmergable condition, query is object but condition is ".concat((0, type_1.getType)(condition), ", can only overwrite"), condition, key);
|
|
241
250
|
query[conditionKey] = condition[conditionKey];
|
|
242
251
|
}
|
|
243
252
|
}
|
|
244
253
|
else {
|
|
245
|
-
console.warn(
|
|
254
|
+
console.warn("to-merge query is of type ".concat((0, type_1.getType)(query), ", can only overwrite"), query, condition, key);
|
|
246
255
|
query[conditionKey] = condition[conditionKey];
|
|
247
256
|
}
|
|
248
257
|
}
|
|
@@ -250,5 +259,6 @@ class QueryEncoder {
|
|
|
250
259
|
query[conditionKey] = condition[conditionKey];
|
|
251
260
|
}
|
|
252
261
|
}
|
|
253
|
-
}
|
|
254
|
-
|
|
262
|
+
};
|
|
263
|
+
return QueryEncoder;
|
|
264
|
+
}());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UpdateCommand } from '../commands/update';
|
|
2
2
|
import { LogicCommand } from '../commands/logic';
|
|
3
|
-
export
|
|
3
|
+
export type IQueryCondition = Record<string, any> | LogicCommand;
|
|
4
4
|
export interface IUpdateCondition {
|
|
5
5
|
[key: string]: any;
|
|
6
6
|
}
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const stringifier = new UpdateSerializer();
|
|
13
|
-
return stringifier.encodeUpdate(query);
|
|
14
|
-
}
|
|
15
|
-
static encodeEJSON(query, raw) {
|
|
16
|
-
const stringifier = new UpdateSerializer();
|
|
17
|
-
return utils_1.stringifyByEJSON(raw ? query : stringifier.encodeUpdate(query));
|
|
3
|
+
exports.UpdateSerializer = void 0;
|
|
4
|
+
var update_1 = require("../commands/update");
|
|
5
|
+
var symbol_1 = require("../helper/symbol");
|
|
6
|
+
var type_1 = require("../utils/type");
|
|
7
|
+
var operator_map_1 = require("../operator-map");
|
|
8
|
+
var common_1 = require("./common");
|
|
9
|
+
var utils_1 = require("../utils/utils");
|
|
10
|
+
var UpdateSerializer = (function () {
|
|
11
|
+
function UpdateSerializer() {
|
|
18
12
|
}
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
UpdateSerializer.encode = function (query) {
|
|
14
|
+
var stringifier = new UpdateSerializer();
|
|
15
|
+
return stringifier.encodeUpdate(query);
|
|
16
|
+
};
|
|
17
|
+
UpdateSerializer.encodeEJSON = function (query, raw) {
|
|
18
|
+
var stringifier = new UpdateSerializer();
|
|
19
|
+
return (0, utils_1.stringifyByEJSON)(raw ? query : stringifier.encodeUpdate(query));
|
|
20
|
+
};
|
|
21
|
+
UpdateSerializer.prototype.encodeUpdate = function (query) {
|
|
22
|
+
if ((0, update_1.isUpdateCommand)(query)) {
|
|
21
23
|
return this.encodeUpdateCommand(query);
|
|
22
24
|
}
|
|
23
|
-
else if (type_1.getType(query) === 'object') {
|
|
25
|
+
else if ((0, type_1.getType)(query) === 'object') {
|
|
24
26
|
return this.encodeUpdateObject(query);
|
|
25
27
|
}
|
|
26
28
|
else {
|
|
27
29
|
return query;
|
|
28
30
|
}
|
|
29
|
-
}
|
|
30
|
-
encodeUpdateCommand(query) {
|
|
31
|
+
};
|
|
32
|
+
UpdateSerializer.prototype.encodeUpdateCommand = function (query) {
|
|
31
33
|
if (query.fieldName === symbol_1.SYMBOL_UNSET_FIELD_NAME) {
|
|
32
34
|
throw new Error('Cannot encode a comparison command with unset field name');
|
|
33
35
|
}
|
|
@@ -45,32 +47,34 @@ class UpdateSerializer {
|
|
|
45
47
|
return this.encodeFieldUpdateCommand(query);
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
|
-
}
|
|
49
|
-
encodeFieldUpdateCommand(query) {
|
|
50
|
-
|
|
50
|
+
};
|
|
51
|
+
UpdateSerializer.prototype.encodeFieldUpdateCommand = function (query) {
|
|
52
|
+
var _a, _b, _c, _d;
|
|
53
|
+
var $op = (0, operator_map_1.operatorToString)(query.operator);
|
|
51
54
|
switch (query.operator) {
|
|
52
55
|
case update_1.UPDATE_COMMANDS_LITERAL.REMOVE: {
|
|
53
|
-
return {
|
|
54
|
-
[$op]
|
|
55
|
-
[query.fieldName]
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
return _a = {},
|
|
57
|
+
_a[$op] = (_b = {},
|
|
58
|
+
_b[query.fieldName] = '',
|
|
59
|
+
_b),
|
|
60
|
+
_a;
|
|
58
61
|
}
|
|
59
62
|
default: {
|
|
60
|
-
return {
|
|
61
|
-
[$op]
|
|
62
|
-
[query.fieldName]
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
return _c = {},
|
|
64
|
+
_c[$op] = (_d = {},
|
|
65
|
+
_d[query.fieldName] = query.operands[0],
|
|
66
|
+
_d),
|
|
67
|
+
_c;
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
|
-
}
|
|
68
|
-
encodeArrayUpdateCommand(query) {
|
|
69
|
-
|
|
70
|
+
};
|
|
71
|
+
UpdateSerializer.prototype.encodeArrayUpdateCommand = function (query) {
|
|
72
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
73
|
+
var $op = (0, operator_map_1.operatorToString)(query.operator);
|
|
70
74
|
switch (query.operator) {
|
|
71
75
|
case update_1.UPDATE_COMMANDS_LITERAL.PUSH: {
|
|
72
|
-
|
|
73
|
-
if (type_1.isArray(query.operands)) {
|
|
76
|
+
var modifiers = void 0;
|
|
77
|
+
if ((0, type_1.isArray)(query.operands)) {
|
|
74
78
|
modifiers = {
|
|
75
79
|
$each: query.operands.map(common_1.encodeInternalDataType)
|
|
76
80
|
};
|
|
@@ -78,65 +82,66 @@ class UpdateSerializer {
|
|
|
78
82
|
else {
|
|
79
83
|
modifiers = query.operands;
|
|
80
84
|
}
|
|
81
|
-
return {
|
|
82
|
-
[$op]
|
|
83
|
-
[query.fieldName]
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
return _a = {},
|
|
86
|
+
_a[$op] = (_b = {},
|
|
87
|
+
_b[query.fieldName] = modifiers,
|
|
88
|
+
_b),
|
|
89
|
+
_a;
|
|
86
90
|
}
|
|
87
91
|
case update_1.UPDATE_COMMANDS_LITERAL.UNSHIFT: {
|
|
88
|
-
|
|
92
|
+
var modifiers = {
|
|
89
93
|
$each: query.operands.map(common_1.encodeInternalDataType),
|
|
90
94
|
$position: 0
|
|
91
95
|
};
|
|
92
|
-
return {
|
|
93
|
-
[$op]
|
|
94
|
-
[query.fieldName]
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
return _c = {},
|
|
97
|
+
_c[$op] = (_d = {},
|
|
98
|
+
_d[query.fieldName] = modifiers,
|
|
99
|
+
_d),
|
|
100
|
+
_c;
|
|
97
101
|
}
|
|
98
102
|
case update_1.UPDATE_COMMANDS_LITERAL.POP: {
|
|
99
|
-
return {
|
|
100
|
-
[$op]
|
|
101
|
-
[query.fieldName]
|
|
102
|
-
|
|
103
|
-
|
|
103
|
+
return _e = {},
|
|
104
|
+
_e[$op] = (_f = {},
|
|
105
|
+
_f[query.fieldName] = 1,
|
|
106
|
+
_f),
|
|
107
|
+
_e;
|
|
104
108
|
}
|
|
105
109
|
case update_1.UPDATE_COMMANDS_LITERAL.SHIFT: {
|
|
106
|
-
return {
|
|
107
|
-
[$op]
|
|
108
|
-
[query.fieldName]
|
|
109
|
-
|
|
110
|
-
|
|
110
|
+
return _g = {},
|
|
111
|
+
_g[$op] = (_h = {},
|
|
112
|
+
_h[query.fieldName] = -1,
|
|
113
|
+
_h),
|
|
114
|
+
_g;
|
|
111
115
|
}
|
|
112
116
|
default: {
|
|
113
|
-
return {
|
|
114
|
-
[$op]
|
|
115
|
-
[query.fieldName]
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
return _j = {},
|
|
118
|
+
_j[$op] = (_k = {},
|
|
119
|
+
_k[query.fieldName] = (0, common_1.encodeInternalDataType)(query.operands),
|
|
120
|
+
_k),
|
|
121
|
+
_j;
|
|
118
122
|
}
|
|
119
123
|
}
|
|
120
|
-
}
|
|
121
|
-
encodeUpdateObject(query) {
|
|
122
|
-
|
|
123
|
-
for (
|
|
124
|
+
};
|
|
125
|
+
UpdateSerializer.prototype.encodeUpdateObject = function (query) {
|
|
126
|
+
var flattened = (0, common_1.flattenQueryObject)(query);
|
|
127
|
+
for (var key in flattened) {
|
|
124
128
|
if (/^\$/.test(key))
|
|
125
129
|
continue;
|
|
126
|
-
|
|
127
|
-
if (update_1.isUpdateCommand(val)) {
|
|
130
|
+
var val = flattened[key];
|
|
131
|
+
if ((0, update_1.isUpdateCommand)(val)) {
|
|
128
132
|
flattened[key] = val._setFieldName(key);
|
|
129
|
-
|
|
130
|
-
common_1.mergeConditionAfterEncode(flattened, condition, key);
|
|
133
|
+
var condition = this.encodeUpdateCommand(flattened[key]);
|
|
134
|
+
(0, common_1.mergeConditionAfterEncode)(flattened, condition, key);
|
|
131
135
|
}
|
|
132
136
|
else {
|
|
133
|
-
flattened[key] = val = common_1.encodeInternalDataType(val);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
common_1.mergeConditionAfterEncode(flattened, condition, key);
|
|
137
|
+
flattened[key] = val = (0, common_1.encodeInternalDataType)(val);
|
|
138
|
+
var $setCommand = new update_1.UpdateCommand(update_1.UPDATE_COMMANDS_LITERAL.SET, [val], key);
|
|
139
|
+
var condition = this.encodeUpdateCommand($setCommand);
|
|
140
|
+
(0, common_1.mergeConditionAfterEncode)(flattened, condition, key);
|
|
137
141
|
}
|
|
138
142
|
}
|
|
139
143
|
return flattened;
|
|
140
|
-
}
|
|
141
|
-
|
|
144
|
+
};
|
|
145
|
+
return UpdateSerializer;
|
|
146
|
+
}());
|
|
142
147
|
exports.UpdateSerializer = UpdateSerializer;
|
|
@@ -3,7 +3,7 @@ export declare class ServerDate {
|
|
|
3
3
|
constructor({ offset }?: {
|
|
4
4
|
offset?: number;
|
|
5
5
|
});
|
|
6
|
-
|
|
6
|
+
get _internalType(): import("../utils/symbol").InternalSymbol;
|
|
7
7
|
parse(): {
|
|
8
8
|
$tcb_server_date: {
|
|
9
9
|
offset: number;
|