@restorecommerce/resource-base-interface 1.2.0 → 1.2.2
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/CHANGELOG.md +10 -0
- package/README.md +48 -66
- package/lib/core/ResourcesAPI.d.ts +3 -5
- package/lib/core/ResourcesAPI.js +65 -147
- package/lib/core/ResourcesAPI.js.map +1 -1
- package/lib/core/interfaces.d.ts +6 -2
- package/lib/core/interfaces.js +4 -4
- package/lib/core/interfaces.js.map +1 -1
- package/lib/core/utils.d.ts +1 -0
- package/lib/core/utils.js +113 -0
- package/lib/core/utils.js.map +1 -0
- package/package.json +13 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
### 1.2.2 (July 13th, 2023)
|
|
2
|
+
|
|
3
|
+
- support nested buffer fields and also multiple bufferfields per entity, dateTime stamp field handlers
|
|
4
|
+
- updated depeendencies
|
|
5
|
+
|
|
6
|
+
### 1.2.1 (June 19th, 2023)
|
|
7
|
+
|
|
8
|
+
- extended resource base to support for nested buffer fields
|
|
9
|
+
- updated depeendencies
|
|
10
|
+
|
|
1
11
|
### 1.2.0 (May 31st, 2023)
|
|
2
12
|
|
|
3
13
|
- updated dependencies (includes chassis-srv updates for updated ArangoJs), pluralize protos and meta owner changes
|
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ This interface describes the following gRPC endpoints for a generic resource of
|
|
|
24
24
|
|
|
25
25
|
| Field | Type | Label | Description |
|
|
26
26
|
| ----- | ---- | ----- | ----------- |
|
|
27
|
-
| id | string |
|
|
27
|
+
| id | string | optional | identifier for the resource |
|
|
28
28
|
| meta | io.restorecommerce.meta.Meta meta | optional | Meta information common to all Restore Commerce resources |
|
|
29
29
|
| value | number | optional | value for the resource |
|
|
30
30
|
| text | string | optional | textual data for the resource |
|
|
@@ -48,49 +48,48 @@ If there is a [graph configuration](test/cfg/config.json#L11) specified for the
|
|
|
48
48
|
This operation returns resources based on provided filter and options.
|
|
49
49
|
Requests are performed using `io.restorecommerce.resourcebase.ReadRequest` and responses are a list of resources.
|
|
50
50
|
|
|
51
|
-
`
|
|
51
|
+
`io.restorecommerce.resourcebase.ReadRequest`
|
|
52
52
|
|
|
53
53
|
| Field | Type | Label | Description |
|
|
54
54
|
| ----- | ---- | ----- | ----------- |
|
|
55
|
-
|
|
|
56
|
-
|
|
55
|
+
| offset | number | optional | offset of the resource |
|
|
56
|
+
| limit | number | optional | limit, default value is `1000` |
|
|
57
|
+
| filters | `io.restorecommerce.filter.FilterOp` | optional | nested filters based on field values, multiple filters can be combined with `AND` and `OR` operators |
|
|
58
|
+
| sorts | [ ]`io.restorecommerce.resourcebase.Sort` | optional | sort the resources |
|
|
59
|
+
| fields | [ ] `io.restorecommerce.resourcebase.FieldFilter` | optional | fields selector, list of fields to be included or excluded, by default we get all the fields |
|
|
60
|
+
| search | [ ]string | optional | word search, not yet implemeneted |
|
|
61
|
+
| locales_limiter | [ ]string | optional | querying based on locales, not yet implemented |
|
|
57
62
|
|
|
58
|
-
`io.restorecommerce.
|
|
63
|
+
`io.restorecommerce.filter.FilterOp`
|
|
59
64
|
|
|
60
65
|
| Field | Type | Label | Description |
|
|
61
66
|
| ----- | ---- | ----- | ----------- |
|
|
62
|
-
|
|
|
63
|
-
|
|
|
67
|
+
| filters | `io.restorecommerce.filter.Filter` | optional | nested filters |
|
|
68
|
+
| operator | enum | optional | operator `and`, or `or` |
|
|
64
69
|
|
|
65
|
-
|
|
66
|
-
`io.restorecommerce.resourcebase.FieldFilter`
|
|
70
|
+
`io.restorecommerce.graph.Filter`
|
|
67
71
|
|
|
68
72
|
| Field | Type | Label | Description |
|
|
69
73
|
| ----- | ---- | ----- | ----------- |
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
74
|
+
| field | string | required | filter based on field |
|
|
75
|
+
| operation | enum | optional | operator `eq`, `lt`, `lte`, `gt`, `gte`, `isEmpty`, `ilike`, `in`, `neq`, default value is `eq` |
|
|
76
|
+
| value | string | required | filter based on value |
|
|
77
|
+
| type | enum | optional | value type `STRING`, `NUMBER`, `BOOLEAN`, `DATE` or `ARRAY`, default value is `STRING` |
|
|
78
|
+
| filters | [ ] `io.restorecommerce.filter.FilterOp` | required | nested filters |
|
|
73
79
|
|
|
74
|
-
`io.restorecommerce.resourcebase.
|
|
80
|
+
`io.restorecommerce.resourcebase.Sort`
|
|
75
81
|
|
|
76
82
|
| Field | Type | Label | Description |
|
|
77
83
|
| ----- | ---- | ----- | ----------- |
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
|
|
84
|
+
| field | string | optional | field to be sorted upon |
|
|
85
|
+
| SortOrder | enum | optional | sorting order, `UNSORTED`, `ASCENDING` or `DESCENDING` |
|
|
81
86
|
|
|
82
|
-
`io.restorecommerce.resourcebase.
|
|
87
|
+
`io.restorecommerce.resourcebase.FieldFilter`
|
|
83
88
|
|
|
84
89
|
| Field | Type | Label | Description |
|
|
85
90
|
| ----- | ---- | ----- | ----------- |
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
| filter | google.protobuf.Struct | optional | filter based on field values, multiple filters can be combined with `AND` and `OR` operators |
|
|
89
|
-
| sort | [ ]`io.restorecommerce.resourcebase.Sort` | optional | sort the resources |
|
|
90
|
-
| field | [ ] `io.restorecommerce.resourcebase.FieldFilter` | optional | fields selector, list of fields to be included or excluded, by default we get all the fields |
|
|
91
|
-
| search | [ ]string | optional | word search, not yet implemeneted |
|
|
92
|
-
| locales_limiter | [ ]string | optional | querying based on locales, not yet implemented |
|
|
93
|
-
| scope | `io.restorecommerce.resourcebase.ScopeFilter` | optional | scope to operate on, not yet implemented |
|
|
91
|
+
| name | string | optional | field name |
|
|
92
|
+
| include | bool | optional | include or exclude field |
|
|
94
93
|
|
|
95
94
|
### Update
|
|
96
95
|
|
|
@@ -113,7 +112,7 @@ If a graph vertex is deleted, all connected edges are also deleted.
|
|
|
113
112
|
|
|
114
113
|
| Field | Type | Label | Description |
|
|
115
114
|
| ----- | ---- | ----- | ----------- |
|
|
116
|
-
| collection | string |
|
|
115
|
+
| collection | string | optional | Name of the target collection |
|
|
117
116
|
| ids | [ ]string | optional | List of resource identifiers to be deleted; if empty or not provided, the whole collection is truncated |
|
|
118
117
|
|
|
119
118
|
### Traversal
|
|
@@ -125,71 +124,54 @@ Requests are performed using `io.restorecommerce.graph.TraversalRequest` and res
|
|
|
125
124
|
|
|
126
125
|
| Field | Type | Label | Description |
|
|
127
126
|
| ----- | ---- | ----- | ----------- |
|
|
128
|
-
|
|
|
127
|
+
| vertices | [ ]`io.restorecommerce.graph.Vertices` | optional | list of vertices for traversal |
|
|
128
|
+
| collection | `io.restorecommerce.graph.Collection` | optional | collection data for traversal |
|
|
129
129
|
| opts | `io.restorecommerce.graph.Options` | optional | List of options for graph traversal |
|
|
130
|
-
| collection_name | string | optional | starting vertex's Collection name |
|
|
131
|
-
| edge_name | string | optional | edge name for traversal |
|
|
132
|
-
| data | bool | optional | if set to `true` only the vertices data is returned |
|
|
133
130
|
| path | bool | optional | if set to `true` only the traversed paths are returned |
|
|
134
|
-
|
|
|
131
|
+
| subject | `io.restorecommerce.auth.Subject` | required | Subject details |
|
|
132
|
+
| filters | `io.restorecommerce.graph.Filters` | optional | filters |
|
|
135
133
|
|
|
136
|
-
`io.restorecommerce.graph.
|
|
134
|
+
`io.restorecommerce.graph.Vertices`
|
|
137
135
|
|
|
138
136
|
| Field | Type | Label | Description |
|
|
139
137
|
| ----- | ---- | ----- | ----------- |
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
| expander | [ ] `io.restorecommerce.graph.Expander` | optional | List of edges to be included in the traversal, by default all edges are included in traversal |
|
|
143
|
-
| sort | string | optional | JS code of custom comparison function for the edges |
|
|
144
|
-
| min_depth | uint32 | optional | visits only vertices in atleast the give depth |
|
|
145
|
-
| start_vertex | string | optional | id of the start vertex |
|
|
146
|
-
| visitor | string | optional | JS code of custom visitor function |
|
|
147
|
-
| init | string | optional | JS code of custom result initialization function |
|
|
148
|
-
| item_order | string | optional | item iteration order, possible values are either `forward` or `backward` |
|
|
149
|
-
| strategy | string | optional | traversal strategy, possible values are either `depthfirst` or `breadthfirst` |
|
|
150
|
-
| max_iterations | uint32 | optional | maximum number of iterations in each traversal, this is used to prevent endless loops in cyclic graphs |
|
|
151
|
-
| max_depth | uint32 | optional | visits nodes in at most the given depth |
|
|
152
|
-
| uniqueness | `io.restorecommerce.graph.Uniqueness` | optional | specifiy uniqueness for vertices and edges visited |
|
|
153
|
-
| order | string | optional | traversal order, possible values are `preorder`, `postorder` or `preorder-expander` |
|
|
154
|
-
| graph_name | string | optional | name of graph that contain the edges |
|
|
155
|
-
| edge_collection | string | optional | name of the collection that contains the edges |
|
|
138
|
+
| collection_name | string | required | collection name |
|
|
139
|
+
| start_vertex_ids | [ ] string | required | list of start vertex ids |
|
|
156
140
|
|
|
157
|
-
`io.restorecommerce.graph.
|
|
141
|
+
`io.restorecommerce.graph.Collection`
|
|
158
142
|
|
|
159
143
|
| Field | Type | Label | Description |
|
|
160
144
|
| ----- | ---- | ----- | ----------- |
|
|
161
|
-
|
|
|
145
|
+
| collection_name | string | required | collection name |
|
|
146
|
+
| limit | [ ] number | optional | limit |
|
|
147
|
+
| sorts | [ ] `io.restorecommerce.resourcebase.Sort` | optional | sorting based on fields |
|
|
162
148
|
|
|
163
|
-
`io.restorecommerce.graph.
|
|
149
|
+
`io.restorecommerce.graph.Filters`
|
|
164
150
|
|
|
165
151
|
| Field | Type | Label | Description |
|
|
166
152
|
| ----- | ---- | ----- | ----------- |
|
|
167
|
-
|
|
|
168
|
-
|
|
|
153
|
+
| entity | string | optional | entity name |
|
|
154
|
+
| edge | string | optional | edge name |
|
|
155
|
+
| filters | `io.restorecommerce.graph.Filter` | optional | Filter |
|
|
156
|
+
| operator | enum | optional | operator, `and` or `or`, default is `and` |
|
|
169
157
|
|
|
170
|
-
`io.restorecommerce.graph.
|
|
158
|
+
`io.restorecommerce.graph.Options`
|
|
171
159
|
|
|
172
160
|
| Field | Type | Label | Description |
|
|
173
161
|
| ----- | ---- | ----- | ----------- |
|
|
174
|
-
|
|
|
175
|
-
|
|
|
162
|
+
| include_vertexs | [ ] string | optional | list of vertex's to be included in traversal |
|
|
163
|
+
| exclude_vertexs | [ ] string | optional | list of vertex's to be excluded in traversal |
|
|
164
|
+
| include_edges | [ ] string | optional | list of edge's to be included in traversal |
|
|
165
|
+
| exclude_edges | [ ] string | optional | list of edge's to be excluded in traversal |
|
|
166
|
+
| direction | enum | optional | direction of traversal, `OUTBOUND` or `INBOUND`, default is `OUTBOUND` |
|
|
176
167
|
|
|
177
168
|
`io.restorecommerce.graph.TraversalResponse`
|
|
178
169
|
|
|
179
170
|
| Field | Type | Label | Description |
|
|
180
171
|
| ----- | ---- | ----- | ----------- |
|
|
181
|
-
| vertex_fields | [ ] `io.restorecommerce.graph.VertexFields` | required | Object containing vertex metadata: `id`, `_id`, `_key` and `_rev` values |
|
|
182
172
|
| paths | `google.protobuf.Any` | required | buffered data, contains the list of visited paths |
|
|
183
173
|
| data | `google.protobuf.Any` | required | buffered data, contains all the data from the visited vertices |
|
|
184
|
-
|
|
185
|
-
`io.restorecommerce.graph.VertexFields`
|
|
186
|
-
|
|
187
|
-
| Field | Type | Label | Description |
|
|
188
|
-
| ----- | ---- | ----- | ----------- |
|
|
189
|
-
| _id | string | required | vertex document handle |
|
|
190
|
-
| _key | string | required | vertex document unique key |
|
|
191
|
-
| _rev | string | required | revision or vertex document ETag |
|
|
192
|
-
| id | string | required | id of the vertex collection |
|
|
174
|
+
| operation_status | `io.restorecommerce.status.OperationStatus` | required | operation status |
|
|
193
175
|
|
|
194
176
|
## Kafka Events
|
|
195
177
|
|
|
@@ -11,9 +11,9 @@ export declare class ResourcesAPIBase {
|
|
|
11
11
|
private collectionName;
|
|
12
12
|
private edgeCfg?;
|
|
13
13
|
private graphName?;
|
|
14
|
-
|
|
14
|
+
bufferFields: string[];
|
|
15
15
|
requiredFields: any;
|
|
16
|
-
|
|
16
|
+
timeStampFields: string[];
|
|
17
17
|
resourceName: string;
|
|
18
18
|
logger: any;
|
|
19
19
|
/**
|
|
@@ -69,7 +69,5 @@ export declare class ResourcesAPIBase {
|
|
|
69
69
|
* A list of documents or partial documents. Each document must contain an id field.
|
|
70
70
|
*/
|
|
71
71
|
update(documents: BaseDocument[]): Promise<BaseDocument[]>;
|
|
72
|
-
private
|
|
73
|
-
private convertmsToSecondsNanos;
|
|
74
|
-
private updateJSON;
|
|
72
|
+
private encodeOrDecode;
|
|
75
73
|
}
|
package/lib/core/ResourcesAPI.js
CHANGED
|
@@ -27,6 +27,7 @@ exports.ResourcesAPIBase = void 0;
|
|
|
27
27
|
const _ = __importStar(require("lodash"));
|
|
28
28
|
const chassis_srv_1 = require("@restorecommerce/chassis-srv");
|
|
29
29
|
const uuid = __importStar(require("uuid"));
|
|
30
|
+
const utils_1 = require("./utils");
|
|
30
31
|
let redisClient;
|
|
31
32
|
const Strategies = {
|
|
32
33
|
INCREMENT: 'increment',
|
|
@@ -45,7 +46,6 @@ const setDefaults = async (obj, collectionName) => {
|
|
|
45
46
|
if (_.isEmpty(o.meta)) {
|
|
46
47
|
throw new chassis_srv_1.errors.InvalidArgument('Object does not contain ownership information');
|
|
47
48
|
}
|
|
48
|
-
const now = Date.now();
|
|
49
49
|
if (redisClient) {
|
|
50
50
|
const values = await redisClient.hGetAll(collectionName);
|
|
51
51
|
if (values) {
|
|
@@ -71,9 +71,9 @@ const setDefaults = async (obj, collectionName) => {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
if (_.isNil(o.meta.created) || o.meta.created === 0) {
|
|
74
|
-
o.meta.created =
|
|
74
|
+
o.meta.created = new Date();
|
|
75
75
|
}
|
|
76
|
-
o.meta.modified =
|
|
76
|
+
o.meta.modified = new Date();
|
|
77
77
|
if (_.isNil(o.id) || o.id === 0 || isEmptyObject(o.id)) {
|
|
78
78
|
o.id = uuidGen();
|
|
79
79
|
}
|
|
@@ -89,31 +89,10 @@ const updateMetadata = (docMeta, newDoc) => {
|
|
|
89
89
|
docMeta.owners = newDoc.meta.owners;
|
|
90
90
|
}
|
|
91
91
|
docMeta.modified_by = newDoc.meta.modified_by;
|
|
92
|
-
docMeta.modified = Date
|
|
92
|
+
docMeta.modified = new Date();
|
|
93
93
|
newDoc.meta = docMeta;
|
|
94
94
|
return newDoc;
|
|
95
95
|
};
|
|
96
|
-
const decodeBufferObj = (document, bufferField) => {
|
|
97
|
-
if (bufferField in document && !_.isEmpty(document[bufferField])) {
|
|
98
|
-
const encodedBufferObj = document[bufferField].value;
|
|
99
|
-
// By default it was encoded in utf8 so decoding by default from utf8
|
|
100
|
-
let decodedMsg = Buffer.from(encodedBufferObj).toString();
|
|
101
|
-
// store as object in DB
|
|
102
|
-
decodedMsg = JSON.parse(decodedMsg);
|
|
103
|
-
document[bufferField] = decodedMsg;
|
|
104
|
-
}
|
|
105
|
-
return document;
|
|
106
|
-
};
|
|
107
|
-
const encodeMsgObj = (document, bufferField) => {
|
|
108
|
-
if (bufferField in document && document[bufferField]) {
|
|
109
|
-
const decodedMsg = document[bufferField];
|
|
110
|
-
// convert the Msg obj to Buffer Obj
|
|
111
|
-
const encodedBufferObj = Buffer.from(JSON.stringify(decodedMsg));
|
|
112
|
-
document[bufferField] = {};
|
|
113
|
-
document[bufferField].value = encodedBufferObj;
|
|
114
|
-
}
|
|
115
|
-
return document;
|
|
116
|
-
};
|
|
117
96
|
/**
|
|
118
97
|
* Resource API base provides functions for CRUD operations.
|
|
119
98
|
*/
|
|
@@ -129,51 +108,6 @@ class ResourcesAPIBase {
|
|
|
129
108
|
this.collectionName = collectionName;
|
|
130
109
|
this.edgeCfg = edgeCfg;
|
|
131
110
|
this.graphName = graphName;
|
|
132
|
-
this.updateJSON = (path, obj, secondsNanoToms = true) => {
|
|
133
|
-
let fields = path.split('.');
|
|
134
|
-
let result = obj;
|
|
135
|
-
let j = 0;
|
|
136
|
-
for (let i = 0, n = fields.length; i < n && result !== undefined; i++) {
|
|
137
|
-
let field = fields[i];
|
|
138
|
-
if (i === n - 1) {
|
|
139
|
-
// reset value finally after iterating to the position (only if value already exists)
|
|
140
|
-
if (result[field]) {
|
|
141
|
-
if (secondsNanoToms && result[field]?.seconds) {
|
|
142
|
-
let millis = result[field].seconds * 1000;
|
|
143
|
-
millis += result[field]?.nanos / 1000000;
|
|
144
|
-
result[field] = millis;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
const seconds = result[field] / 1000;
|
|
148
|
-
const nanos = (result[field] % 1000) * 1000000;
|
|
149
|
-
result[field] = { seconds, nanos };
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
if (_.isArray(result[field])) {
|
|
155
|
-
// till i < n concat new fields
|
|
156
|
-
let newField;
|
|
157
|
-
for (let k = i + 1; k < n; k++) {
|
|
158
|
-
if (newField) {
|
|
159
|
-
newField = newField + '.' + fields[k];
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
newField = fields[k];
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
for (; j < result[field].length; j++) {
|
|
166
|
-
// recurisve call to update each element if its an array
|
|
167
|
-
this.updateJSON(newField, result[field][j], secondsNanoToms);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
// update object till final path is reached
|
|
172
|
-
result = result[field];
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
111
|
this.resourceName = collectionName.substring(0, collectionName.length - 1);
|
|
178
112
|
if (!fieldHandlerConf) {
|
|
179
113
|
return;
|
|
@@ -182,12 +116,12 @@ class ResourcesAPIBase {
|
|
|
182
116
|
if (!redisClient) {
|
|
183
117
|
redisClient = fieldHandlerConf.redisClient;
|
|
184
118
|
}
|
|
185
|
-
if (fieldHandlerConf.
|
|
186
|
-
this.
|
|
119
|
+
if (fieldHandlerConf.bufferFields) {
|
|
120
|
+
this.bufferFields = fieldHandlerConf.bufferFields;
|
|
187
121
|
}
|
|
188
122
|
// config fix to be removed after ts-proto is used
|
|
189
|
-
if (fieldHandlerConf.
|
|
190
|
-
this.
|
|
123
|
+
if (fieldHandlerConf.timeStampFields) {
|
|
124
|
+
this.timeStampFields = fieldHandlerConf.timeStampFields;
|
|
191
125
|
}
|
|
192
126
|
if (fieldHandlerConf.requiredFields) {
|
|
193
127
|
this.requiredFields = fieldHandlerConf.requiredFields;
|
|
@@ -237,17 +171,14 @@ class ResourcesAPIBase {
|
|
|
237
171
|
search
|
|
238
172
|
};
|
|
239
173
|
let entities = await this.db.find(this.collectionName, filter, options);
|
|
240
|
-
if (this.
|
|
174
|
+
if (this.bufferFields && entities?.length > 0) {
|
|
241
175
|
// encode the msg obj back to buffer obj and send it back
|
|
242
|
-
entities.
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
});
|
|
176
|
+
entities = this.encodeOrDecode(entities, this.bufferFields, 'endcode');
|
|
177
|
+
}
|
|
178
|
+
if (this.timeStampFields && entities?.length > 0) {
|
|
179
|
+
// convert number to Date Object
|
|
180
|
+
entities = this.encodeOrDecode(entities, this.timeStampFields, 'convertMilisecToDateObj');
|
|
248
181
|
}
|
|
249
|
-
// config fix to be removed after ts-proto is used
|
|
250
|
-
entities = this.convertmsToSecondsNanos(entities);
|
|
251
182
|
return entities;
|
|
252
183
|
}
|
|
253
184
|
/**
|
|
@@ -257,7 +188,6 @@ class ResourcesAPIBase {
|
|
|
257
188
|
*/
|
|
258
189
|
async create(documents) {
|
|
259
190
|
const collection = this.collectionName;
|
|
260
|
-
let toInsert = [];
|
|
261
191
|
let result = [];
|
|
262
192
|
try {
|
|
263
193
|
let result = [];
|
|
@@ -267,22 +197,20 @@ class ResourcesAPIBase {
|
|
|
267
197
|
documents = requiredFieldsResult.documents;
|
|
268
198
|
result = requiredFieldsResult.result;
|
|
269
199
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
// decode the buffer and store it to DB
|
|
273
|
-
if (this.bufferField) {
|
|
274
|
-
return (decodeBufferObj(_.cloneDeep(doc), this.bufferField));
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
return doc;
|
|
278
|
-
}
|
|
200
|
+
documents = await Promise.all(documents.map(async (doc) => {
|
|
201
|
+
return await setDefaults(doc, collection);
|
|
279
202
|
}));
|
|
280
|
-
|
|
281
|
-
|
|
203
|
+
if (this.bufferFields && documents?.length > 0) {
|
|
204
|
+
documents = this.encodeOrDecode(documents, this.bufferFields, 'decode');
|
|
205
|
+
}
|
|
206
|
+
if (this.timeStampFields && documents?.length > 0) {
|
|
207
|
+
// convert Date Object to Number
|
|
208
|
+
documents = this.encodeOrDecode(documents, this.timeStampFields, 'convertDateObjToMilisec');
|
|
209
|
+
}
|
|
282
210
|
if (this.isGraphDB(this.db)) {
|
|
283
211
|
await this.db.createGraphDB(this.graphName);
|
|
284
212
|
await this.db.addVertexCollection(collection);
|
|
285
|
-
let createVertexResp = await this.db.createVertex(collection,
|
|
213
|
+
let createVertexResp = await this.db.createVertex(collection, documents);
|
|
286
214
|
for (let document of documents) {
|
|
287
215
|
if (this.edgeCfg && _.isArray(this.edgeCfg) && this.edgeCfg.length > 0) {
|
|
288
216
|
for (let eachEdgeCfg of this.edgeCfg) {
|
|
@@ -317,8 +245,10 @@ class ResourcesAPIBase {
|
|
|
317
245
|
else {
|
|
318
246
|
result.push(createVertexResp);
|
|
319
247
|
}
|
|
320
|
-
|
|
321
|
-
|
|
248
|
+
if (this.timeStampFields && result?.length > 0) {
|
|
249
|
+
// convert number to Date Object
|
|
250
|
+
result = this.encodeOrDecode(result, this.timeStampFields, 'convertMilisecToDateObj');
|
|
251
|
+
}
|
|
322
252
|
return result;
|
|
323
253
|
}
|
|
324
254
|
else {
|
|
@@ -326,12 +256,14 @@ class ResourcesAPIBase {
|
|
|
326
256
|
if (!_.isEmpty(result)) {
|
|
327
257
|
checkReqFieldResult = result;
|
|
328
258
|
}
|
|
329
|
-
result = await this.db.insert(collection,
|
|
259
|
+
result = await this.db.insert(collection, documents);
|
|
330
260
|
if (!_.isEmpty(checkReqFieldResult)) {
|
|
331
261
|
checkReqFieldResult.forEach((reqFieldResult) => result.push(reqFieldResult));
|
|
332
262
|
}
|
|
333
|
-
|
|
334
|
-
|
|
263
|
+
if (this.timeStampFields && result?.length > 0) {
|
|
264
|
+
// convert number to Date Object
|
|
265
|
+
result = this.encodeOrDecode(result, this.timeStampFields, 'convertMilisecToDateObj');
|
|
266
|
+
}
|
|
335
267
|
return result;
|
|
336
268
|
}
|
|
337
269
|
}
|
|
@@ -448,7 +380,9 @@ class ResourcesAPIBase {
|
|
|
448
380
|
let updateDocuments = [];
|
|
449
381
|
let dispatch = [];
|
|
450
382
|
dispatch = await Promise.all(documents.map(async (doc) => {
|
|
451
|
-
|
|
383
|
+
if (this.bufferFields && doc) {
|
|
384
|
+
doc = this.encodeOrDecode([doc], this.bufferFields, 'decode')[0];
|
|
385
|
+
}
|
|
452
386
|
let foundDocs;
|
|
453
387
|
if (doc && doc.id) {
|
|
454
388
|
foundDocs = await this.db.find(this.collectionName, { id: doc.id }, {
|
|
@@ -465,6 +399,10 @@ class ResourcesAPIBase {
|
|
|
465
399
|
eventName = 'Created';
|
|
466
400
|
}
|
|
467
401
|
else {
|
|
402
|
+
// convert dateTimeStamp fields
|
|
403
|
+
if (this.timeStampFields) {
|
|
404
|
+
foundDocs = this.encodeOrDecode(foundDocs, this.timeStampFields, 'convertMilisecToDateObj');
|
|
405
|
+
}
|
|
468
406
|
// update
|
|
469
407
|
const dbDoc = foundDocs[0];
|
|
470
408
|
updateMetadata(dbDoc.meta, doc);
|
|
@@ -475,20 +413,20 @@ class ResourcesAPIBase {
|
|
|
475
413
|
return events.emit(`${resourceName}${eventName}`, doc);
|
|
476
414
|
}
|
|
477
415
|
}));
|
|
478
|
-
if (createDocuments
|
|
479
|
-
createDocuments = this.convertSecondsNanosToms(createDocuments);
|
|
416
|
+
if (createDocuments?.length > 0) {
|
|
480
417
|
createDocsResult = await this.create(createDocuments);
|
|
481
418
|
}
|
|
482
|
-
if (updateDocuments
|
|
483
|
-
updateDocuments = this.convertSecondsNanosToms(updateDocuments);
|
|
419
|
+
if (updateDocuments?.length > 0) {
|
|
484
420
|
updateDocsResult = await this.update(updateDocuments);
|
|
485
421
|
}
|
|
486
422
|
result = _.union(createDocuments, updateDocuments);
|
|
487
|
-
|
|
488
|
-
|
|
423
|
+
if (this.timeStampFields && result?.length > 0) {
|
|
424
|
+
// convert number to Date Object
|
|
425
|
+
result = this.encodeOrDecode(result, this.timeStampFields, 'convertMilisecToDateObj');
|
|
426
|
+
}
|
|
489
427
|
await Promise.all(dispatch);
|
|
490
|
-
if (this.
|
|
491
|
-
|
|
428
|
+
if (this.bufferFields && result?.length > 0) {
|
|
429
|
+
result = this.encodeOrDecode(result, this.bufferFields, 'encode');
|
|
492
430
|
}
|
|
493
431
|
return result;
|
|
494
432
|
}
|
|
@@ -513,10 +451,10 @@ class ResourcesAPIBase {
|
|
|
513
451
|
try {
|
|
514
452
|
const collectionName = this.collectionName;
|
|
515
453
|
let docsWithUpMetadata = await Promise.all(documents.map(async (doc) => {
|
|
516
|
-
if (this.
|
|
517
|
-
doc =
|
|
454
|
+
if (this.bufferFields && doc) {
|
|
455
|
+
doc = this.encodeOrDecode([_.cloneDeep(doc)], this.bufferFields, 'decode')[0];
|
|
518
456
|
}
|
|
519
|
-
|
|
457
|
+
let foundDocs = await this.db.find(collectionName, { id: doc.id });
|
|
520
458
|
let dbDoc;
|
|
521
459
|
if (foundDocs && foundDocs.length === 1) {
|
|
522
460
|
dbDoc = foundDocs[0];
|
|
@@ -572,12 +510,15 @@ class ResourcesAPIBase {
|
|
|
572
510
|
}
|
|
573
511
|
return doc;
|
|
574
512
|
}));
|
|
575
|
-
|
|
576
|
-
|
|
513
|
+
if (this.timeStampFields && docsWithUpMetadata?.length > 0) {
|
|
514
|
+
docsWithUpMetadata = this.encodeOrDecode(docsWithUpMetadata, this.timeStampFields, 'convertDateObjToMilisec');
|
|
515
|
+
}
|
|
577
516
|
updateResponse = await this.db.update(collectionName, docsWithUpMetadata);
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
517
|
+
if (this.timeStampFields && updateResponse?.length > 0) {
|
|
518
|
+
updateResponse = this.encodeOrDecode(updateResponse, this.timeStampFields, 'convertMilisecToDateObj');
|
|
519
|
+
}
|
|
520
|
+
if (this.bufferFields && updateResponse?.length > 0) {
|
|
521
|
+
updateResponse = this.encodeOrDecode(updateResponse, this.bufferFields, 'encode');
|
|
581
522
|
}
|
|
582
523
|
return updateResponse;
|
|
583
524
|
}
|
|
@@ -591,35 +532,12 @@ class ResourcesAPIBase {
|
|
|
591
532
|
return updateResponse;
|
|
592
533
|
}
|
|
593
534
|
}
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
else if (field && doc[field]?.seconds) {
|
|
601
|
-
// convert seconds and nano seconds to unix epoch date time in mili seconds
|
|
602
|
-
let millis = doc[field].seconds * 1000;
|
|
603
|
-
millis += doc[field]?.nanos / 1000000;
|
|
604
|
-
doc[field] = millis;
|
|
605
|
-
}
|
|
606
|
-
});
|
|
607
|
-
});
|
|
608
|
-
return documents;
|
|
609
|
-
}
|
|
610
|
-
convertmsToSecondsNanos(documents) {
|
|
611
|
-
documents?.forEach(doc => {
|
|
612
|
-
this.dateTimeField?.forEach(field => {
|
|
613
|
-
if (field.indexOf('.')) {
|
|
614
|
-
this.updateJSON(field, doc, false);
|
|
615
|
-
}
|
|
616
|
-
else if (doc && doc[field]) {
|
|
617
|
-
const seconds = doc[field] / 1000;
|
|
618
|
-
const nanos = (doc[field] % 1000) * 1000000;
|
|
619
|
-
doc[field] = { seconds, nanos };
|
|
620
|
-
}
|
|
621
|
-
});
|
|
622
|
-
});
|
|
535
|
+
encodeOrDecode(documents, fieldPaths, fieldHanlder) {
|
|
536
|
+
for (let doc of documents) {
|
|
537
|
+
for (let fieldPath of fieldPaths) {
|
|
538
|
+
doc = (0, utils_1.fieldHandler)(doc, fieldPath, fieldHanlder);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
623
541
|
return documents;
|
|
624
542
|
}
|
|
625
543
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesAPI.js","sourceRoot":"","sources":["../../src/core/ResourcesAPI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResourcesAPI.js","sourceRoot":"","sources":["../../src/core/ResourcesAPI.ts"],"names":[],"mappings":"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"}
|
package/lib/core/interfaces.d.ts
CHANGED
|
@@ -37,14 +37,18 @@ export interface BaseDocument {
|
|
|
37
37
|
[key: string]: any;
|
|
38
38
|
}
|
|
39
39
|
export interface DocumentMetadata {
|
|
40
|
-
created?:
|
|
41
|
-
modified?:
|
|
40
|
+
created?: any;
|
|
41
|
+
modified?: any;
|
|
42
42
|
modified_by?: string;
|
|
43
43
|
owners: {
|
|
44
44
|
id?: string;
|
|
45
45
|
value?: string;
|
|
46
46
|
}[];
|
|
47
47
|
}
|
|
48
|
+
export interface DateTimeConfig {
|
|
49
|
+
fields: string[];
|
|
50
|
+
entities: string[];
|
|
51
|
+
}
|
|
48
52
|
export declare enum Direction {
|
|
49
53
|
OUTBOUND = "OUTBOUND",
|
|
50
54
|
INBOUND = "INBOUND"
|
package/lib/core/interfaces.js
CHANGED
|
@@ -12,7 +12,7 @@ var FilterOperation;
|
|
|
12
12
|
FilterOperation[FilterOperation["iLike"] = 6] = "iLike";
|
|
13
13
|
FilterOperation[FilterOperation["in"] = 7] = "in";
|
|
14
14
|
FilterOperation[FilterOperation["neq"] = 8] = "neq";
|
|
15
|
-
})(FilterOperation
|
|
15
|
+
})(FilterOperation || (exports.FilterOperation = FilterOperation = {}));
|
|
16
16
|
var FilterValueType;
|
|
17
17
|
(function (FilterValueType) {
|
|
18
18
|
FilterValueType[FilterValueType["STRING"] = 0] = "STRING";
|
|
@@ -20,15 +20,15 @@ var FilterValueType;
|
|
|
20
20
|
FilterValueType[FilterValueType["BOOLEAN"] = 2] = "BOOLEAN";
|
|
21
21
|
FilterValueType[FilterValueType["DATE"] = 3] = "DATE";
|
|
22
22
|
FilterValueType[FilterValueType["ARRAY"] = 4] = "ARRAY";
|
|
23
|
-
})(FilterValueType
|
|
23
|
+
})(FilterValueType || (exports.FilterValueType = FilterValueType = {}));
|
|
24
24
|
var OperatorType;
|
|
25
25
|
(function (OperatorType) {
|
|
26
26
|
OperatorType[OperatorType["and"] = 0] = "and";
|
|
27
27
|
OperatorType[OperatorType["or"] = 1] = "or";
|
|
28
|
-
})(OperatorType
|
|
28
|
+
})(OperatorType || (exports.OperatorType = OperatorType = {}));
|
|
29
29
|
var Direction;
|
|
30
30
|
(function (Direction) {
|
|
31
31
|
Direction["OUTBOUND"] = "OUTBOUND";
|
|
32
32
|
Direction["INBOUND"] = "INBOUND";
|
|
33
|
-
})(Direction
|
|
33
|
+
})(Direction || (exports.Direction = Direction = {}));
|
|
34
34
|
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAUX;AAVD,WAAY,eAAe;IACzB,iDAAM,CAAA;IACN,iDAAM,CAAA;IACN,mDAAO,CAAA;IACP,iDAAM,CAAA;IACN,mDAAO,CAAA;IACP,2DAAW,CAAA;IACX,uDAAS,CAAA;IACT,iDAAM,CAAA;IACN,mDAAO,CAAA;AACT,CAAC,EAVW,eAAe,
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAUX;AAVD,WAAY,eAAe;IACzB,iDAAM,CAAA;IACN,iDAAM,CAAA;IACN,mDAAO,CAAA;IACP,iDAAM,CAAA;IACN,mDAAO,CAAA;IACP,2DAAW,CAAA;IACX,uDAAS,CAAA;IACT,iDAAM,CAAA;IACN,mDAAO,CAAA;AACT,CAAC,EAVW,eAAe,+BAAf,eAAe,QAU1B;AAED,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,yDAAU,CAAA;IACV,yDAAU,CAAA;IACV,2DAAW,CAAA;IACX,qDAAQ,CAAA;IACR,uDAAS,CAAA;AACX,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6CAAO,CAAA;IACP,2CAAM,CAAA;AACR,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAiCD,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,kCAAqB,CAAA;IACrB,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fieldHandler: (obj: any, fieldPath: string, fieldHandlerType: string) => any;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.fieldHandler = void 0;
|
|
27
|
+
const _ = __importStar(require("lodash"));
|
|
28
|
+
const marshallObj = (val) => {
|
|
29
|
+
try {
|
|
30
|
+
return {
|
|
31
|
+
type_url: '',
|
|
32
|
+
value: Buffer.from(JSON.stringify(val))
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
// throw error and it is handled and logged in ServiceBase functions
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const updateObject = (obj, path, value, fieldHandlerType) => {
|
|
41
|
+
try {
|
|
42
|
+
if (value && fieldHandlerType === 'encode') {
|
|
43
|
+
const marshalled = marshallObj(value);
|
|
44
|
+
_.set(obj, path, marshalled);
|
|
45
|
+
}
|
|
46
|
+
else if (value?.value && fieldHandlerType === 'decode') {
|
|
47
|
+
let unmarshalled = JSON.parse(value.value.toString());
|
|
48
|
+
_.set(obj, path, unmarshalled);
|
|
49
|
+
}
|
|
50
|
+
else if (value && fieldHandlerType == 'convertDateObjToMilisec' && value instanceof Date) {
|
|
51
|
+
_.set(obj, path, value.getTime());
|
|
52
|
+
}
|
|
53
|
+
else if (value && fieldHandlerType == 'convertMilisecToDateObj' && typeof (value) == 'number') {
|
|
54
|
+
_.set(obj, path, new Date(value));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
// rethrow the error, this is caught and logged in ResourceAPI
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const setNestedPath = (object, fieldPath, fieldHandlerType) => {
|
|
63
|
+
const prefix = fieldPath?.substring(0, fieldPath.indexOf('.['));
|
|
64
|
+
const suffix = fieldPath?.substring(fieldPath.indexOf('].') + 2);
|
|
65
|
+
let setRecursive = false;
|
|
66
|
+
// recursive check if the sub suffix again contains an array index
|
|
67
|
+
if (suffix.indexOf('.[') > 0) {
|
|
68
|
+
setRecursive = true;
|
|
69
|
+
}
|
|
70
|
+
if (prefix && suffix) {
|
|
71
|
+
let array = _.get(object, prefix);
|
|
72
|
+
array.forEach((obj) => {
|
|
73
|
+
let fieldExists = _.get(obj, suffix);
|
|
74
|
+
if (fieldExists) {
|
|
75
|
+
updateObject(obj, suffix, fieldExists, fieldHandlerType);
|
|
76
|
+
}
|
|
77
|
+
// recursive call
|
|
78
|
+
if (fieldExists && setRecursive) {
|
|
79
|
+
setNestedPath(obj, suffix, fieldHandlerType);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const baseGet = (object, path) => {
|
|
85
|
+
let index = 0;
|
|
86
|
+
const length = path.length;
|
|
87
|
+
while (object != null && index < length) {
|
|
88
|
+
object = object[path[index++]];
|
|
89
|
+
}
|
|
90
|
+
return (index && index == length) ? object : undefined;
|
|
91
|
+
};
|
|
92
|
+
const fieldHandler = (obj, fieldPath, fieldHandlerType) => {
|
|
93
|
+
// fieldList contains the split Path to individual fields for fieldPath
|
|
94
|
+
// and the baseGet breaks when the first field do not exist
|
|
95
|
+
// ex: if fieldPath is `a.[0].b.c` then dotFieldPath is `a.0.b.c`
|
|
96
|
+
let dotFieldPath = fieldPath.split('.[').join('.');
|
|
97
|
+
dotFieldPath = dotFieldPath.split('].').join('.');
|
|
98
|
+
dotFieldPath = dotFieldPath.split('.');
|
|
99
|
+
const array = fieldPath.includes('[');
|
|
100
|
+
let fieldExists = baseGet(obj, dotFieldPath);
|
|
101
|
+
// only if the configured field exist check recursively for all entries in object
|
|
102
|
+
if (fieldExists && array) {
|
|
103
|
+
// use setNestedPath
|
|
104
|
+
setNestedPath(obj, fieldPath, fieldHandlerType);
|
|
105
|
+
}
|
|
106
|
+
else if (fieldExists) {
|
|
107
|
+
// use normal set and return
|
|
108
|
+
updateObject(obj, fieldPath, fieldExists, fieldHandlerType);
|
|
109
|
+
}
|
|
110
|
+
return obj;
|
|
111
|
+
};
|
|
112
|
+
exports.fieldHandler = fieldHandler;
|
|
113
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@restorecommerce/resource-base-interface",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Restorecommerce Resource Base Interface",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"author": "n-fuse GmbH",
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"interface"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@restorecommerce/chassis-srv": "^1.2.
|
|
21
|
-
"@restorecommerce/grpc-client": "^2.0.
|
|
22
|
-
"@restorecommerce/kafka-client": "^1.0.
|
|
23
|
-
"@restorecommerce/rc-grpc-clients": "^
|
|
24
|
-
"@restorecommerce/service-config": "^1.0.
|
|
20
|
+
"@restorecommerce/chassis-srv": "^1.2.4",
|
|
21
|
+
"@restorecommerce/grpc-client": "^2.0.2",
|
|
22
|
+
"@restorecommerce/kafka-client": "^1.0.14",
|
|
23
|
+
"@restorecommerce/rc-grpc-clients": "^4.1.1",
|
|
24
|
+
"@restorecommerce/service-config": "^1.0.6",
|
|
25
25
|
"lodash": "^4.17.21",
|
|
26
26
|
"redis": "^4.6.7"
|
|
27
27
|
},
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"@types/lodash": "^4.14.195",
|
|
30
30
|
"@types/mocha": "^10.0.1",
|
|
31
31
|
"@types/redis": "^4.0.11",
|
|
32
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
33
|
-
"@typescript-eslint/eslint-plugin-tslint": "^
|
|
34
|
-
"@typescript-eslint/parser": "^
|
|
35
|
-
"arangojs": "^8.
|
|
32
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
33
|
+
"@typescript-eslint/eslint-plugin-tslint": "^6.0.0",
|
|
34
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
35
|
+
"arangojs": "^8.4.0",
|
|
36
36
|
"cross-env": "^7.0.3",
|
|
37
|
-
"eslint": "^8.
|
|
37
|
+
"eslint": "^8.44.0",
|
|
38
38
|
"eslint-plugin-prefer-arrow-functions": "^3.1.4",
|
|
39
39
|
"mocha": "^10.2.0",
|
|
40
40
|
"npm-run-all": "^4.1.5",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"sleep": "^6.3.0",
|
|
45
45
|
"ts-node": "^10.9.1",
|
|
46
46
|
"tslint": "^6.1.3",
|
|
47
|
-
"typescript": "^5.
|
|
47
|
+
"typescript": "^5.1.6"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"test": "npm run lint && nyc npm run mocha",
|
|
@@ -63,4 +63,4 @@
|
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">= 12.0.0"
|
|
65
65
|
}
|
|
66
|
-
}
|
|
66
|
+
}
|