@budibase/backend-core 3.2.41 → 3.2.43
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/package.json +3 -3
- package/dist/src/accounts/accounts.js +83 -0
- package/dist/src/accounts/accounts.js.map +1 -0
- package/dist/src/accounts/api.js +102 -0
- package/dist/src/accounts/api.js.map +1 -0
- package/dist/src/accounts/index.js +18 -0
- package/dist/src/accounts/index.js.map +1 -0
- package/dist/src/cache/appMetadata.js +96 -0
- package/dist/src/cache/appMetadata.js.map +1 -0
- package/dist/src/cache/base/index.js +189 -0
- package/dist/src/cache/base/index.js.map +1 -0
- package/dist/src/cache/docWritethrough.js +123 -0
- package/dist/src/cache/docWritethrough.js.map +1 -0
- package/dist/src/cache/generic.js +37 -0
- package/dist/src/cache/generic.js.map +1 -0
- package/dist/src/cache/index.js +48 -0
- package/dist/src/cache/index.js.map +1 -0
- package/dist/src/cache/invite.js +128 -0
- package/dist/src/cache/invite.js.map +1 -0
- package/dist/src/cache/passwordReset.js +92 -0
- package/dist/src/cache/passwordReset.js.map +1 -0
- package/dist/src/cache/user.js +183 -0
- package/dist/src/cache/user.js.map +1 -0
- package/dist/src/cache/writethrough.js +170 -0
- package/dist/src/cache/writethrough.js.map +1 -0
- package/dist/src/configs/configs.js +294 -0
- package/dist/src/configs/configs.js.map +1 -0
- package/dist/src/configs/index.js +18 -0
- package/dist/src/configs/index.js.map +1 -0
- package/dist/src/constants/db.js +75 -0
- package/dist/src/constants/db.js.map +1 -0
- package/dist/src/constants/index.js +19 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/constants/misc.js +40 -0
- package/dist/src/constants/misc.js.map +1 -0
- package/dist/src/context/Context.js +14 -0
- package/dist/src/context/Context.js.map +1 -0
- package/dist/src/context/identity.js +81 -0
- package/dist/src/context/identity.js.map +1 -0
- package/dist/src/context/index.js +44 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/mainContext.js +446 -0
- package/dist/src/context/mainContext.js.map +1 -0
- package/dist/src/context/types.js +3 -0
- package/dist/src/context/types.js.map +1 -0
- package/dist/src/db/Replication.js +90 -0
- package/dist/src/db/Replication.js.map +1 -0
- package/dist/src/db/couch/DatabaseImpl.js +475 -0
- package/dist/src/db/couch/DatabaseImpl.js.map +1 -0
- package/dist/src/db/couch/connections.js +101 -0
- package/dist/src/db/couch/connections.js.map +1 -0
- package/dist/src/db/couch/index.js +26 -0
- package/dist/src/db/couch/index.js.map +1 -0
- package/dist/src/db/couch/pouchDB.js +108 -0
- package/dist/src/db/couch/pouchDB.js.map +1 -0
- package/dist/src/db/couch/utils.js +60 -0
- package/dist/src/db/couch/utils.js.map +1 -0
- package/dist/src/db/db.js +47 -0
- package/dist/src/db/db.js.map +1 -0
- package/dist/src/db/errors.js +21 -0
- package/dist/src/db/errors.js.map +1 -0
- package/dist/src/db/index.js +58 -0
- package/dist/src/db/index.js.map +1 -0
- package/dist/src/db/instrumentation.js +202 -0
- package/dist/src/db/instrumentation.js.map +1 -0
- package/dist/src/db/lucene.js +638 -0
- package/dist/src/db/lucene.js.map +1 -0
- package/dist/src/db/searchIndexes/index.js +18 -0
- package/dist/src/db/searchIndexes/index.js.map +1 -0
- package/dist/src/db/searchIndexes/searchIndexes.js +76 -0
- package/dist/src/db/searchIndexes/searchIndexes.js.map +1 -0
- package/dist/src/db/utils.js +212 -0
- package/dist/src/db/utils.js.map +1 -0
- package/dist/src/db/views.js +224 -0
- package/dist/src/db/views.js.map +1 -0
- package/dist/src/docIds/conversions.js +62 -0
- package/dist/src/docIds/conversions.js.map +1 -0
- package/dist/src/docIds/ids.js +125 -0
- package/dist/src/docIds/ids.js.map +1 -0
- package/dist/src/docIds/index.js +19 -0
- package/dist/src/docIds/index.js.map +1 -0
- package/dist/src/docIds/newid.js +8 -0
- package/dist/src/docIds/newid.js.map +1 -0
- package/dist/src/docIds/params.js +141 -0
- package/dist/src/docIds/params.js.map +1 -0
- package/dist/src/environment.js +182 -0
- package/dist/src/environment.js.map +1 -0
- package/dist/src/errors/errors.js +97 -0
- package/dist/src/errors/errors.js.map +1 -0
- package/dist/src/errors/index.js +18 -0
- package/dist/src/errors/index.js.map +1 -0
- package/dist/src/events/analytics.js +52 -0
- package/dist/src/events/analytics.js.map +1 -0
- package/dist/src/events/asyncEvents/index.js +19 -0
- package/dist/src/events/asyncEvents/index.js.map +1 -0
- package/dist/src/events/asyncEvents/publisher.js +26 -0
- package/dist/src/events/asyncEvents/publisher.js.map +1 -0
- package/dist/src/events/asyncEvents/queue.js +26 -0
- package/dist/src/events/asyncEvents/queue.js.map +1 -0
- package/dist/src/events/backfill.js +189 -0
- package/dist/src/events/backfill.js.map +1 -0
- package/dist/src/events/events.js +87 -0
- package/dist/src/events/events.js.map +1 -0
- package/dist/src/events/identification.js +299 -0
- package/dist/src/events/identification.js.map +1 -0
- package/dist/src/events/index.js +59 -0
- package/dist/src/events/index.js.map +1 -0
- package/dist/src/events/processors/AnalyticsProcessor.js +103 -0
- package/dist/src/events/processors/AnalyticsProcessor.js.map +1 -0
- package/dist/src/events/processors/AuditLogsProcessor.js +86 -0
- package/dist/src/events/processors/AuditLogsProcessor.js.map +1 -0
- package/dist/src/events/processors/LoggingProcessor.js +47 -0
- package/dist/src/events/processors/LoggingProcessor.js.map +1 -0
- package/dist/src/events/processors/Processors.js +52 -0
- package/dist/src/events/processors/Processors.js.map +1 -0
- package/dist/src/events/processors/index.js +23 -0
- package/dist/src/events/processors/index.js.map +1 -0
- package/dist/src/events/processors/posthog/PosthogProcessor.js +147 -0
- package/dist/src/events/processors/posthog/PosthogProcessor.js.map +1 -0
- package/dist/src/events/processors/posthog/index.js +8 -0
- package/dist/src/events/processors/posthog/index.js.map +1 -0
- package/dist/src/events/processors/posthog/rateLimiting.js +129 -0
- package/dist/src/events/processors/posthog/rateLimiting.js.map +1 -0
- package/dist/src/events/processors/types.js +3 -0
- package/dist/src/events/processors/types.js.map +1 -0
- package/dist/src/events/publishers/account.js +43 -0
- package/dist/src/events/publishers/account.js.map +1 -0
- package/dist/src/events/publishers/ai.js +30 -0
- package/dist/src/events/publishers/ai.js.map +1 -0
- package/dist/src/events/publishers/app.js +166 -0
- package/dist/src/events/publishers/app.js.map +1 -0
- package/dist/src/events/publishers/auditLog.js +34 -0
- package/dist/src/events/publishers/auditLog.js.map +1 -0
- package/dist/src/events/publishers/auth.js +80 -0
- package/dist/src/events/publishers/auth.js.map +1 -0
- package/dist/src/events/publishers/automation.js +117 -0
- package/dist/src/events/publishers/automation.js.map +1 -0
- package/dist/src/events/publishers/backfill.js +85 -0
- package/dist/src/events/publishers/backfill.js.map +1 -0
- package/dist/src/events/publishers/backup.js +41 -0
- package/dist/src/events/publishers/backup.js.map +1 -0
- package/dist/src/events/publishers/datasource.js +54 -0
- package/dist/src/events/publishers/datasource.js.map +1 -0
- package/dist/src/events/publishers/email.js +30 -0
- package/dist/src/events/publishers/email.js.map +1 -0
- package/dist/src/events/publishers/environmentVariable.js +44 -0
- package/dist/src/events/publishers/environmentVariable.js.map +1 -0
- package/dist/src/events/publishers/group.js +107 -0
- package/dist/src/events/publishers/group.js.map +1 -0
- package/dist/src/events/publishers/index.js +59 -0
- package/dist/src/events/publishers/index.js.map +1 -0
- package/dist/src/events/publishers/installation.js +52 -0
- package/dist/src/events/publishers/installation.js.map +1 -0
- package/dist/src/events/publishers/layout.js +34 -0
- package/dist/src/events/publishers/layout.js.map +1 -0
- package/dist/src/events/publishers/license.js +77 -0
- package/dist/src/events/publishers/license.js.map +1 -0
- package/dist/src/events/publishers/org.js +52 -0
- package/dist/src/events/publishers/org.js.map +1 -0
- package/dist/src/events/publishers/plugin.js +55 -0
- package/dist/src/events/publishers/plugin.js.map +1 -0
- package/dist/src/events/publishers/query.js +73 -0
- package/dist/src/events/publishers/query.js.map +1 -0
- package/dist/src/events/publishers/role.js +69 -0
- package/dist/src/events/publishers/role.js.map +1 -0
- package/dist/src/events/publishers/rowAction.js +22 -0
- package/dist/src/events/publishers/rowAction.js.map +1 -0
- package/dist/src/events/publishers/rows.js +31 -0
- package/dist/src/events/publishers/rows.js.map +1 -0
- package/dist/src/events/publishers/screen.js +46 -0
- package/dist/src/events/publishers/screen.js.map +1 -0
- package/dist/src/events/publishers/serve.js +47 -0
- package/dist/src/events/publishers/serve.js.map +1 -0
- package/dist/src/events/publishers/table.js +95 -0
- package/dist/src/events/publishers/table.js.map +1 -0
- package/dist/src/events/publishers/user.js +201 -0
- package/dist/src/events/publishers/user.js.map +1 -0
- package/dist/src/events/publishers/view.js +123 -0
- package/dist/src/events/publishers/view.js.map +1 -0
- package/dist/src/helpers.js +13 -0
- package/dist/src/helpers.js.map +1 -0
- package/dist/src/installation.js +159 -0
- package/dist/src/installation.js.map +1 -0
- package/dist/src/logging/alerts.js +23 -0
- package/dist/src/logging/alerts.js.map +1 -0
- package/dist/src/logging/correlation/correlation.js +18 -0
- package/dist/src/logging/correlation/correlation.js.map +1 -0
- package/dist/src/logging/correlation/index.js +18 -0
- package/dist/src/logging/correlation/index.js.map +1 -0
- package/dist/src/logging/index.js +45 -0
- package/dist/src/logging/index.js.map +1 -0
- package/dist/src/logging/pino/logger.js +234 -0
- package/dist/src/logging/pino/logger.js.map +1 -0
- package/dist/src/logging/system.js +110 -0
- package/dist/src/logging/system.js.map +1 -0
- package/dist/src/objectStore/buckets/app.js +95 -0
- package/dist/src/objectStore/buckets/app.js.map +1 -0
- package/dist/src/objectStore/buckets/global.js +68 -0
- package/dist/src/objectStore/buckets/global.js.map +1 -0
- package/dist/src/objectStore/buckets/index.js +20 -0
- package/dist/src/objectStore/buckets/index.js.map +1 -0
- package/dist/src/objectStore/buckets/plugins.js +104 -0
- package/dist/src/objectStore/buckets/plugins.js.map +1 -0
- package/dist/src/objectStore/cloudfront.js +73 -0
- package/dist/src/objectStore/cloudfront.js.map +1 -0
- package/dist/src/objectStore/index.js +20 -0
- package/dist/src/objectStore/index.js.map +1 -0
- package/dist/src/objectStore/objectStore.js +509 -0
- package/dist/src/objectStore/objectStore.js.map +1 -0
- package/dist/src/objectStore/utils.js +148 -0
- package/dist/src/objectStore/utils.js.map +1 -0
- package/dist/src/platform/index.js +43 -0
- package/dist/src/platform/index.js.map +1 -0
- package/dist/src/platform/platformDb.js +9 -0
- package/dist/src/platform/platformDb.js.map +1 -0
- package/dist/src/platform/tenants.js +149 -0
- package/dist/src/platform/tenants.js.map +1 -0
- package/dist/src/platform/users.js +118 -0
- package/dist/src/platform/users.js.map +1 -0
- package/dist/src/queue/constants.js +13 -0
- package/dist/src/queue/constants.js.map +1 -0
- package/dist/src/queue/inMemoryQueue.js +192 -0
- package/dist/src/queue/inMemoryQueue.js.map +1 -0
- package/dist/src/queue/index.js +19 -0
- package/dist/src/queue/index.js.map +1 -0
- package/dist/src/queue/listeners.js +199 -0
- package/dist/src/queue/listeners.js.map +1 -0
- package/dist/src/queue/queue.js +124 -0
- package/dist/src/queue/queue.js.map +1 -0
- package/dist/src/redis/index.js +47 -0
- package/dist/src/redis/index.js.map +1 -0
- package/dist/src/redis/init.js +184 -0
- package/dist/src/redis/init.js.map +1 -0
- package/dist/src/redis/redis.js +396 -0
- package/dist/src/redis/redis.js.map +1 -0
- package/dist/src/redis/redlockImpl.js +181 -0
- package/dist/src/redis/redlockImpl.js.map +1 -0
- package/dist/src/redis/utils.js +131 -0
- package/dist/src/redis/utils.js.map +1 -0
- package/dist/src/security/auth.js +26 -0
- package/dist/src/security/auth.js.map +1 -0
- package/dist/src/security/index.js +18 -0
- package/dist/src/security/index.js.map +1 -0
- package/dist/src/security/roles.js +566 -0
- package/dist/src/security/roles.js.map +1 -0
- package/dist/src/security/sessions.js +156 -0
- package/dist/src/security/sessions.js.map +1 -0
- package/dist/src/sql/utils.js +180 -0
- package/dist/src/sql/utils.js.map +1 -0
- package/dist/src/tenancy/db.js +9 -0
- package/dist/src/tenancy/db.js.map +1 -0
- package/dist/src/tenancy/index.js +19 -0
- package/dist/src/tenancy/index.js.map +1 -0
- package/dist/src/tenancy/tenancy.js +125 -0
- package/dist/src/tenancy/tenancy.js.map +1 -0
- package/dist/src/timers/index.js +18 -0
- package/dist/src/timers/index.js.map +1 -0
- package/dist/src/timers/timers.js +25 -0
- package/dist/src/timers/timers.js.map +1 -0
- package/dist/src/users/db.js +489 -0
- package/dist/src/users/db.js.map +1 -0
- package/dist/src/users/events.js +179 -0
- package/dist/src/users/events.js.map +1 -0
- package/dist/src/users/index.js +23 -0
- package/dist/src/users/index.js.map +1 -0
- package/dist/src/users/lookup.js +126 -0
- package/dist/src/users/lookup.js.map +1 -0
- package/dist/src/users/users.js +376 -0
- package/dist/src/users/users.js.map +1 -0
- package/dist/src/users/utils.js +127 -0
- package/dist/src/users/utils.js.map +1 -0
- package/dist/src/utils/Duration.js +54 -0
- package/dist/src/utils/Duration.js.map +1 -0
- package/dist/src/utils/hashing.js +46 -0
- package/dist/src/utils/hashing.js.map +1 -0
- package/dist/src/utils/index.js +21 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/stringUtils.js +8 -0
- package/dist/src/utils/stringUtils.js.map +1 -0
- package/dist/src/utils/utils.js +267 -0
- package/dist/src/utils/utils.js.map +1 -0
- package/dist/tests/core/logging.js +33 -0
- package/dist/tests/core/logging.js.map +1 -0
- package/dist/tests/core/utilities/index.js +48 -0
- package/dist/tests/core/utilities/index.js.map +1 -0
- package/dist/tests/core/utilities/jestUtils.js +21 -0
- package/dist/tests/core/utilities/jestUtils.js.map +1 -0
- package/dist/tests/core/utilities/mocks/alerts.js +40 -0
- package/dist/tests/core/utilities/mocks/alerts.js.map +1 -0
- package/dist/tests/core/utilities/mocks/date.js +6 -0
- package/dist/tests/core/utilities/mocks/date.js.map +1 -0
- package/dist/tests/core/utilities/mocks/events.js +155 -0
- package/dist/tests/core/utilities/mocks/events.js.map +1 -0
- package/dist/tests/core/utilities/mocks/index.js +47 -0
- package/dist/tests/core/utilities/mocks/index.js.map +1 -0
- package/dist/tests/core/utilities/mocks/licenses.js +109 -0
- package/dist/tests/core/utilities/mocks/licenses.js.map +1 -0
- package/dist/tests/core/utilities/queue.js +21 -0
- package/dist/tests/core/utilities/queue.js.map +1 -0
- package/dist/tests/core/utilities/structures/Chance.js +21 -0
- package/dist/tests/core/utilities/structures/Chance.js.map +1 -0
- package/dist/tests/core/utilities/structures/accounts.js +43 -0
- package/dist/tests/core/utilities/structures/accounts.js.map +1 -0
- package/dist/tests/core/utilities/structures/apps.js +23 -0
- package/dist/tests/core/utilities/structures/apps.js.map +1 -0
- package/dist/tests/core/utilities/structures/common.js +11 -0
- package/dist/tests/core/utilities/structures/common.js.map +1 -0
- package/dist/tests/core/utilities/structures/db.js +15 -0
- package/dist/tests/core/utilities/structures/db.js.map +1 -0
- package/dist/tests/core/utilities/structures/documents/index.js +18 -0
- package/dist/tests/core/utilities/structures/documents/index.js.map +1 -0
- package/dist/tests/core/utilities/structures/documents/platform/index.js +38 -0
- package/dist/tests/core/utilities/structures/documents/platform/index.js.map +1 -0
- package/dist/tests/core/utilities/structures/documents/platform/installation.js +47 -0
- package/dist/tests/core/utilities/structures/documents/platform/installation.js.map +1 -0
- package/dist/tests/core/utilities/structures/generator.js +9 -0
- package/dist/tests/core/utilities/structures/generator.js.map +1 -0
- package/dist/tests/core/utilities/structures/index.js +56 -0
- package/dist/tests/core/utilities/structures/index.js.map +1 -0
- package/dist/tests/core/utilities/structures/koa.js +10 -0
- package/dist/tests/core/utilities/structures/koa.js.map +1 -0
- package/dist/tests/core/utilities/structures/licenses.js +157 -0
- package/dist/tests/core/utilities/structures/licenses.js.map +1 -0
- package/dist/tests/core/utilities/structures/plugins.js +22 -0
- package/dist/tests/core/utilities/structures/plugins.js.map +1 -0
- package/dist/tests/core/utilities/structures/quotas.js +73 -0
- package/dist/tests/core/utilities/structures/quotas.js.map +1 -0
- package/dist/tests/core/utilities/structures/scim.js +62 -0
- package/dist/tests/core/utilities/structures/scim.js.map +1 -0
- package/dist/tests/core/utilities/structures/sso.js +140 -0
- package/dist/tests/core/utilities/structures/sso.js.map +1 -0
- package/dist/tests/core/utilities/structures/tenants.js +8 -0
- package/dist/tests/core/utilities/structures/tenants.js.map +1 -0
- package/dist/tests/core/utilities/structures/userGroups.js +12 -0
- package/dist/tests/core/utilities/structures/userGroups.js.map +1 -0
- package/dist/tests/core/utilities/structures/users.js +53 -0
- package/dist/tests/core/utilities/structures/users.js.map +1 -0
- package/dist/tests/core/utilities/testContainerUtils.js +161 -0
- package/dist/tests/core/utilities/testContainerUtils.js.map +1 -0
- package/dist/tests/core/utilities/utils/index.js +39 -0
- package/dist/tests/core/utilities/utils/index.js.map +1 -0
- package/dist/tests/core/utilities/utils/queue.js +37 -0
- package/dist/tests/core/utilities/utils/queue.js.map +1 -0
- package/dist/tests/core/utilities/utils/time.js +7 -0
- package/dist/tests/core/utilities/utils/time.js.map +1 -0
- package/dist/tests/extra/DBTestConfiguration.js +65 -0
- package/dist/tests/extra/DBTestConfiguration.js.map +1 -0
- package/dist/tests/extra/index.js +43 -0
- package/dist/tests/extra/index.js.map +1 -0
- package/dist/tests/extra/testEnv.js +136 -0
- package/dist/tests/extra/testEnv.js.map +1 -0
- package/dist/tests/index.js +19 -0
- package/dist/tests/index.js.map +1 -0
- package/dist/tests/jestEnv.js +12 -0
- package/dist/tests/jestEnv.js.map +1 -0
- package/dist/tests/jestSetup.js +33 -0
- package/dist/tests/jestSetup.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,156 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.getSessionsForUser = getSessionsForUser;
|
|
49
|
+
exports.invalidateSessions = invalidateSessions;
|
|
50
|
+
exports.createASession = createASession;
|
|
51
|
+
exports.updateSessionTTL = updateSessionTTL;
|
|
52
|
+
exports.endSession = endSession;
|
|
53
|
+
exports.getSession = getSession;
|
|
54
|
+
const redis = __importStar(require("../redis/init"));
|
|
55
|
+
const uuid_1 = require("uuid");
|
|
56
|
+
const logging_1 = require("../logging");
|
|
57
|
+
const environment_1 = __importDefault(require("../environment"));
|
|
58
|
+
const utils_1 = require("../utils");
|
|
59
|
+
// a week expiry is the default
|
|
60
|
+
const EXPIRY_SECONDS = environment_1.default.SESSION_EXPIRY_SECONDS
|
|
61
|
+
? parseInt(environment_1.default.SESSION_EXPIRY_SECONDS)
|
|
62
|
+
: utils_1.Duration.fromDays(7).toSeconds();
|
|
63
|
+
function makeSessionID(userId, sessionId) {
|
|
64
|
+
return `${userId}/${sessionId}`;
|
|
65
|
+
}
|
|
66
|
+
function getSessionsForUser(userId) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
if (!userId) {
|
|
69
|
+
console.trace("Cannot get sessions for undefined userId");
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const client = yield redis.getSessionClient();
|
|
73
|
+
const sessions = yield client.scan(userId);
|
|
74
|
+
return sessions.map(session => session.value);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function invalidateSessions(userId_1) {
|
|
78
|
+
return __awaiter(this, arguments, void 0, function* (userId, opts = {}) {
|
|
79
|
+
try {
|
|
80
|
+
const reason = (opts === null || opts === void 0 ? void 0 : opts.reason) || "unknown";
|
|
81
|
+
let sessionIds = opts.sessionIds || [];
|
|
82
|
+
let sessionKeys;
|
|
83
|
+
// If no sessionIds, get all the sessions for the user
|
|
84
|
+
if (sessionIds.length === 0) {
|
|
85
|
+
const sessions = yield getSessionsForUser(userId);
|
|
86
|
+
sessionKeys = sessions.map(session => ({
|
|
87
|
+
key: makeSessionID(session.userId, session.sessionId),
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// use the passed array of sessionIds
|
|
92
|
+
sessionIds = Array.isArray(sessionIds) ? sessionIds : [sessionIds];
|
|
93
|
+
sessionKeys = sessionIds.map(sessionId => ({
|
|
94
|
+
key: makeSessionID(userId, sessionId),
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
if (sessionKeys && sessionKeys.length > 0) {
|
|
98
|
+
const client = yield redis.getSessionClient();
|
|
99
|
+
const promises = [];
|
|
100
|
+
for (let sessionKey of sessionKeys) {
|
|
101
|
+
promises.push(client.delete(sessionKey.key));
|
|
102
|
+
}
|
|
103
|
+
if (!environment_1.default.isTest()) {
|
|
104
|
+
(0, logging_1.logWarn)(`Invalidating sessions for ${userId} (reason: ${reason}) - ${sessionKeys
|
|
105
|
+
.map(sessionKey => sessionKey.key)
|
|
106
|
+
.join(", ")}`);
|
|
107
|
+
}
|
|
108
|
+
yield Promise.all(promises);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
console.error(`Error invalidating sessions: ${err}`);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function createASession(userId, createSession) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
// invalidate all other sessions
|
|
119
|
+
yield invalidateSessions(userId, { reason: "creation" });
|
|
120
|
+
const client = yield redis.getSessionClient();
|
|
121
|
+
const sessionId = createSession.sessionId;
|
|
122
|
+
const csrfToken = createSession.csrfToken ? createSession.csrfToken : (0, uuid_1.v4)();
|
|
123
|
+
const key = makeSessionID(userId, sessionId);
|
|
124
|
+
const session = Object.assign(Object.assign({}, createSession), { csrfToken, createdAt: new Date().toISOString(), lastAccessedAt: new Date().toISOString(), userId });
|
|
125
|
+
yield client.store(key, session, EXPIRY_SECONDS);
|
|
126
|
+
return session;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
function updateSessionTTL(session) {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
const client = yield redis.getSessionClient();
|
|
132
|
+
const key = makeSessionID(session.userId, session.sessionId);
|
|
133
|
+
session.lastAccessedAt = new Date().toISOString();
|
|
134
|
+
yield client.store(key, session, EXPIRY_SECONDS);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function endSession(userId, sessionId) {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const client = yield redis.getSessionClient();
|
|
140
|
+
yield client.delete(makeSessionID(userId, sessionId));
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function getSession(userId, sessionId) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
if (!userId || !sessionId) {
|
|
146
|
+
throw new Error(`Invalid session details - ${userId} - ${sessionId}`);
|
|
147
|
+
}
|
|
148
|
+
const client = yield redis.getSessionClient();
|
|
149
|
+
const session = yield client.get(makeSessionID(userId, sessionId));
|
|
150
|
+
if (!session) {
|
|
151
|
+
throw new Error(`Session not found - ${userId} - ${sessionId}`);
|
|
152
|
+
}
|
|
153
|
+
return session;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/security/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isExternalTableID = isExternalTableID;
|
|
7
|
+
exports.isInternalTableID = isInternalTableID;
|
|
8
|
+
exports.getNativeSql = getNativeSql;
|
|
9
|
+
exports.isExternalTable = isExternalTable;
|
|
10
|
+
exports.buildExternalTableId = buildExternalTableId;
|
|
11
|
+
exports.encodeTableId = encodeTableId;
|
|
12
|
+
exports.encodeViewId = encodeViewId;
|
|
13
|
+
exports.breakExternalTableId = breakExternalTableId;
|
|
14
|
+
exports.generateRowIdField = generateRowIdField;
|
|
15
|
+
exports.isRowId = isRowId;
|
|
16
|
+
exports.convertRowId = convertRowId;
|
|
17
|
+
exports.breakRowIdField = breakRowIdField;
|
|
18
|
+
exports.isInvalidISODateString = isInvalidISODateString;
|
|
19
|
+
exports.isValidISODateString = isValidISODateString;
|
|
20
|
+
exports.isValidFilter = isValidFilter;
|
|
21
|
+
exports.isValidTime = isValidTime;
|
|
22
|
+
exports.sqlLog = sqlLog;
|
|
23
|
+
exports.validateManyToMany = validateManyToMany;
|
|
24
|
+
const types_1 = require("@budibase/types");
|
|
25
|
+
const constants_1 = require("../constants");
|
|
26
|
+
const db_1 = require("../db");
|
|
27
|
+
const environment_1 = __importDefault(require("../environment"));
|
|
28
|
+
const DOUBLE_SEPARATOR = `${db_1.SEPARATOR}${db_1.SEPARATOR}`;
|
|
29
|
+
const ROW_ID_REGEX = /^\[.*]$/g;
|
|
30
|
+
const ENCODED_SPACE = encodeURIComponent(" ");
|
|
31
|
+
const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}.\d{3}Z)?$/;
|
|
32
|
+
const TIME_REGEX = /^(?:\d{2}:)?(?:\d{2}:)(?:\d{2})$/;
|
|
33
|
+
function isExternalTableID(tableId) {
|
|
34
|
+
return tableId.startsWith(types_1.DocumentType.DATASOURCE + db_1.SEPARATOR);
|
|
35
|
+
}
|
|
36
|
+
function isInternalTableID(tableId) {
|
|
37
|
+
return !isExternalTableID(tableId);
|
|
38
|
+
}
|
|
39
|
+
function getNativeSql(query) {
|
|
40
|
+
let sql = query.toSQL();
|
|
41
|
+
if (Array.isArray(sql)) {
|
|
42
|
+
return sql;
|
|
43
|
+
}
|
|
44
|
+
let native;
|
|
45
|
+
if (sql.toNative) {
|
|
46
|
+
native = sql.toNative();
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
sql: (native === null || native === void 0 ? void 0 : native.sql) || sql.sql,
|
|
50
|
+
bindings: (native === null || native === void 0 ? void 0 : native.bindings) || sql.bindings,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function isExternalTable(table) {
|
|
54
|
+
if ((table === null || table === void 0 ? void 0 : table.sourceId) &&
|
|
55
|
+
table.sourceId.includes(types_1.DocumentType.DATASOURCE + db_1.SEPARATOR) &&
|
|
56
|
+
(table === null || table === void 0 ? void 0 : table.sourceId) !== constants_1.DEFAULT_BB_DATASOURCE_ID) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
else if ((table === null || table === void 0 ? void 0 : table.sourceType) === types_1.TableSourceType.EXTERNAL) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
else if ((table === null || table === void 0 ? void 0 : table._id) && isExternalTableID(table._id)) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
function buildExternalTableId(datasourceId, tableName) {
|
|
68
|
+
return `${datasourceId}${DOUBLE_SEPARATOR}${encodeURIComponent(tableName)}`;
|
|
69
|
+
}
|
|
70
|
+
function encodeTableId(tableId) {
|
|
71
|
+
if (isExternalTableID(tableId)) {
|
|
72
|
+
return encodeURIComponent(tableId);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return tableId;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function encodeViewId(viewId) {
|
|
79
|
+
return encodeURIComponent(viewId);
|
|
80
|
+
}
|
|
81
|
+
function breakExternalTableId(tableId) {
|
|
82
|
+
const parts = tableId.split(DOUBLE_SEPARATOR);
|
|
83
|
+
let datasourceId = parts.shift();
|
|
84
|
+
// if they need joined
|
|
85
|
+
let tableName = parts.join(DOUBLE_SEPARATOR);
|
|
86
|
+
// if contains encoded spaces, decode it
|
|
87
|
+
if (tableName.includes(ENCODED_SPACE)) {
|
|
88
|
+
tableName = decodeURIComponent(tableName);
|
|
89
|
+
}
|
|
90
|
+
if (!datasourceId || !tableName) {
|
|
91
|
+
throw new Error("Unable to get datasource/table name from table ID");
|
|
92
|
+
}
|
|
93
|
+
return { datasourceId, tableName };
|
|
94
|
+
}
|
|
95
|
+
function generateRowIdField(keyProps = []) {
|
|
96
|
+
if (!Array.isArray(keyProps)) {
|
|
97
|
+
keyProps = [keyProps];
|
|
98
|
+
}
|
|
99
|
+
for (let index in keyProps) {
|
|
100
|
+
if (keyProps[index] instanceof Buffer) {
|
|
101
|
+
keyProps[index] = keyProps[index].toString();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// this conserves order and types
|
|
105
|
+
// we have to swap the double quotes to single quotes for use in HBS statements
|
|
106
|
+
// when using the literal helper the double quotes can break things
|
|
107
|
+
return encodeURIComponent(JSON.stringify(keyProps).replace(/"/g, "'"));
|
|
108
|
+
}
|
|
109
|
+
function isRowId(field) {
|
|
110
|
+
return (Array.isArray(field) ||
|
|
111
|
+
(typeof field === "string" && field.match(ROW_ID_REGEX) != null));
|
|
112
|
+
}
|
|
113
|
+
function convertRowId(field) {
|
|
114
|
+
if (Array.isArray(field)) {
|
|
115
|
+
return field[0];
|
|
116
|
+
}
|
|
117
|
+
if (typeof field === "string" && field.match(ROW_ID_REGEX) != null) {
|
|
118
|
+
return field.substring(1, field.length - 1);
|
|
119
|
+
}
|
|
120
|
+
return field;
|
|
121
|
+
}
|
|
122
|
+
// should always return an array
|
|
123
|
+
function breakRowIdField(_id) {
|
|
124
|
+
if (!_id) {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
// have to replace on the way back as we swapped out the double quotes
|
|
128
|
+
// when encoding, but JSON can't handle the single quotes
|
|
129
|
+
const id = typeof _id === "string" ? _id : _id._id;
|
|
130
|
+
const decoded = decodeURIComponent(id).replace(/'/g, '"');
|
|
131
|
+
try {
|
|
132
|
+
const parsed = JSON.parse(decoded);
|
|
133
|
+
return Array.isArray(parsed) ? parsed : [parsed];
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
// wasn't json - likely was handlebars for a many to many
|
|
137
|
+
return [_id];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function isInvalidISODateString(str) {
|
|
141
|
+
const trimmedValue = str.trim();
|
|
142
|
+
if (!ISO_DATE_REGEX.test(trimmedValue)) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
let d = new Date(trimmedValue);
|
|
146
|
+
return isNaN(d.getTime());
|
|
147
|
+
}
|
|
148
|
+
function isValidISODateString(str) {
|
|
149
|
+
return ISO_DATE_REGEX.test(str.trim());
|
|
150
|
+
}
|
|
151
|
+
function isValidFilter(value) {
|
|
152
|
+
return value != null && value !== "";
|
|
153
|
+
}
|
|
154
|
+
function isValidTime(value) {
|
|
155
|
+
return TIME_REGEX.test(value);
|
|
156
|
+
}
|
|
157
|
+
function sqlLog(client, query, values) {
|
|
158
|
+
if (!environment_1.default.SQL_LOGGING_ENABLE) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
let string = `[SQL] [${client.toUpperCase()}] query="${query}"`;
|
|
162
|
+
if (values) {
|
|
163
|
+
string += ` values="${values.join(", ")}"`;
|
|
164
|
+
}
|
|
165
|
+
console.log(string);
|
|
166
|
+
}
|
|
167
|
+
function isValidManyToManyRelationship(relationship) {
|
|
168
|
+
return (!!relationship.through &&
|
|
169
|
+
!!relationship.fromPrimary &&
|
|
170
|
+
!!relationship.from &&
|
|
171
|
+
!!relationship.toPrimary &&
|
|
172
|
+
!!relationship.to);
|
|
173
|
+
}
|
|
174
|
+
function validateManyToMany(relationship) {
|
|
175
|
+
if (isValidManyToManyRelationship(relationship)) {
|
|
176
|
+
return relationship;
|
|
177
|
+
}
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sql/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTenantDB = getTenantDB;
|
|
4
|
+
const db_1 = require("../db/db");
|
|
5
|
+
const context_1 = require("../context");
|
|
6
|
+
function getTenantDB(tenantId) {
|
|
7
|
+
return (0, db_1.getDB)((0, context_1.getGlobalDBName)(tenantId));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/tenancy/db.ts"],"names":[],"mappings":";;AAGA,kCAEC;AALD,iCAAgC;AAChC,wCAA4C;AAE5C,SAAgB,WAAW,CAAC,QAAgB;IAC1C,OAAO,IAAA,UAAK,EAAC,IAAA,yBAAe,EAAC,QAAQ,CAAC,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./db"), exports);
|
|
18
|
+
__exportStar(require("./tenancy"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tenancy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAoB;AACpB,4CAAyB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTenantIDFromCtx = exports.isUserInAppTenant = void 0;
|
|
4
|
+
exports.addTenantToUrl = addTenantToUrl;
|
|
5
|
+
const context_1 = require("../context");
|
|
6
|
+
const types_1 = require("@budibase/types");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
function addTenantToUrl(url) {
|
|
9
|
+
const tenantId = (0, context_1.getTenantId)();
|
|
10
|
+
if ((0, context_1.isMultiTenant)()) {
|
|
11
|
+
const char = url.indexOf("?") === -1 ? "?" : "&";
|
|
12
|
+
url += `${char}tenantId=${tenantId}`;
|
|
13
|
+
}
|
|
14
|
+
return url;
|
|
15
|
+
}
|
|
16
|
+
const isUserInAppTenant = (appId, user) => {
|
|
17
|
+
let userTenantId;
|
|
18
|
+
if (user) {
|
|
19
|
+
userTenantId = user.tenantId || context_1.DEFAULT_TENANT_ID;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
userTenantId = (0, context_1.getTenantId)();
|
|
23
|
+
}
|
|
24
|
+
const tenantId = (0, context_1.getTenantIDFromAppID)(appId) || context_1.DEFAULT_TENANT_ID;
|
|
25
|
+
return tenantId === userTenantId;
|
|
26
|
+
};
|
|
27
|
+
exports.isUserInAppTenant = isUserInAppTenant;
|
|
28
|
+
const ALL_STRATEGIES = Object.values(types_1.TenantResolutionStrategy);
|
|
29
|
+
const getTenantIDFromCtx = (ctx, opts) => {
|
|
30
|
+
var _a;
|
|
31
|
+
// exit early if not multi-tenant
|
|
32
|
+
if (!(0, context_1.isMultiTenant)()) {
|
|
33
|
+
return context_1.DEFAULT_TENANT_ID;
|
|
34
|
+
}
|
|
35
|
+
// opt defaults
|
|
36
|
+
if (opts.allowNoTenant === undefined) {
|
|
37
|
+
opts.allowNoTenant = false;
|
|
38
|
+
}
|
|
39
|
+
if (!opts.includeStrategies) {
|
|
40
|
+
opts.includeStrategies = ALL_STRATEGIES;
|
|
41
|
+
}
|
|
42
|
+
if (!opts.excludeStrategies) {
|
|
43
|
+
opts.excludeStrategies = [];
|
|
44
|
+
}
|
|
45
|
+
const isAllowed = (strategy) => {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
// excluded takes precedence
|
|
48
|
+
if ((_a = opts.excludeStrategies) === null || _a === void 0 ? void 0 : _a.includes(strategy)) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if ((_b = opts.includeStrategies) === null || _b === void 0 ? void 0 : _b.includes(strategy)) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
// always use user first
|
|
56
|
+
if (isAllowed(types_1.TenantResolutionStrategy.USER)) {
|
|
57
|
+
const userTenantId = (_a = ctx.user) === null || _a === void 0 ? void 0 : _a.tenantId;
|
|
58
|
+
if (userTenantId) {
|
|
59
|
+
return userTenantId;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// header
|
|
63
|
+
if (isAllowed(types_1.TenantResolutionStrategy.HEADER)) {
|
|
64
|
+
const headerTenantId = ctx.request.headers[constants_1.Header.TENANT_ID];
|
|
65
|
+
if (headerTenantId) {
|
|
66
|
+
return headerTenantId;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// query param
|
|
70
|
+
if (isAllowed(types_1.TenantResolutionStrategy.QUERY)) {
|
|
71
|
+
const queryTenantId = ctx.request.query.tenantId;
|
|
72
|
+
if (queryTenantId) {
|
|
73
|
+
return queryTenantId;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// subdomain
|
|
77
|
+
if (isAllowed(types_1.TenantResolutionStrategy.SUBDOMAIN)) {
|
|
78
|
+
// e.g. budibase.app or local.com:10000
|
|
79
|
+
let platformHost;
|
|
80
|
+
try {
|
|
81
|
+
platformHost = new URL((0, context_1.getPlatformURL)()).host.split(":")[0];
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
// if invalid URL, just don't try to process subdomain
|
|
85
|
+
if (err.code !== "ERR_INVALID_URL") {
|
|
86
|
+
throw err;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// e.g. tenant.budibase.app or tenant.local.com
|
|
90
|
+
const requestHost = ctx.host;
|
|
91
|
+
// parse the tenant id from the difference
|
|
92
|
+
if (platformHost && requestHost.includes(platformHost)) {
|
|
93
|
+
const tenantId = requestHost.substring(0, requestHost.indexOf(`.${platformHost}`));
|
|
94
|
+
if (tenantId) {
|
|
95
|
+
return tenantId;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// path
|
|
100
|
+
if (isAllowed(types_1.TenantResolutionStrategy.PATH)) {
|
|
101
|
+
// params - have to parse manually due to koa-router not run yet
|
|
102
|
+
const match = ctx.matched.find((m) => !!m.paramNames.find((p) => p.name === "tenantId"));
|
|
103
|
+
// get the raw path url - without any query params
|
|
104
|
+
const ctxUrl = ctx.originalUrl;
|
|
105
|
+
let url;
|
|
106
|
+
if (ctxUrl.includes("?")) {
|
|
107
|
+
url = ctxUrl.split("?")[0];
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
url = ctxUrl;
|
|
111
|
+
}
|
|
112
|
+
if (match) {
|
|
113
|
+
const params = match.params(url, match.captures(url), {});
|
|
114
|
+
if (params.tenantId) {
|
|
115
|
+
return params.tenantId;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (!opts.allowNoTenant) {
|
|
120
|
+
ctx.throw(403, "Tenant id not set");
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
};
|
|
124
|
+
exports.getTenantIDFromCtx = getTenantIDFromCtx;
|
|
125
|
+
//# sourceMappingURL=tenancy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenancy.js","sourceRoot":"","sources":["../../../src/tenancy/tenancy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./timers"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/timers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.set = set;
|
|
4
|
+
exports.clear = clear;
|
|
5
|
+
exports.cleanup = cleanup;
|
|
6
|
+
let intervals = [];
|
|
7
|
+
function set(callback, period) {
|
|
8
|
+
const interval = setInterval(callback, period);
|
|
9
|
+
intervals.push(interval);
|
|
10
|
+
return interval;
|
|
11
|
+
}
|
|
12
|
+
function clear(interval) {
|
|
13
|
+
const idx = intervals.indexOf(interval);
|
|
14
|
+
if (idx !== -1) {
|
|
15
|
+
intervals.splice(idx, 1);
|
|
16
|
+
}
|
|
17
|
+
clearInterval(interval);
|
|
18
|
+
}
|
|
19
|
+
function cleanup() {
|
|
20
|
+
for (let interval of intervals) {
|
|
21
|
+
clearInterval(interval);
|
|
22
|
+
}
|
|
23
|
+
intervals = [];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=timers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/timers/timers.ts"],"names":[],"mappings":";;AAEA,kBAIC;AAED,sBAMC;AAED,0BAKC;AArBD,IAAI,SAAS,GAAqB,EAAE,CAAA;AAEpC,SAAgB,GAAG,CAAC,QAAmB,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAgB,KAAK,CAAC,QAAwB;IAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1B,CAAC;IACD,aAAa,CAAC,QAAQ,CAAC,CAAA;AACzB,CAAC;AAED,SAAgB,OAAO;IACrB,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC;IACD,SAAS,GAAG,EAAE,CAAA;AAChB,CAAC"}
|