@budibase/types 2.5.9 → 2.5.10-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/cjs/api/account/accounts.d.ts +11 -0
- package/dist/cjs/api/account/accounts.js +3 -0
- package/dist/cjs/api/account/accounts.js.map +1 -0
- package/dist/cjs/api/account/index.d.ts +1 -0
- package/dist/cjs/api/account/index.js +1 -0
- package/dist/cjs/api/account/index.js.map +1 -1
- package/dist/cjs/api/account/license.d.ts +15 -2
- package/dist/cjs/api/web/app/datasource.d.ts +15 -0
- package/dist/cjs/api/web/app/datasource.js +3 -0
- package/dist/cjs/api/web/app/datasource.js.map +1 -0
- package/dist/cjs/api/web/app/index.d.ts +1 -0
- package/dist/cjs/api/web/app/index.js +1 -0
- package/dist/cjs/api/web/app/index.js.map +1 -1
- package/dist/cjs/api/web/global/index.d.ts +1 -0
- package/dist/cjs/api/web/global/index.js +1 -0
- package/dist/cjs/api/web/global/index.js.map +1 -1
- package/dist/cjs/api/web/global/scim/groups.d.ts +27 -0
- package/dist/cjs/api/web/global/scim/groups.js +3 -0
- package/dist/cjs/api/web/global/scim/groups.js.map +1 -0
- package/dist/cjs/api/web/global/scim/index.d.ts +3 -0
- package/dist/cjs/api/web/global/scim/index.js +20 -0
- package/dist/cjs/api/web/global/scim/index.js.map +1 -0
- package/dist/cjs/api/web/global/scim/shared.d.ts +12 -0
- package/dist/cjs/api/web/global/scim/shared.js +3 -0
- package/dist/cjs/api/web/global/scim/shared.js.map +1 -0
- package/dist/cjs/api/web/global/scim/users.d.ts +48 -0
- package/dist/cjs/api/web/global/scim/users.js +3 -0
- package/dist/cjs/api/web/global/scim/users.js.map +1 -0
- package/dist/cjs/api/web/index.d.ts +1 -0
- package/dist/cjs/api/web/index.js +1 -0
- package/dist/cjs/api/web/index.js.map +1 -1
- package/dist/cjs/api/web/pagination.d.ts +1 -1
- package/dist/cjs/api/web/system/environment.d.ts +8 -0
- package/dist/cjs/api/web/system/environment.js +3 -0
- package/dist/cjs/api/web/system/environment.js.map +1 -0
- package/dist/cjs/api/web/system/index.d.ts +1 -0
- package/dist/cjs/api/web/system/index.js +18 -0
- package/dist/cjs/api/web/system/index.js.map +1 -0
- package/dist/cjs/api/web/user.d.ts +17 -15
- package/dist/cjs/documents/account/account.d.ts +7 -1
- package/dist/cjs/documents/account/account.js.map +1 -1
- package/dist/cjs/documents/app/automation.d.ts +59 -9
- package/dist/cjs/documents/app/automation.js +38 -1
- package/dist/cjs/documents/app/automation.js.map +1 -1
- package/dist/cjs/documents/app/query.d.ts +6 -0
- package/dist/cjs/documents/app/table.d.ts +3 -0
- package/dist/cjs/documents/app/user.d.ts +1 -0
- package/dist/cjs/documents/global/config.d.ts +14 -11
- package/dist/cjs/documents/global/config.js +4 -1
- package/dist/cjs/documents/global/config.js.map +1 -1
- package/dist/cjs/documents/global/plugin.d.ts +2 -1
- package/dist/cjs/documents/global/plugin.js +1 -0
- package/dist/cjs/documents/global/plugin.js.map +1 -1
- package/dist/cjs/documents/global/quotas.d.ts +1 -0
- package/dist/cjs/documents/global/user.d.ts +3 -0
- package/dist/cjs/documents/global/user.js.map +1 -1
- package/dist/cjs/documents/global/userGroup.d.ts +4 -0
- package/dist/cjs/sdk/db.d.ts +2 -1
- package/dist/cjs/sdk/db.js +1 -0
- package/dist/cjs/sdk/db.js.map +1 -1
- package/dist/cjs/sdk/events/event.d.ts +14 -1
- package/dist/cjs/sdk/events/event.js +25 -11
- package/dist/cjs/sdk/events/event.js.map +1 -1
- package/dist/cjs/sdk/events/identification.d.ts +1 -0
- package/dist/cjs/sdk/events/license.d.ts +5 -6
- package/dist/cjs/sdk/events/user.d.ts +3 -0
- package/dist/cjs/sdk/events/userGroup.d.ts +5 -0
- package/dist/cjs/sdk/licensing/billing.d.ts +1 -0
- package/dist/cjs/sdk/licensing/feature.d.ts +6 -1
- package/dist/cjs/sdk/licensing/feature.js +1 -0
- package/dist/cjs/sdk/licensing/feature.js.map +1 -1
- package/dist/cjs/sdk/licensing/license.d.ts +3 -2
- package/dist/cjs/sdk/licensing/plan.d.ts +23 -6
- package/dist/cjs/sdk/licensing/plan.js +9 -1
- package/dist/cjs/sdk/licensing/plan.js.map +1 -1
- package/dist/cjs/sdk/licensing/quota.d.ts +4 -5
- package/dist/cjs/sdk/licensing/quota.js +1 -1
- package/dist/cjs/sdk/licensing/quota.js.map +1 -1
- package/dist/cjs/sdk/locks.d.ts +10 -2
- package/dist/cjs/sdk/locks.js +2 -0
- package/dist/cjs/sdk/locks.js.map +1 -1
- package/dist/cjs/shared/index.d.ts +1 -0
- package/dist/cjs/shared/index.js +18 -0
- package/dist/cjs/shared/index.js.map +1 -0
- package/dist/cjs/shared/typeUtils.d.ts +3 -0
- package/dist/cjs/shared/typeUtils.js +3 -0
- package/dist/cjs/shared/typeUtils.js.map +1 -0
- package/dist/cjs/tsconfig-cjs.build.tsbuildinfo +1 -1
- package/dist/mjs/api/account/accounts.d.ts +11 -0
- package/dist/mjs/api/account/accounts.js +2 -0
- package/dist/mjs/api/account/accounts.js.map +1 -0
- package/dist/mjs/api/account/index.d.ts +1 -0
- package/dist/mjs/api/account/index.js +1 -0
- package/dist/mjs/api/account/index.js.map +1 -1
- package/dist/mjs/api/account/license.d.ts +15 -2
- package/dist/mjs/api/web/app/datasource.d.ts +15 -0
- package/dist/mjs/api/web/app/datasource.js +2 -0
- package/dist/mjs/api/web/app/datasource.js.map +1 -0
- package/dist/mjs/api/web/app/index.d.ts +1 -0
- package/dist/mjs/api/web/app/index.js +1 -0
- package/dist/mjs/api/web/app/index.js.map +1 -1
- package/dist/mjs/api/web/global/index.d.ts +1 -0
- package/dist/mjs/api/web/global/index.js +1 -0
- package/dist/mjs/api/web/global/index.js.map +1 -1
- package/dist/mjs/api/web/global/scim/groups.d.ts +27 -0
- package/dist/mjs/api/web/global/scim/groups.js +2 -0
- package/dist/mjs/api/web/global/scim/groups.js.map +1 -0
- package/dist/mjs/api/web/global/scim/index.d.ts +3 -0
- package/dist/mjs/api/web/global/scim/index.js +4 -0
- package/dist/mjs/api/web/global/scim/index.js.map +1 -0
- package/dist/mjs/api/web/global/scim/shared.d.ts +12 -0
- package/dist/mjs/api/web/global/scim/shared.js +2 -0
- package/dist/mjs/api/web/global/scim/shared.js.map +1 -0
- package/dist/mjs/api/web/global/scim/users.d.ts +48 -0
- package/dist/mjs/api/web/global/scim/users.js +2 -0
- package/dist/mjs/api/web/global/scim/users.js.map +1 -0
- package/dist/mjs/api/web/index.d.ts +1 -0
- package/dist/mjs/api/web/index.js +1 -0
- package/dist/mjs/api/web/index.js.map +1 -1
- package/dist/mjs/api/web/pagination.d.ts +1 -1
- package/dist/mjs/api/web/system/environment.d.ts +8 -0
- package/dist/mjs/api/web/system/environment.js +2 -0
- package/dist/mjs/api/web/system/environment.js.map +1 -0
- package/dist/mjs/api/web/system/index.d.ts +1 -0
- package/dist/mjs/api/web/system/index.js +2 -0
- package/dist/mjs/api/web/system/index.js.map +1 -0
- package/dist/mjs/api/web/user.d.ts +17 -15
- package/dist/mjs/documents/account/account.d.ts +7 -1
- package/dist/mjs/documents/account/account.js +1 -1
- package/dist/mjs/documents/account/account.js.map +1 -1
- package/dist/mjs/documents/app/automation.d.ts +59 -9
- package/dist/mjs/documents/app/automation.js +37 -0
- package/dist/mjs/documents/app/automation.js.map +1 -1
- package/dist/mjs/documents/app/query.d.ts +6 -0
- package/dist/mjs/documents/app/table.d.ts +3 -0
- package/dist/mjs/documents/app/user.d.ts +1 -0
- package/dist/mjs/documents/global/config.d.ts +14 -11
- package/dist/mjs/documents/global/config.js +2 -0
- package/dist/mjs/documents/global/config.js.map +1 -1
- package/dist/mjs/documents/global/plugin.d.ts +2 -1
- package/dist/mjs/documents/global/plugin.js +1 -0
- package/dist/mjs/documents/global/plugin.js.map +1 -1
- package/dist/mjs/documents/global/quotas.d.ts +1 -0
- package/dist/mjs/documents/global/user.d.ts +3 -0
- package/dist/mjs/documents/global/user.js.map +1 -1
- package/dist/mjs/documents/global/userGroup.d.ts +4 -0
- package/dist/mjs/sdk/db.d.ts +2 -1
- package/dist/mjs/sdk/db.js +1 -0
- package/dist/mjs/sdk/db.js.map +1 -1
- package/dist/mjs/sdk/events/event.d.ts +14 -1
- package/dist/mjs/sdk/events/event.js +24 -10
- package/dist/mjs/sdk/events/event.js.map +1 -1
- package/dist/mjs/sdk/events/identification.d.ts +1 -0
- package/dist/mjs/sdk/events/license.d.ts +5 -6
- package/dist/mjs/sdk/events/user.d.ts +3 -0
- package/dist/mjs/sdk/events/userGroup.d.ts +5 -0
- package/dist/mjs/sdk/licensing/billing.d.ts +1 -0
- package/dist/mjs/sdk/licensing/feature.d.ts +6 -1
- package/dist/mjs/sdk/licensing/feature.js +1 -0
- package/dist/mjs/sdk/licensing/feature.js.map +1 -1
- package/dist/mjs/sdk/licensing/license.d.ts +3 -2
- package/dist/mjs/sdk/licensing/plan.d.ts +23 -6
- package/dist/mjs/sdk/licensing/plan.js +8 -0
- package/dist/mjs/sdk/licensing/plan.js.map +1 -1
- package/dist/mjs/sdk/licensing/quota.d.ts +4 -5
- package/dist/mjs/sdk/licensing/quota.js +1 -1
- package/dist/mjs/sdk/licensing/quota.js.map +1 -1
- package/dist/mjs/sdk/locks.d.ts +10 -2
- package/dist/mjs/sdk/locks.js +2 -0
- package/dist/mjs/sdk/locks.js.map +1 -1
- package/dist/mjs/shared/index.d.ts +1 -0
- package/dist/mjs/shared/index.js +2 -0
- package/dist/mjs/shared/index.js.map +1 -0
- package/dist/mjs/shared/typeUtils.d.ts +3 -0
- package/dist/mjs/shared/typeUtils.js +2 -0
- package/dist/mjs/shared/typeUtils.js.map +1 -0
- package/dist/mjs/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +7 -3
- package/src/api/account/accounts.ts +13 -0
- package/src/api/account/index.ts +1 -0
- package/src/api/account/license.ts +19 -2
- package/src/api/web/app/datasource.ts +19 -0
- package/src/api/web/app/index.ts +1 -0
- package/src/api/web/global/index.ts +1 -0
- package/src/api/web/global/scim/groups.ts +30 -0
- package/src/api/web/global/scim/index.ts +3 -0
- package/src/api/web/global/scim/shared.ts +14 -0
- package/src/api/web/global/scim/users.ts +53 -0
- package/src/api/web/index.ts +1 -0
- package/src/api/web/pagination.ts +1 -1
- package/src/api/web/system/environment.ts +8 -0
- package/src/api/web/system/index.ts +1 -0
- package/src/api/web/user.ts +12 -8
- package/src/documents/account/account.ts +9 -12
- package/src/documents/app/automation.ts +66 -8
- package/src/documents/app/query.ts +7 -0
- package/src/documents/app/table.ts +3 -0
- package/src/documents/app/user.ts +1 -0
- package/src/documents/global/config.ts +16 -14
- package/src/documents/global/plugin.ts +1 -0
- package/src/documents/global/quotas.ts +1 -0
- package/src/documents/global/user.ts +1 -0
- package/src/documents/global/userGroup.ts +4 -0
- package/src/sdk/db.ts +2 -0
- package/src/sdk/events/event.ts +45 -10
- package/src/sdk/events/identification.ts +2 -0
- package/src/sdk/events/license.ts +6 -7
- package/src/sdk/events/user.ts +3 -0
- package/src/sdk/events/userGroup.ts +5 -0
- package/src/sdk/licensing/billing.ts +1 -0
- package/src/sdk/licensing/feature.ts +5 -0
- package/src/sdk/licensing/license.ts +3 -2
- package/src/sdk/licensing/plan.ts +27 -7
- package/src/sdk/licensing/quota.ts +4 -7
- package/src/sdk/locks.ts +9 -0
- package/src/shared/index.ts +1 -0
- package/src/shared/typeUtils.ts +3 -0
- package/tsconfig-base.build.json +2 -1
package/src/api/web/user.ts
CHANGED
|
@@ -22,15 +22,19 @@ export interface BulkUserRequest {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
export interface BulkUserCreated {
|
|
26
|
+
successful: UserDetails[]
|
|
27
|
+
unsuccessful: { email: string; reason: string }[]
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface BulkUserDeleted {
|
|
31
|
+
successful: UserDetails[]
|
|
32
|
+
unsuccessful: { _id: string; email: string; reason: string }[]
|
|
33
|
+
}
|
|
34
|
+
|
|
25
35
|
export interface BulkUserResponse {
|
|
26
|
-
created?:
|
|
27
|
-
|
|
28
|
-
unsuccessful: { email: string; reason: string }[]
|
|
29
|
-
}
|
|
30
|
-
deleted?: {
|
|
31
|
-
successful: UserDetails[]
|
|
32
|
-
unsuccessful: { _id: string; email: string; reason: string }[]
|
|
33
|
-
}
|
|
36
|
+
created?: BulkUserCreated
|
|
37
|
+
deleted?: BulkUserDeleted
|
|
34
38
|
message?: string
|
|
35
39
|
}
|
|
36
40
|
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
License,
|
|
5
|
-
MonthlyQuotaName,
|
|
6
|
-
PlanType,
|
|
7
|
-
PriceDuration,
|
|
8
|
-
Quotas,
|
|
9
|
-
StaticQuotaName,
|
|
10
|
-
} from "../../sdk"
|
|
11
|
-
import { MonthlyUsage, QuotaUsage, StaticUsage } from "../global"
|
|
1
|
+
import { Feature, Hosting, License, PlanType, Quotas } from "../../sdk"
|
|
2
|
+
import { DeepPartial } from "../../shared"
|
|
3
|
+
import { QuotaUsage } from "../global"
|
|
12
4
|
|
|
13
5
|
export interface CreateAccount {
|
|
14
6
|
email: string
|
|
@@ -34,7 +26,7 @@ export const isCreatePasswordAccount = (
|
|
|
34
26
|
|
|
35
27
|
export interface LicenseOverrides {
|
|
36
28
|
features?: Feature[]
|
|
37
|
-
quotas?: Quotas
|
|
29
|
+
quotas?: DeepPartial<Quotas>
|
|
38
30
|
}
|
|
39
31
|
|
|
40
32
|
export interface Account extends CreateAccount {
|
|
@@ -47,11 +39,16 @@ export interface Account extends CreateAccount {
|
|
|
47
39
|
// licensing
|
|
48
40
|
tier: string // deprecated
|
|
49
41
|
planType?: PlanType
|
|
42
|
+
/** @deprecated */
|
|
50
43
|
planTier?: number
|
|
51
44
|
license?: License
|
|
45
|
+
installId?: string
|
|
46
|
+
installTenantId?: string
|
|
47
|
+
installVersion?: string
|
|
52
48
|
stripeCustomerId?: string
|
|
53
49
|
licenseKey?: string
|
|
54
50
|
licenseKeyActivatedAt?: number
|
|
51
|
+
licenseRequestedAt?: number
|
|
55
52
|
licenseOverrides?: LicenseOverrides
|
|
56
53
|
quotaUsage?: QuotaUsage
|
|
57
54
|
}
|
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
import { Document } from "../document"
|
|
2
2
|
import { EventEmitter } from "events"
|
|
3
3
|
|
|
4
|
+
export enum AutomationIOType {
|
|
5
|
+
OBJECT = "object",
|
|
6
|
+
STRING = "string",
|
|
7
|
+
BOOLEAN = "boolean",
|
|
8
|
+
NUMBER = "number",
|
|
9
|
+
ARRAY = "array",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum AutomationCustomIOType {
|
|
13
|
+
TABLE = "table",
|
|
14
|
+
ROW = "row",
|
|
15
|
+
ROWS = "rows",
|
|
16
|
+
WIDE = "wide",
|
|
17
|
+
QUERY = "query",
|
|
18
|
+
QUERY_PARAMS = "queryParams",
|
|
19
|
+
QUERY_LIMIT = "queryLimit",
|
|
20
|
+
LOOP_OPTION = "loopOption",
|
|
21
|
+
ITEM = "item",
|
|
22
|
+
CODE = "code",
|
|
23
|
+
FILTERS = "filters",
|
|
24
|
+
COLUMN = "column",
|
|
25
|
+
TRIGGER_SCHEMA = "triggerSchema",
|
|
26
|
+
CRON = "cron",
|
|
27
|
+
WEBHOOK_URL = "webhookUrl",
|
|
28
|
+
}
|
|
29
|
+
|
|
4
30
|
export enum AutomationTriggerStepId {
|
|
5
31
|
ROW_SAVED = "ROW_SAVED",
|
|
6
32
|
ROW_UPDATED = "ROW_UPDATED",
|
|
@@ -10,6 +36,12 @@ export enum AutomationTriggerStepId {
|
|
|
10
36
|
CRON = "CRON",
|
|
11
37
|
}
|
|
12
38
|
|
|
39
|
+
export enum AutomationStepType {
|
|
40
|
+
LOGIC = "LOGIC",
|
|
41
|
+
ACTION = "ACTION",
|
|
42
|
+
TRIGGER = "TRIGGER",
|
|
43
|
+
}
|
|
44
|
+
|
|
13
45
|
export enum AutomationActionStepId {
|
|
14
46
|
SEND_EMAIL_SMTP = "SEND_EMAIL_SMTP",
|
|
15
47
|
CREATE_ROW = "CREATE_ROW",
|
|
@@ -31,14 +63,43 @@ export enum AutomationActionStepId {
|
|
|
31
63
|
integromat = "integromat",
|
|
32
64
|
}
|
|
33
65
|
|
|
66
|
+
export const AutomationStepIdArray = [
|
|
67
|
+
...Object.values(AutomationActionStepId),
|
|
68
|
+
...Object.values(AutomationTriggerStepId),
|
|
69
|
+
]
|
|
70
|
+
|
|
34
71
|
export interface Automation extends Document {
|
|
35
72
|
definition: {
|
|
36
73
|
steps: AutomationStep[]
|
|
37
74
|
trigger: AutomationTrigger
|
|
38
75
|
}
|
|
76
|
+
screenId?: string
|
|
77
|
+
uiTree?: any
|
|
39
78
|
appId: string
|
|
40
79
|
live?: boolean
|
|
41
80
|
name: string
|
|
81
|
+
internal?: boolean
|
|
82
|
+
type?: string
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
interface BaseIOStructure {
|
|
86
|
+
type?: AutomationIOType
|
|
87
|
+
customType?: AutomationCustomIOType
|
|
88
|
+
title?: string
|
|
89
|
+
description?: string
|
|
90
|
+
enum?: string[]
|
|
91
|
+
pretty?: string[]
|
|
92
|
+
properties?: {
|
|
93
|
+
[key: string]: BaseIOStructure
|
|
94
|
+
}
|
|
95
|
+
required?: string[]
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
interface InputOutputBlock {
|
|
99
|
+
properties: {
|
|
100
|
+
[key: string]: BaseIOStructure
|
|
101
|
+
}
|
|
102
|
+
required?: string[]
|
|
42
103
|
}
|
|
43
104
|
|
|
44
105
|
export interface AutomationStepSchema {
|
|
@@ -46,7 +107,7 @@ export interface AutomationStepSchema {
|
|
|
46
107
|
tagline: string
|
|
47
108
|
icon: string
|
|
48
109
|
description: string
|
|
49
|
-
type:
|
|
110
|
+
type: AutomationStepType
|
|
50
111
|
internal?: boolean
|
|
51
112
|
deprecated?: boolean
|
|
52
113
|
stepId: AutomationTriggerStepId | AutomationActionStepId
|
|
@@ -55,14 +116,10 @@ export interface AutomationStepSchema {
|
|
|
55
116
|
[key: string]: any
|
|
56
117
|
}
|
|
57
118
|
schema: {
|
|
58
|
-
inputs:
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
outputs: {
|
|
62
|
-
[key: string]: any
|
|
63
|
-
}
|
|
64
|
-
required?: string[]
|
|
119
|
+
inputs: InputOutputBlock
|
|
120
|
+
outputs: InputOutputBlock
|
|
65
121
|
}
|
|
122
|
+
custom?: boolean
|
|
66
123
|
}
|
|
67
124
|
|
|
68
125
|
export interface AutomationStep extends AutomationStepSchema {
|
|
@@ -83,6 +140,7 @@ export enum AutomationStatus {
|
|
|
83
140
|
ERROR = "error",
|
|
84
141
|
STOPPED = "stopped",
|
|
85
142
|
STOPPED_ERROR = "stopped_error",
|
|
143
|
+
NO_ITERATIONS = "no_iterations",
|
|
86
144
|
}
|
|
87
145
|
|
|
88
146
|
export interface AutomationResults {
|
|
@@ -31,6 +31,8 @@ export interface FieldSchema {
|
|
|
31
31
|
timeOnly?: boolean
|
|
32
32
|
lastID?: number
|
|
33
33
|
useRichText?: boolean | null
|
|
34
|
+
order?: number
|
|
35
|
+
width?: number
|
|
34
36
|
meta?: {
|
|
35
37
|
toTable: string
|
|
36
38
|
toKey: string
|
|
@@ -77,6 +79,7 @@ export interface Table extends Document {
|
|
|
77
79
|
indexes?: { [key: string]: any }
|
|
78
80
|
rows?: { [key: string]: any }
|
|
79
81
|
created?: boolean
|
|
82
|
+
rowHeight?: number
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
export interface TableRequest extends Table {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Document } from "../document"
|
|
2
2
|
|
|
3
|
-
export interface Config extends Document {
|
|
3
|
+
export interface Config<T = any> extends Document {
|
|
4
4
|
type: ConfigType
|
|
5
|
-
config:
|
|
5
|
+
config: T
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export interface SMTPInnerConfig {
|
|
@@ -18,9 +18,7 @@ export interface SMTPInnerConfig {
|
|
|
18
18
|
connectionTimeout?: any
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export interface SMTPConfig extends Config {
|
|
22
|
-
config: SMTPInnerConfig
|
|
23
|
-
}
|
|
21
|
+
export interface SMTPConfig extends Config<SMTPInnerConfig> {}
|
|
24
22
|
|
|
25
23
|
/**
|
|
26
24
|
* Accessible only via pro.
|
|
@@ -50,9 +48,7 @@ export interface SettingsInnerConfig {
|
|
|
50
48
|
isSSOEnforced?: boolean
|
|
51
49
|
}
|
|
52
50
|
|
|
53
|
-
export interface SettingsConfig extends Config {
|
|
54
|
-
config: SettingsInnerConfig
|
|
55
|
-
}
|
|
51
|
+
export interface SettingsConfig extends Config<SettingsInnerConfig> {}
|
|
56
52
|
|
|
57
53
|
export type SSOConfigType = ConfigType.GOOGLE | ConfigType.OIDC
|
|
58
54
|
export type SSOConfig = GoogleInnerConfig | OIDCInnerConfig
|
|
@@ -67,9 +63,7 @@ export interface GoogleInnerConfig {
|
|
|
67
63
|
callbackURL?: string
|
|
68
64
|
}
|
|
69
65
|
|
|
70
|
-
export interface GoogleConfig extends Config {
|
|
71
|
-
config: GoogleInnerConfig
|
|
72
|
-
}
|
|
66
|
+
export interface GoogleConfig extends Config<GoogleInnerConfig> {}
|
|
73
67
|
|
|
74
68
|
export interface OIDCStrategyConfiguration {
|
|
75
69
|
issuer: string
|
|
@@ -96,9 +90,7 @@ export interface OIDCInnerConfig {
|
|
|
96
90
|
scopes: string[]
|
|
97
91
|
}
|
|
98
92
|
|
|
99
|
-
export interface OIDCConfig extends Config {
|
|
100
|
-
config: OIDCConfigs
|
|
101
|
-
}
|
|
93
|
+
export interface OIDCConfig extends Config<OIDCConfigs> {}
|
|
102
94
|
|
|
103
95
|
export interface OIDCWellKnownConfig {
|
|
104
96
|
issuer: string
|
|
@@ -107,6 +99,12 @@ export interface OIDCWellKnownConfig {
|
|
|
107
99
|
userinfo_endpoint: string
|
|
108
100
|
}
|
|
109
101
|
|
|
102
|
+
export interface SCIMInnerConfig {
|
|
103
|
+
enabled: boolean
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface SCIMConfig extends Config<SCIMInnerConfig> {}
|
|
107
|
+
|
|
110
108
|
export const isSettingsConfig = (config: Config): config is SettingsConfig =>
|
|
111
109
|
config.type === ConfigType.SETTINGS
|
|
112
110
|
|
|
@@ -119,6 +117,9 @@ export const isGoogleConfig = (config: Config): config is GoogleConfig =>
|
|
|
119
117
|
export const isOIDCConfig = (config: Config): config is OIDCConfig =>
|
|
120
118
|
config.type === ConfigType.OIDC
|
|
121
119
|
|
|
120
|
+
export const isSCIMConfig = (config: Config): config is SCIMConfig =>
|
|
121
|
+
config.type === ConfigType.SCIM
|
|
122
|
+
|
|
122
123
|
export enum ConfigType {
|
|
123
124
|
SETTINGS = "settings",
|
|
124
125
|
ACCOUNT = "account",
|
|
@@ -126,4 +127,5 @@ export enum ConfigType {
|
|
|
126
127
|
GOOGLE = "google",
|
|
127
128
|
OIDC = "oidc",
|
|
128
129
|
OIDC_LOGOS = "logos_oidc",
|
|
130
|
+
SCIM = "scim",
|
|
129
131
|
}
|
package/src/sdk/db.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import Nano from "@budibase/nano"
|
|
2
2
|
import { AllDocsResponse, AnyDocument, Document } from "../"
|
|
3
3
|
import { Writable } from "stream"
|
|
4
|
+
import PouchDB from "pouchdb"
|
|
4
5
|
|
|
5
6
|
export enum SearchIndex {
|
|
6
7
|
ROWS = "rows",
|
|
7
8
|
AUDIT = "audit",
|
|
9
|
+
USER = "user",
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
export type PouchOptions = {
|
package/src/sdk/events/event.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Hosting } from "../hosting"
|
|
2
|
+
import { Group, Identity } from "./identification"
|
|
2
3
|
|
|
3
4
|
export enum Event {
|
|
4
5
|
// USER
|
|
@@ -137,7 +138,6 @@ export enum Event {
|
|
|
137
138
|
|
|
138
139
|
// LICENSE
|
|
139
140
|
LICENSE_PLAN_CHANGED = "license:plan:changed",
|
|
140
|
-
LICENSE_TIER_CHANGED = "license:tier:changed",
|
|
141
141
|
LICENSE_ACTIVATED = "license:activated",
|
|
142
142
|
LICENSE_PAYMENT_FAILED = "license:payment:failed",
|
|
143
143
|
LICENSE_PAYMENT_RECOVERED = "license:payment:recovered",
|
|
@@ -186,6 +186,24 @@ export enum Event {
|
|
|
186
186
|
AUDIT_LOGS_DOWNLOADED = "audit_log:downloaded",
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
export const UserGroupSyncEvents: Event[] = [
|
|
190
|
+
Event.USER_CREATED,
|
|
191
|
+
Event.USER_UPDATED,
|
|
192
|
+
Event.USER_DELETED,
|
|
193
|
+
Event.USER_PERMISSION_ADMIN_ASSIGNED,
|
|
194
|
+
Event.USER_PERMISSION_ADMIN_REMOVED,
|
|
195
|
+
Event.USER_PERMISSION_BUILDER_ASSIGNED,
|
|
196
|
+
Event.USER_PERMISSION_BUILDER_REMOVED,
|
|
197
|
+
Event.USER_GROUP_CREATED,
|
|
198
|
+
Event.USER_GROUP_UPDATED,
|
|
199
|
+
Event.USER_GROUP_DELETED,
|
|
200
|
+
Event.USER_GROUP_USERS_ADDED,
|
|
201
|
+
Event.USER_GROUP_USERS_REMOVED,
|
|
202
|
+
Event.USER_GROUP_PERMISSIONS_EDITED,
|
|
203
|
+
]
|
|
204
|
+
|
|
205
|
+
export const AsyncEvents: Event[] = [...UserGroupSyncEvents]
|
|
206
|
+
|
|
189
207
|
// all events that are not audited have been added to this record as undefined, this means
|
|
190
208
|
// that Typescript can protect us against new events being added and auditing of those
|
|
191
209
|
// events not being considered. This might be a little ugly, but provides a level of
|
|
@@ -194,9 +212,9 @@ export enum Event {
|
|
|
194
212
|
// a user facing event or not.
|
|
195
213
|
export const AuditedEventFriendlyName: Record<Event, string | undefined> = {
|
|
196
214
|
// USER
|
|
197
|
-
[Event.USER_CREATED]: `User "{{ email }}" created`,
|
|
198
|
-
[Event.USER_UPDATED]: `User "{{ email }}" updated`,
|
|
199
|
-
[Event.USER_DELETED]: `User "{{ email }}" deleted`,
|
|
215
|
+
[Event.USER_CREATED]: `User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}`,
|
|
216
|
+
[Event.USER_UPDATED]: `User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}`,
|
|
217
|
+
[Event.USER_DELETED]: `User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}`,
|
|
200
218
|
[Event.USER_PERMISSION_ADMIN_ASSIGNED]: `User "{{ email }}" admin role assigned`,
|
|
201
219
|
[Event.USER_PERMISSION_ADMIN_REMOVED]: `User "{{ email }}" admin role removed`,
|
|
202
220
|
[Event.USER_PERMISSION_BUILDER_ASSIGNED]: `User "{{ email }}" builder role assigned`,
|
|
@@ -206,11 +224,11 @@ export const AuditedEventFriendlyName: Record<Event, string | undefined> = {
|
|
|
206
224
|
[Event.USER_PASSWORD_UPDATED]: `User "{{ email }}" password updated`,
|
|
207
225
|
[Event.USER_PASSWORD_RESET_REQUESTED]: `User "{{ email }}" password reset requested`,
|
|
208
226
|
[Event.USER_PASSWORD_RESET]: `User "{{ email }}" password reset`,
|
|
209
|
-
[Event.USER_GROUP_CREATED]: `User group "{{ name }}" created`,
|
|
210
|
-
[Event.USER_GROUP_UPDATED]: `User group "{{ name }}" updated`,
|
|
211
|
-
[Event.USER_GROUP_DELETED]: `User group "{{ name }}" deleted`,
|
|
212
|
-
[Event.USER_GROUP_USERS_ADDED]: `User group "{{ name }}" {{ count }} users added`,
|
|
213
|
-
[Event.USER_GROUP_USERS_REMOVED]: `User group "{{ name }}" {{ count }} users removed`,
|
|
227
|
+
[Event.USER_GROUP_CREATED]: `User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}`,
|
|
228
|
+
[Event.USER_GROUP_UPDATED]: `User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}`,
|
|
229
|
+
[Event.USER_GROUP_DELETED]: `User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}`,
|
|
230
|
+
[Event.USER_GROUP_USERS_ADDED]: `User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}`,
|
|
231
|
+
[Event.USER_GROUP_USERS_REMOVED]: `User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}`,
|
|
214
232
|
[Event.USER_GROUP_PERMISSIONS_EDITED]: `User group "{{ name }}" permissions edited`,
|
|
215
233
|
[Event.USER_PASSWORD_FORCE_RESET]: undefined,
|
|
216
234
|
[Event.USER_GROUP_ONBOARDING]: undefined,
|
|
@@ -309,7 +327,6 @@ export const AuditedEventFriendlyName: Record<Event, string | undefined> = {
|
|
|
309
327
|
|
|
310
328
|
// LICENSE - NOT AUDITED
|
|
311
329
|
[Event.LICENSE_PLAN_CHANGED]: undefined,
|
|
312
|
-
[Event.LICENSE_TIER_CHANGED]: undefined,
|
|
313
330
|
[Event.LICENSE_ACTIVATED]: undefined,
|
|
314
331
|
[Event.LICENSE_PAYMENT_FAILED]: undefined,
|
|
315
332
|
[Event.LICENSE_PAYMENT_RECOVERED]: undefined,
|
|
@@ -383,3 +400,21 @@ export interface BaseEvent {
|
|
|
383
400
|
}
|
|
384
401
|
|
|
385
402
|
export type TableExportFormat = "json" | "csv"
|
|
403
|
+
|
|
404
|
+
export type DocUpdateEvent = {
|
|
405
|
+
id: string
|
|
406
|
+
tenantId: string
|
|
407
|
+
appId?: string
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
export interface EventProcessor {
|
|
411
|
+
processEvent(
|
|
412
|
+
event: Event,
|
|
413
|
+
identity: Identity,
|
|
414
|
+
properties: any,
|
|
415
|
+
timestamp?: string | number
|
|
416
|
+
): Promise<void>
|
|
417
|
+
identify?(identity: Identity, timestamp?: string | number): Promise<void>
|
|
418
|
+
identifyGroup?(group: Group, timestamp?: string | number): Promise<void>
|
|
419
|
+
shutdown?(): void
|
|
420
|
+
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { PlanType } from "../licensing"
|
|
2
|
-
|
|
3
|
-
export interface LicenseTierChangedEvent {
|
|
4
|
-
accountId: string
|
|
5
|
-
from: number
|
|
6
|
-
to: number
|
|
7
|
-
}
|
|
1
|
+
import { PlanType, PriceDuration } from "../licensing"
|
|
8
2
|
|
|
9
3
|
export interface LicensePlanChangedEvent {
|
|
10
4
|
accountId: string
|
|
11
5
|
from: PlanType
|
|
12
6
|
to: PlanType
|
|
7
|
+
// may not be on historical events
|
|
8
|
+
fromDuration: PriceDuration | undefined
|
|
9
|
+
toDuration: PriceDuration | undefined
|
|
10
|
+
fromQuantity: number | undefined
|
|
11
|
+
toQuantity: number | undefined
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
export interface LicenseActivatedEvent {
|
package/src/sdk/events/user.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { BaseEvent } from "./event"
|
|
|
2
2
|
|
|
3
3
|
export interface UserCreatedEvent extends BaseEvent {
|
|
4
4
|
userId: string
|
|
5
|
+
viaScim?: boolean
|
|
5
6
|
audited: {
|
|
6
7
|
email: string
|
|
7
8
|
}
|
|
@@ -9,6 +10,7 @@ export interface UserCreatedEvent extends BaseEvent {
|
|
|
9
10
|
|
|
10
11
|
export interface UserUpdatedEvent extends BaseEvent {
|
|
11
12
|
userId: string
|
|
13
|
+
viaScim?: boolean
|
|
12
14
|
audited: {
|
|
13
15
|
email: string
|
|
14
16
|
}
|
|
@@ -16,6 +18,7 @@ export interface UserUpdatedEvent extends BaseEvent {
|
|
|
16
18
|
|
|
17
19
|
export interface UserDeletedEvent extends BaseEvent {
|
|
18
20
|
userId: string
|
|
21
|
+
viaScim?: boolean
|
|
19
22
|
audited: {
|
|
20
23
|
email: string
|
|
21
24
|
}
|
|
@@ -2,6 +2,7 @@ import { BaseEvent } from "./event"
|
|
|
2
2
|
|
|
3
3
|
export interface GroupCreatedEvent extends BaseEvent {
|
|
4
4
|
groupId: string
|
|
5
|
+
viaScim?: boolean
|
|
5
6
|
audited: {
|
|
6
7
|
name: string
|
|
7
8
|
}
|
|
@@ -9,6 +10,7 @@ export interface GroupCreatedEvent extends BaseEvent {
|
|
|
9
10
|
|
|
10
11
|
export interface GroupUpdatedEvent extends BaseEvent {
|
|
11
12
|
groupId: string
|
|
13
|
+
viaScim?: boolean
|
|
12
14
|
audited: {
|
|
13
15
|
name: string
|
|
14
16
|
}
|
|
@@ -16,6 +18,7 @@ export interface GroupUpdatedEvent extends BaseEvent {
|
|
|
16
18
|
|
|
17
19
|
export interface GroupDeletedEvent extends BaseEvent {
|
|
18
20
|
groupId: string
|
|
21
|
+
viaScim?: boolean
|
|
19
22
|
audited: {
|
|
20
23
|
name: string
|
|
21
24
|
}
|
|
@@ -24,6 +27,7 @@ export interface GroupDeletedEvent extends BaseEvent {
|
|
|
24
27
|
export interface GroupUsersAddedEvent extends BaseEvent {
|
|
25
28
|
count: number
|
|
26
29
|
groupId: string
|
|
30
|
+
viaScim?: boolean
|
|
27
31
|
audited: {
|
|
28
32
|
name: string
|
|
29
33
|
}
|
|
@@ -32,6 +36,7 @@ export interface GroupUsersAddedEvent extends BaseEvent {
|
|
|
32
36
|
export interface GroupUsersDeletedEvent extends BaseEvent {
|
|
33
37
|
count: number
|
|
34
38
|
groupId: string
|
|
39
|
+
viaScim?: boolean
|
|
35
40
|
audited: {
|
|
36
41
|
name: string
|
|
37
42
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { PlanType } from "./plan"
|
|
2
|
+
|
|
1
3
|
export enum Feature {
|
|
2
4
|
USER_GROUPS = "userGroups",
|
|
3
5
|
APP_BACKUPS = "appBackups",
|
|
@@ -5,4 +7,7 @@ export enum Feature {
|
|
|
5
7
|
AUDIT_LOGS = "auditLogs",
|
|
6
8
|
ENFORCEABLE_SSO = "enforceableSSO",
|
|
7
9
|
BRANDING = "branding",
|
|
10
|
+
SCIM = "scim",
|
|
8
11
|
}
|
|
12
|
+
|
|
13
|
+
export type PlanFeatures = { [key in PlanType]: Feature[] | undefined }
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PurchasedPlan, Quotas, Feature, Billing } from "."
|
|
2
2
|
|
|
3
3
|
export interface License {
|
|
4
4
|
features: Feature[]
|
|
5
5
|
quotas: Quotas
|
|
6
|
-
plan:
|
|
6
|
+
plan: PurchasedPlan
|
|
7
7
|
billing?: Billing
|
|
8
|
+
testClockId?: string
|
|
8
9
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
export interface AccountPlan {
|
|
2
|
-
type: PlanType
|
|
3
|
-
price?: Price
|
|
4
|
-
}
|
|
5
|
-
|
|
6
1
|
export enum PlanType {
|
|
7
2
|
FREE = "free",
|
|
3
|
+
/** @deprecated */
|
|
8
4
|
PRO = "pro",
|
|
5
|
+
/** @deprecated */
|
|
9
6
|
TEAM = "team",
|
|
7
|
+
PREMIUM = "premium",
|
|
10
8
|
BUSINESS = "business",
|
|
11
9
|
ENTERPRISE = "enterprise",
|
|
12
10
|
}
|
|
@@ -16,12 +14,34 @@ export enum PriceDuration {
|
|
|
16
14
|
YEARLY = "yearly",
|
|
17
15
|
}
|
|
18
16
|
|
|
19
|
-
export interface
|
|
17
|
+
export interface AvailablePlan {
|
|
18
|
+
type: PlanType
|
|
19
|
+
maxUsers: number
|
|
20
|
+
prices: AvailablePrice[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface AvailablePrice {
|
|
20
24
|
amount: number
|
|
21
25
|
amountMonthly: number
|
|
22
26
|
currency: string
|
|
23
27
|
duration: PriceDuration
|
|
24
28
|
priceId: string
|
|
25
|
-
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export enum PlanModel {
|
|
32
|
+
PER_USER = "perUser",
|
|
33
|
+
DAY_PASS = "dayPass",
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface PurchasedPlan {
|
|
37
|
+
type: PlanType
|
|
38
|
+
model: PlanModel
|
|
39
|
+
usesInvoicing: boolean
|
|
40
|
+
price?: PurchasedPrice
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface PurchasedPrice extends AvailablePrice {
|
|
44
|
+
dayPasses: number | undefined
|
|
45
|
+
/** @deprecated - now at the plan level via model */
|
|
26
46
|
isPerUser: boolean
|
|
27
47
|
}
|
|
@@ -13,6 +13,7 @@ export enum QuotaType {
|
|
|
13
13
|
export enum StaticQuotaName {
|
|
14
14
|
ROWS = "rows",
|
|
15
15
|
APPS = "apps",
|
|
16
|
+
USERS = "users",
|
|
16
17
|
USER_GROUPS = "userGroups",
|
|
17
18
|
PLUGINS = "plugins",
|
|
18
19
|
}
|
|
@@ -54,13 +55,7 @@ export const isConstantQuota = (
|
|
|
54
55
|
return quotaType === QuotaType.CONSTANT
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
export type PlanQuotas = {
|
|
58
|
-
[PlanType.FREE]: Quotas
|
|
59
|
-
[PlanType.PRO]: Quotas
|
|
60
|
-
[PlanType.TEAM]: Quotas
|
|
61
|
-
[PlanType.BUSINESS]: Quotas
|
|
62
|
-
[PlanType.ENTERPRISE]: Quotas
|
|
63
|
-
}
|
|
58
|
+
export type PlanQuotas = { [key in PlanType]: Quotas | undefined }
|
|
64
59
|
|
|
65
60
|
export type MonthlyQuotas = {
|
|
66
61
|
[MonthlyQuotaName.QUERIES]: Quota
|
|
@@ -71,6 +66,7 @@ export type MonthlyQuotas = {
|
|
|
71
66
|
export type StaticQuotas = {
|
|
72
67
|
[StaticQuotaName.ROWS]: Quota
|
|
73
68
|
[StaticQuotaName.APPS]: Quota
|
|
69
|
+
[StaticQuotaName.USERS]: Quota
|
|
74
70
|
[StaticQuotaName.USER_GROUPS]: Quota
|
|
75
71
|
[StaticQuotaName.PLUGINS]: Quota
|
|
76
72
|
}
|
|
@@ -99,4 +95,5 @@ export interface Quota {
|
|
|
99
95
|
* which can have subsequent effects such as sending emails to users.
|
|
100
96
|
*/
|
|
101
97
|
triggers: number[]
|
|
98
|
+
startDate?: number
|
|
102
99
|
}
|