@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
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { generator, structures } from "../../../tests"
|
|
2
|
-
import { DBTestConfiguration, testEnv } from "../../../tests/extra"
|
|
3
|
-
import { ConfigType } from "@budibase/types"
|
|
4
|
-
import env from "../../environment"
|
|
5
|
-
import * as configs from "../configs"
|
|
6
|
-
|
|
7
|
-
const DEFAULT_URL = "http://localhost:10000"
|
|
8
|
-
const ENV_URL = "http://env.com"
|
|
9
|
-
|
|
10
|
-
describe("configs", () => {
|
|
11
|
-
const config = new DBTestConfiguration()
|
|
12
|
-
|
|
13
|
-
const setDbPlatformUrl = async (dbUrl: string) => {
|
|
14
|
-
const settingsConfig = {
|
|
15
|
-
_id: configs.generateConfigID(ConfigType.SETTINGS),
|
|
16
|
-
type: ConfigType.SETTINGS,
|
|
17
|
-
config: {
|
|
18
|
-
platformUrl: dbUrl,
|
|
19
|
-
},
|
|
20
|
-
}
|
|
21
|
-
await configs.save(settingsConfig)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
beforeEach(async () => {
|
|
25
|
-
config.newTenant()
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
describe("getPlatformUrl", () => {
|
|
29
|
-
describe("self host", () => {
|
|
30
|
-
beforeEach(async () => {
|
|
31
|
-
testEnv.selfHosted()
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
it("gets the default url", async () => {
|
|
35
|
-
await config.doInTenant(async () => {
|
|
36
|
-
const url = await configs.getPlatformUrl()
|
|
37
|
-
expect(url).toBe(DEFAULT_URL)
|
|
38
|
-
})
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
it("gets the platform url from the environment", async () => {
|
|
42
|
-
await config.doInTenant(async () => {
|
|
43
|
-
env._set("PLATFORM_URL", ENV_URL)
|
|
44
|
-
const url = await configs.getPlatformUrl()
|
|
45
|
-
expect(url).toBe(ENV_URL)
|
|
46
|
-
})
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
it("gets the platform url from the database", async () => {
|
|
50
|
-
await config.doInTenant(async () => {
|
|
51
|
-
const dbUrl = generator.url()
|
|
52
|
-
await setDbPlatformUrl(dbUrl)
|
|
53
|
-
const url = await configs.getPlatformUrl()
|
|
54
|
-
expect(url).toBe(dbUrl)
|
|
55
|
-
})
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
describe("cloud", () => {
|
|
60
|
-
function getTenantAwareUrl() {
|
|
61
|
-
return `http://${config.tenantId}.env.com`
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
beforeEach(async () => {
|
|
65
|
-
testEnv.cloudHosted()
|
|
66
|
-
testEnv.multiTenant()
|
|
67
|
-
|
|
68
|
-
env._set("PLATFORM_URL", ENV_URL)
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
it("gets the platform url from the environment without tenancy", async () => {
|
|
72
|
-
await config.doInTenant(async () => {
|
|
73
|
-
const url = await configs.getPlatformUrl({ tenantAware: false })
|
|
74
|
-
expect(url).toBe(ENV_URL)
|
|
75
|
-
})
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
it("gets the platform url from the environment with tenancy", async () => {
|
|
79
|
-
await config.doInTenant(async () => {
|
|
80
|
-
const url = await configs.getPlatformUrl()
|
|
81
|
-
expect(url).toBe(getTenantAwareUrl())
|
|
82
|
-
})
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
it("never gets the platform url from the database", async () => {
|
|
86
|
-
await config.doInTenant(async () => {
|
|
87
|
-
await setDbPlatformUrl(generator.url())
|
|
88
|
-
const url = await configs.getPlatformUrl()
|
|
89
|
-
expect(url).toBe(getTenantAwareUrl())
|
|
90
|
-
})
|
|
91
|
-
})
|
|
92
|
-
})
|
|
93
|
-
})
|
|
94
|
-
|
|
95
|
-
describe("getSettingsConfig", () => {
|
|
96
|
-
beforeAll(async () => {
|
|
97
|
-
testEnv.selfHosted()
|
|
98
|
-
env._set("PLATFORM_URL", "")
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
it("returns the platform url with an existing config", async () => {
|
|
102
|
-
await config.doInTenant(async () => {
|
|
103
|
-
const dbUrl = generator.url()
|
|
104
|
-
await setDbPlatformUrl(dbUrl)
|
|
105
|
-
const config = await configs.getSettingsConfig()
|
|
106
|
-
expect(config.platformUrl).toBe(dbUrl)
|
|
107
|
-
})
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
it("returns the platform url without an existing config", async () => {
|
|
111
|
-
await config.doInTenant(async () => {
|
|
112
|
-
const config = await configs.getSettingsConfig()
|
|
113
|
-
expect(config.platformUrl).toBe(DEFAULT_URL)
|
|
114
|
-
})
|
|
115
|
-
})
|
|
116
|
-
})
|
|
117
|
-
|
|
118
|
-
describe("getGoogleDatasourceConfig", () => {
|
|
119
|
-
function setEnvVars() {
|
|
120
|
-
env.GOOGLE_CLIENT_SECRET = "test"
|
|
121
|
-
env.GOOGLE_CLIENT_ID = "test"
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function unsetEnvVars() {
|
|
125
|
-
env.GOOGLE_CLIENT_SECRET = undefined
|
|
126
|
-
env.GOOGLE_CLIENT_ID = undefined
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
describe("cloud", () => {
|
|
130
|
-
beforeEach(() => {
|
|
131
|
-
testEnv.cloudHosted()
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
it("returns from env vars", async () => {
|
|
135
|
-
await config.doInTenant(async () => {
|
|
136
|
-
setEnvVars()
|
|
137
|
-
const config = await configs.getGoogleDatasourceConfig()
|
|
138
|
-
unsetEnvVars()
|
|
139
|
-
|
|
140
|
-
expect(config).toEqual({
|
|
141
|
-
activated: true,
|
|
142
|
-
clientID: "test",
|
|
143
|
-
clientSecret: "test",
|
|
144
|
-
})
|
|
145
|
-
})
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
it("returns undefined when no env vars are configured", async () => {
|
|
149
|
-
await config.doInTenant(async () => {
|
|
150
|
-
const config = await configs.getGoogleDatasourceConfig()
|
|
151
|
-
expect(config).toBeUndefined()
|
|
152
|
-
})
|
|
153
|
-
})
|
|
154
|
-
})
|
|
155
|
-
|
|
156
|
-
describe("self host", () => {
|
|
157
|
-
beforeEach(() => {
|
|
158
|
-
testEnv.selfHosted()
|
|
159
|
-
})
|
|
160
|
-
|
|
161
|
-
it("returns from config", async () => {
|
|
162
|
-
await config.doInTenant(async () => {
|
|
163
|
-
const googleDoc = structures.sso.googleConfigDoc()
|
|
164
|
-
await configs.save(googleDoc)
|
|
165
|
-
const config = await configs.getGoogleDatasourceConfig()
|
|
166
|
-
expect(config).toEqual(googleDoc.config)
|
|
167
|
-
})
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
it("falls back to env vars when config is disabled", async () => {
|
|
171
|
-
await config.doInTenant(async () => {
|
|
172
|
-
setEnvVars()
|
|
173
|
-
const config = await configs.getGoogleDatasourceConfig()
|
|
174
|
-
unsetEnvVars()
|
|
175
|
-
expect(config).toEqual({
|
|
176
|
-
activated: true,
|
|
177
|
-
clientID: "test",
|
|
178
|
-
clientSecret: "test",
|
|
179
|
-
})
|
|
180
|
-
})
|
|
181
|
-
})
|
|
182
|
-
})
|
|
183
|
-
})
|
|
184
|
-
})
|
package/src/constants/db.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { prefixed, DocumentType } from "@budibase/types"
|
|
2
|
-
export { SEPARATOR, UNICODE_MAX, DocumentType } from "@budibase/types"
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Can be used to create a few different forms of querying a view.
|
|
6
|
-
*/
|
|
7
|
-
export enum AutomationViewMode {
|
|
8
|
-
ALL = "all",
|
|
9
|
-
AUTOMATION = "automation",
|
|
10
|
-
STATUS = "status",
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export enum ViewName {
|
|
14
|
-
USER_BY_APP = "by_app",
|
|
15
|
-
USER_BY_EMAIL = "by_email2",
|
|
16
|
-
BY_API_KEY = "by_api_key",
|
|
17
|
-
LINK = "by_link",
|
|
18
|
-
ROUTING = "screen_routes",
|
|
19
|
-
AUTOMATION_LOGS = "automation_logs",
|
|
20
|
-
ACCOUNT_BY_EMAIL = "account_by_email",
|
|
21
|
-
PLATFORM_USERS_LOWERCASE = "platform_users_lowercase",
|
|
22
|
-
USER_BY_GROUP = "user_by_group",
|
|
23
|
-
APP_BACKUP_BY_TRIGGER = "by_trigger",
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export const DeprecatedViews = {
|
|
27
|
-
[ViewName.USER_BY_EMAIL]: [
|
|
28
|
-
// removed due to inaccuracy in view doc filter logic
|
|
29
|
-
"by_email",
|
|
30
|
-
],
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export enum InternalTable {
|
|
34
|
-
USER_METADATA = "ta_users",
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export const StaticDatabases = {
|
|
38
|
-
GLOBAL: {
|
|
39
|
-
name: "global-db",
|
|
40
|
-
docs: {
|
|
41
|
-
apiKeys: "apikeys",
|
|
42
|
-
usageQuota: "usage_quota",
|
|
43
|
-
licenseInfo: "license_info",
|
|
44
|
-
environmentVariables: "environmentvariables",
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
// contains information about tenancy and so on
|
|
48
|
-
PLATFORM_INFO: {
|
|
49
|
-
name: "global-info",
|
|
50
|
-
docs: {
|
|
51
|
-
tenants: "tenants",
|
|
52
|
-
install: "install",
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
AUDIT_LOGS: {
|
|
56
|
-
name: "audit-logs",
|
|
57
|
-
},
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export const APP_PREFIX = prefixed(DocumentType.APP)
|
|
61
|
-
export const APP_DEV = prefixed(DocumentType.APP_DEV)
|
|
62
|
-
export const APP_DEV_PREFIX = APP_DEV
|
|
63
|
-
export const BUDIBASE_DATASOURCE_TYPE = "budibase"
|
package/src/constants/index.ts
DELETED
package/src/constants/misc.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export enum UserStatus {
|
|
2
|
-
ACTIVE = "active",
|
|
3
|
-
INACTIVE = "inactive",
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export enum Cookie {
|
|
7
|
-
Auth = "budibase:auth",
|
|
8
|
-
Init = "budibase:init",
|
|
9
|
-
ACCOUNT_RETURN_URL = "budibase:account:returnurl",
|
|
10
|
-
DatasourceAuth = "budibase:datasourceauth",
|
|
11
|
-
OIDC_CONFIG = "budibase:oidc:config",
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export enum Header {
|
|
15
|
-
API_KEY = "x-budibase-api-key",
|
|
16
|
-
LICENSE_KEY = "x-budibase-license-key",
|
|
17
|
-
API_VER = "x-budibase-api-version",
|
|
18
|
-
APP_ID = "x-budibase-app-id",
|
|
19
|
-
SESSION_ID = "x-budibase-session-id",
|
|
20
|
-
TYPE = "x-budibase-type",
|
|
21
|
-
PREVIEW_ROLE = "x-budibase-role",
|
|
22
|
-
TENANT_ID = "x-budibase-tenant-id",
|
|
23
|
-
VERIFICATION_CODE = "x-budibase-verification-code",
|
|
24
|
-
RETURN_VERIFICATION_CODE = "x-budibase-return-verification-code",
|
|
25
|
-
TOKEN = "x-budibase-token",
|
|
26
|
-
CSRF_TOKEN = "x-csrf-token",
|
|
27
|
-
CORRELATION_ID = "x-budibase-correlation-id",
|
|
28
|
-
AUTHORIZATION = "authorization",
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export enum GlobalRole {
|
|
32
|
-
OWNER = "owner",
|
|
33
|
-
ADMIN = "admin",
|
|
34
|
-
BUILDER = "builder",
|
|
35
|
-
WORKSPACE_MANAGER = "workspace_manager",
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export enum Config {
|
|
39
|
-
SETTINGS = "settings",
|
|
40
|
-
ACCOUNT = "account",
|
|
41
|
-
SMTP = "smtp",
|
|
42
|
-
GOOGLE = "google",
|
|
43
|
-
OIDC = "oidc",
|
|
44
|
-
OIDC_LOGOS = "logos_oidc",
|
|
45
|
-
SCIM = "scim",
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export const MIN_VALID_DATE = new Date(-2147483647000)
|
|
49
|
-
export const MAX_VALID_DATE = new Date(2147483647000)
|
|
50
|
-
export const DEFAULT_TENANT_ID = "default"
|
package/src/context/Context.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from "async_hooks"
|
|
2
|
-
import { ContextMap } from "./types"
|
|
3
|
-
|
|
4
|
-
export default class Context {
|
|
5
|
-
static storage = new AsyncLocalStorage<ContextMap>()
|
|
6
|
-
|
|
7
|
-
static run(context: ContextMap, func: any) {
|
|
8
|
-
return Context.storage.run(context, () => func())
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
static get(): ContextMap {
|
|
12
|
-
return Context.storage.getStore() as ContextMap
|
|
13
|
-
}
|
|
14
|
-
}
|
package/src/context/identity.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IdentityContext,
|
|
3
|
-
IdentityType,
|
|
4
|
-
User,
|
|
5
|
-
isCloudAccount,
|
|
6
|
-
Account,
|
|
7
|
-
AccountUserContext,
|
|
8
|
-
UserContext,
|
|
9
|
-
Ctx,
|
|
10
|
-
} from "@budibase/types"
|
|
11
|
-
import * as context from "."
|
|
12
|
-
|
|
13
|
-
export function getIdentity(): IdentityContext | undefined {
|
|
14
|
-
return context.getIdentity()
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function doInIdentityContext(identity: IdentityContext, task: any) {
|
|
18
|
-
return context.doInIdentityContext(identity, task)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// used in server/worker
|
|
22
|
-
export function doInUserContext(user: User, ctx: Ctx, task: any) {
|
|
23
|
-
const userContext: UserContext = {
|
|
24
|
-
...user,
|
|
25
|
-
_id: user._id as string,
|
|
26
|
-
type: IdentityType.USER,
|
|
27
|
-
hostInfo: {
|
|
28
|
-
ipAddress: ctx.request.ip,
|
|
29
|
-
// filled in by koa-useragent package
|
|
30
|
-
userAgent: ctx.userAgent._agent.source,
|
|
31
|
-
},
|
|
32
|
-
}
|
|
33
|
-
return doInIdentityContext(userContext, task)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// used in account portal
|
|
37
|
-
export function doInAccountContext(account: Account, task: any) {
|
|
38
|
-
const _id = getAccountUserId(account)
|
|
39
|
-
const tenantId = account.tenantId
|
|
40
|
-
const accountContext: AccountUserContext = {
|
|
41
|
-
_id,
|
|
42
|
-
type: IdentityType.USER,
|
|
43
|
-
tenantId,
|
|
44
|
-
account,
|
|
45
|
-
}
|
|
46
|
-
return doInIdentityContext(accountContext, task)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function getAccountUserId(account: Account) {
|
|
50
|
-
let userId: string
|
|
51
|
-
if (isCloudAccount(account)) {
|
|
52
|
-
userId = account.budibaseUserId
|
|
53
|
-
} else {
|
|
54
|
-
// use account id as user id for self-hosting
|
|
55
|
-
userId = account.accountId
|
|
56
|
-
}
|
|
57
|
-
return userId
|
|
58
|
-
}
|
package/src/context/index.ts
DELETED
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
// some test cases call functions directly, need to
|
|
2
|
-
// store an app ID to pretend there is a context
|
|
3
|
-
import env from "../environment"
|
|
4
|
-
import Context from "./Context"
|
|
5
|
-
import * as conversions from "../docIds/conversions"
|
|
6
|
-
import { getDB } from "../db/db"
|
|
7
|
-
import {
|
|
8
|
-
DocumentType,
|
|
9
|
-
SEPARATOR,
|
|
10
|
-
StaticDatabases,
|
|
11
|
-
DEFAULT_TENANT_ID,
|
|
12
|
-
} from "../constants"
|
|
13
|
-
import { Database, IdentityContext } from "@budibase/types"
|
|
14
|
-
import { ContextMap } from "./types"
|
|
15
|
-
|
|
16
|
-
let TEST_APP_ID: string | null = null
|
|
17
|
-
|
|
18
|
-
export function getGlobalDBName(tenantId?: string) {
|
|
19
|
-
// tenant ID can be set externally, for example user API where
|
|
20
|
-
// new tenants are being created, this may be the case
|
|
21
|
-
if (!tenantId) {
|
|
22
|
-
tenantId = getTenantId()
|
|
23
|
-
}
|
|
24
|
-
return baseGlobalDBName(tenantId)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function getAuditLogDBName(tenantId?: string) {
|
|
28
|
-
if (!tenantId) {
|
|
29
|
-
tenantId = getTenantId()
|
|
30
|
-
}
|
|
31
|
-
if (tenantId === DEFAULT_TENANT_ID) {
|
|
32
|
-
return StaticDatabases.AUDIT_LOGS.name
|
|
33
|
-
} else {
|
|
34
|
-
return `${tenantId}${SEPARATOR}${StaticDatabases.AUDIT_LOGS.name}`
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export function baseGlobalDBName(tenantId: string | undefined | null) {
|
|
39
|
-
if (!tenantId || tenantId === DEFAULT_TENANT_ID) {
|
|
40
|
-
return StaticDatabases.GLOBAL.name
|
|
41
|
-
} else {
|
|
42
|
-
return `${tenantId}${SEPARATOR}${StaticDatabases.GLOBAL.name}`
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export function getPlatformURL() {
|
|
47
|
-
return env.PLATFORM_URL
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function isMultiTenant() {
|
|
51
|
-
return !!env.MULTI_TENANCY
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export function isTenantIdSet() {
|
|
55
|
-
const context = Context.get()
|
|
56
|
-
return !!context?.tenantId
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export function isTenancyEnabled() {
|
|
60
|
-
return env.MULTI_TENANCY
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Given an app ID this will attempt to retrieve the tenant ID from it.
|
|
65
|
-
* @return {null|string} The tenant ID found within the app ID.
|
|
66
|
-
*/
|
|
67
|
-
export function getTenantIDFromAppID(appId: string) {
|
|
68
|
-
if (!appId) {
|
|
69
|
-
return undefined
|
|
70
|
-
}
|
|
71
|
-
if (!isMultiTenant()) {
|
|
72
|
-
return DEFAULT_TENANT_ID
|
|
73
|
-
}
|
|
74
|
-
const split = appId.split(SEPARATOR)
|
|
75
|
-
const hasDev = split[1] === DocumentType.DEV
|
|
76
|
-
if ((hasDev && split.length === 3) || (!hasDev && split.length === 2)) {
|
|
77
|
-
return undefined
|
|
78
|
-
}
|
|
79
|
-
if (hasDev) {
|
|
80
|
-
return split[2]
|
|
81
|
-
} else {
|
|
82
|
-
return split[1]
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function updateContext(updates: ContextMap): ContextMap {
|
|
87
|
-
let context: ContextMap
|
|
88
|
-
try {
|
|
89
|
-
context = Context.get()
|
|
90
|
-
} catch (err) {
|
|
91
|
-
// no context, start empty
|
|
92
|
-
context = {}
|
|
93
|
-
}
|
|
94
|
-
context = {
|
|
95
|
-
...context,
|
|
96
|
-
...updates,
|
|
97
|
-
}
|
|
98
|
-
return context
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
async function newContext(updates: ContextMap, task: any) {
|
|
102
|
-
// see if there already is a context setup
|
|
103
|
-
let context: ContextMap = updateContext(updates)
|
|
104
|
-
return Context.run(context, task)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export async function doInAutomationContext(params: {
|
|
108
|
-
appId: string
|
|
109
|
-
automationId: string
|
|
110
|
-
task: any
|
|
111
|
-
}): Promise<any> {
|
|
112
|
-
const tenantId = getTenantIDFromAppID(params.appId)
|
|
113
|
-
return newContext(
|
|
114
|
-
{
|
|
115
|
-
tenantId,
|
|
116
|
-
appId: params.appId,
|
|
117
|
-
automationId: params.automationId,
|
|
118
|
-
},
|
|
119
|
-
params.task
|
|
120
|
-
)
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export async function doInContext(appId: string, task: any): Promise<any> {
|
|
124
|
-
const tenantId = getTenantIDFromAppID(appId)
|
|
125
|
-
return newContext(
|
|
126
|
-
{
|
|
127
|
-
tenantId,
|
|
128
|
-
appId,
|
|
129
|
-
},
|
|
130
|
-
task
|
|
131
|
-
)
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export async function doInTenant<T>(
|
|
135
|
-
tenantId: string | null,
|
|
136
|
-
task: () => T
|
|
137
|
-
): Promise<T> {
|
|
138
|
-
// make sure default always selected in single tenancy
|
|
139
|
-
if (!env.MULTI_TENANCY) {
|
|
140
|
-
tenantId = tenantId || DEFAULT_TENANT_ID
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const updates = tenantId ? { tenantId } : {}
|
|
144
|
-
return newContext(updates, task)
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export async function doInAppContext(
|
|
148
|
-
appId: string | null,
|
|
149
|
-
task: any
|
|
150
|
-
): Promise<any> {
|
|
151
|
-
if (!appId && !env.isTest()) {
|
|
152
|
-
throw new Error("appId is required")
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
let updates: ContextMap
|
|
156
|
-
if (!appId) {
|
|
157
|
-
updates = { appId: "" }
|
|
158
|
-
} else {
|
|
159
|
-
const tenantId = getTenantIDFromAppID(appId)
|
|
160
|
-
updates = { appId }
|
|
161
|
-
if (tenantId) {
|
|
162
|
-
updates.tenantId = tenantId
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return newContext(updates, task)
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export async function doInIdentityContext(
|
|
169
|
-
identity: IdentityContext,
|
|
170
|
-
task: any
|
|
171
|
-
): Promise<any> {
|
|
172
|
-
if (!identity) {
|
|
173
|
-
throw new Error("identity is required")
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
const context: ContextMap = {
|
|
177
|
-
identity,
|
|
178
|
-
}
|
|
179
|
-
if (identity.tenantId) {
|
|
180
|
-
context.tenantId = identity.tenantId
|
|
181
|
-
}
|
|
182
|
-
return newContext(context, task)
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
export function getIdentity(): IdentityContext | undefined {
|
|
186
|
-
try {
|
|
187
|
-
const context = Context.get()
|
|
188
|
-
return context?.identity
|
|
189
|
-
} catch (e) {
|
|
190
|
-
// do nothing - identity is not in context
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
export function getTenantId(): string {
|
|
195
|
-
if (!isMultiTenant()) {
|
|
196
|
-
return DEFAULT_TENANT_ID
|
|
197
|
-
}
|
|
198
|
-
const context = Context.get()
|
|
199
|
-
const tenantId = context?.tenantId
|
|
200
|
-
if (!tenantId) {
|
|
201
|
-
throw new Error("Tenant id not found")
|
|
202
|
-
}
|
|
203
|
-
return tenantId
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
export function getAutomationId(): string | undefined {
|
|
207
|
-
const context = Context.get()
|
|
208
|
-
return context?.automationId
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
export function getAppId(): string | undefined {
|
|
212
|
-
const context = Context.get()
|
|
213
|
-
const foundId = context?.appId
|
|
214
|
-
if (!foundId && env.isTest() && TEST_APP_ID) {
|
|
215
|
-
return TEST_APP_ID
|
|
216
|
-
} else {
|
|
217
|
-
return foundId
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
export const getProdAppId = () => {
|
|
222
|
-
const appId = getAppId()
|
|
223
|
-
if (!appId) {
|
|
224
|
-
throw new Error("Could not get appId")
|
|
225
|
-
}
|
|
226
|
-
return conversions.getProdAppID(appId)
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
export function doInEnvironmentContext(
|
|
230
|
-
values: Record<string, string>,
|
|
231
|
-
task: any
|
|
232
|
-
) {
|
|
233
|
-
if (!values) {
|
|
234
|
-
throw new Error("Must supply environment variables.")
|
|
235
|
-
}
|
|
236
|
-
const updates = {
|
|
237
|
-
environmentVariables: values,
|
|
238
|
-
}
|
|
239
|
-
return newContext(updates, task)
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
export function doInScimContext(task: any) {
|
|
243
|
-
const updates: ContextMap = {
|
|
244
|
-
isScim: true,
|
|
245
|
-
}
|
|
246
|
-
return newContext(updates, task)
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
export function getEnvironmentVariables() {
|
|
250
|
-
const context = Context.get()
|
|
251
|
-
if (!context.environmentVariables) {
|
|
252
|
-
return null
|
|
253
|
-
} else {
|
|
254
|
-
return context.environmentVariables
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
export function getGlobalDB(): Database {
|
|
259
|
-
const context = Context.get()
|
|
260
|
-
if (!context || (env.MULTI_TENANCY && !context.tenantId)) {
|
|
261
|
-
throw new Error("Global DB not found")
|
|
262
|
-
}
|
|
263
|
-
return getDB(baseGlobalDBName(context?.tenantId))
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
export function getAuditLogsDB(): Database {
|
|
267
|
-
if (!getTenantId()) {
|
|
268
|
-
throw new Error("No tenant ID found - cannot open audit log DB")
|
|
269
|
-
}
|
|
270
|
-
return getDB(getAuditLogDBName())
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
/**
|
|
274
|
-
* Gets the app database based on whatever the request
|
|
275
|
-
* contained, dev or prod.
|
|
276
|
-
*/
|
|
277
|
-
export function getAppDB(opts?: any): Database {
|
|
278
|
-
const appId = getAppId()
|
|
279
|
-
return getDB(appId, opts)
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* This specifically gets the prod app ID, if the request
|
|
284
|
-
* contained a development app ID, this will get the prod one.
|
|
285
|
-
*/
|
|
286
|
-
export function getProdAppDB(opts?: any): Database {
|
|
287
|
-
const appId = getAppId()
|
|
288
|
-
if (!appId) {
|
|
289
|
-
throw new Error("Unable to retrieve prod DB - no app ID.")
|
|
290
|
-
}
|
|
291
|
-
return getDB(conversions.getProdAppID(appId), opts)
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* This specifically gets the dev app ID, if the request
|
|
296
|
-
* contained a prod app ID, this will get the dev one.
|
|
297
|
-
*/
|
|
298
|
-
export function getDevAppDB(opts?: any): Database {
|
|
299
|
-
const appId = getAppId()
|
|
300
|
-
if (!appId) {
|
|
301
|
-
throw new Error("Unable to retrieve dev DB - no app ID.")
|
|
302
|
-
}
|
|
303
|
-
return getDB(conversions.getDevelopmentAppID(appId), opts)
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
export function isScim(): boolean {
|
|
307
|
-
const context = Context.get()
|
|
308
|
-
const scimCall = context?.isScim
|
|
309
|
-
return !!scimCall
|
|
310
|
-
}
|