@cloudbase/database 1.3.0 → 1.4.1

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 (210) 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 +124 -124
  6. package/dist/commonjs/collection.d.ts +17 -17
  7. package/dist/commonjs/collection.js +72 -72
  8. package/dist/commonjs/command.d.ts +175 -175
  9. package/dist/commonjs/command.js +285 -285
  10. package/dist/commonjs/commands/logic.d.ts +24 -24
  11. package/dist/commonjs/commands/logic.js +79 -79
  12. package/dist/commonjs/commands/query.d.ts +73 -73
  13. package/dist/commonjs/commands/query.js +147 -147
  14. package/dist/commonjs/commands/update.d.ts +29 -29
  15. package/dist/commonjs/commands/update.js +49 -49
  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 +34 -34
  21. package/dist/commonjs/const/code.js +36 -36
  22. package/dist/commonjs/constant.d.ts +54 -54
  23. package/dist/commonjs/constant.js +76 -76
  24. package/dist/commonjs/document.d.ts +14 -14
  25. package/dist/commonjs/document.js +219 -219
  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 +57 -57
  32. package/dist/commonjs/geo/multiLineString.d.ts +18 -18
  33. package/dist/commonjs/geo/multiLineString.js +56 -56
  34. package/dist/commonjs/geo/multiPoint.d.ts +18 -18
  35. package/dist/commonjs/geo/multiPoint.js +50 -50
  36. package/dist/commonjs/geo/multiPolygon.d.ts +18 -18
  37. package/dist/commonjs/geo/multiPolygon.js +62 -62
  38. package/dist/commonjs/geo/point.d.ts +19 -19
  39. package/dist/commonjs/geo/point.js +43 -43
  40. package/dist/commonjs/geo/polygon.d.ts +19 -19
  41. package/dist/commonjs/geo/polygon.js +70 -70
  42. package/dist/commonjs/helper/symbol.d.ts +15 -14
  43. package/dist/commonjs/helper/symbol.js +20 -19
  44. package/dist/commonjs/index.d.ts +50 -49
  45. package/dist/commonjs/index.js +41 -39
  46. package/dist/commonjs/operator-map.d.ts +4 -4
  47. package/dist/commonjs/operator-map.js +23 -23
  48. package/dist/commonjs/query.d.ts +38 -38
  49. package/dist/commonjs/query.js +247 -247
  50. package/dist/commonjs/realtime/error.d.ts +7 -7
  51. package/dist/commonjs/realtime/error.js +11 -11
  52. package/dist/commonjs/realtime/listener.d.ts +14 -14
  53. package/dist/commonjs/realtime/listener.js +17 -17
  54. package/dist/commonjs/realtime/message.d.ts +3 -3
  55. package/dist/commonjs/realtime/message.js +10 -10
  56. package/dist/commonjs/realtime/snapshot.d.ts +16 -16
  57. package/dist/commonjs/realtime/snapshot.js +42 -42
  58. package/dist/commonjs/realtime/virtual-websocket-client.d.ts +63 -63
  59. package/dist/commonjs/realtime/virtual-websocket-client.js +736 -736
  60. package/dist/commonjs/realtime/websocket-client.d.ts +78 -78
  61. package/dist/commonjs/realtime/websocket-client.js +567 -567
  62. package/dist/commonjs/realtime/ws-event.d.ts +126 -126
  63. package/dist/commonjs/realtime/ws-event.js +139 -139
  64. package/dist/commonjs/regexp/index.d.ts +18 -18
  65. package/dist/commonjs/regexp/index.js +30 -30
  66. package/dist/commonjs/serializer/common.d.ts +11 -11
  67. package/dist/commonjs/serializer/common.js +90 -90
  68. package/dist/commonjs/serializer/datatype.d.ts +7 -7
  69. package/dist/commonjs/serializer/datatype.js +99 -96
  70. package/dist/commonjs/serializer/query.d.ts +8 -8
  71. package/dist/commonjs/serializer/query.js +254 -254
  72. package/dist/commonjs/serializer/update.d.ts +16 -16
  73. package/dist/commonjs/serializer/update.js +142 -142
  74. package/dist/commonjs/serverDate/index.d.ts +13 -13
  75. package/dist/commonjs/serverDate/index.js +23 -23
  76. package/dist/commonjs/transaction/index.d.ts +30 -30
  77. package/dist/commonjs/transaction/index.js +105 -105
  78. package/dist/commonjs/transaction.d.ts +42 -42
  79. package/dist/commonjs/transaction.js +126 -126
  80. package/dist/commonjs/typings/index.d.ts +45 -45
  81. package/dist/commonjs/typings/index.js +2 -2
  82. package/dist/commonjs/typings/realtime.d.ts +219 -219
  83. package/dist/commonjs/typings/realtime.js +2 -2
  84. package/dist/commonjs/util.d.ts +9 -9
  85. package/dist/commonjs/util.js +101 -101
  86. package/dist/commonjs/utils/error.d.ts +37 -37
  87. package/dist/commonjs/utils/error.js +55 -55
  88. package/dist/commonjs/utils/symbol.d.ts +8 -8
  89. package/dist/commonjs/utils/symbol.js +39 -39
  90. package/dist/commonjs/utils/type.d.ts +13 -13
  91. package/dist/commonjs/utils/type.js +22 -22
  92. package/dist/commonjs/utils/utils.d.ts +19 -19
  93. package/dist/commonjs/utils/utils.js +59 -59
  94. package/dist/commonjs/validate.d.ts +1 -1
  95. package/dist/commonjs/validate.js +155 -155
  96. package/dist/esm/ObjectId/index.d.ts +11 -0
  97. package/dist/esm/ObjectId/index.js +17 -0
  98. package/dist/esm/aggregate.d.ts +29 -29
  99. package/dist/esm/aggregate.js +121 -121
  100. package/dist/esm/collection.d.ts +17 -17
  101. package/dist/esm/collection.js +69 -69
  102. package/dist/esm/command.d.ts +175 -175
  103. package/dist/esm/command.js +281 -281
  104. package/dist/esm/commands/logic.d.ts +24 -24
  105. package/dist/esm/commands/logic.js +74 -74
  106. package/dist/esm/commands/query.d.ts +73 -73
  107. package/dist/esm/commands/query.js +141 -141
  108. package/dist/esm/commands/update.d.ts +29 -29
  109. package/dist/esm/commands/update.js +44 -44
  110. package/dist/esm/config/app.config.d.ts +6 -6
  111. package/dist/esm/config/app.config.js +5 -5
  112. package/dist/esm/config/error.config.d.ts +3 -3
  113. package/dist/esm/config/error.config.js +13 -13
  114. package/dist/esm/const/code.d.ts +34 -34
  115. package/dist/esm/const/code.js +34 -34
  116. package/dist/esm/constant.d.ts +54 -54
  117. package/dist/esm/constant.js +67 -67
  118. package/dist/esm/document.d.ts +14 -14
  119. package/dist/esm/document.js +216 -216
  120. package/dist/esm/geo/index.d.ts +6 -6
  121. package/dist/esm/geo/index.js +6 -6
  122. package/dist/esm/geo/interface.d.ts +24 -24
  123. package/dist/esm/geo/lineString.d.ts +19 -19
  124. package/dist/esm/geo/lineString.js +54 -54
  125. package/dist/esm/geo/multiLineString.d.ts +18 -18
  126. package/dist/esm/geo/multiLineString.js +53 -53
  127. package/dist/esm/geo/multiPoint.d.ts +18 -18
  128. package/dist/esm/geo/multiPoint.js +47 -47
  129. package/dist/esm/geo/multiPolygon.d.ts +18 -18
  130. package/dist/esm/geo/multiPolygon.js +59 -59
  131. package/dist/esm/geo/point.d.ts +19 -19
  132. package/dist/esm/geo/point.js +40 -40
  133. package/dist/esm/geo/polygon.d.ts +19 -19
  134. package/dist/esm/geo/polygon.js +67 -67
  135. package/dist/esm/helper/symbol.d.ts +15 -14
  136. package/dist/esm/helper/symbol.js +15 -14
  137. package/dist/esm/index.d.ts +50 -49
  138. package/dist/esm/index.js +35 -33
  139. package/dist/esm/operator-map.d.ts +4 -4
  140. package/dist/esm/operator-map.js +20 -20
  141. package/dist/esm/query.d.ts +38 -38
  142. package/dist/esm/query.js +244 -244
  143. package/dist/esm/realtime/error.d.ts +7 -7
  144. package/dist/esm/realtime/error.js +8 -8
  145. package/dist/esm/realtime/listener.d.ts +14 -14
  146. package/dist/esm/realtime/listener.js +14 -14
  147. package/dist/esm/realtime/message.d.ts +3 -3
  148. package/dist/esm/realtime/message.js +6 -6
  149. package/dist/esm/realtime/snapshot.d.ts +16 -16
  150. package/dist/esm/realtime/snapshot.js +39 -39
  151. package/dist/esm/realtime/virtual-websocket-client.d.ts +63 -63
  152. package/dist/esm/realtime/virtual-websocket-client.js +733 -733
  153. package/dist/esm/realtime/websocket-client.d.ts +78 -78
  154. package/dist/esm/realtime/websocket-client.js +564 -564
  155. package/dist/esm/realtime/ws-event.d.ts +126 -126
  156. package/dist/esm/realtime/ws-event.js +137 -137
  157. package/dist/esm/regexp/index.d.ts +18 -18
  158. package/dist/esm/regexp/index.js +26 -26
  159. package/dist/esm/serializer/common.d.ts +11 -11
  160. package/dist/esm/serializer/common.js +82 -82
  161. package/dist/esm/serializer/datatype.d.ts +7 -7
  162. package/dist/esm/serializer/datatype.js +95 -92
  163. package/dist/esm/serializer/query.d.ts +8 -8
  164. package/dist/esm/serializer/query.js +251 -251
  165. package/dist/esm/serializer/update.d.ts +16 -16
  166. package/dist/esm/serializer/update.js +139 -139
  167. package/dist/esm/serverDate/index.d.ts +13 -13
  168. package/dist/esm/serverDate/index.js +19 -19
  169. package/dist/esm/transaction/index.d.ts +30 -30
  170. package/dist/esm/transaction/index.js +100 -100
  171. package/dist/esm/transaction.d.ts +42 -42
  172. package/dist/esm/transaction.js +121 -121
  173. package/dist/esm/typings/index.d.ts +45 -45
  174. package/dist/esm/typings/realtime.d.ts +219 -219
  175. package/dist/esm/util.d.ts +9 -9
  176. package/dist/esm/util.js +98 -98
  177. package/dist/esm/utils/error.d.ts +37 -37
  178. package/dist/esm/utils/error.js +49 -49
  179. package/dist/esm/utils/symbol.d.ts +8 -8
  180. package/dist/esm/utils/symbol.js +36 -36
  181. package/dist/esm/utils/type.d.ts +13 -13
  182. package/dist/esm/utils/type.js +20 -20
  183. package/dist/esm/utils/utils.d.ts +19 -19
  184. package/dist/esm/utils/utils.js +55 -55
  185. package/dist/esm/validate.d.ts +1 -1
  186. package/dist/esm/validate.js +152 -152
  187. package/package.json +1 -1
  188. package/src/ObjectId/index.ts +23 -0
  189. package/src/aggregate.ts +8 -5
  190. package/src/helper/symbol.ts +2 -0
  191. package/src/index.ts +4 -0
  192. package/src/serializer/datatype.ts +5 -1
  193. package/dist/commonjs/decimal128/index.d.ts +0 -8
  194. package/dist/commonjs/decimal128/index.js +0 -26
  195. package/dist/commonjs/lib/util.d.ts +0 -1
  196. package/dist/commonjs/lib/util.js +0 -25
  197. package/dist/commonjs/transaction/collection.d.ts +0 -7
  198. package/dist/commonjs/transaction/collection.js +0 -46
  199. package/dist/commonjs/transaction/document.d.ts +0 -27
  200. package/dist/commonjs/transaction/document.js +0 -205
  201. package/dist/commonjs/transaction/query.d.ts +0 -5
  202. package/dist/commonjs/transaction/query.js +0 -10
  203. package/dist/esm/lib/util.d.ts +0 -1
  204. package/dist/esm/lib/util.js +0 -23
  205. package/dist/esm/transaction/collection.d.ts +0 -7
  206. package/dist/esm/transaction/collection.js +0 -44
  207. package/dist/esm/transaction/document.d.ts +0 -27
  208. package/dist/esm/transaction/document.js +0 -203
  209. package/dist/esm/transaction/query.d.ts +0 -5
  210. package/dist/esm/transaction/query.js +0 -8
@@ -1,152 +1,152 @@
1
- import { ErrorCode, WhereFilterOpList, OrderDirectionList, FieldType } from './constant';
2
- import { Util } from './util';
3
- import { ERRORS } from './const/code';
4
- import { E } from './utils/utils';
5
- import { getType } from './utils/type';
6
- import { SYMBOL_GEO_POINT } from './helper/symbol';
7
- const validOptionsKeys = ['limit', 'offset', 'projection', 'order', 'multiple', 'timeout', 'raw'];
8
- export class Validate {
9
- static isGeopoint(point, degree) {
10
- if (Util.whichType(degree) !== FieldType.Number) {
11
- throw new Error('Geo Point must be number type');
12
- }
13
- const degreeAbs = Math.abs(degree);
14
- if (point === 'latitude' && degreeAbs > 90) {
15
- throw new Error('latitude should be a number ranges from -90 to 90');
16
- }
17
- else if (point === 'longitude' && degreeAbs > 180) {
18
- throw new Error('longitude should be a number ranges from -180 to 180');
19
- }
20
- return true;
21
- }
22
- static isInteger(param, num) {
23
- if (!Number.isInteger(num)) {
24
- throw new Error(param + ErrorCode.IntergerError);
25
- }
26
- return true;
27
- }
28
- static mustBeBoolean(param, bool) {
29
- if (typeof bool !== 'boolean') {
30
- throw new Error(param + ErrorCode.BooleanError);
31
- }
32
- return true;
33
- }
34
- static isProjection(param, value) {
35
- if (getType(value) !== 'object') {
36
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `${param} projection must be an object` }));
37
- }
38
- for (const key in value) {
39
- const subValue = value[key];
40
- if (getType(subValue) === 'number') {
41
- if (subValue !== 0 && subValue !== 1) {
42
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `if the value in projection is of number, it must be 0 or 1` }));
43
- }
44
- }
45
- else if (getType(subValue) === 'object') {
46
- }
47
- else {
48
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: 'invalid projection' }));
49
- }
50
- }
51
- return true;
52
- }
53
- static isOrder(param, value) {
54
- if (getType(value) !== 'object') {
55
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `${param} order must be an object` }));
56
- }
57
- for (let key in value) {
58
- const subValue = value[key];
59
- if (subValue !== 1 && subValue !== -1) {
60
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `order value must be 1 or -1` }));
61
- }
62
- }
63
- return true;
64
- }
65
- static isFieldOrder(direction) {
66
- if (OrderDirectionList.indexOf(direction) === -1) {
67
- throw new Error(ErrorCode.DirectionError);
68
- }
69
- return true;
70
- }
71
- static isFieldPath(path) {
72
- if (!/^[a-zA-Z0-9-_\.]/.test(path)) {
73
- throw new Error();
74
- }
75
- return true;
76
- }
77
- static isOperator(op) {
78
- if (WhereFilterOpList.indexOf(op) === -1) {
79
- throw new Error(ErrorCode.OpStrError);
80
- }
81
- return true;
82
- }
83
- static isCollName(name) {
84
- if (!/^[a-zA-Z0-9]([a-zA-Z0-9-_]){1,32}$/.test(name)) {
85
- throw new Error(ErrorCode.CollNameError);
86
- }
87
- return true;
88
- }
89
- static isDocID(docId) {
90
- if (!/^([a-fA-F0-9]){24}$/.test(docId)) {
91
- throw new Error(ErrorCode.DocIDError);
92
- }
93
- return true;
94
- }
95
- static isValidOptions(options = {}) {
96
- if (getType(options) !== 'object') {
97
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `options must be an object` }));
98
- }
99
- const keys = Object.keys(options);
100
- for (const index in keys) {
101
- if (validOptionsKeys.indexOf(keys[index]) < 0) {
102
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `${keys[index]} is invalid options key` }));
103
- }
104
- }
105
- const { limit, offset, projection, order } = options;
106
- const { multiple } = options;
107
- if (limit !== undefined) {
108
- Validate.isInteger('limit', limit);
109
- }
110
- if (offset !== undefined) {
111
- Validate.isInteger('offset', offset);
112
- }
113
- if (projection !== undefined) {
114
- Validate.isProjection('projection', projection);
115
- }
116
- if (order !== undefined) {
117
- Validate.isOrder('order', order);
118
- }
119
- if (multiple !== undefined) {
120
- Validate.mustBeBoolean('multiple', multiple);
121
- }
122
- if (options.timeout !== undefined) {
123
- Validate.isInteger('timeout', options.timeout);
124
- }
125
- return true;
126
- }
127
- static isValidAggregation(stage) {
128
- if (Object.keys(stage).length !== 1) {
129
- throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `aggregation stage must have one key` }));
130
- }
131
- return true;
132
- }
133
- static isCentersPhere(param) {
134
- if (Array.isArray(param) && param.length === 2) {
135
- if (getType(param[0]) === 'object' &&
136
- param[0]._internalType === SYMBOL_GEO_POINT &&
137
- typeof param[1] === 'number') {
138
- return true;
139
- }
140
- if (Array.isArray(param[0]) && param[0].length === 2) {
141
- const longitude = param[0][0];
142
- const latitude = param[0][1];
143
- Validate.isGeopoint('longitude', longitude);
144
- Validate.isGeopoint('latitude', latitude);
145
- if (typeof param[1] === 'number') {
146
- return true;
147
- }
148
- }
149
- }
150
- throw new Error(`${ErrorCode.CentersPhereError}`);
151
- }
152
- }
1
+ import { ErrorCode, WhereFilterOpList, OrderDirectionList, FieldType } from './constant';
2
+ import { Util } from './util';
3
+ import { ERRORS } from './const/code';
4
+ import { E } from './utils/utils';
5
+ import { getType } from './utils/type';
6
+ import { SYMBOL_GEO_POINT } from './helper/symbol';
7
+ const validOptionsKeys = ['limit', 'offset', 'projection', 'order', 'multiple', 'timeout', 'raw'];
8
+ export class Validate {
9
+ static isGeopoint(point, degree) {
10
+ if (Util.whichType(degree) !== FieldType.Number) {
11
+ throw new Error('Geo Point must be number type');
12
+ }
13
+ const degreeAbs = Math.abs(degree);
14
+ if (point === 'latitude' && degreeAbs > 90) {
15
+ throw new Error('latitude should be a number ranges from -90 to 90');
16
+ }
17
+ else if (point === 'longitude' && degreeAbs > 180) {
18
+ throw new Error('longitude should be a number ranges from -180 to 180');
19
+ }
20
+ return true;
21
+ }
22
+ static isInteger(param, num) {
23
+ if (!Number.isInteger(num)) {
24
+ throw new Error(param + ErrorCode.IntergerError);
25
+ }
26
+ return true;
27
+ }
28
+ static mustBeBoolean(param, bool) {
29
+ if (typeof bool !== 'boolean') {
30
+ throw new Error(param + ErrorCode.BooleanError);
31
+ }
32
+ return true;
33
+ }
34
+ static isProjection(param, value) {
35
+ if (getType(value) !== 'object') {
36
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `${param} projection must be an object` }));
37
+ }
38
+ for (const key in value) {
39
+ const subValue = value[key];
40
+ if (getType(subValue) === 'number') {
41
+ if (subValue !== 0 && subValue !== 1) {
42
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `if the value in projection is of number, it must be 0 or 1` }));
43
+ }
44
+ }
45
+ else if (getType(subValue) === 'object') {
46
+ }
47
+ else {
48
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: 'invalid projection' }));
49
+ }
50
+ }
51
+ return true;
52
+ }
53
+ static isOrder(param, value) {
54
+ if (getType(value) !== 'object') {
55
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `${param} order must be an object` }));
56
+ }
57
+ for (let key in value) {
58
+ const subValue = value[key];
59
+ if (subValue !== 1 && subValue !== -1) {
60
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `order value must be 1 or -1` }));
61
+ }
62
+ }
63
+ return true;
64
+ }
65
+ static isFieldOrder(direction) {
66
+ if (OrderDirectionList.indexOf(direction) === -1) {
67
+ throw new Error(ErrorCode.DirectionError);
68
+ }
69
+ return true;
70
+ }
71
+ static isFieldPath(path) {
72
+ if (!/^[a-zA-Z0-9-_\.]/.test(path)) {
73
+ throw new Error();
74
+ }
75
+ return true;
76
+ }
77
+ static isOperator(op) {
78
+ if (WhereFilterOpList.indexOf(op) === -1) {
79
+ throw new Error(ErrorCode.OpStrError);
80
+ }
81
+ return true;
82
+ }
83
+ static isCollName(name) {
84
+ if (!/^[a-zA-Z0-9]([a-zA-Z0-9-_]){1,32}$/.test(name)) {
85
+ throw new Error(ErrorCode.CollNameError);
86
+ }
87
+ return true;
88
+ }
89
+ static isDocID(docId) {
90
+ if (!/^([a-fA-F0-9]){24}$/.test(docId)) {
91
+ throw new Error(ErrorCode.DocIDError);
92
+ }
93
+ return true;
94
+ }
95
+ static isValidOptions(options = {}) {
96
+ if (getType(options) !== 'object') {
97
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `options must be an object` }));
98
+ }
99
+ const keys = Object.keys(options);
100
+ for (const index in keys) {
101
+ if (validOptionsKeys.indexOf(keys[index]) < 0) {
102
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `${keys[index]} is invalid options key` }));
103
+ }
104
+ }
105
+ const { limit, offset, projection, order } = options;
106
+ const { multiple } = options;
107
+ if (limit !== undefined) {
108
+ Validate.isInteger('limit', limit);
109
+ }
110
+ if (offset !== undefined) {
111
+ Validate.isInteger('offset', offset);
112
+ }
113
+ if (projection !== undefined) {
114
+ Validate.isProjection('projection', projection);
115
+ }
116
+ if (order !== undefined) {
117
+ Validate.isOrder('order', order);
118
+ }
119
+ if (multiple !== undefined) {
120
+ Validate.mustBeBoolean('multiple', multiple);
121
+ }
122
+ if (options.timeout !== undefined) {
123
+ Validate.isInteger('timeout', options.timeout);
124
+ }
125
+ return true;
126
+ }
127
+ static isValidAggregation(stage) {
128
+ if (Object.keys(stage).length !== 1) {
129
+ throw E(Object.assign(Object.assign({}, ERRORS.INVALID_PARAM), { message: `aggregation stage must have one key` }));
130
+ }
131
+ return true;
132
+ }
133
+ static isCentersPhere(param) {
134
+ if (Array.isArray(param) && param.length === 2) {
135
+ if (getType(param[0]) === 'object' &&
136
+ param[0]._internalType === SYMBOL_GEO_POINT &&
137
+ typeof param[1] === 'number') {
138
+ return true;
139
+ }
140
+ if (Array.isArray(param[0]) && param[0].length === 2) {
141
+ const longitude = param[0][0];
142
+ const latitude = param[0][1];
143
+ Validate.isGeopoint('longitude', longitude);
144
+ Validate.isGeopoint('latitude', latitude);
145
+ if (typeof param[1] === 'number') {
146
+ return true;
147
+ }
148
+ }
149
+ }
150
+ throw new Error(`${ErrorCode.CentersPhereError}`);
151
+ }
152
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/database",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "database for (node.)js sdk ",
5
5
  "main": "dist/commonjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -0,0 +1,23 @@
1
+ import { SYMBOL_OBJECTID } from '../helper/symbol'
2
+
3
+ export class ObjectId {
4
+ id: string
5
+
6
+ constructor({ id = '' } = {}) {
7
+ this.id = id
8
+ }
9
+
10
+ get _internalType() {
11
+ return SYMBOL_OBJECTID
12
+ }
13
+
14
+ parse() {
15
+ return {
16
+ $oid: this.id
17
+ }
18
+ }
19
+ }
20
+
21
+ export function ObjectIdConstructor(opt) {
22
+ return new ObjectId(opt)
23
+ }
package/src/aggregate.ts CHANGED
@@ -4,8 +4,9 @@ import { QuerySerializer } from './serializer/query'
4
4
  import { stringifyByEJSON } from './utils/utils'
5
5
  import { getType } from './utils/type'
6
6
  import { Validate } from './validate'
7
+ import { Point } from './geo/point'
7
8
 
8
- const EARTH_RADIUS = 6378100
9
+ // const EARTH_RADIUS = 6378100
9
10
 
10
11
  export default class Aggregation {
11
12
  _db: any
@@ -97,12 +98,14 @@ export default class Aggregation {
97
98
  if (param.query) {
98
99
  param.query = QuerySerializer.encode(param.query)
99
100
  }
100
-
101
+
101
102
  // 判断是否有 distanceMultiplier 参数
102
103
  if (param.distanceMultiplier && typeof (param.distanceMultiplier) === 'number') {
103
- param.distanceMultiplier = param.distanceMultiplier * EARTH_RADIUS
104
- } else {
105
- param.distanceMultiplier = EARTH_RADIUS
104
+ param.distanceMultiplier = param.distanceMultiplier
105
+ }
106
+
107
+ if(param.near) {
108
+ param.near = new Point(param.near.longitude, param.near.latitude).toJSON()
106
109
  }
107
110
  return this._pipe('geoNear', param)
108
111
  }
@@ -17,3 +17,5 @@ export const SYMBOL_GEO_MULTI_POLYGON = InternalSymbol.for('SYMBOL_GEO_MULTI_POL
17
17
  export const SYMBOL_SERVER_DATE = InternalSymbol.for('SERVER_DATE')
18
18
 
19
19
  export const SYMBOL_REGEXP = InternalSymbol.for('REGEXP')
20
+
21
+ export const SYMBOL_OBJECTID = InternalSymbol.for('OBJECTID')
package/src/index.ts CHANGED
@@ -5,6 +5,7 @@ import { Command } from './command'
5
5
  import { ServerDateConstructor } from './serverDate/index'
6
6
  import { RegExpConstructor } from './regexp/index'
7
7
  import { startTransaction, runTransaction } from './transaction/index'
8
+ import { ObjectIdConstructor } from './ObjectId/index'
8
9
 
9
10
  /**
10
11
  * 地理位置类型
@@ -59,6 +60,8 @@ export class Db {
59
60
 
60
61
  serverDate: any
61
62
 
63
+ ObjectId: any
64
+
62
65
  startTransaction: any
63
66
 
64
67
  runTransaction: any
@@ -95,6 +98,7 @@ export class Db {
95
98
  this.serverDate = ServerDateConstructor
96
99
  this.command = Command
97
100
  this.RegExp = RegExpConstructor
101
+ this.ObjectId = ObjectIdConstructor
98
102
  this.startTransaction = startTransaction
99
103
  this.runTransaction = runTransaction
100
104
  }
@@ -1,5 +1,5 @@
1
1
  // transpile internal data type
2
- import { SYMBOL_GEO_POINT, SYMBOL_SERVER_DATE, SYMBOL_REGEXP } from '../helper/symbol'
2
+ import { SYMBOL_GEO_POINT, SYMBOL_SERVER_DATE, SYMBOL_OBJECTID, SYMBOL_REGEXP } from '../helper/symbol'
3
3
  import {
4
4
  getType,
5
5
  isObject,
@@ -13,6 +13,7 @@ import { Point } from '../geo/index'
13
13
  import { ServerDate } from '../serverDate/index'
14
14
  import { RegExp } from '../regexp/index'
15
15
  import { LogicCommand } from '../commands/logic'
16
+ import { ObjectId } from '../ObjectId/index'
16
17
 
17
18
  export type IQueryCondition = Record<string, any> | LogicCommand
18
19
 
@@ -36,6 +37,9 @@ function serializeHelper(val: any, visited: object[]): Record<string, any> {
36
37
  case SYMBOL_REGEXP: {
37
38
  return (val as RegExp).parse()
38
39
  }
40
+ case SYMBOL_OBJECTID: {
41
+ return (val as ObjectId).parse()
42
+ }
39
43
  default: {
40
44
  return val.toJSON ? val.toJSON() : val
41
45
  }
@@ -1,8 +0,0 @@
1
- export declare class Decimal128Type {
2
- readonly decimalStr: string;
3
- constructor(decimalStr?: string);
4
- readonly _internalType: import("../utils/symbol").InternalSymbol;
5
- parse(): any;
6
- toJSON(): any;
7
- }
8
- export declare function Decimal128TypeConstructor(decimalStr: any): Decimal128Type;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const bson_1 = require("bson");
4
- const symbol_1 = require("../helper/symbol");
5
- class Decimal128Type {
6
- constructor(decimalStr = '') {
7
- if (typeof decimalStr !== 'string') {
8
- throw new TypeError(`Decimal128Type 入参必须为 string!`);
9
- }
10
- this.decimalStr = decimalStr;
11
- }
12
- get _internalType() {
13
- return symbol_1.SYMBOL_DECIMAL128;
14
- }
15
- parse() {
16
- return bson_1.Decimal128.fromString(this.decimalStr);
17
- }
18
- toJSON() {
19
- return bson_1.Decimal128.fromString(this.decimalStr);
20
- }
21
- }
22
- exports.Decimal128Type = Decimal128Type;
23
- function Decimal128TypeConstructor(decimalStr) {
24
- return new Decimal128Type(decimalStr);
25
- }
26
- exports.Decimal128TypeConstructor = Decimal128TypeConstructor;
@@ -1 +0,0 @@
1
- export declare const createPromiseCallback: () => any;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPromiseCallback = function () {
4
- var cb;
5
- if (!Promise) {
6
- cb = function () { };
7
- cb.promise = {};
8
- var throwPromiseNotDefined = function () {
9
- throw new Error('Your Node runtime does support ES6 Promises. ' +
10
- 'Set "global.Promise" to your preferred implementation of promises.');
11
- };
12
- Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined });
13
- Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined });
14
- return cb;
15
- }
16
- var promise = new Promise(function (resolve, reject) {
17
- cb = function (err, data) {
18
- if (err)
19
- return reject(err);
20
- return resolve(data);
21
- };
22
- });
23
- cb.promise = promise;
24
- return cb;
25
- };
@@ -1,7 +0,0 @@
1
- import { DocumentReference } from './document';
2
- import { Query } from './query';
3
- export declare class CollectionReference extends Query {
4
- readonly name: string;
5
- doc(docID?: string | number): DocumentReference;
6
- add(data: any): Promise<any>;
7
- }
@@ -1,46 +0,0 @@
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 CollectionReference = (function (_super) {
19
- __extends(CollectionReference, _super);
20
- function CollectionReference(transaction, coll) {
21
- return _super.call(this, transaction, coll) || this;
22
- }
23
- Object.defineProperty(CollectionReference.prototype, "name", {
24
- get: function () {
25
- return this._coll;
26
- },
27
- enumerable: true,
28
- configurable: true
29
- });
30
- CollectionReference.prototype.doc = function (docID) {
31
- if (typeof docID !== 'string' && typeof docID !== 'number') {
32
- throw new Error('docId必须为字符串或数字');
33
- }
34
- return new document_1.DocumentReference(this._transaction, this._coll, docID);
35
- };
36
- CollectionReference.prototype.add = function (data) {
37
- var docID;
38
- if (data._id !== undefined) {
39
- docID = data._id;
40
- }
41
- var docRef = new document_1.DocumentReference(this._transaction, this._coll, docID);
42
- return docRef.create(data);
43
- };
44
- return CollectionReference;
45
- }(query_1.Query));
46
- exports.CollectionReference = CollectionReference;
@@ -1,27 +0,0 @@
1
- interface GetResult {
2
- requestId: string;
3
- data: any;
4
- }
5
- interface UpdateResult {
6
- requestId: string;
7
- updated: number;
8
- }
9
- declare type JsonString = string;
10
- interface SetResult extends UpdateResult {
11
- upserted: JsonString;
12
- }
13
- interface DeleteResult {
14
- requestId: string;
15
- deleted: number | string;
16
- }
17
- export declare class DocumentReference {
18
- readonly id: string | number;
19
- private _transaction;
20
- private _transactionId;
21
- create(data: any): Promise<any>;
22
- get(): Promise<GetResult>;
23
- set(data: Object): Promise<SetResult>;
24
- update(data: Object): Promise<UpdateResult>;
25
- delete(): Promise<DeleteResult>;
26
- }
27
- export {};