@itentialopensource/adapter-meraki 0.8.3 → 0.8.4
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/BROKER.md +6 -2
- package/CHANGELOG.md +69 -43
- package/adapter.js +2 -1
- package/adapterBase.js +63 -30
- package/package.json +3 -2
- package/pronghorn.json +642 -642
- package/propertiesSchema.json +50 -9
- package/refs?service=git-upload-pack +0 -0
- package/report/adapterInfo.json +10 -0
- package/report/updateReport1652488414759.json +120 -0
- package/sampleProperties.json +73 -26
- package/test/integration/adapterTestBasicGet.js +1 -1
- package/test/integration/adapterTestIntegration.js +24 -107
- package/test/unit/adapterTestUnit.js +29 -112
- package/utils/entitiesToDB.js +12 -57
- package/utils/tbScript.js +35 -20
- package/utils/tbUtils.js +44 -39
- package/utils/testRunner.js +16 -16
package/BROKER.md
CHANGED
@@ -170,9 +170,11 @@ Below is an example of how you may set up the properties for this call.
|
|
170
170
|
```json
|
171
171
|
"getDevice": [
|
172
172
|
{
|
173
|
-
"path": "/{org}/get/
|
173
|
+
"path": "/{org}/get/device",
|
174
174
|
"method": "GET",
|
175
|
-
"query": {
|
175
|
+
"query": {
|
176
|
+
"id": "{id}"
|
177
|
+
},
|
176
178
|
"body": {},
|
177
179
|
"headers": {},
|
178
180
|
"handleFailure": "ignore",
|
@@ -192,4 +194,6 @@ Below is an example of how you may set up the properties for this call.
|
|
192
194
|
]
|
193
195
|
```
|
194
196
|
|
197
|
+
In this example, we show a query parameter being used. Notice that the value is still provided via the requestFields and then like with the path, we use curly braces in the query to denote a variable. The body and header variables work in this same manner.
|
198
|
+
|
195
199
|
You could have multiple calls here if needed but generally that will not be the case.
|
package/CHANGELOG.md
CHANGED
@@ -1,39 +1,48 @@
|
|
1
1
|
|
2
|
-
## 0.8.
|
3
|
-
|
4
|
-
*
|
2
|
+
## 0.8.4 [05-14-2022]
|
3
|
+
|
4
|
+
* Migrate the adapter to the latest foundation
|
5
|
+
|
6
|
+
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!19
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
## 0.8.3 [05-08-2022] & 0.8.2 [05-02-2022] & 0.8.1 [04-13-2022] & 0.8.0 [01-21-2022]
|
11
|
+
|
12
|
+
- Multiple versions and releases due to this being one of the adapters heavily involved in the new addapter/broker integration effort.
|
13
|
+
- Add some items to .gitignore (e.g. DS_Store) to keep them out of the repos.
|
14
|
+
- Changes to the README (some typo fixes - Add how to extend the adapter). Split the README into various markdown files (AUTH, BROKER, CALLS, ENHANCE, PROPERTIES, SUMMARY, SYSTEMINFO, TROUBLESHOOT)
|
15
|
+
- Fix the issues with Confluence in the markdowns (Tables, Lists, Links)
|
16
|
+
- Add scripts for easier authentication, removing hooks, etc
|
17
|
+
- Script changes (install script as well as database changes in other scripts)
|
18
|
+
- Double # of path vars on generic call
|
19
|
+
- Update versions of foundation (e.g. adapter-utils)
|
20
|
+
- Update npm publish so it supports https
|
21
|
+
- Update dependencies
|
22
|
+
- Add preinstall for minimist
|
23
|
+
- Fix new lint issues that came from eslint dependency change
|
24
|
+
- Add more thorough Unit tests for standard files (Package, Pronghorn, Properties (Schema and Sample)
|
25
|
+
- Add the adapter type in the package.json
|
26
|
+
- Add AdapterInfo.js script
|
27
|
+
- Add json-query dependency
|
28
|
+
- Add the propertiesDecorators.json for product encryption
|
29
|
+
- Change the name of internal IAP/Adapter methods to avoid collisions and make more obvious in Workflow - iapRunAdapterBasicGet, iapRunAdapterConnectivity, iapRunAdapterHealthcheck, iapTroubleshootAdapter, iapGetAdapterQueue, iapUnsuspendAdapter, iapSuspendAdapter, iapFindAdapterPath, iapUpdateAdapterConfiguration, iapGetAdapterWorkflowFunctions
|
30
|
+
- Add the adapter config in the database support - iapMoveAdapterEntitiesToDB
|
31
|
+
- Add standard broker calls - hasEntities, getDevice, getDevicesFiltered, isAlive, getConfig and iapGetDeviceCount
|
32
|
+
- Add genericAdapterRequest that does not use the base_path and version so that the path can be unique - genericAdapterRequestNoBasePath
|
33
|
+
- Add AdapterInfo.json
|
34
|
+
- Add systemName for documentation
|
5
35
|
|
6
36
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!18
|
7
|
-
|
8
|
-
---
|
9
|
-
|
10
|
-
## 0.8.2 [05-02-2022]
|
11
|
-
|
12
|
-
* Patch/broker fix
|
13
|
-
|
14
37
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!17
|
15
|
-
|
16
|
-
---
|
17
|
-
|
18
|
-
## 0.8.1 [04-13-2022]
|
19
|
-
|
20
|
-
* added properties for broker calls and new documentation
|
21
|
-
|
22
38
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!16
|
23
|
-
|
24
|
-
---
|
25
|
-
|
26
|
-
## 0.8.0 [01-21-2022]
|
27
|
-
|
28
|
-
* migration to the latest foundation and broker ready
|
29
|
-
|
30
39
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!15
|
31
40
|
|
32
41
|
---
|
33
42
|
|
34
43
|
## 0.7.3 [06-08-2021]
|
35
44
|
|
36
|
-
|
45
|
+
- Update pronghorn.json and adpater.js for sending api call body directly
|
37
46
|
|
38
47
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!14
|
39
48
|
|
@@ -41,7 +50,19 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!14
|
|
41
50
|
|
42
51
|
## 0.7.2 [03-10-2021]
|
43
52
|
|
44
|
-
|
53
|
+
- migration to bring up to the latest foundation
|
54
|
+
- Change to .eslintignore (adapter_modification directory)
|
55
|
+
- Change to README.md (new properties, new scripts, new processes)
|
56
|
+
- Changes to adapterBase.js (new methods)
|
57
|
+
- Changes to package.json (new scripts, dependencies)
|
58
|
+
- Changes to propertiesSchema.json (new properties and changes to existing)
|
59
|
+
- Changes to the Unit test
|
60
|
+
- Adding several test files, utils files and .generic entity
|
61
|
+
- Fix order of scripts and dependencies in package.json
|
62
|
+
- Fix order of properties in propertiesSchema.json
|
63
|
+
- Update sampleProperties, unit and integration tests to have all new properties.
|
64
|
+
- Add all new calls to adapter.js and pronghorn.json
|
65
|
+
- Add suspend piece to older methods
|
45
66
|
|
46
67
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!13
|
47
68
|
|
@@ -49,7 +70,7 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!13
|
|
49
70
|
|
50
71
|
## 0.7.1 [07-08-2020]
|
51
72
|
|
52
|
-
|
73
|
+
- Update to the latest adapter foundation
|
53
74
|
|
54
75
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!12
|
55
76
|
|
@@ -57,7 +78,7 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!12
|
|
57
78
|
|
58
79
|
## 0.7.0 [03-02-2020]
|
59
80
|
|
60
|
-
|
81
|
+
- Add new version calls based on additional query parameters that Meraki has made available.
|
61
82
|
|
62
83
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!11
|
63
84
|
|
@@ -65,7 +86,7 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!11
|
|
65
86
|
|
66
87
|
## 0.6.0 [02-03-2020]
|
67
88
|
|
68
|
-
|
89
|
+
- Add new calls to the adapter that were in the new Postman Collection for Meraki (built swagger and put in report)
|
69
90
|
|
70
91
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!10
|
71
92
|
|
@@ -73,7 +94,7 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!10
|
|
73
94
|
|
74
95
|
## 0.5.2 [01-13-2020]
|
75
96
|
|
76
|
-
|
97
|
+
- Bring the adapter up to the latest adapter foundation
|
77
98
|
|
78
99
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!8
|
79
100
|
|
@@ -81,7 +102,7 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!8
|
|
81
102
|
|
82
103
|
## 0.5.1 [11-19-2019]
|
83
104
|
|
84
|
-
|
105
|
+
- Update the healthcheck url to one that was used in the lab
|
85
106
|
|
86
107
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!7
|
87
108
|
|
@@ -89,7 +110,18 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!7
|
|
89
110
|
|
90
111
|
## 0.5.0 [11-08-2019]
|
91
112
|
|
92
|
-
|
113
|
+
- Update the adapter to the latest adapter foundation.
|
114
|
+
- Updating to adapter-utils 4.24.3 (automatic)
|
115
|
+
- Add sample token schemas (manual)
|
116
|
+
- Adding placement property to getToken response schema (manual - before encrypt)
|
117
|
+
- Adding sso default into action.json for getToken (manual - before response object)
|
118
|
+
- Add new adapter properties for metrics & mock (save_metric, mongo and return_raw) (automatic - check place manual before stub)
|
119
|
+
- Update sample properties to include new properties (manual)
|
120
|
+
- Update integration test for raw mockdata (automatic)
|
121
|
+
- Update test properties (manual)
|
122
|
+
- Changes to artifactize (automatic)
|
123
|
+
- Update type in sampleProperties so it is correct for the adapter (manual)
|
124
|
+
- Update the readme (automatic)
|
93
125
|
|
94
126
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!6
|
95
127
|
|
@@ -97,7 +129,7 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!6
|
|
97
129
|
|
98
130
|
## 0.4.0 [09-17-2019]
|
99
131
|
|
100
|
-
|
132
|
+
- Update the adapter to the latest adapter foundation
|
101
133
|
|
102
134
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!5
|
103
135
|
|
@@ -105,27 +137,21 @@ See merge request itentialopensource/adapters/sd-wan/adapter-meraki!5
|
|
105
137
|
|
106
138
|
## 0.3.1 [08-30-2019]
|
107
139
|
|
108
|
-
|
140
|
+
- Added the slash into the entity paths. Migrator does not currently update action files. This was fixed in the adapter builder a while ago but needed to be manually fixed in this adapter.
|
109
141
|
|
110
142
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!4
|
111
143
|
|
112
|
-
---
|
113
|
-
## 0.3.0 [07-30-2019]
|
114
|
-
* migratation, categorization and artifactize
|
115
|
-
|
116
|
-
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!3
|
117
|
-
|
118
144
|
---
|
119
145
|
|
120
|
-
## 0.2.0 [07-18-2019]
|
121
|
-
|
146
|
+
## 0.3.0 [07-30-2019] & 0.2.0 [07-18-2019]
|
147
|
+
- Migrate to the latest adapter foundation, categorize and prepare for app artifact
|
122
148
|
|
123
149
|
See merge request itentialopensource/adapters/sd-wan/adapter-meraki!3
|
124
150
|
|
125
151
|
---
|
126
152
|
|
127
153
|
## 0.1.1 [06-18-2019]
|
128
|
-
|
154
|
+
- Initial Commit
|
129
155
|
|
130
156
|
See merge request itentialopensource/adapters/adapter-meraki!2
|
131
157
|
|
package/adapter.js
CHANGED
@@ -89,7 +89,8 @@ class Meraki extends AdapterBaseCl {
|
|
89
89
|
'iapHasAdapterEntity',
|
90
90
|
'iapVerifyAdapterCapability',
|
91
91
|
'iapUpdateAdapterEntityCache',
|
92
|
-
'hasEntities'
|
92
|
+
'hasEntities',
|
93
|
+
'getAuthorization'
|
93
94
|
];
|
94
95
|
if (!inIgnore && Array.isArray(inIgnore)) {
|
95
96
|
myIgnore = inIgnore;
|
package/adapterBase.js
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
/* Required libraries. */
|
14
14
|
const fs = require('fs-extra');
|
15
15
|
const path = require('path');
|
16
|
+
const jsonQuery = require('json-query');
|
16
17
|
const EventEmitterCl = require('events').EventEmitter;
|
17
18
|
const { execSync } = require('child_process');
|
18
19
|
|
@@ -148,32 +149,15 @@ function updatePackage(changes) {
|
|
148
149
|
* INTERNAL FUNCTION: get data from source(s) - nested
|
149
150
|
*/
|
150
151
|
function getDataFromSources(loopField, sources) {
|
151
|
-
const loopArray = loopField.split('.');
|
152
152
|
let fieldValue = loopField;
|
153
153
|
|
154
154
|
// go through the sources to find the field
|
155
155
|
for (let s = 0; s < sources.length; s += 1) {
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
// loops through incase the field is nested
|
160
|
-
for (let i = 0; i < loopArray.length; i += 1) {
|
161
|
-
// if not nested finds it first pass - otherwise set to new level and loop
|
162
|
-
if (Object.hasOwnProperty.call(nestedValue, loopArray[i])) {
|
163
|
-
nestedValue = nestedValue[loopArray[i]];
|
164
|
-
|
165
|
-
// set found if we are at the leaf (going to stop looping)
|
166
|
-
if (i + 1 === loopArray.length) {
|
167
|
-
found = true;
|
168
|
-
}
|
169
|
-
} else {
|
170
|
-
// not found in source - check next one
|
171
|
-
break;
|
172
|
-
}
|
173
|
-
}
|
156
|
+
// find the field value using jsonquery
|
157
|
+
const nestedValue = jsonQuery(loopField, { data: sources[s] }).value;
|
174
158
|
|
175
159
|
// if we found in source - set and no need to check other sources
|
176
|
-
if (
|
160
|
+
if (nestedValue) {
|
177
161
|
fieldValue = nestedValue;
|
178
162
|
break;
|
179
163
|
}
|
@@ -194,7 +178,7 @@ class AdapterBase extends EventEmitterCl {
|
|
194
178
|
super();
|
195
179
|
|
196
180
|
// IAP home directory injected by core when running the adapter within IAP
|
197
|
-
process.env.iap_home = process.argv
|
181
|
+
[, , , process.env.iap_home] = process.argv;
|
198
182
|
|
199
183
|
try {
|
200
184
|
// Capture the adapter id
|
@@ -899,17 +883,18 @@ class AdapterBase extends EventEmitterCl {
|
|
899
883
|
*
|
900
884
|
* @return {Callback} - containing the response from the mongo transaction
|
901
885
|
*/
|
902
|
-
iapMoveAdapterEntitiesToDB(callback) {
|
886
|
+
async iapMoveAdapterEntitiesToDB(callback) {
|
903
887
|
const meth = 'adapterBase-iapMoveAdapterEntitiesToDB';
|
904
888
|
const origin = `${this.id}-${meth}`;
|
905
889
|
log.trace(origin);
|
906
890
|
|
907
891
|
try {
|
908
|
-
|
892
|
+
const result = await entitiesToDB.moveEntitiesToDB(__dirname, { pronghornProps: this.allProps, id: this.id });
|
893
|
+
return callback(result, null);
|
909
894
|
} catch (err) {
|
910
895
|
const errorObj = this.requestHandlerInst.formatErrorObject(this.id, meth, 'Caught Exception', null, null, null, err);
|
911
896
|
log.error(`${origin}: ${errorObj.IAPerror.displayString}`);
|
912
|
-
return callback(null,
|
897
|
+
return callback(null, err.message);
|
913
898
|
}
|
914
899
|
}
|
915
900
|
|
@@ -1195,9 +1180,51 @@ class AdapterBase extends EventEmitterCl {
|
|
1195
1180
|
}
|
1196
1181
|
if (callProps.body) {
|
1197
1182
|
callBody = callProps.body;
|
1183
|
+
|
1184
|
+
// go through the body fields to check for variable values
|
1185
|
+
const cbKeys = Object.keys(callBody);
|
1186
|
+
for (let cb = 0; cb < cbKeys.length; cb += 1) {
|
1187
|
+
if (callBody[cbKeys[cb]].startsWith('{') && callBody[cbKeys[cb]].endsWith('}')) {
|
1188
|
+
// make any necessary changes to the query params
|
1189
|
+
if (devResp !== null && callProps.requestFields && Object.keys(callProps.requestFields).length > 0) {
|
1190
|
+
const rqKeys = Object.keys(callProps.requestFields);
|
1191
|
+
|
1192
|
+
// get the field from the provided device
|
1193
|
+
for (let rq = 0; rq < rqKeys.length; rq += 1) {
|
1194
|
+
if (cbKeys[cb] === rqKeys[rq]) {
|
1195
|
+
const fieldValue = getDataFromSources(callProps.requestFields[rqKeys[rq]], devResp);
|
1196
|
+
|
1197
|
+
// put the value into the query - if it has been specified in the query
|
1198
|
+
callBody[cbKeys[cb]] = fieldValue;
|
1199
|
+
}
|
1200
|
+
}
|
1201
|
+
}
|
1202
|
+
}
|
1203
|
+
}
|
1198
1204
|
}
|
1199
1205
|
if (callProps.headers) {
|
1200
1206
|
callHeaders = callProps.headers;
|
1207
|
+
|
1208
|
+
// go through the body fields to check for variable values
|
1209
|
+
const chKeys = Object.keys(callHeaders);
|
1210
|
+
for (let ch = 0; ch < chKeys.length; ch += 1) {
|
1211
|
+
if (callHeaders[chKeys[ch]].startsWith('{') && callHeaders[chKeys[ch]].endsWith('}')) {
|
1212
|
+
// make any necessary changes to the query params
|
1213
|
+
if (devResp !== null && callProps.requestFields && Object.keys(callProps.requestFields).length > 0) {
|
1214
|
+
const rqKeys = Object.keys(callProps.requestFields);
|
1215
|
+
|
1216
|
+
// get the field from the provided device
|
1217
|
+
for (let rq = 0; rq < rqKeys.length; rq += 1) {
|
1218
|
+
if (chKeys[ch] === rqKeys[rq]) {
|
1219
|
+
const fieldValue = getDataFromSources(callProps.requestFields[rqKeys[rq]], devResp);
|
1220
|
+
|
1221
|
+
// put the value into the query - if it has been specified in the query
|
1222
|
+
callHeaders[chKeys[ch]] = fieldValue;
|
1223
|
+
}
|
1224
|
+
}
|
1225
|
+
}
|
1226
|
+
}
|
1227
|
+
}
|
1201
1228
|
}
|
1202
1229
|
if (callProps.handleFailure) {
|
1203
1230
|
handleFail = callProps.handleFailure;
|
@@ -1228,6 +1255,12 @@ class AdapterBase extends EventEmitterCl {
|
|
1228
1255
|
return callback({}, null);
|
1229
1256
|
}
|
1230
1257
|
|
1258
|
+
// get the response piece we care about from the response
|
1259
|
+
const myResult = result;
|
1260
|
+
if (callProps.responseDatakey) {
|
1261
|
+
myResult.response = jsonQuery(callProps.responseDatakey, { data: myResult.response }).value;
|
1262
|
+
}
|
1263
|
+
|
1231
1264
|
// get the keys for the response fields
|
1232
1265
|
let rfKeys = [];
|
1233
1266
|
if (callProps.responseFields && Object.keys(callProps.responseFields).length > 0) {
|
@@ -1235,10 +1268,10 @@ class AdapterBase extends EventEmitterCl {
|
|
1235
1268
|
}
|
1236
1269
|
|
1237
1270
|
// if we got an array returned (e.g. getDevicesFitered)
|
1238
|
-
if (Array.isArray(
|
1271
|
+
if (Array.isArray(myResult.response)) {
|
1239
1272
|
const listDevices = [];
|
1240
|
-
for (let a = 0; a <
|
1241
|
-
const thisDevice =
|
1273
|
+
for (let a = 0; a < myResult.response.length; a += 1) {
|
1274
|
+
const thisDevice = myResult.response[a];
|
1242
1275
|
for (let rf = 0; rf < rfKeys.length; rf += 1) {
|
1243
1276
|
if (rfKeys[rf] !== 'ostypePrefix') {
|
1244
1277
|
let fieldValue = getDataFromSources(callProps.responseFields[rfKeys[rf]], [thisDevice, devResp, callProps.requestFields]);
|
@@ -1250,7 +1283,7 @@ class AdapterBase extends EventEmitterCl {
|
|
1250
1283
|
// if there is a status to set, set it
|
1251
1284
|
if (rfKeys[rf] === 'status') {
|
1252
1285
|
// if really looking for just a good response
|
1253
|
-
if (callProps.responseFields[rfKeys[rf]] === 'return2xx' &&
|
1286
|
+
if (callProps.responseFields[rfKeys[rf]] === 'return2xx' && myResult.icode === statusValue.toString()) {
|
1254
1287
|
thisDevice.isAlive = true;
|
1255
1288
|
} else if (fieldValue.toString() === statusValue.toString()) {
|
1256
1289
|
thisDevice.isAlive = true;
|
@@ -1287,7 +1320,7 @@ class AdapterBase extends EventEmitterCl {
|
|
1287
1320
|
}
|
1288
1321
|
|
1289
1322
|
// if this is not an array - just about everything else, just handle as a single object
|
1290
|
-
let thisDevice =
|
1323
|
+
let thisDevice = myResult.response;
|
1291
1324
|
for (let rf = 0; rf < rfKeys.length; rf += 1) {
|
1292
1325
|
// skip ostypePrefix since it is not a field
|
1293
1326
|
if (rfKeys[rf] !== 'ostypePrefix') {
|
@@ -1300,7 +1333,7 @@ class AdapterBase extends EventEmitterCl {
|
|
1300
1333
|
// if there is a status to set, set it
|
1301
1334
|
if (rfKeys[rf] === 'status') {
|
1302
1335
|
// if really looking for just a good response
|
1303
|
-
if (callProps.responseFields[rfKeys[rf]] === 'return2xx' &&
|
1336
|
+
if (callProps.responseFields[rfKeys[rf]] === 'return2xx' && myResult.icode === statusValue.toString()) {
|
1304
1337
|
thisDevice.isAlive = true;
|
1305
1338
|
} else if (fieldValue.toString() === statusValue.toString()) {
|
1306
1339
|
thisDevice.isAlive = true;
|
package/package.json
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"name": "@itentialopensource/adapter-meraki",
|
3
|
-
"version": "0.8.
|
3
|
+
"version": "0.8.4",
|
4
4
|
"description": "This adapter integrates with system described as: merakiDashboardApi.",
|
5
5
|
"main": "adapter.js",
|
6
6
|
"systemName": "Meraki",
|
7
7
|
"wizardVersion": "2.44.7",
|
8
|
-
"engineVersion": "1.61.
|
8
|
+
"engineVersion": "1.61.6",
|
9
9
|
"adapterType": "http",
|
10
10
|
"scripts": {
|
11
11
|
"artifactize": "npm i && node utils/packModificationScript.js",
|
@@ -58,6 +58,7 @@
|
|
58
58
|
"axios": "^0.21.0",
|
59
59
|
"commander": "^2.20.0",
|
60
60
|
"fs-extra": "^8.1.0",
|
61
|
+
"json-query": "^2.2.2",
|
61
62
|
"mocha": "^9.0.1",
|
62
63
|
"mocha-param": "^2.0.1",
|
63
64
|
"mongodb": "^4.1.0",
|