@budibase/server 2.0.30-alpha.7 → 2.0.31
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/__mocks__/mongodb.ts +1 -1
- package/builder/assets/{index.b1aa5e8a.js → index.c4b43e7e.js} +283 -287
- package/builder/assets/{index.a6a040bb.css → index.dfa4073c.css} +2 -2
- package/builder/index.html +2 -2
- package/coverage/clover.xml +491 -495
- package/coverage/coverage-final.json +26 -26
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +2 -2
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +12 -12
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +15 -15
- package/coverage/lcov-report/api/controllers/row/utils.js.html +13 -13
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +5 -5
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +5 -5
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +3 -3
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +22 -22
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +2 -8
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +11 -11
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +11 -11
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +3 -3
- package/coverage/lcov-report/db/newid.js.html +2 -2
- package/coverage/lcov-report/db/utils.js.html +16 -10
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +2 -2
- package/coverage/lcov-report/events/utils.js.html +9 -9
- package/coverage/lcov-report/index.html +24 -24
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +11 -11
- package/coverage/lcov-report/middleware/currentapp.js.html +34 -34
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +8 -11
- package/coverage/lcov-report/utilities/global.js.html +16 -16
- package/coverage/lcov-report/utilities/index.html +15 -15
- package/coverage/lcov-report/utilities/index.js.html +7 -7
- package/coverage/lcov-report/utilities/plugins.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +13 -13
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +39 -54
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +10 -10
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +14 -14
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +11 -23
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +892 -900
- package/dist/api/controllers/application.js +2 -2
- package/dist/api/controllers/dev.js +1 -1
- package/dist/api/controllers/query/index.js +2 -7
- package/dist/api/controllers/row/index.js +10 -30
- package/dist/api/controllers/static/templates/preview.hbs +0 -10
- package/dist/api/controllers/table/internal.js +2 -8
- package/dist/api/controllers/table/utils.js +1 -3
- package/dist/automations/steps/updateRow.js +2 -2
- package/dist/automations/utils.js +3 -5
- package/dist/constants/index.js +0 -2
- package/dist/db/utils.js +1 -1
- package/dist/index.js +0 -1
- package/dist/integrations/base/sqlTable.js +0 -1
- package/dist/integrations/mongodb.js +11 -300
- package/dist/integrations/rest.js +5 -38
- package/dist/migrations/functions/{usageQuotas/syncPlugins.js → pluginCount.js} +3 -1
- package/dist/migrations/functions/{syncQuotas.js → quotas1.js} +7 -3
- package/dist/migrations/functions/usageQuotas/syncApps.js +1 -0
- package/dist/migrations/functions/usageQuotas/syncRows.js +5 -9
- package/dist/migrations/index.js +38 -9
- package/dist/package.json +9 -8
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/csvParser.js +0 -1
- package/dist/utilities/rowProcessor/index.js +0 -5
- package/dist/utilities/usageQuota/rows.js +4 -6
- package/package.json +10 -9
- package/specs/openapi.json +0 -3
- package/specs/openapi.yaml +0 -3
- package/src/api/controllers/application.ts +2 -2
- package/src/api/controllers/deploy/index.ts +1 -0
- package/src/api/controllers/dev.js +1 -1
- package/src/api/controllers/query/index.ts +2 -8
- package/src/api/controllers/row/index.ts +13 -36
- package/src/api/controllers/static/templates/preview.hbs +0 -10
- package/src/api/controllers/table/internal.ts +2 -5
- package/src/api/controllers/table/utils.ts +1 -3
- package/src/api/routes/tests/row.spec.js +27 -22
- package/src/automations/steps/updateRow.js +2 -2
- package/src/automations/tests/automation.spec.js +6 -1
- package/src/automations/utils.ts +4 -6
- package/src/constants/index.js +0 -2
- package/src/db/utils.js +2 -0
- package/src/definitions/datasource.ts +0 -1
- package/src/index.ts +0 -1
- package/src/integrations/base/sqlTable.ts +0 -1
- package/src/integrations/mongodb.ts +27 -290
- package/src/integrations/rest.ts +5 -17
- package/src/integrations/tests/mongo.spec.ts +19 -19
- package/src/integrations/tests/rest.spec.ts +22 -38
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/pluginCount.ts +12 -0
- package/src/migrations/functions/{syncQuotas.ts → quotas1.ts} +8 -3
- package/src/migrations/functions/tests/{syncQuotas.spec.js → quotas1.spec.js} +2 -5
- package/src/migrations/functions/usageQuotas/syncApps.ts +1 -0
- package/src/migrations/functions/usageQuotas/syncRows.ts +6 -15
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +1 -9
- package/src/migrations/index.ts +45 -20
- package/src/migrations/tests/index.spec.ts +1 -0
- package/src/utilities/csvParser.js +0 -1
- package/src/utilities/rowProcessor/index.js +0 -5
- package/src/utilities/usageQuota/rows.js +3 -7
- package/src/migrations/functions/usageQuotas/syncPlugins.ts +0 -10
|
@@ -8,13 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
-
var m = o[Symbol.asyncIterator], i;
|
|
14
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
-
};
|
|
18
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
12
|
const types_1 = require("@budibase/types");
|
|
20
13
|
const mongodb_1 = require("mongodb");
|
|
@@ -47,232 +40,6 @@ const SCHEMA = {
|
|
|
47
40
|
delete: {
|
|
48
41
|
type: types_1.QueryType.JSON,
|
|
49
42
|
},
|
|
50
|
-
aggregate: {
|
|
51
|
-
type: types_1.QueryType.JSON,
|
|
52
|
-
steps: [
|
|
53
|
-
{
|
|
54
|
-
key: "$addFields",
|
|
55
|
-
template: "{\n\t\n}",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
key: "$bucket",
|
|
59
|
-
template: `{
|
|
60
|
-
"groupBy": "",
|
|
61
|
-
"boundaries": [],
|
|
62
|
-
"default": "",
|
|
63
|
-
"output": {}
|
|
64
|
-
}`,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
key: "$bucketAuto",
|
|
68
|
-
template: `{
|
|
69
|
-
"groupBy": "",
|
|
70
|
-
"buckets": 1,
|
|
71
|
-
"output": {},
|
|
72
|
-
"granularity": "R5"
|
|
73
|
-
}`,
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
key: "$changeStream",
|
|
77
|
-
template: `{
|
|
78
|
-
"allChangesForCluster": true,
|
|
79
|
-
"fullDocument": "",
|
|
80
|
-
"fullDocumentBeforeChange": "",
|
|
81
|
-
"resumeAfter": 1,
|
|
82
|
-
"showExpandedEvents": true,
|
|
83
|
-
"startAfter": {},
|
|
84
|
-
"startAtOperationTime": ""
|
|
85
|
-
}`,
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
key: "$collStats",
|
|
89
|
-
template: `{
|
|
90
|
-
"latencyStats": { "histograms": true } },
|
|
91
|
-
"storageStats": { "scale": 1 } },
|
|
92
|
-
"count": {},
|
|
93
|
-
"queryExecStats": {}
|
|
94
|
-
}`,
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
key: "$count",
|
|
98
|
-
template: ``,
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
key: "$densify",
|
|
102
|
-
template: `{
|
|
103
|
-
"field": "",
|
|
104
|
-
"partitionByFields": [],
|
|
105
|
-
"range": {
|
|
106
|
-
"step": 1,
|
|
107
|
-
"unit": 1,
|
|
108
|
-
"bounds": "full"
|
|
109
|
-
}
|
|
110
|
-
}`,
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
key: "$documents",
|
|
114
|
-
template: `[]`,
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
key: "$facet",
|
|
118
|
-
template: `{\n\t\n}`,
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
key: "$fill",
|
|
122
|
-
template: `{
|
|
123
|
-
"partitionBy": "",
|
|
124
|
-
"partitionByFields": [],
|
|
125
|
-
"sortBy": {},
|
|
126
|
-
"output": {}
|
|
127
|
-
}`,
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
key: "$geoNear",
|
|
131
|
-
template: `{
|
|
132
|
-
"near": {
|
|
133
|
-
"type": "Point",
|
|
134
|
-
"coordinates": [
|
|
135
|
-
-73.98142, 40.71782
|
|
136
|
-
]
|
|
137
|
-
},
|
|
138
|
-
"key": "location",
|
|
139
|
-
"distanceField": "dist.calculated",
|
|
140
|
-
"query": { "category": "Parks" }
|
|
141
|
-
}`,
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
key: "$graphLookup",
|
|
145
|
-
template: `{
|
|
146
|
-
"from": "",
|
|
147
|
-
"startWith": "",
|
|
148
|
-
"connectFromField": "",
|
|
149
|
-
"connectToField": "",
|
|
150
|
-
"as": "",
|
|
151
|
-
"maxDepth": 1,
|
|
152
|
-
"depthField": "",
|
|
153
|
-
"restrictSearchWithMatch": {}
|
|
154
|
-
}`,
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
key: "$group",
|
|
158
|
-
template: `{
|
|
159
|
-
"_id": ""
|
|
160
|
-
}`,
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
key: "$indexStats",
|
|
164
|
-
template: "{\n\t\n}",
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
key: "$limit",
|
|
168
|
-
template: `1`,
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
key: "$listLocalSessions",
|
|
172
|
-
template: `{\n\t\n}`,
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
key: "$listSessions",
|
|
176
|
-
template: `{\n\t\n}`,
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
key: "$lookup",
|
|
180
|
-
template: `{
|
|
181
|
-
"from": "",
|
|
182
|
-
"localField": "",
|
|
183
|
-
"foreignField": "",
|
|
184
|
-
"as": ""
|
|
185
|
-
}`,
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
key: "$match",
|
|
189
|
-
template: "{\n\t\n}",
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
key: "$merge",
|
|
193
|
-
template: `{
|
|
194
|
-
"into": {},
|
|
195
|
-
"on": "_id",
|
|
196
|
-
"whenMatched": "replace",
|
|
197
|
-
"whenNotMatched": "insert"
|
|
198
|
-
}`,
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
key: "$out",
|
|
202
|
-
template: `{
|
|
203
|
-
"db": "",
|
|
204
|
-
"coll": ""
|
|
205
|
-
}`,
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
key: "$planCacheStats",
|
|
209
|
-
template: "{\n\t\n}",
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
key: "$project",
|
|
213
|
-
template: "{\n\t\n}",
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
key: "$redact",
|
|
217
|
-
template: "",
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
key: "$replaceRoot",
|
|
221
|
-
template: `{ "newRoot": "" }`,
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
key: "$replaceWith",
|
|
225
|
-
template: ``,
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
key: "$sample",
|
|
229
|
-
template: `{ "size": 3 }`,
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
key: "$set",
|
|
233
|
-
template: "{\n\t\n}",
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
key: "$setWindowFields",
|
|
237
|
-
template: `{
|
|
238
|
-
"partitionBy": "",
|
|
239
|
-
"sortBy": {},
|
|
240
|
-
"output": {}
|
|
241
|
-
}`,
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
key: "$skip",
|
|
245
|
-
template: `1`,
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
key: "$sort",
|
|
249
|
-
template: "{\n\t\n}",
|
|
250
|
-
},
|
|
251
|
-
{
|
|
252
|
-
key: "$sortByCount",
|
|
253
|
-
template: "",
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
key: "$unionWith",
|
|
257
|
-
template: `{
|
|
258
|
-
"coll": "",
|
|
259
|
-
"pipeline": []
|
|
260
|
-
}`,
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
key: "$unset",
|
|
264
|
-
template: "",
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
key: "$unwind",
|
|
268
|
-
template: `{
|
|
269
|
-
"path": "",
|
|
270
|
-
"includeArrayIndex": "",
|
|
271
|
-
"preserveNullAndEmptyArrays": true
|
|
272
|
-
}`,
|
|
273
|
-
},
|
|
274
|
-
],
|
|
275
|
-
},
|
|
276
43
|
},
|
|
277
44
|
extra: {
|
|
278
45
|
collection: {
|
|
@@ -280,8 +47,8 @@ const SCHEMA = {
|
|
|
280
47
|
type: types_1.DatasourceFieldType.STRING,
|
|
281
48
|
required: true,
|
|
282
49
|
},
|
|
283
|
-
|
|
284
|
-
displayName: "
|
|
50
|
+
actionTypes: {
|
|
51
|
+
displayName: "Action Types",
|
|
285
52
|
type: types_1.DatasourceFieldType.LIST,
|
|
286
53
|
required: true,
|
|
287
54
|
data: {
|
|
@@ -289,7 +56,6 @@ const SCHEMA = {
|
|
|
289
56
|
create: ["insertOne", "insertMany"],
|
|
290
57
|
update: ["updateOne", "updateMany"],
|
|
291
58
|
delete: ["deleteOne", "deleteMany"],
|
|
292
|
-
aggregate: ["json", "pipeline"],
|
|
293
59
|
},
|
|
294
60
|
},
|
|
295
61
|
},
|
|
@@ -316,7 +82,7 @@ class MongoIntegration {
|
|
|
316
82
|
json[field].toLowerCase().startsWith("objectid")) {
|
|
317
83
|
const id = (_a = json[field].match(/(?<=objectid\(['"]).*(?=['"]\))/gi)) === null || _a === void 0 ? void 0 : _a[0];
|
|
318
84
|
if (id) {
|
|
319
|
-
json[field] = mongodb_1.
|
|
85
|
+
json[field] = mongodb_1.ObjectID.createFromHexString(id);
|
|
320
86
|
}
|
|
321
87
|
}
|
|
322
88
|
}
|
|
@@ -379,7 +145,7 @@ class MongoIntegration {
|
|
|
379
145
|
let json = this.createObjectIds(query.json);
|
|
380
146
|
// For mongodb we add an extra actionType to specify
|
|
381
147
|
// which method we want to call on the collection
|
|
382
|
-
switch (query.extra.
|
|
148
|
+
switch (query.extra.actionTypes) {
|
|
383
149
|
case "insertOne": {
|
|
384
150
|
return yield collection.insertOne(json);
|
|
385
151
|
}
|
|
@@ -387,7 +153,7 @@ class MongoIntegration {
|
|
|
387
153
|
return yield collection.insertMany(json);
|
|
388
154
|
}
|
|
389
155
|
default: {
|
|
390
|
-
throw new Error(`actionType ${query.extra.
|
|
156
|
+
throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for create`);
|
|
391
157
|
}
|
|
392
158
|
}
|
|
393
159
|
}
|
|
@@ -407,7 +173,7 @@ class MongoIntegration {
|
|
|
407
173
|
const db = this.client.db(this.config.db);
|
|
408
174
|
const collection = db.collection(query.extra.collection);
|
|
409
175
|
let json = this.createObjectIds(query.json);
|
|
410
|
-
switch (query.extra.
|
|
176
|
+
switch (query.extra.actionTypes) {
|
|
411
177
|
case "find": {
|
|
412
178
|
return yield collection.find(json).toArray();
|
|
413
179
|
}
|
|
@@ -428,7 +194,7 @@ class MongoIntegration {
|
|
|
428
194
|
return yield collection.distinct(json);
|
|
429
195
|
}
|
|
430
196
|
default: {
|
|
431
|
-
throw new Error(`actionType ${query.extra.
|
|
197
|
+
throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for read`);
|
|
432
198
|
}
|
|
433
199
|
}
|
|
434
200
|
}
|
|
@@ -452,7 +218,7 @@ class MongoIntegration {
|
|
|
452
218
|
queryJson = this.parseQueryParams(queryJson, "update");
|
|
453
219
|
}
|
|
454
220
|
let json = this.createObjectIds(queryJson);
|
|
455
|
-
switch (query.extra.
|
|
221
|
+
switch (query.extra.actionTypes) {
|
|
456
222
|
case "updateOne": {
|
|
457
223
|
return yield collection.updateOne(json.filter, json.update, json.options);
|
|
458
224
|
}
|
|
@@ -460,7 +226,7 @@ class MongoIntegration {
|
|
|
460
226
|
return yield collection.updateMany(json.filter, json.update, json.options);
|
|
461
227
|
}
|
|
462
228
|
default: {
|
|
463
|
-
throw new Error(`actionType ${query.extra.
|
|
229
|
+
throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for update`);
|
|
464
230
|
}
|
|
465
231
|
}
|
|
466
232
|
}
|
|
@@ -490,7 +256,7 @@ class MongoIntegration {
|
|
|
490
256
|
options: {},
|
|
491
257
|
};
|
|
492
258
|
}
|
|
493
|
-
switch (query.extra.
|
|
259
|
+
switch (query.extra.actionTypes) {
|
|
494
260
|
case "deleteOne": {
|
|
495
261
|
return yield collection.deleteOne(json.filter, json.options);
|
|
496
262
|
}
|
|
@@ -498,64 +264,9 @@ class MongoIntegration {
|
|
|
498
264
|
return yield collection.deleteMany(json.filter, json.options);
|
|
499
265
|
}
|
|
500
266
|
default: {
|
|
501
|
-
throw new Error(`actionType ${query.extra.
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
catch (err) {
|
|
506
|
-
console.error("Error writing to mongodb", err);
|
|
507
|
-
throw err;
|
|
508
|
-
}
|
|
509
|
-
finally {
|
|
510
|
-
yield this.client.close();
|
|
511
|
-
}
|
|
512
|
-
});
|
|
513
|
-
}
|
|
514
|
-
aggregate(query) {
|
|
515
|
-
var e_1, _a, e_2, _b;
|
|
516
|
-
var _c;
|
|
517
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
518
|
-
try {
|
|
519
|
-
yield this.connect();
|
|
520
|
-
const db = this.client.db(this.config.db);
|
|
521
|
-
const collection = db.collection(query.extra.collection);
|
|
522
|
-
let response = [];
|
|
523
|
-
if (((_c = query.extra) === null || _c === void 0 ? void 0 : _c.actionType) === "pipeline") {
|
|
524
|
-
try {
|
|
525
|
-
for (var _d = __asyncValues(collection.aggregate(query.steps.map(({ key, value }) => {
|
|
526
|
-
let temp = {};
|
|
527
|
-
temp[key] = JSON.parse(value.value);
|
|
528
|
-
return this.createObjectIds(temp);
|
|
529
|
-
}))), _e; _e = yield _d.next(), !_e.done;) {
|
|
530
|
-
const doc = _e.value;
|
|
531
|
-
response.push(doc);
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
535
|
-
finally {
|
|
536
|
-
try {
|
|
537
|
-
if (_e && !_e.done && (_a = _d.return)) yield _a.call(_d);
|
|
538
|
-
}
|
|
539
|
-
finally { if (e_1) throw e_1.error; }
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
else {
|
|
543
|
-
const stages = query.json;
|
|
544
|
-
try {
|
|
545
|
-
for (var _f = __asyncValues(collection.aggregate(stages ? this.createObjectIds(stages) : [])), _g; _g = yield _f.next(), !_g.done;) {
|
|
546
|
-
const doc = _g.value;
|
|
547
|
-
response.push(doc);
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
551
|
-
finally {
|
|
552
|
-
try {
|
|
553
|
-
if (_g && !_g.done && (_b = _f.return)) yield _b.call(_f);
|
|
554
|
-
}
|
|
555
|
-
finally { if (e_2) throw e_2.error; }
|
|
267
|
+
throw new Error(`actionType ${query.extra.actionTypes} does not exist on DB for delete`);
|
|
556
268
|
}
|
|
557
269
|
}
|
|
558
|
-
return response;
|
|
559
270
|
}
|
|
560
271
|
catch (err) {
|
|
561
272
|
console.error("Error writing to mongodb", err);
|
|
@@ -1,27 +1,4 @@
|
|
|
1
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
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -38,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
38
15
|
const types_1 = require("@budibase/types");
|
|
39
16
|
const datasource_1 = require("../definitions/datasource");
|
|
40
17
|
const lodash_1 = require("lodash");
|
|
41
|
-
const https = __importStar(require("https"));
|
|
42
18
|
const querystring_1 = __importDefault(require("querystring"));
|
|
43
19
|
const fetch = require("node-fetch");
|
|
44
20
|
const { formatBytes } = require("../utilities");
|
|
@@ -96,11 +72,11 @@ const SCHEMA = {
|
|
|
96
72
|
required: false,
|
|
97
73
|
default: {},
|
|
98
74
|
},
|
|
99
|
-
|
|
100
|
-
display: "
|
|
75
|
+
legacyHttpParser: {
|
|
76
|
+
display: "Legacy HTTP Support",
|
|
101
77
|
type: types_1.DatasourceFieldType.BOOLEAN,
|
|
102
|
-
default: true,
|
|
103
78
|
required: false,
|
|
79
|
+
default: false,
|
|
104
80
|
},
|
|
105
81
|
},
|
|
106
82
|
query: {
|
|
@@ -221,11 +197,8 @@ class RestIntegration {
|
|
|
221
197
|
queryString = `${paginationString}&${queryString}`;
|
|
222
198
|
}
|
|
223
199
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
queryString = "?" + querystring_1.default.encode(querystring_1.default.decode(queryString));
|
|
227
|
-
}
|
|
228
|
-
const main = `${path}${queryString}`;
|
|
200
|
+
// make sure the query string is fully encoded
|
|
201
|
+
const main = `${path}?${querystring_1.default.encode(querystring_1.default.decode(queryString))}`;
|
|
229
202
|
let complete = main;
|
|
230
203
|
if (this.config.url && !main.startsWith("http")) {
|
|
231
204
|
complete = !this.config.url ? main : `${this.config.url}/${main}`;
|
|
@@ -345,12 +318,6 @@ class RestIntegration {
|
|
|
345
318
|
}
|
|
346
319
|
let input = { method, headers: this.headers };
|
|
347
320
|
input = this.addBody(bodyType, requestBody, input, pagination, paginationValues);
|
|
348
|
-
if (this.config.rejectUnauthorized == false) {
|
|
349
|
-
input.agent = new https.Agent({
|
|
350
|
-
rejectUnauthorized: false,
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
// Deprecated by rejectUnauthorized
|
|
354
321
|
if (this.config.legacyHttpParser) {
|
|
355
322
|
// https://github.com/nodejs/node/issues/43798
|
|
356
323
|
input.extraHttpOptions = { insecureHTTPParser: true };
|
|
@@ -14,7 +14,9 @@ const backend_core_1 = require("@budibase/backend-core");
|
|
|
14
14
|
const pro_1 = require("@budibase/pro");
|
|
15
15
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
16
|
try {
|
|
17
|
-
yield
|
|
17
|
+
yield backend_core_1.tenancy.doInTenant(backend_core_1.tenancy.DEFAULT_TENANT_ID, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
yield pro_1.plugins.checkPluginQuotas();
|
|
19
|
+
}));
|
|
18
20
|
}
|
|
19
21
|
catch (err) {
|
|
20
22
|
backend_core_1.logging.logAlert("Failed to update plugin quotas", err);
|
|
@@ -36,15 +36,19 @@ exports.run = void 0;
|
|
|
36
36
|
const usageQuotas_1 = require("./usageQuotas");
|
|
37
37
|
const syncApps = __importStar(require("./usageQuotas/syncApps"));
|
|
38
38
|
const syncRows = __importStar(require("./usageQuotas/syncRows"));
|
|
39
|
-
const syncPlugins = __importStar(require("./usageQuotas/syncPlugins"));
|
|
40
39
|
/**
|
|
41
|
-
*
|
|
40
|
+
* Date:
|
|
41
|
+
* January 2022
|
|
42
|
+
*
|
|
43
|
+
* Description:
|
|
44
|
+
* Synchronise the app and row quotas to the state of the db after it was
|
|
45
|
+
* discovered that the quota resets were still in place and the row quotas
|
|
46
|
+
* weren't being decremented correctly.
|
|
42
47
|
*/
|
|
43
48
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
49
|
yield (0, usageQuotas_1.runQuotaMigration)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
50
|
yield syncApps.run();
|
|
46
51
|
yield syncRows.run();
|
|
47
|
-
yield syncPlugins.run();
|
|
48
52
|
}));
|
|
49
53
|
});
|
|
50
54
|
exports.run = run;
|
|
@@ -16,6 +16,7 @@ const pro_1 = require("@budibase/pro");
|
|
|
16
16
|
const types_1 = require("@budibase/types");
|
|
17
17
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
18
|
// get app count
|
|
19
|
+
// @ts-ignore
|
|
19
20
|
const devApps = yield (0, db_1.getAllApps)({ dev: true });
|
|
20
21
|
const appCount = devApps ? devApps.length : 0;
|
|
21
22
|
// sync app count
|
|
@@ -17,19 +17,15 @@ const pro_1 = require("@budibase/pro");
|
|
|
17
17
|
const types_1 = require("@budibase/types");
|
|
18
18
|
const run = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
19
|
// get all rows in all apps
|
|
20
|
+
// @ts-ignore
|
|
20
21
|
const allApps = yield (0, db_1.getAllApps)({ all: true });
|
|
22
|
+
// @ts-ignore
|
|
21
23
|
const appIds = allApps ? allApps.map((app) => app.appId) : [];
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const counts = {};
|
|
25
|
-
let rowCount = 0;
|
|
26
|
-
Object.entries(appRows).forEach(([appId, rows]) => {
|
|
27
|
-
counts[appId] = rows.length;
|
|
28
|
-
rowCount += rows.length;
|
|
29
|
-
});
|
|
24
|
+
const rows = yield (0, rows_1.getUniqueRows)(appIds);
|
|
25
|
+
const rowCount = rows ? rows.length : 0;
|
|
30
26
|
// sync row count
|
|
31
27
|
const tenantId = (0, tenancy_1.getTenantId)();
|
|
32
28
|
console.log(`[Tenant: ${tenantId}] Syncing row count: ${rowCount}`);
|
|
33
|
-
yield pro_1.quotas.
|
|
29
|
+
yield pro_1.quotas.setUsage(rowCount, types_1.StaticQuotaName.ROWS, types_1.QuotaUsageType.STATIC);
|
|
34
30
|
});
|
|
35
31
|
exports.run = run;
|
package/dist/migrations/index.js
CHANGED
|
@@ -41,9 +41,10 @@ const types_1 = require("@budibase/types");
|
|
|
41
41
|
const environment_1 = __importDefault(require("../environment"));
|
|
42
42
|
// migration functions
|
|
43
43
|
const userEmailViewCasing = __importStar(require("./functions/userEmailViewCasing"));
|
|
44
|
-
const
|
|
44
|
+
const quota1 = __importStar(require("./functions/quotas1"));
|
|
45
45
|
const appUrls = __importStar(require("./functions/appUrls"));
|
|
46
46
|
const backfill = __importStar(require("./functions/backfill"));
|
|
47
|
+
const pluginCount = __importStar(require("./functions/pluginCount"));
|
|
47
48
|
/**
|
|
48
49
|
* Populate the migration function and additional configuration from
|
|
49
50
|
* the static migration definitions.
|
|
@@ -57,8 +58,8 @@ const buildMigrations = () => {
|
|
|
57
58
|
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: userEmailViewCasing.run }));
|
|
58
59
|
break;
|
|
59
60
|
}
|
|
60
|
-
case types_1.MigrationName.
|
|
61
|
-
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn:
|
|
61
|
+
case types_1.MigrationName.QUOTAS_1: {
|
|
62
|
+
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: quota1.run }));
|
|
62
63
|
break;
|
|
63
64
|
}
|
|
64
65
|
case types_1.MigrationName.APP_URLS: {
|
|
@@ -77,6 +78,11 @@ const buildMigrations = () => {
|
|
|
77
78
|
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: backfill.installation.run, silent: !!environment_1.default.SELF_HOSTED, preventRetry: !!environment_1.default.SELF_HOSTED }));
|
|
78
79
|
break;
|
|
79
80
|
}
|
|
81
|
+
case types_1.MigrationName.PLUGIN_COUNT: {
|
|
82
|
+
if (environment_1.default.SELF_HOSTED) {
|
|
83
|
+
serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: pluginCount.run, silent: !!environment_1.default.SELF_HOSTED, preventRetry: false }));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
88
|
return serverMigrations;
|
|
@@ -95,11 +101,34 @@ const migrate = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
95
101
|
});
|
|
96
102
|
exports.migrate = migrate;
|
|
97
103
|
const migrateWithLock = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
// get a new lock client
|
|
105
|
+
const redlock = yield backend_core_1.redis.clients.getMigrationsRedlock();
|
|
106
|
+
// lock for 15 minutes
|
|
107
|
+
const ttl = 1000 * 60 * 15;
|
|
108
|
+
let migrationLock;
|
|
109
|
+
// acquire lock
|
|
110
|
+
try {
|
|
111
|
+
migrationLock = yield redlock.lock("migrations", ttl);
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
if (e.name === "LockError") {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw e;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// run migrations
|
|
122
|
+
try {
|
|
103
123
|
yield backend_core_1.migrations.runMigrations(exports.MIGRATIONS, options);
|
|
104
|
-
}
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
// release lock
|
|
127
|
+
try {
|
|
128
|
+
yield migrationLock.unlock();
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
console.error("unable to release migration lock");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
105
134
|
});
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "2.0.30
|
|
4
|
+
"version": "2.0.30",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
"license": "GPL-3.0",
|
|
78
78
|
"dependencies": {
|
|
79
79
|
"@apidevtools/swagger-parser": "10.0.3",
|
|
80
|
-
"@budibase/backend-core": "2.0.30
|
|
81
|
-
"@budibase/client": "2.0.30
|
|
82
|
-
"@budibase/pro": "2.0.30
|
|
83
|
-
"@budibase/string-templates": "2.0.30
|
|
84
|
-
"@budibase/types": "2.0.30
|
|
80
|
+
"@budibase/backend-core": "^2.0.30",
|
|
81
|
+
"@budibase/client": "^2.0.30",
|
|
82
|
+
"@budibase/pro": "2.0.30",
|
|
83
|
+
"@budibase/string-templates": "^2.0.30",
|
|
84
|
+
"@budibase/types": "^2.0.30",
|
|
85
85
|
"@bull-board/api": "3.7.0",
|
|
86
86
|
"@bull-board/koa": "3.9.4",
|
|
87
87
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"koa2-ratelimit": "1.1.1",
|
|
124
124
|
"lodash": "4.17.21",
|
|
125
125
|
"memorystream": "0.3.1",
|
|
126
|
-
"mongodb": "
|
|
126
|
+
"mongodb": "3.6.3",
|
|
127
127
|
"mssql": "6.2.3",
|
|
128
128
|
"mysql2": "2.3.3",
|
|
129
129
|
"node-fetch": "2.6.7",
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
"to-json-schema": "0.2.5",
|
|
147
147
|
"uuid": "3.3.2",
|
|
148
148
|
"validate.js": "0.13.1",
|
|
149
|
-
"vm2": "3.9.
|
|
149
|
+
"vm2": "3.9.6",
|
|
150
150
|
"worker-farm": "1.7.0",
|
|
151
151
|
"xml2js": "0.4.23",
|
|
152
152
|
"yargs": "13.2.4",
|
|
@@ -166,6 +166,7 @@
|
|
|
166
166
|
"@types/koa": "2.13.4",
|
|
167
167
|
"@types/koa__router": "8.0.0",
|
|
168
168
|
"@types/lodash": "4.14.180",
|
|
169
|
+
"@types/mongodb": "3.6.3",
|
|
169
170
|
"@types/node": "14.18.20",
|
|
170
171
|
"@types/node-fetch": "2.6.1",
|
|
171
172
|
"@types/oracledb": "5.2.2",
|