@budibase/backend-core 2.9.19 → 2.9.21-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +266 -324
- package/dist/index.js.map +4 -4
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +19 -4
- package/dist/plugins.js +1 -1
- package/dist/plugins.js.map +1 -1
- package/dist/plugins.js.meta.json +1 -1
- package/dist/src/security/permissions.d.ts +1 -1
- package/dist/tests.js +222 -260
- package/dist/tests.js.map +4 -4
- package/dist/tests.js.meta.json +1 -1
- package/package.json +19 -4
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/src/accounts/accounts.ts +0 -82
- package/src/accounts/api.ts +0 -59
- package/src/accounts/index.ts +0 -1
- package/src/auth/auth.ts +0 -208
- package/src/auth/index.ts +0 -1
- package/src/auth/tests/auth.spec.ts +0 -14
- package/src/blacklist/blacklist.ts +0 -54
- package/src/blacklist/index.ts +0 -1
- package/src/blacklist/tests/blacklist.spec.ts +0 -46
- package/src/cache/appMetadata.ts +0 -88
- package/src/cache/base/index.ts +0 -92
- package/src/cache/generic.ts +0 -30
- package/src/cache/index.ts +0 -5
- package/src/cache/tests/writethrough.spec.ts +0 -138
- package/src/cache/user.ts +0 -69
- package/src/cache/writethrough.ts +0 -133
- package/src/configs/configs.ts +0 -257
- package/src/configs/index.ts +0 -1
- package/src/configs/tests/configs.spec.ts +0 -184
- package/src/constants/db.ts +0 -63
- package/src/constants/index.ts +0 -2
- package/src/constants/misc.ts +0 -50
- package/src/context/Context.ts +0 -14
- package/src/context/identity.ts +0 -58
- package/src/context/index.ts +0 -3
- package/src/context/mainContext.ts +0 -310
- package/src/context/tests/index.spec.ts +0 -147
- package/src/context/types.ts +0 -11
- package/src/db/Replication.ts +0 -84
- package/src/db/constants.ts +0 -10
- package/src/db/couch/DatabaseImpl.ts +0 -238
- package/src/db/couch/connections.ts +0 -77
- package/src/db/couch/index.ts +0 -5
- package/src/db/couch/pouchDB.ts +0 -97
- package/src/db/couch/pouchDump.ts +0 -0
- package/src/db/couch/utils.ts +0 -50
- package/src/db/db.ts +0 -39
- package/src/db/errors.ts +0 -14
- package/src/db/index.ts +0 -12
- package/src/db/lucene.ts +0 -732
- package/src/db/searchIndexes/index.ts +0 -1
- package/src/db/searchIndexes/searchIndexes.ts +0 -62
- package/src/db/tests/index.spec.js +0 -25
- package/src/db/tests/lucene.spec.ts +0 -298
- package/src/db/tests/pouch.spec.js +0 -62
- package/src/db/tests/utils.spec.ts +0 -63
- package/src/db/utils.ts +0 -207
- package/src/db/views.ts +0 -241
- package/src/docIds/conversions.ts +0 -59
- package/src/docIds/ids.ts +0 -113
- package/src/docIds/index.ts +0 -2
- package/src/docIds/newid.ts +0 -5
- package/src/docIds/params.ts +0 -174
- package/src/docUpdates/index.ts +0 -29
- package/src/environment.ts +0 -201
- package/src/errors/errors.ts +0 -119
- package/src/errors/index.ts +0 -1
- package/src/events/analytics.ts +0 -6
- package/src/events/asyncEvents/index.ts +0 -2
- package/src/events/asyncEvents/publisher.ts +0 -12
- package/src/events/asyncEvents/queue.ts +0 -22
- package/src/events/backfill.ts +0 -183
- package/src/events/documentId.ts +0 -56
- package/src/events/events.ts +0 -40
- package/src/events/identification.ts +0 -310
- package/src/events/index.ts +0 -14
- package/src/events/processors/AnalyticsProcessor.ts +0 -64
- package/src/events/processors/AuditLogsProcessor.ts +0 -93
- package/src/events/processors/LoggingProcessor.ts +0 -37
- package/src/events/processors/Processors.ts +0 -52
- package/src/events/processors/async/DocumentUpdateProcessor.ts +0 -43
- package/src/events/processors/index.ts +0 -19
- package/src/events/processors/posthog/PosthogProcessor.ts +0 -118
- package/src/events/processors/posthog/index.ts +0 -2
- package/src/events/processors/posthog/rateLimiting.ts +0 -106
- package/src/events/processors/posthog/tests/PosthogProcessor.spec.ts +0 -168
- package/src/events/processors/types.ts +0 -1
- package/src/events/publishers/account.ts +0 -35
- package/src/events/publishers/app.ts +0 -155
- package/src/events/publishers/auditLog.ts +0 -26
- package/src/events/publishers/auth.ts +0 -73
- package/src/events/publishers/automation.ts +0 -110
- package/src/events/publishers/backfill.ts +0 -74
- package/src/events/publishers/backup.ts +0 -42
- package/src/events/publishers/datasource.ts +0 -48
- package/src/events/publishers/email.ts +0 -17
- package/src/events/publishers/environmentVariable.ts +0 -38
- package/src/events/publishers/group.ts +0 -99
- package/src/events/publishers/index.ts +0 -24
- package/src/events/publishers/installation.ts +0 -38
- package/src/events/publishers/layout.ts +0 -26
- package/src/events/publishers/license.ts +0 -84
- package/src/events/publishers/org.ts +0 -37
- package/src/events/publishers/plugin.ts +0 -47
- package/src/events/publishers/query.ts +0 -88
- package/src/events/publishers/role.ts +0 -62
- package/src/events/publishers/rows.ts +0 -29
- package/src/events/publishers/screen.ts +0 -36
- package/src/events/publishers/serve.ts +0 -43
- package/src/events/publishers/table.ts +0 -70
- package/src/events/publishers/user.ts +0 -202
- package/src/events/publishers/view.ts +0 -107
- package/src/featureFlags/index.ts +0 -77
- package/src/featureFlags/tests/featureFlags.spec.ts +0 -85
- package/src/helpers.ts +0 -9
- package/src/index.ts +0 -53
- package/src/installation.ts +0 -107
- package/src/logging/alerts.ts +0 -26
- package/src/logging/correlation/correlation.ts +0 -13
- package/src/logging/correlation/index.ts +0 -1
- package/src/logging/correlation/middleware.ts +0 -17
- package/src/logging/index.ts +0 -4
- package/src/logging/pino/logger.ts +0 -232
- package/src/logging/pino/middleware.ts +0 -45
- package/src/logging/system.ts +0 -81
- package/src/logging/tests/system.spec.ts +0 -61
- package/src/middleware/adminOnly.ts +0 -9
- package/src/middleware/auditLog.ts +0 -6
- package/src/middleware/authenticated.ts +0 -193
- package/src/middleware/builderOnly.ts +0 -20
- package/src/middleware/builderOrAdmin.ts +0 -20
- package/src/middleware/csrf.ts +0 -81
- package/src/middleware/errorHandling.ts +0 -29
- package/src/middleware/index.ts +0 -21
- package/src/middleware/internalApi.ts +0 -23
- package/src/middleware/joi-validator.ts +0 -45
- package/src/middleware/matchers.ts +0 -47
- package/src/middleware/passport/datasource/google.ts +0 -95
- package/src/middleware/passport/local.ts +0 -54
- package/src/middleware/passport/sso/google.ts +0 -77
- package/src/middleware/passport/sso/oidc.ts +0 -154
- package/src/middleware/passport/sso/sso.ts +0 -165
- package/src/middleware/passport/sso/tests/google.spec.ts +0 -67
- package/src/middleware/passport/sso/tests/oidc.spec.ts +0 -152
- package/src/middleware/passport/sso/tests/sso.spec.ts +0 -197
- package/src/middleware/passport/utils.ts +0 -38
- package/src/middleware/querystringToBody.ts +0 -28
- package/src/middleware/tenancy.ts +0 -36
- package/src/middleware/tests/builder.spec.ts +0 -180
- package/src/middleware/tests/matchers.spec.ts +0 -134
- package/src/migrations/definitions.ts +0 -40
- package/src/migrations/index.ts +0 -2
- package/src/migrations/migrations.ts +0 -191
- package/src/migrations/tests/__snapshots__/migrations.spec.ts.snap +0 -11
- package/src/migrations/tests/migrations.spec.ts +0 -64
- package/src/objectStore/buckets/app.ts +0 -40
- package/src/objectStore/buckets/global.ts +0 -29
- package/src/objectStore/buckets/index.ts +0 -3
- package/src/objectStore/buckets/plugins.ts +0 -71
- package/src/objectStore/buckets/tests/app.spec.ts +0 -171
- package/src/objectStore/buckets/tests/global.spec.ts +0 -74
- package/src/objectStore/buckets/tests/plugins.spec.ts +0 -111
- package/src/objectStore/cloudfront.ts +0 -41
- package/src/objectStore/index.ts +0 -3
- package/src/objectStore/objectStore.ts +0 -440
- package/src/objectStore/utils.ts +0 -27
- package/src/platform/index.ts +0 -3
- package/src/platform/platformDb.ts +0 -6
- package/src/platform/tenants.ts +0 -101
- package/src/platform/tests/tenants.spec.ts +0 -26
- package/src/platform/users.ts +0 -90
- package/src/plugin/index.ts +0 -1
- package/src/plugin/tests/validation.spec.ts +0 -83
- package/src/plugin/utils.ts +0 -156
- package/src/queue/constants.ts +0 -6
- package/src/queue/inMemoryQueue.ts +0 -141
- package/src/queue/index.ts +0 -2
- package/src/queue/listeners.ts +0 -195
- package/src/queue/queue.ts +0 -54
- package/src/redis/index.ts +0 -6
- package/src/redis/init.ts +0 -86
- package/src/redis/redis.ts +0 -308
- package/src/redis/redlockImpl.ts +0 -139
- package/src/redis/utils.ts +0 -117
- package/src/security/encryption.ts +0 -179
- package/src/security/permissions.ts +0 -159
- package/src/security/roles.ts +0 -420
- package/src/security/sessions.ts +0 -120
- package/src/security/tests/encryption.spec.ts +0 -31
- package/src/security/tests/permissions.spec.ts +0 -145
- package/src/security/tests/sessions.spec.ts +0 -12
- package/src/tenancy/db.ts +0 -6
- package/src/tenancy/index.ts +0 -2
- package/src/tenancy/tenancy.ts +0 -140
- package/src/tenancy/tests/tenancy.spec.ts +0 -184
- package/src/timers/index.ts +0 -1
- package/src/timers/timers.ts +0 -22
- package/src/users/db.ts +0 -460
- package/src/users/events.ts +0 -176
- package/src/users/index.ts +0 -4
- package/src/users/lookup.ts +0 -102
- package/src/users/users.ts +0 -276
- package/src/users/utils.ts +0 -55
- package/src/utils/hashing.ts +0 -14
- package/src/utils/index.ts +0 -3
- package/src/utils/stringUtils.ts +0 -8
- package/src/utils/tests/utils.spec.ts +0 -191
- package/src/utils/utils.ts +0 -239
- package/tests/core/logging.ts +0 -34
- package/tests/core/utilities/index.ts +0 -6
- package/tests/core/utilities/jestUtils.ts +0 -30
- package/tests/core/utilities/mocks/alerts.ts +0 -3
- package/tests/core/utilities/mocks/date.ts +0 -2
- package/tests/core/utilities/mocks/events.ts +0 -131
- package/tests/core/utilities/mocks/fetch.ts +0 -17
- package/tests/core/utilities/mocks/index.ts +0 -10
- package/tests/core/utilities/mocks/licenses.ts +0 -107
- package/tests/core/utilities/mocks/posthog.ts +0 -7
- package/tests/core/utilities/structures/Chance.ts +0 -20
- package/tests/core/utilities/structures/accounts.ts +0 -115
- package/tests/core/utilities/structures/apps.ts +0 -21
- package/tests/core/utilities/structures/common.ts +0 -7
- package/tests/core/utilities/structures/db.ts +0 -12
- package/tests/core/utilities/structures/documents/index.ts +0 -1
- package/tests/core/utilities/structures/documents/platform/index.ts +0 -1
- package/tests/core/utilities/structures/documents/platform/installation.ts +0 -12
- package/tests/core/utilities/structures/generator.ts +0 -2
- package/tests/core/utilities/structures/index.ts +0 -15
- package/tests/core/utilities/structures/koa.ts +0 -16
- package/tests/core/utilities/structures/licenses.ts +0 -167
- package/tests/core/utilities/structures/plugins.ts +0 -19
- package/tests/core/utilities/structures/quotas.ts +0 -67
- package/tests/core/utilities/structures/scim.ts +0 -80
- package/tests/core/utilities/structures/shared.ts +0 -19
- package/tests/core/utilities/structures/sso.ts +0 -119
- package/tests/core/utilities/structures/tenants.ts +0 -5
- package/tests/core/utilities/structures/userGroups.ts +0 -10
- package/tests/core/utilities/structures/users.ts +0 -73
- package/tests/core/utilities/testContainerUtils.ts +0 -98
- package/tests/core/utilities/utils/index.ts +0 -1
- package/tests/core/utilities/utils/time.ts +0 -3
- package/tests/extra/DBTestConfiguration.ts +0 -36
- package/tests/extra/index.ts +0 -2
- package/tests/extra/testEnv.ts +0 -95
- package/tests/index.ts +0 -1
- package/tests/jestEnv.ts +0 -6
- package/tests/jestSetup.ts +0 -28
package/dist/tests.js
CHANGED
|
@@ -29,28 +29,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
29
29
|
mod
|
|
30
30
|
));
|
|
31
31
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
|
-
var __accessCheck = (obj, member, msg) => {
|
|
33
|
-
if (!member.has(obj))
|
|
34
|
-
throw TypeError("Cannot " + msg);
|
|
35
|
-
};
|
|
36
|
-
var __privateGet = (obj, member, getter) => {
|
|
37
|
-
__accessCheck(obj, member, "read from private field");
|
|
38
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
39
|
-
};
|
|
40
|
-
var __privateAdd = (obj, member, value) => {
|
|
41
|
-
if (member.has(obj))
|
|
42
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
43
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
44
|
-
};
|
|
45
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
46
|
-
__accessCheck(obj, member, "write to private field");
|
|
47
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
48
|
-
return value;
|
|
49
|
-
};
|
|
50
|
-
var __privateMethod = (obj, member, method) => {
|
|
51
|
-
__accessCheck(obj, member, "access private method");
|
|
52
|
-
return method;
|
|
53
|
-
};
|
|
54
32
|
|
|
55
33
|
// ../types/src/sdk/automations/index.ts
|
|
56
34
|
var init_automations = __esm({
|
|
@@ -671,6 +649,13 @@ var init_permissions = __esm({
|
|
|
671
649
|
}
|
|
672
650
|
});
|
|
673
651
|
|
|
652
|
+
// ../types/src/sdk/row.ts
|
|
653
|
+
var init_row = __esm({
|
|
654
|
+
"../types/src/sdk/row.ts"() {
|
|
655
|
+
"use strict";
|
|
656
|
+
}
|
|
657
|
+
});
|
|
658
|
+
|
|
674
659
|
// ../types/src/sdk/index.ts
|
|
675
660
|
var init_sdk = __esm({
|
|
676
661
|
"../types/src/sdk/index.ts"() {
|
|
@@ -696,6 +681,7 @@ var init_sdk = __esm({
|
|
|
696
681
|
init_cli();
|
|
697
682
|
init_websocket();
|
|
698
683
|
init_permissions();
|
|
684
|
+
init_row();
|
|
699
685
|
}
|
|
700
686
|
});
|
|
701
687
|
|
|
@@ -870,7 +856,7 @@ var init_document = __esm({
|
|
|
870
856
|
});
|
|
871
857
|
|
|
872
858
|
// ../types/src/documents/app/row.ts
|
|
873
|
-
var
|
|
859
|
+
var init_row2 = __esm({
|
|
874
860
|
"../types/src/documents/app/row.ts"() {
|
|
875
861
|
"use strict";
|
|
876
862
|
}
|
|
@@ -925,7 +911,7 @@ var init_app3 = __esm({
|
|
|
925
911
|
init_screen2();
|
|
926
912
|
init_view2();
|
|
927
913
|
init_document();
|
|
928
|
-
|
|
914
|
+
init_row2();
|
|
929
915
|
init_user4();
|
|
930
916
|
init_backup2();
|
|
931
917
|
init_webhook();
|
|
@@ -1211,7 +1197,7 @@ var init_datasource3 = __esm({
|
|
|
1211
1197
|
});
|
|
1212
1198
|
|
|
1213
1199
|
// ../types/src/api/web/app/row.ts
|
|
1214
|
-
var
|
|
1200
|
+
var init_row3 = __esm({
|
|
1215
1201
|
"../types/src/api/web/app/row.ts"() {
|
|
1216
1202
|
"use strict";
|
|
1217
1203
|
}
|
|
@@ -1244,7 +1230,7 @@ var init_app4 = __esm({
|
|
|
1244
1230
|
"use strict";
|
|
1245
1231
|
init_backup3();
|
|
1246
1232
|
init_datasource3();
|
|
1247
|
-
|
|
1233
|
+
init_row3();
|
|
1248
1234
|
init_view3();
|
|
1249
1235
|
init_rows2();
|
|
1250
1236
|
init_table4();
|
|
@@ -1337,6 +1323,13 @@ var init_pagination = __esm({
|
|
|
1337
1323
|
}
|
|
1338
1324
|
});
|
|
1339
1325
|
|
|
1326
|
+
// ../types/src/api/web/searchFilter.ts
|
|
1327
|
+
var init_searchFilter = __esm({
|
|
1328
|
+
"../types/src/api/web/searchFilter.ts"() {
|
|
1329
|
+
"use strict";
|
|
1330
|
+
}
|
|
1331
|
+
});
|
|
1332
|
+
|
|
1340
1333
|
// ../types/src/api/web/index.ts
|
|
1341
1334
|
var init_web = __esm({
|
|
1342
1335
|
"../types/src/api/web/index.ts"() {
|
|
@@ -1351,6 +1344,7 @@ var init_web = __esm({
|
|
|
1351
1344
|
init_app4();
|
|
1352
1345
|
init_global2();
|
|
1353
1346
|
init_pagination();
|
|
1347
|
+
init_searchFilter();
|
|
1354
1348
|
}
|
|
1355
1349
|
});
|
|
1356
1350
|
|
|
@@ -1659,12 +1653,15 @@ var init_identity = __esm({
|
|
|
1659
1653
|
});
|
|
1660
1654
|
|
|
1661
1655
|
// src/context/Context.ts
|
|
1662
|
-
var import_async_hooks,
|
|
1656
|
+
var import_async_hooks, Context;
|
|
1663
1657
|
var init_Context = __esm({
|
|
1664
1658
|
"src/context/Context.ts"() {
|
|
1665
1659
|
"use strict";
|
|
1666
1660
|
import_async_hooks = require("async_hooks");
|
|
1667
|
-
|
|
1661
|
+
Context = class _Context {
|
|
1662
|
+
static {
|
|
1663
|
+
this.storage = new import_async_hooks.AsyncLocalStorage();
|
|
1664
|
+
}
|
|
1668
1665
|
static run(context, func) {
|
|
1669
1666
|
return _Context.storage.run(context, () => func());
|
|
1670
1667
|
}
|
|
@@ -1672,8 +1669,6 @@ var init_Context = __esm({
|
|
|
1672
1669
|
return _Context.storage.getStore();
|
|
1673
1670
|
}
|
|
1674
1671
|
};
|
|
1675
|
-
_Context.storage = new import_async_hooks.AsyncLocalStorage();
|
|
1676
|
-
Context = _Context;
|
|
1677
1672
|
}
|
|
1678
1673
|
});
|
|
1679
1674
|
|
|
@@ -1692,18 +1687,17 @@ var init_connections = __esm({
|
|
|
1692
1687
|
"use strict";
|
|
1693
1688
|
init_environment2();
|
|
1694
1689
|
getCouchInfo = (connection) => {
|
|
1695
|
-
var _a, _b;
|
|
1696
1690
|
const urlInfo = getUrlInfo(connection);
|
|
1697
1691
|
let username;
|
|
1698
1692
|
let password;
|
|
1699
|
-
if (
|
|
1693
|
+
if (urlInfo.auth?.username) {
|
|
1700
1694
|
username = urlInfo.auth.username;
|
|
1701
1695
|
} else if (environment_default.COUCH_DB_USERNAME) {
|
|
1702
1696
|
username = environment_default.COUCH_DB_USERNAME;
|
|
1703
1697
|
} else if (!environment_default.isTest()) {
|
|
1704
1698
|
throw new Error("CouchDB username not set");
|
|
1705
1699
|
}
|
|
1706
|
-
if (
|
|
1700
|
+
if (urlInfo.auth?.password) {
|
|
1707
1701
|
password = urlInfo.auth.password;
|
|
1708
1702
|
} else if (environment_default.COUCH_DB_PASSWORD) {
|
|
1709
1703
|
password = environment_default.COUCH_DB_PASSWORD;
|
|
@@ -1896,8 +1890,7 @@ var init_DatabaseImpl = __esm({
|
|
|
1896
1890
|
return this.instanceNano || _DatabaseImpl.nano;
|
|
1897
1891
|
}
|
|
1898
1892
|
async checkSetup() {
|
|
1899
|
-
|
|
1900
|
-
let shouldCreate = !((_a = this.pouchOpts) == null ? void 0 : _a.skip_setup);
|
|
1893
|
+
let shouldCreate = !this.pouchOpts?.skip_setup;
|
|
1901
1894
|
let exists = await this.exists();
|
|
1902
1895
|
if (!shouldCreate && !exists) {
|
|
1903
1896
|
throw new Error("DB does not exist");
|
|
@@ -1961,7 +1954,7 @@ var init_DatabaseImpl = __esm({
|
|
|
1961
1954
|
document.createdAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
1962
1955
|
}
|
|
1963
1956
|
document.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
1964
|
-
if (
|
|
1957
|
+
if (opts?.force && document._id) {
|
|
1965
1958
|
try {
|
|
1966
1959
|
const existing = await this.get(document._id);
|
|
1967
1960
|
if (existing) {
|
|
@@ -2130,7 +2123,7 @@ async function doInTenant(tenantId, task) {
|
|
|
2130
2123
|
function getIdentity() {
|
|
2131
2124
|
try {
|
|
2132
2125
|
const context = Context.get();
|
|
2133
|
-
return context
|
|
2126
|
+
return context?.identity;
|
|
2134
2127
|
} catch (e) {
|
|
2135
2128
|
}
|
|
2136
2129
|
}
|
|
@@ -2139,7 +2132,7 @@ function getTenantId() {
|
|
|
2139
2132
|
return DEFAULT_TENANT_ID;
|
|
2140
2133
|
}
|
|
2141
2134
|
const context = Context.get();
|
|
2142
|
-
const tenantId = context
|
|
2135
|
+
const tenantId = context?.tenantId;
|
|
2143
2136
|
if (!tenantId) {
|
|
2144
2137
|
throw new Error("Tenant id not found");
|
|
2145
2138
|
}
|
|
@@ -2147,11 +2140,11 @@ function getTenantId() {
|
|
|
2147
2140
|
}
|
|
2148
2141
|
function getAutomationId() {
|
|
2149
2142
|
const context = Context.get();
|
|
2150
|
-
return context
|
|
2143
|
+
return context?.automationId;
|
|
2151
2144
|
}
|
|
2152
2145
|
function getAppId() {
|
|
2153
2146
|
const context = Context.get();
|
|
2154
|
-
const foundId = context
|
|
2147
|
+
const foundId = context?.appId;
|
|
2155
2148
|
if (!foundId && environment_default.isTest() && TEST_APP_ID) {
|
|
2156
2149
|
return TEST_APP_ID;
|
|
2157
2150
|
} else {
|
|
@@ -2163,11 +2156,11 @@ function getGlobalDB() {
|
|
|
2163
2156
|
if (!context || environment_default.MULTI_TENANCY && !context.tenantId) {
|
|
2164
2157
|
throw new Error("Global DB not found");
|
|
2165
2158
|
}
|
|
2166
|
-
return getDB(baseGlobalDBName(context
|
|
2159
|
+
return getDB(baseGlobalDBName(context?.tenantId));
|
|
2167
2160
|
}
|
|
2168
2161
|
function isScim() {
|
|
2169
2162
|
const context = Context.get();
|
|
2170
|
-
const scimCall = context
|
|
2163
|
+
const scimCall = context?.isScim;
|
|
2171
2164
|
return !!scimCall;
|
|
2172
2165
|
}
|
|
2173
2166
|
var TEST_APP_ID;
|
|
@@ -2838,38 +2831,34 @@ async function runQuery(url, body, cookie) {
|
|
|
2838
2831
|
}
|
|
2839
2832
|
return output;
|
|
2840
2833
|
}
|
|
2841
|
-
var import_node_fetch2, QUERY_START_REGEX,
|
|
2834
|
+
var import_node_fetch2, QUERY_START_REGEX, QueryBuilder;
|
|
2842
2835
|
var init_lucene = __esm({
|
|
2843
2836
|
"src/db/lucene.ts"() {
|
|
2844
2837
|
"use strict";
|
|
2845
2838
|
import_node_fetch2 = __toESM(require("node-fetch"));
|
|
2846
2839
|
init_couch();
|
|
2847
2840
|
QUERY_START_REGEX = /\d[0-9]*:/g;
|
|
2848
|
-
|
|
2841
|
+
QueryBuilder = class _QueryBuilder {
|
|
2842
|
+
#dbName;
|
|
2843
|
+
#index;
|
|
2844
|
+
#query;
|
|
2845
|
+
#limit;
|
|
2846
|
+
#sort;
|
|
2847
|
+
#bookmark;
|
|
2848
|
+
#sortOrder;
|
|
2849
|
+
#sortType;
|
|
2850
|
+
#includeDocs;
|
|
2851
|
+
#version;
|
|
2852
|
+
#indexBuilder;
|
|
2853
|
+
#noEscaping = false;
|
|
2854
|
+
#skip;
|
|
2855
|
+
static {
|
|
2856
|
+
this.maxLimit = 200;
|
|
2857
|
+
}
|
|
2849
2858
|
constructor(dbName, index2, base) {
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
* page has been met.
|
|
2854
|
-
*/
|
|
2855
|
-
__privateAdd(this, _skipItems);
|
|
2856
|
-
__privateAdd(this, _execute);
|
|
2857
|
-
__privateAdd(this, _dbName, void 0);
|
|
2858
|
-
__privateAdd(this, _index, void 0);
|
|
2859
|
-
__privateAdd(this, _query, void 0);
|
|
2860
|
-
__privateAdd(this, _limit, void 0);
|
|
2861
|
-
__privateAdd(this, _sort, void 0);
|
|
2862
|
-
__privateAdd(this, _bookmark, void 0);
|
|
2863
|
-
__privateAdd(this, _sortOrder, void 0);
|
|
2864
|
-
__privateAdd(this, _sortType, void 0);
|
|
2865
|
-
__privateAdd(this, _includeDocs, void 0);
|
|
2866
|
-
__privateAdd(this, _version, void 0);
|
|
2867
|
-
__privateAdd(this, _indexBuilder, void 0);
|
|
2868
|
-
__privateAdd(this, _noEscaping, false);
|
|
2869
|
-
__privateAdd(this, _skip, void 0);
|
|
2870
|
-
__privateSet(this, _dbName, dbName);
|
|
2871
|
-
__privateSet(this, _index, index2);
|
|
2872
|
-
__privateSet(this, _query, {
|
|
2859
|
+
this.#dbName = dbName;
|
|
2860
|
+
this.#index = index2;
|
|
2861
|
+
this.#query = {
|
|
2873
2862
|
allOr: false,
|
|
2874
2863
|
string: {},
|
|
2875
2864
|
fuzzy: {},
|
|
@@ -2883,124 +2872,124 @@ var init_lucene = __esm({
|
|
|
2883
2872
|
notContains: {},
|
|
2884
2873
|
containsAny: {},
|
|
2885
2874
|
...base
|
|
2886
|
-
}
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2875
|
+
};
|
|
2876
|
+
this.#limit = 50;
|
|
2877
|
+
this.#sortOrder = "ascending";
|
|
2878
|
+
this.#sortType = "string";
|
|
2879
|
+
this.#includeDocs = true;
|
|
2891
2880
|
}
|
|
2892
2881
|
disableEscaping() {
|
|
2893
|
-
|
|
2882
|
+
this.#noEscaping = true;
|
|
2894
2883
|
return this;
|
|
2895
2884
|
}
|
|
2896
2885
|
setIndexBuilder(builderFn) {
|
|
2897
|
-
|
|
2886
|
+
this.#indexBuilder = builderFn;
|
|
2898
2887
|
return this;
|
|
2899
2888
|
}
|
|
2900
2889
|
setVersion(version) {
|
|
2901
2890
|
if (version != null) {
|
|
2902
|
-
|
|
2891
|
+
this.#version = version;
|
|
2903
2892
|
}
|
|
2904
2893
|
return this;
|
|
2905
2894
|
}
|
|
2906
2895
|
setTable(tableId) {
|
|
2907
|
-
|
|
2896
|
+
this.#query.equal.tableId = tableId;
|
|
2908
2897
|
return this;
|
|
2909
2898
|
}
|
|
2910
2899
|
setLimit(limit) {
|
|
2911
2900
|
if (limit != null) {
|
|
2912
|
-
|
|
2901
|
+
this.#limit = limit;
|
|
2913
2902
|
}
|
|
2914
2903
|
return this;
|
|
2915
2904
|
}
|
|
2916
2905
|
setSort(sort) {
|
|
2917
2906
|
if (sort != null) {
|
|
2918
|
-
|
|
2907
|
+
this.#sort = sort;
|
|
2919
2908
|
}
|
|
2920
2909
|
return this;
|
|
2921
2910
|
}
|
|
2922
2911
|
setSortOrder(sortOrder) {
|
|
2923
2912
|
if (sortOrder != null) {
|
|
2924
|
-
|
|
2913
|
+
this.#sortOrder = sortOrder;
|
|
2925
2914
|
}
|
|
2926
2915
|
return this;
|
|
2927
2916
|
}
|
|
2928
2917
|
setSortType(sortType) {
|
|
2929
2918
|
if (sortType != null) {
|
|
2930
|
-
|
|
2919
|
+
this.#sortType = sortType;
|
|
2931
2920
|
}
|
|
2932
2921
|
return this;
|
|
2933
2922
|
}
|
|
2934
2923
|
setBookmark(bookmark) {
|
|
2935
2924
|
if (bookmark != null) {
|
|
2936
|
-
|
|
2925
|
+
this.#bookmark = bookmark;
|
|
2937
2926
|
}
|
|
2938
2927
|
return this;
|
|
2939
2928
|
}
|
|
2940
2929
|
setSkip(skip) {
|
|
2941
|
-
|
|
2930
|
+
this.#skip = skip;
|
|
2942
2931
|
return this;
|
|
2943
2932
|
}
|
|
2944
2933
|
excludeDocs() {
|
|
2945
|
-
|
|
2934
|
+
this.#includeDocs = false;
|
|
2946
2935
|
return this;
|
|
2947
2936
|
}
|
|
2948
2937
|
includeDocs() {
|
|
2949
|
-
|
|
2938
|
+
this.#includeDocs = true;
|
|
2950
2939
|
return this;
|
|
2951
2940
|
}
|
|
2952
2941
|
addString(key, partial) {
|
|
2953
|
-
|
|
2942
|
+
this.#query.string[key] = partial;
|
|
2954
2943
|
return this;
|
|
2955
2944
|
}
|
|
2956
2945
|
addFuzzy(key, fuzzy) {
|
|
2957
|
-
|
|
2946
|
+
this.#query.fuzzy[key] = fuzzy;
|
|
2958
2947
|
return this;
|
|
2959
2948
|
}
|
|
2960
2949
|
addRange(key, low, high) {
|
|
2961
|
-
|
|
2950
|
+
this.#query.range[key] = {
|
|
2962
2951
|
low,
|
|
2963
2952
|
high
|
|
2964
2953
|
};
|
|
2965
2954
|
return this;
|
|
2966
2955
|
}
|
|
2967
2956
|
addEqual(key, value) {
|
|
2968
|
-
|
|
2957
|
+
this.#query.equal[key] = value;
|
|
2969
2958
|
return this;
|
|
2970
2959
|
}
|
|
2971
2960
|
addNotEqual(key, value) {
|
|
2972
|
-
|
|
2961
|
+
this.#query.notEqual[key] = value;
|
|
2973
2962
|
return this;
|
|
2974
2963
|
}
|
|
2975
2964
|
addEmpty(key, value) {
|
|
2976
|
-
|
|
2965
|
+
this.#query.empty[key] = value;
|
|
2977
2966
|
return this;
|
|
2978
2967
|
}
|
|
2979
2968
|
addNotEmpty(key, value) {
|
|
2980
|
-
|
|
2969
|
+
this.#query.notEmpty[key] = value;
|
|
2981
2970
|
return this;
|
|
2982
2971
|
}
|
|
2983
2972
|
addOneOf(key, value) {
|
|
2984
|
-
|
|
2973
|
+
this.#query.oneOf[key] = value;
|
|
2985
2974
|
return this;
|
|
2986
2975
|
}
|
|
2987
2976
|
addContains(key, value) {
|
|
2988
|
-
|
|
2977
|
+
this.#query.contains[key] = value;
|
|
2989
2978
|
return this;
|
|
2990
2979
|
}
|
|
2991
2980
|
addNotContains(key, value) {
|
|
2992
|
-
|
|
2981
|
+
this.#query.notContains[key] = value;
|
|
2993
2982
|
return this;
|
|
2994
2983
|
}
|
|
2995
2984
|
addContainsAny(key, value) {
|
|
2996
|
-
|
|
2985
|
+
this.#query.containsAny[key] = value;
|
|
2997
2986
|
return this;
|
|
2998
2987
|
}
|
|
2999
2988
|
setAllOr() {
|
|
3000
|
-
|
|
2989
|
+
this.#query.allOr = true;
|
|
3001
2990
|
}
|
|
3002
2991
|
handleSpaces(input) {
|
|
3003
|
-
if (
|
|
2992
|
+
if (this.#noEscaping) {
|
|
3004
2993
|
return input;
|
|
3005
2994
|
} else {
|
|
3006
2995
|
return input.replace(/ /g, "_");
|
|
@@ -3014,12 +3003,12 @@ var init_lucene = __esm({
|
|
|
3014
3003
|
* @returns {string|*}
|
|
3015
3004
|
*/
|
|
3016
3005
|
preprocess(value, { escape, lowercase, wrap, type } = {}) {
|
|
3017
|
-
const hasVersion = !!
|
|
3006
|
+
const hasVersion = !!this.#version;
|
|
3018
3007
|
const originalType = typeof value;
|
|
3019
3008
|
if (value && lowercase) {
|
|
3020
3009
|
value = value.toLowerCase ? value.toLowerCase() : value;
|
|
3021
3010
|
}
|
|
3022
|
-
if (!
|
|
3011
|
+
if (!this.#noEscaping && escape && originalType === "string") {
|
|
3023
3012
|
value = `${value}`.replace(/[ \/#+\-&|!(){}\]^"~*?:\\]/g, "\\$&");
|
|
3024
3013
|
}
|
|
3025
3014
|
if (originalType === "string" && !isNaN(value) && !type) {
|
|
@@ -3031,7 +3020,7 @@ var init_lucene = __esm({
|
|
|
3031
3020
|
}
|
|
3032
3021
|
isMultiCondition() {
|
|
3033
3022
|
let count = 0;
|
|
3034
|
-
for (let filters of Object.values(
|
|
3023
|
+
for (let filters of Object.values(this.#query)) {
|
|
3035
3024
|
if (typeof filters === "object") {
|
|
3036
3025
|
count += Object.keys(filters).length;
|
|
3037
3026
|
}
|
|
@@ -3057,13 +3046,13 @@ var init_lucene = __esm({
|
|
|
3057
3046
|
}
|
|
3058
3047
|
buildSearchQuery() {
|
|
3059
3048
|
const builder = this;
|
|
3060
|
-
let allOr =
|
|
3049
|
+
let allOr = this.#query && this.#query.allOr;
|
|
3061
3050
|
let query = allOr ? "" : "*:*";
|
|
3062
3051
|
const allPreProcessingOpts = { escape: true, lowercase: true, wrap: true };
|
|
3063
3052
|
let tableId;
|
|
3064
|
-
if (
|
|
3065
|
-
tableId =
|
|
3066
|
-
delete
|
|
3053
|
+
if (this.#query.equal.tableId) {
|
|
3054
|
+
tableId = this.#query.equal.tableId;
|
|
3055
|
+
delete this.#query.equal.tableId;
|
|
3067
3056
|
}
|
|
3068
3057
|
const equal = (key, value) => {
|
|
3069
3058
|
if (!value && value !== 0) {
|
|
@@ -3137,19 +3126,19 @@ var init_lucene = __esm({
|
|
|
3137
3126
|
continue;
|
|
3138
3127
|
}
|
|
3139
3128
|
if (built.length > 0 || query.length > 0) {
|
|
3140
|
-
const mode =
|
|
3129
|
+
const mode = opts?.mode ? opts.mode : allOr ? "OR" : "AND";
|
|
3141
3130
|
built += ` ${mode} `;
|
|
3142
3131
|
}
|
|
3143
3132
|
built += expression;
|
|
3144
3133
|
}
|
|
3145
|
-
if (opts
|
|
3134
|
+
if (opts?.returnBuilt) {
|
|
3146
3135
|
return built;
|
|
3147
3136
|
} else {
|
|
3148
3137
|
query += built;
|
|
3149
3138
|
}
|
|
3150
3139
|
}
|
|
3151
|
-
if (
|
|
3152
|
-
build(
|
|
3140
|
+
if (this.#query.string) {
|
|
3141
|
+
build(this.#query.string, (key, value) => {
|
|
3153
3142
|
if (!value) {
|
|
3154
3143
|
return null;
|
|
3155
3144
|
}
|
|
@@ -3161,8 +3150,8 @@ var init_lucene = __esm({
|
|
|
3161
3150
|
return `${key}:${value}*`;
|
|
3162
3151
|
});
|
|
3163
3152
|
}
|
|
3164
|
-
if (
|
|
3165
|
-
build(
|
|
3153
|
+
if (this.#query.range) {
|
|
3154
|
+
build(this.#query.range, (key, value) => {
|
|
3166
3155
|
if (!value) {
|
|
3167
3156
|
return null;
|
|
3168
3157
|
}
|
|
@@ -3177,14 +3166,14 @@ var init_lucene = __esm({
|
|
|
3177
3166
|
return `${key}:[${low} TO ${high}]`;
|
|
3178
3167
|
});
|
|
3179
3168
|
}
|
|
3180
|
-
if (
|
|
3181
|
-
build(
|
|
3169
|
+
if (this.#query.fuzzy) {
|
|
3170
|
+
build(this.#query.fuzzy, fuzzy);
|
|
3182
3171
|
}
|
|
3183
|
-
if (
|
|
3184
|
-
build(
|
|
3172
|
+
if (this.#query.equal) {
|
|
3173
|
+
build(this.#query.equal, equal);
|
|
3185
3174
|
}
|
|
3186
|
-
if (
|
|
3187
|
-
build(
|
|
3175
|
+
if (this.#query.notEqual) {
|
|
3176
|
+
build(this.#query.notEqual, (key, value) => {
|
|
3188
3177
|
if (!value) {
|
|
3189
3178
|
return null;
|
|
3190
3179
|
}
|
|
@@ -3194,23 +3183,23 @@ var init_lucene = __esm({
|
|
|
3194
3183
|
return `!${key}:${builder.preprocess(value, allPreProcessingOpts)}`;
|
|
3195
3184
|
});
|
|
3196
3185
|
}
|
|
3197
|
-
if (
|
|
3198
|
-
build(
|
|
3186
|
+
if (this.#query.empty) {
|
|
3187
|
+
build(this.#query.empty, (key) => `(*:* -${key}:["" TO *])`);
|
|
3199
3188
|
}
|
|
3200
|
-
if (
|
|
3201
|
-
build(
|
|
3189
|
+
if (this.#query.notEmpty) {
|
|
3190
|
+
build(this.#query.notEmpty, (key) => `${key}:["" TO *]`);
|
|
3202
3191
|
}
|
|
3203
|
-
if (
|
|
3204
|
-
build(
|
|
3192
|
+
if (this.#query.oneOf) {
|
|
3193
|
+
build(this.#query.oneOf, oneOf);
|
|
3205
3194
|
}
|
|
3206
|
-
if (
|
|
3207
|
-
build(
|
|
3195
|
+
if (this.#query.contains) {
|
|
3196
|
+
build(this.#query.contains, contains);
|
|
3208
3197
|
}
|
|
3209
|
-
if (
|
|
3210
|
-
build(this.compressFilters(
|
|
3198
|
+
if (this.#query.notContains) {
|
|
3199
|
+
build(this.compressFilters(this.#query.notContains), notContains);
|
|
3211
3200
|
}
|
|
3212
|
-
if (
|
|
3213
|
-
build(
|
|
3201
|
+
if (this.#query.containsAny) {
|
|
3202
|
+
build(this.#query.containsAny, containsAny);
|
|
3214
3203
|
}
|
|
3215
3204
|
if (tableId) {
|
|
3216
3205
|
query = this.isMultiCondition() ? `(${query})` : query;
|
|
@@ -3222,75 +3211,63 @@ var init_lucene = __esm({
|
|
|
3222
3211
|
buildSearchBody() {
|
|
3223
3212
|
let body = {
|
|
3224
3213
|
q: this.buildSearchQuery(),
|
|
3225
|
-
limit: Math.min(
|
|
3226
|
-
include_docs:
|
|
3214
|
+
limit: Math.min(this.#limit, _QueryBuilder.maxLimit),
|
|
3215
|
+
include_docs: this.#includeDocs
|
|
3227
3216
|
};
|
|
3228
|
-
if (
|
|
3229
|
-
body.bookmark =
|
|
3217
|
+
if (this.#bookmark) {
|
|
3218
|
+
body.bookmark = this.#bookmark;
|
|
3230
3219
|
}
|
|
3231
|
-
if (
|
|
3232
|
-
const order =
|
|
3233
|
-
const type = `<${
|
|
3234
|
-
body.sort = `${order}${this.handleSpaces(
|
|
3220
|
+
if (this.#sort) {
|
|
3221
|
+
const order = this.#sortOrder === "descending" ? "-" : "";
|
|
3222
|
+
const type = `<${this.#sortType}>`;
|
|
3223
|
+
body.sort = `${order}${this.handleSpaces(this.#sort)}${type}`;
|
|
3235
3224
|
}
|
|
3236
3225
|
return body;
|
|
3237
3226
|
}
|
|
3238
3227
|
async run() {
|
|
3239
|
-
if (
|
|
3240
|
-
await
|
|
3228
|
+
if (this.#skip) {
|
|
3229
|
+
await this.#skipItems(this.#skip);
|
|
3241
3230
|
}
|
|
3242
|
-
return await
|
|
3231
|
+
return await this.#execute();
|
|
3243
3232
|
}
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
const
|
|
3269
|
-
this.
|
|
3270
|
-
|
|
3271
|
-
skipRemaining -= rows.length;
|
|
3272
|
-
} while (skipRemaining > 0 && iterationFetched > 0);
|
|
3273
|
-
__privateSet(this, _includeDocs, prevIncludeDocs);
|
|
3274
|
-
__privateSet(this, _limit, prevLimit);
|
|
3275
|
-
};
|
|
3276
|
-
_execute = new WeakSet();
|
|
3277
|
-
execute_fn = async function() {
|
|
3278
|
-
const { url, cookie } = getCouchInfo();
|
|
3279
|
-
const fullPath = `${url}/${__privateGet(this, _dbName)}/_design/database/_search/${__privateGet(this, _index)}`;
|
|
3280
|
-
const body = this.buildSearchBody();
|
|
3281
|
-
try {
|
|
3282
|
-
return await runQuery(fullPath, body, cookie);
|
|
3283
|
-
} catch (err) {
|
|
3284
|
-
if (err.status === 404 && __privateGet(this, _indexBuilder)) {
|
|
3285
|
-
await __privateGet(this, _indexBuilder).call(this);
|
|
3233
|
+
/**
|
|
3234
|
+
* Lucene queries do not support pagination and use bookmarks instead.
|
|
3235
|
+
* For the given builder, walk through pages using bookmarks until the desired
|
|
3236
|
+
* page has been met.
|
|
3237
|
+
*/
|
|
3238
|
+
async #skipItems(skip) {
|
|
3239
|
+
const prevIncludeDocs = this.#includeDocs;
|
|
3240
|
+
const prevLimit = this.#limit;
|
|
3241
|
+
this.excludeDocs();
|
|
3242
|
+
let skipRemaining = skip;
|
|
3243
|
+
let iterationFetched = 0;
|
|
3244
|
+
do {
|
|
3245
|
+
const toSkip = Math.min(_QueryBuilder.maxLimit, skipRemaining);
|
|
3246
|
+
this.setLimit(toSkip);
|
|
3247
|
+
const { bookmark, rows } = await this.#execute();
|
|
3248
|
+
this.setBookmark(bookmark);
|
|
3249
|
+
iterationFetched = rows.length;
|
|
3250
|
+
skipRemaining -= rows.length;
|
|
3251
|
+
} while (skipRemaining > 0 && iterationFetched > 0);
|
|
3252
|
+
this.#includeDocs = prevIncludeDocs;
|
|
3253
|
+
this.#limit = prevLimit;
|
|
3254
|
+
}
|
|
3255
|
+
async #execute() {
|
|
3256
|
+
const { url, cookie } = getCouchInfo();
|
|
3257
|
+
const fullPath = `${url}/${this.#dbName}/_design/database/_search/${this.#index}`;
|
|
3258
|
+
const body = this.buildSearchBody();
|
|
3259
|
+
try {
|
|
3286
3260
|
return await runQuery(fullPath, body, cookie);
|
|
3287
|
-
}
|
|
3288
|
-
|
|
3261
|
+
} catch (err) {
|
|
3262
|
+
if (err.status === 404 && this.#indexBuilder) {
|
|
3263
|
+
await this.#indexBuilder();
|
|
3264
|
+
return await runQuery(fullPath, body, cookie);
|
|
3265
|
+
} else {
|
|
3266
|
+
throw err;
|
|
3267
|
+
}
|
|
3289
3268
|
}
|
|
3290
3269
|
}
|
|
3291
3270
|
};
|
|
3292
|
-
_QueryBuilder.maxLimit = 200;
|
|
3293
|
-
QueryBuilder = _QueryBuilder;
|
|
3294
3271
|
}
|
|
3295
3272
|
});
|
|
3296
3273
|
|
|
@@ -3443,7 +3420,7 @@ function getFullPath(fileName) {
|
|
|
3443
3420
|
}
|
|
3444
3421
|
function getSingleFileMaxSizeInfo(totalMaxSize) {
|
|
3445
3422
|
const regex = /(\d+)([A-Za-z])/;
|
|
3446
|
-
const match = totalMaxSize
|
|
3423
|
+
const match = totalMaxSize?.match(regex);
|
|
3447
3424
|
if (!match) {
|
|
3448
3425
|
console.warn(`totalMaxSize does not have a valid value`, {
|
|
3449
3426
|
totalMaxSize
|
|
@@ -3475,9 +3452,9 @@ function localFileDestination() {
|
|
|
3475
3452
|
const fileInfo = getSingleFileMaxSizeInfo(environment_default.ROLLING_LOG_MAX_SIZE);
|
|
3476
3453
|
const outFile = rfs.createStream(logsFileName, {
|
|
3477
3454
|
// As we have a rolling size, we want to half the max size
|
|
3478
|
-
size: fileInfo
|
|
3455
|
+
size: fileInfo?.size,
|
|
3479
3456
|
path: logsPath,
|
|
3480
|
-
maxFiles:
|
|
3457
|
+
maxFiles: fileInfo?.totalHistoryFiles || 1,
|
|
3481
3458
|
immutable: true,
|
|
3482
3459
|
history: budibaseLogsHistoryFileName,
|
|
3483
3460
|
initialRotation: false
|
|
@@ -3552,8 +3529,8 @@ var init_logger = __esm({
|
|
|
3552
3529
|
tenantId: getTenantId2(),
|
|
3553
3530
|
appId: getAppId2(),
|
|
3554
3531
|
automationId: getAutomationId2(),
|
|
3555
|
-
identityId: identity
|
|
3556
|
-
identityType: identity
|
|
3532
|
+
identityId: identity?._id,
|
|
3533
|
+
identityType: identity?.type,
|
|
3557
3534
|
correlationId: getId()
|
|
3558
3535
|
};
|
|
3559
3536
|
const mergingObject = {
|
|
@@ -3617,30 +3594,30 @@ var init_logger = __esm({
|
|
|
3617
3594
|
pinoInstance = destinations.length ? (0, import_pino.default)(pinoOptions, import_pino.default.multistream(destinations)) : (0, import_pino.default)(pinoOptions);
|
|
3618
3595
|
console.log = (...arg) => {
|
|
3619
3596
|
const [obj, msg] = getLogParams2(arg);
|
|
3620
|
-
pinoInstance
|
|
3597
|
+
pinoInstance?.info(obj, msg);
|
|
3621
3598
|
};
|
|
3622
3599
|
console.info = (...arg) => {
|
|
3623
3600
|
const [obj, msg] = getLogParams2(arg);
|
|
3624
|
-
pinoInstance
|
|
3601
|
+
pinoInstance?.info(obj, msg);
|
|
3625
3602
|
};
|
|
3626
3603
|
console.warn = (...arg) => {
|
|
3627
3604
|
const [obj, msg] = getLogParams2(arg);
|
|
3628
|
-
pinoInstance
|
|
3605
|
+
pinoInstance?.warn(obj, msg);
|
|
3629
3606
|
};
|
|
3630
3607
|
console.error = (...arg) => {
|
|
3631
3608
|
const [obj, msg] = getLogParams2(arg);
|
|
3632
|
-
pinoInstance
|
|
3609
|
+
pinoInstance?.error(obj, msg);
|
|
3633
3610
|
};
|
|
3634
3611
|
console.trace = (...arg) => {
|
|
3635
3612
|
const [obj, msg] = getLogParams2(arg);
|
|
3636
3613
|
if (!obj.err) {
|
|
3637
3614
|
obj.err = new Error();
|
|
3638
3615
|
}
|
|
3639
|
-
pinoInstance
|
|
3616
|
+
pinoInstance?.trace(obj, msg);
|
|
3640
3617
|
};
|
|
3641
3618
|
console.debug = (...arg) => {
|
|
3642
3619
|
const [obj, msg] = getLogParams2(arg);
|
|
3643
|
-
pinoInstance
|
|
3620
|
+
pinoInstance?.debug(obj, msg);
|
|
3644
3621
|
};
|
|
3645
3622
|
const getTenantId2 = () => {
|
|
3646
3623
|
let tenantId;
|
|
@@ -4126,7 +4103,6 @@ async function getSettingsConfigDoc() {
|
|
|
4126
4103
|
async function getPlatformUrl(opts = {
|
|
4127
4104
|
tenantAware: true
|
|
4128
4105
|
}) {
|
|
4129
|
-
var _a;
|
|
4130
4106
|
let platformUrl = environment_default.PLATFORM_URL || "http://localhost:10000";
|
|
4131
4107
|
if (!environment_default.SELF_HOSTED && environment_default.MULTI_TENANCY && opts.tenantAware) {
|
|
4132
4108
|
const tenantId = getTenantId();
|
|
@@ -4134,11 +4110,11 @@ async function getPlatformUrl(opts = {
|
|
|
4134
4110
|
platformUrl = platformUrl.replace("://", `://${tenantId}.`);
|
|
4135
4111
|
}
|
|
4136
4112
|
} else if (environment_default.SELF_HOSTED) {
|
|
4137
|
-
const config =
|
|
4113
|
+
const config = opts?.config ? opts.config : (
|
|
4138
4114
|
// direct to db to prevent infinite loop
|
|
4139
|
-
(
|
|
4115
|
+
(await getConfig("settings" /* SETTINGS */))?.config
|
|
4140
4116
|
);
|
|
4141
|
-
if (config
|
|
4117
|
+
if (config?.platformUrl) {
|
|
4142
4118
|
platformUrl = config.platformUrl;
|
|
4143
4119
|
}
|
|
4144
4120
|
}
|
|
@@ -4162,14 +4138,13 @@ var init_configs2 = __esm({
|
|
|
4162
4138
|
"analyticsEnabled" /* ANALYTICS_ENABLED */,
|
|
4163
4139
|
86400 /* ONE_DAY */,
|
|
4164
4140
|
async () => {
|
|
4165
|
-
|
|
4166
|
-
const config = (opts == null ? void 0 : opts.config) ? opts.config : (
|
|
4141
|
+
const config = opts?.config ? opts.config : (
|
|
4167
4142
|
// direct to db to prevent infinite loop
|
|
4168
|
-
(
|
|
4143
|
+
(await getConfig("settings" /* SETTINGS */))?.config
|
|
4169
4144
|
);
|
|
4170
|
-
if (
|
|
4145
|
+
if (config?.analyticsEnabled === false) {
|
|
4171
4146
|
return false;
|
|
4172
|
-
} else if (
|
|
4147
|
+
} else if (config?.analyticsEnabled === true) {
|
|
4173
4148
|
return true;
|
|
4174
4149
|
}
|
|
4175
4150
|
}
|
|
@@ -4671,7 +4646,6 @@ function handleStalled(queue, removeStalledCb) {
|
|
|
4671
4646
|
});
|
|
4672
4647
|
}
|
|
4673
4648
|
function getLogParams(eventType, event, opts = {}, extra = {}) {
|
|
4674
|
-
var _a, _b, _c;
|
|
4675
4649
|
const message = `[BULL] ${eventType}=${event}`;
|
|
4676
4650
|
const err = opts.error;
|
|
4677
4651
|
const bullLog = {
|
|
@@ -4679,11 +4653,11 @@ function getLogParams(eventType, event, opts = {}, extra = {}) {
|
|
|
4679
4653
|
eventType,
|
|
4680
4654
|
event,
|
|
4681
4655
|
job: opts.job,
|
|
4682
|
-
jobId: opts.jobId ||
|
|
4656
|
+
jobId: opts.jobId || opts.job?.id,
|
|
4683
4657
|
...extra
|
|
4684
4658
|
};
|
|
4685
4659
|
let automationLog;
|
|
4686
|
-
if (
|
|
4660
|
+
if (opts.job?.data?.automation) {
|
|
4687
4661
|
automationLog = {
|
|
4688
4662
|
_logKey: "automation",
|
|
4689
4663
|
trigger: opts.job ? opts.job.data.automation.definition.trigger.event : void 0
|
|
@@ -4692,11 +4666,9 @@ function getLogParams(eventType, event, opts = {}, extra = {}) {
|
|
|
4692
4666
|
return [message, err, bullLog, automationLog];
|
|
4693
4667
|
}
|
|
4694
4668
|
function logging(queue, jobQueue) {
|
|
4695
|
-
var _a;
|
|
4696
4669
|
const eventType = EventTypeMap[jobQueue];
|
|
4697
4670
|
function doInJobContext(job, task) {
|
|
4698
|
-
|
|
4699
|
-
const appId = (_a2 = job.data.event) == null ? void 0 : _a2.appId;
|
|
4671
|
+
const appId = job.data.event?.appId;
|
|
4700
4672
|
if (appId) {
|
|
4701
4673
|
return doInContext(appId, task);
|
|
4702
4674
|
} else {
|
|
@@ -4710,7 +4682,7 @@ function logging(queue, jobQueue) {
|
|
|
4710
4682
|
}).on("error" /* ERROR */, (error) => {
|
|
4711
4683
|
console.error(...getLogParams(eventType, "error" /* ERROR */, { error }));
|
|
4712
4684
|
});
|
|
4713
|
-
if (
|
|
4685
|
+
if (process.env.NODE_DEBUG?.includes("bull")) {
|
|
4714
4686
|
queue.on("waiting" /* WAITING */, (jobId) => {
|
|
4715
4687
|
console.info(...getLogParams(eventType, "waiting" /* WAITING */, { jobId }));
|
|
4716
4688
|
}).on("active" /* ACTIVE */, async (job, jobPromise) => {
|
|
@@ -4790,7 +4762,7 @@ function createQueue(jobQueue, opts = {}) {
|
|
|
4790
4762
|
} else {
|
|
4791
4763
|
queue = new inMemoryQueue_default(jobQueue, queueConfig);
|
|
4792
4764
|
}
|
|
4793
|
-
addListeners(queue, jobQueue, opts
|
|
4765
|
+
addListeners(queue, jobQueue, opts?.removeStalledCb);
|
|
4794
4766
|
QUEUES.push(queue);
|
|
4795
4767
|
if (!cleanupInterval && !environment_default.isTest()) {
|
|
4796
4768
|
cleanupInterval = set(cleanup, CLEANUP_PERIOD_MS);
|
|
@@ -4825,7 +4797,7 @@ var init_queue2 = __esm({
|
|
|
4825
4797
|
});
|
|
4826
4798
|
|
|
4827
4799
|
// src/events/processors/AuditLogsProcessor.ts
|
|
4828
|
-
var
|
|
4800
|
+
var AuditLogsProcessor;
|
|
4829
4801
|
var init_AuditLogsProcessor = __esm({
|
|
4830
4802
|
"src/events/processors/AuditLogsProcessor.ts"() {
|
|
4831
4803
|
"use strict";
|
|
@@ -4834,7 +4806,10 @@ var init_AuditLogsProcessor = __esm({
|
|
|
4834
4806
|
init_queue2();
|
|
4835
4807
|
init_utils6();
|
|
4836
4808
|
init_environment2();
|
|
4837
|
-
|
|
4809
|
+
AuditLogsProcessor = class _AuditLogsProcessor {
|
|
4810
|
+
static {
|
|
4811
|
+
this.auditLogsEnabled = false;
|
|
4812
|
+
}
|
|
4838
4813
|
// can't use constructor as need to return promise
|
|
4839
4814
|
static init(fn) {
|
|
4840
4815
|
_AuditLogsProcessor.auditLogsEnabled = true;
|
|
@@ -4886,12 +4861,9 @@ var init_AuditLogsProcessor = __esm({
|
|
|
4886
4861
|
async identifyGroup(group, timestamp) {
|
|
4887
4862
|
}
|
|
4888
4863
|
shutdown() {
|
|
4889
|
-
|
|
4890
|
-
(_a = _AuditLogsProcessor.auditLogQueue) == null ? void 0 : _a.close();
|
|
4864
|
+
_AuditLogsProcessor.auditLogQueue?.close();
|
|
4891
4865
|
}
|
|
4892
4866
|
};
|
|
4893
|
-
_AuditLogsProcessor.auditLogsEnabled = false;
|
|
4894
|
-
AuditLogsProcessor = _AuditLogsProcessor;
|
|
4895
4867
|
}
|
|
4896
4868
|
});
|
|
4897
4869
|
|
|
@@ -5219,13 +5191,12 @@ __export(users_exports2, {
|
|
|
5219
5191
|
isGlobalBuilder: () => isGlobalBuilder
|
|
5220
5192
|
});
|
|
5221
5193
|
function isBuilder(user2, appId) {
|
|
5222
|
-
var _a, _b, _c;
|
|
5223
5194
|
if (!user2) {
|
|
5224
5195
|
return false;
|
|
5225
5196
|
}
|
|
5226
|
-
if (
|
|
5197
|
+
if (user2.builder?.global) {
|
|
5227
5198
|
return true;
|
|
5228
|
-
} else if (appId &&
|
|
5199
|
+
} else if (appId && user2.builder?.apps?.includes(getProdAppID2(appId))) {
|
|
5229
5200
|
return true;
|
|
5230
5201
|
}
|
|
5231
5202
|
return false;
|
|
@@ -5243,27 +5214,24 @@ function isAdminOrBuilder(user2, appId) {
|
|
|
5243
5214
|
return isBuilder(user2, appId) || isAdmin(user2);
|
|
5244
5215
|
}
|
|
5245
5216
|
function hasAppBuilderPermissions(user2) {
|
|
5246
|
-
var _a, _b, _c;
|
|
5247
5217
|
if (!user2) {
|
|
5248
5218
|
return false;
|
|
5249
5219
|
}
|
|
5250
|
-
const appLength =
|
|
5251
|
-
const isGlobalBuilder3 = !!
|
|
5220
|
+
const appLength = user2.builder?.apps?.length;
|
|
5221
|
+
const isGlobalBuilder3 = !!user2.builder?.global;
|
|
5252
5222
|
return !isGlobalBuilder3 && appLength != null && appLength > 0;
|
|
5253
5223
|
}
|
|
5254
5224
|
function hasBuilderPermissions(user2) {
|
|
5255
|
-
var _a;
|
|
5256
5225
|
if (!user2) {
|
|
5257
5226
|
return false;
|
|
5258
5227
|
}
|
|
5259
|
-
return
|
|
5228
|
+
return user2.builder?.global || hasAppBuilderPermissions(user2);
|
|
5260
5229
|
}
|
|
5261
5230
|
function hasAdminPermissions(user2) {
|
|
5262
|
-
var _a;
|
|
5263
5231
|
if (!user2) {
|
|
5264
5232
|
return false;
|
|
5265
5233
|
}
|
|
5266
|
-
return !!
|
|
5234
|
+
return !!user2.admin?.global;
|
|
5267
5235
|
}
|
|
5268
5236
|
var init_users5 = __esm({
|
|
5269
5237
|
"../shared-core/src/sdk/documents/users.ts"() {
|
|
@@ -5511,8 +5479,8 @@ var init_identification2 = __esm({
|
|
|
5511
5479
|
if (isSSOUser(user2)) {
|
|
5512
5480
|
providerType3 = user2.providerType;
|
|
5513
5481
|
}
|
|
5514
|
-
const accountHolder =
|
|
5515
|
-
const verified2 = account2 &&
|
|
5482
|
+
const accountHolder = account2?.budibaseUserId === user2._id || false;
|
|
5483
|
+
const verified2 = account2 && account2?.budibaseUserId === user2._id ? account2.verified : false;
|
|
5516
5484
|
const installationId = await getInstallationId();
|
|
5517
5485
|
const hosting = account2 ? account2.hosting : getHostingFromEnv();
|
|
5518
5486
|
const environment2 = getDeploymentEnvironment();
|
|
@@ -5679,7 +5647,7 @@ var init_backfill2 = __esm({
|
|
|
5679
5647
|
};
|
|
5680
5648
|
isBackfillingEvent = async (event) => {
|
|
5681
5649
|
const backfill = await getBackfillMetadata();
|
|
5682
|
-
const events2 = backfill
|
|
5650
|
+
const events2 = backfill?.eventWhitelist;
|
|
5683
5651
|
if (events2 && events2.includes(event)) {
|
|
5684
5652
|
return true;
|
|
5685
5653
|
} else {
|
|
@@ -6072,12 +6040,11 @@ var init_auth4 = __esm({
|
|
|
6072
6040
|
|
|
6073
6041
|
// src/events/publishers/automation.ts
|
|
6074
6042
|
async function created3(automation, timestamp) {
|
|
6075
|
-
var _a, _b, _c, _d;
|
|
6076
6043
|
const properties = {
|
|
6077
6044
|
appId: automation.appId,
|
|
6078
6045
|
automationId: automation._id,
|
|
6079
|
-
triggerId:
|
|
6080
|
-
triggerType:
|
|
6046
|
+
triggerId: automation.definition?.trigger?.id,
|
|
6047
|
+
triggerType: automation.definition?.trigger?.stepId,
|
|
6081
6048
|
audited: {
|
|
6082
6049
|
name: automation.name
|
|
6083
6050
|
}
|
|
@@ -6085,22 +6052,20 @@ async function created3(automation, timestamp) {
|
|
|
6085
6052
|
await publishEvent("automation:created" /* AUTOMATION_CREATED */, properties, timestamp);
|
|
6086
6053
|
}
|
|
6087
6054
|
async function triggerUpdated(automation) {
|
|
6088
|
-
var _a, _b, _c, _d;
|
|
6089
6055
|
const properties = {
|
|
6090
6056
|
appId: automation.appId,
|
|
6091
6057
|
automationId: automation._id,
|
|
6092
|
-
triggerId:
|
|
6093
|
-
triggerType:
|
|
6058
|
+
triggerId: automation.definition?.trigger?.id,
|
|
6059
|
+
triggerType: automation.definition?.trigger?.stepId
|
|
6094
6060
|
};
|
|
6095
6061
|
await publishEvent("automation:trigger:updated" /* AUTOMATION_TRIGGER_UPDATED */, properties);
|
|
6096
6062
|
}
|
|
6097
6063
|
async function deleted3(automation) {
|
|
6098
|
-
var _a, _b, _c, _d;
|
|
6099
6064
|
const properties = {
|
|
6100
6065
|
appId: automation.appId,
|
|
6101
6066
|
automationId: automation._id,
|
|
6102
|
-
triggerId:
|
|
6103
|
-
triggerType:
|
|
6067
|
+
triggerId: automation.definition?.trigger?.id,
|
|
6068
|
+
triggerType: automation.definition?.trigger?.stepId,
|
|
6104
6069
|
audited: {
|
|
6105
6070
|
name: automation.name
|
|
6106
6071
|
}
|
|
@@ -6108,22 +6073,20 @@ async function deleted3(automation) {
|
|
|
6108
6073
|
await publishEvent("automation:deleted" /* AUTOMATION_DELETED */, properties);
|
|
6109
6074
|
}
|
|
6110
6075
|
async function tested(automation) {
|
|
6111
|
-
var _a, _b, _c, _d;
|
|
6112
6076
|
const properties = {
|
|
6113
6077
|
appId: automation.appId,
|
|
6114
6078
|
automationId: automation._id,
|
|
6115
|
-
triggerId:
|
|
6116
|
-
triggerType:
|
|
6079
|
+
triggerId: automation.definition?.trigger?.id,
|
|
6080
|
+
triggerType: automation.definition?.trigger?.stepId
|
|
6117
6081
|
};
|
|
6118
6082
|
await publishEvent("automation:tested" /* AUTOMATION_TESTED */, properties);
|
|
6119
6083
|
}
|
|
6120
6084
|
async function stepCreated(automation, step, timestamp) {
|
|
6121
|
-
var _a, _b, _c, _d;
|
|
6122
6085
|
const properties = {
|
|
6123
6086
|
appId: automation.appId,
|
|
6124
6087
|
automationId: automation._id,
|
|
6125
|
-
triggerId:
|
|
6126
|
-
triggerType:
|
|
6088
|
+
triggerId: automation.definition?.trigger?.id,
|
|
6089
|
+
triggerType: automation.definition?.trigger?.stepId,
|
|
6127
6090
|
stepId: step.id,
|
|
6128
6091
|
stepType: step.stepId,
|
|
6129
6092
|
audited: {
|
|
@@ -6133,12 +6096,11 @@ async function stepCreated(automation, step, timestamp) {
|
|
|
6133
6096
|
await publishEvent("automation:step:created" /* AUTOMATION_STEP_CREATED */, properties, timestamp);
|
|
6134
6097
|
}
|
|
6135
6098
|
async function stepDeleted(automation, step) {
|
|
6136
|
-
var _a, _b, _c, _d;
|
|
6137
6099
|
const properties = {
|
|
6138
6100
|
appId: automation.appId,
|
|
6139
6101
|
automationId: automation._id,
|
|
6140
|
-
triggerId:
|
|
6141
|
-
triggerType:
|
|
6102
|
+
triggerId: automation.definition?.trigger?.id,
|
|
6103
|
+
triggerType: automation.definition?.trigger?.stepId,
|
|
6142
6104
|
stepId: step.id,
|
|
6143
6105
|
stepType: step.stepId,
|
|
6144
6106
|
audited: {
|
|
@@ -6487,25 +6449,23 @@ var init_role3 = __esm({
|
|
|
6487
6449
|
|
|
6488
6450
|
// src/events/publishers/screen.ts
|
|
6489
6451
|
async function created8(screen, timestamp) {
|
|
6490
|
-
var _a;
|
|
6491
6452
|
const properties = {
|
|
6492
6453
|
layoutId: screen.layoutId,
|
|
6493
6454
|
screenId: screen._id,
|
|
6494
6455
|
roleId: screen.routing.roleId,
|
|
6495
6456
|
audited: {
|
|
6496
|
-
name:
|
|
6457
|
+
name: screen.routing?.route
|
|
6497
6458
|
}
|
|
6498
6459
|
};
|
|
6499
6460
|
await publishEvent("screen:created" /* SCREEN_CREATED */, properties, timestamp);
|
|
6500
6461
|
}
|
|
6501
6462
|
async function deleted8(screen) {
|
|
6502
|
-
var _a;
|
|
6503
6463
|
const properties = {
|
|
6504
6464
|
layoutId: screen.layoutId,
|
|
6505
6465
|
screenId: screen._id,
|
|
6506
6466
|
roleId: screen.routing.roleId,
|
|
6507
6467
|
audited: {
|
|
6508
|
-
name:
|
|
6468
|
+
name: screen.routing?.route
|
|
6509
6469
|
}
|
|
6510
6470
|
};
|
|
6511
6471
|
await publishEvent("screen:deleted" /* SCREEN_DELETED */, properties);
|
|
@@ -8175,7 +8135,6 @@ var appBuilderUser = (appId, userProps) => {
|
|
|
8175
8135
|
};
|
|
8176
8136
|
};
|
|
8177
8137
|
function ssoUser(opts = {}) {
|
|
8178
|
-
var _a, _b, _c;
|
|
8179
8138
|
const base = user(opts.user);
|
|
8180
8139
|
delete base.password;
|
|
8181
8140
|
if (!opts.details) {
|
|
@@ -8184,9 +8143,9 @@ function ssoUser(opts = {}) {
|
|
|
8184
8143
|
return {
|
|
8185
8144
|
...base,
|
|
8186
8145
|
forceResetPassword: false,
|
|
8187
|
-
oauth2:
|
|
8188
|
-
provider:
|
|
8189
|
-
providerType:
|
|
8146
|
+
oauth2: opts.details?.oauth2,
|
|
8147
|
+
provider: opts.details?.provider,
|
|
8148
|
+
providerType: opts.details?.providerType,
|
|
8190
8149
|
thirdPartyProfile: {
|
|
8191
8150
|
email: base.email,
|
|
8192
8151
|
picture: base.pictureUrl
|
|
@@ -8352,7 +8311,7 @@ __export(testContainerUtils_exports, {
|
|
|
8352
8311
|
var import_child_process = require("child_process");
|
|
8353
8312
|
var dockerPsResult;
|
|
8354
8313
|
function formatDockerPsResult(serverName, port) {
|
|
8355
|
-
const lines = dockerPsResult
|
|
8314
|
+
const lines = dockerPsResult?.split("\n");
|
|
8356
8315
|
let first = true;
|
|
8357
8316
|
if (!lines) {
|
|
8358
8317
|
return null;
|
|
@@ -8409,11 +8368,14 @@ function getContainerInfo(containerName, port) {
|
|
|
8409
8368
|
function getCouchConfig() {
|
|
8410
8369
|
return getContainerInfo("couchdb-service", 5984);
|
|
8411
8370
|
}
|
|
8371
|
+
function getMinioConfig() {
|
|
8372
|
+
return getContainerInfo("minio-service", 9e3);
|
|
8373
|
+
}
|
|
8412
8374
|
function getRedisConfig() {
|
|
8413
8375
|
return getContainerInfo("redis-service", 6379);
|
|
8414
8376
|
}
|
|
8415
8377
|
function setupEnv(...envs) {
|
|
8416
|
-
const couch = getCouchConfig(), minio =
|
|
8378
|
+
const couch = getCouchConfig(), minio = getMinioConfig(), redis2 = getRedisConfig();
|
|
8417
8379
|
const configs = [
|
|
8418
8380
|
{ key: "COUCH_DB_PORT", value: couch.port },
|
|
8419
8381
|
{ key: "COUCH_DB_URL", value: couch.url },
|