@budibase/types 2.3.20 → 2.3.21-alpha.1
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/api/account/index.d.ts +1 -0
- package/dist/api/account/index.js +1 -0
- package/dist/api/account/index.js.map +1 -1
- package/dist/api/account/status.d.ts +7 -0
- package/dist/api/account/status.js +3 -0
- package/dist/api/account/status.js.map +1 -0
- package/dist/api/web/auth.d.ts +21 -0
- package/dist/api/web/auth.js +3 -0
- package/dist/api/web/auth.js.map +1 -0
- package/dist/api/web/errors.d.ts +1 -0
- package/dist/api/web/global/auditLogs.d.ts +39 -0
- package/dist/api/web/global/auditLogs.js +8 -0
- package/dist/api/web/global/auditLogs.js.map +1 -0
- package/dist/api/web/global/configs.d.ts +19 -0
- package/dist/api/web/global/configs.js +3 -0
- package/dist/api/web/global/configs.js.map +1 -0
- package/dist/api/web/global/index.d.ts +2 -0
- package/dist/api/web/global/index.js +2 -0
- package/dist/api/web/global/index.js.map +1 -1
- package/dist/api/web/index.d.ts +2 -0
- package/dist/api/web/index.js +2 -0
- package/dist/api/web/index.js.map +1 -1
- package/dist/api/web/pagination.d.ts +23 -0
- package/dist/api/web/pagination.js +14 -0
- package/dist/api/web/pagination.js.map +1 -0
- package/dist/api/web/user.d.ts +19 -2
- package/dist/documents/account/account.d.ts +11 -4
- package/dist/documents/account/account.js +9 -1
- package/dist/documents/account/account.js.map +1 -1
- package/dist/documents/app/row.d.ts +2 -1
- package/dist/documents/app/row.js +1 -0
- package/dist/documents/app/row.js.map +1 -1
- package/dist/documents/app/table.d.ts +8 -2
- package/dist/documents/app/table.js +7 -0
- package/dist/documents/app/table.js.map +1 -1
- package/dist/documents/global/auditLogs.d.ts +16 -0
- package/dist/documents/global/auditLogs.js +5 -0
- package/dist/documents/global/auditLogs.js.map +1 -0
- package/dist/documents/global/config.d.ts +48 -25
- package/dist/documents/global/config.js.map +1 -1
- package/dist/documents/global/index.d.ts +1 -0
- package/dist/documents/global/index.js +1 -0
- package/dist/documents/global/index.js.map +1 -1
- package/dist/documents/global/user.d.ts +28 -29
- package/dist/documents/global/user.js +15 -1
- package/dist/documents/global/user.js.map +1 -1
- package/dist/sdk/auditLogs.d.ts +15 -0
- package/dist/sdk/auditLogs.js +3 -0
- package/dist/sdk/auditLogs.js.map +1 -0
- package/dist/sdk/cli/constants.d.ts +18 -0
- package/dist/sdk/cli/constants.js +24 -0
- package/dist/sdk/cli/constants.js.map +1 -0
- package/dist/sdk/cli/index.d.ts +1 -0
- package/dist/sdk/cli/index.js +18 -0
- package/dist/sdk/cli/index.js.map +1 -0
- package/dist/sdk/context.d.ts +2 -1
- package/dist/sdk/db.d.ts +18 -1
- package/dist/sdk/db.js +6 -1
- package/dist/sdk/db.js.map +1 -1
- package/dist/sdk/events/app.d.ts +33 -0
- package/dist/sdk/events/auditLog.d.ts +8 -0
- package/dist/sdk/events/auditLog.js +3 -0
- package/dist/sdk/events/auditLog.js.map +1 -0
- package/dist/sdk/events/auth.d.ts +6 -0
- package/dist/sdk/events/automation.d.ts +12 -0
- package/dist/sdk/events/backup.d.ts +2 -0
- package/dist/sdk/events/event.d.ts +7 -1
- package/dist/sdk/events/event.js +160 -1
- package/dist/sdk/events/event.js.map +1 -1
- package/dist/sdk/events/identification.d.ts +5 -0
- package/dist/sdk/events/index.d.ts +1 -0
- package/dist/sdk/events/index.js +1 -0
- package/dist/sdk/events/index.js.map +1 -1
- package/dist/sdk/events/screen.d.ts +6 -0
- package/dist/sdk/events/table.d.ts +15 -0
- package/dist/sdk/events/user.d.ts +36 -0
- package/dist/sdk/events/userGroup.d.ts +22 -0
- package/dist/sdk/index.d.ts +4 -0
- package/dist/sdk/index.js +4 -0
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/licensing/feature.d.ts +3 -1
- package/dist/sdk/licensing/feature.js +2 -0
- package/dist/sdk/licensing/feature.js.map +1 -1
- package/dist/sdk/locks.d.ts +2 -1
- package/dist/sdk/locks.js +1 -0
- package/dist/sdk/locks.js.map +1 -1
- package/dist/sdk/sso.d.ts +24 -0
- package/dist/sdk/sso.js +3 -0
- package/dist/sdk/sso.js.map +1 -0
- package/dist/sdk/user.d.ts +11 -0
- package/dist/sdk/user.js +3 -0
- package/dist/sdk/user.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/api/account/index.ts +1 -0
- package/src/api/account/status.ts +7 -0
- package/src/api/web/auth.ts +25 -0
- package/src/api/web/errors.ts +1 -0
- package/src/api/web/global/auditLogs.ts +51 -0
- package/src/api/web/global/configs.ts +23 -0
- package/src/api/web/global/index.ts +2 -0
- package/src/api/web/index.ts +2 -0
- package/src/api/web/pagination.ts +27 -0
- package/src/api/web/user.ts +22 -2
- package/src/documents/account/account.ts +14 -4
- package/src/documents/app/row.ts +1 -0
- package/src/documents/app/table.ts +9 -3
- package/src/documents/global/auditLogs.ts +19 -0
- package/src/documents/global/config.ts +54 -26
- package/src/documents/global/index.ts +1 -0
- package/src/documents/global/user.ts +40 -30
- package/src/sdk/auditLogs.ts +22 -0
- package/src/sdk/cli/constants.ts +21 -0
- package/src/sdk/cli/index.ts +1 -0
- package/src/sdk/context.ts +2 -1
- package/src/sdk/db.ts +19 -2
- package/src/sdk/events/app.ts +33 -0
- package/src/sdk/events/auditLog.ts +10 -0
- package/src/sdk/events/auth.ts +6 -0
- package/src/sdk/events/automation.ts +12 -0
- package/src/sdk/events/backup.ts +2 -0
- package/src/sdk/events/event.ts +189 -0
- package/src/sdk/events/identification.ts +6 -0
- package/src/sdk/events/index.ts +1 -0
- package/src/sdk/events/screen.ts +6 -0
- package/src/sdk/events/table.ts +15 -0
- package/src/sdk/events/user.ts +38 -1
- package/src/sdk/events/userGroup.ts +23 -0
- package/src/sdk/index.ts +4 -0
- package/src/sdk/licensing/feature.ts +2 -0
- package/src/sdk/locks.ts +1 -0
- package/src/sdk/sso.ts +37 -0
- package/src/sdk/user.ts +12 -0
|
@@ -5,37 +5,55 @@ export interface Config extends Document {
|
|
|
5
5
|
config: any
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export interface
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
export interface SMTPInnerConfig {
|
|
9
|
+
port: number
|
|
10
|
+
host: string
|
|
11
|
+
from: string
|
|
12
|
+
subject?: string
|
|
13
|
+
secure: boolean
|
|
14
|
+
auth?: {
|
|
15
|
+
user: string
|
|
16
|
+
pass: string
|
|
15
17
|
}
|
|
18
|
+
connectionTimeout?: any
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface SMTPConfig extends Config {
|
|
22
|
+
config: SMTPInnerConfig
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface SettingsInnerConfig {
|
|
26
|
+
platformUrl?: string
|
|
27
|
+
company?: string
|
|
28
|
+
logoUrl?: string // Populated on read
|
|
29
|
+
logoUrlEtag?: string
|
|
30
|
+
uniqueTenantId?: string
|
|
31
|
+
analyticsEnabled?: boolean
|
|
32
|
+
isSSOEnforced?: boolean
|
|
16
33
|
}
|
|
17
34
|
|
|
18
35
|
export interface SettingsConfig extends Config {
|
|
19
|
-
config:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
config: SettingsInnerConfig
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type SSOConfigType = ConfigType.GOOGLE | ConfigType.OIDC
|
|
40
|
+
export type SSOConfig = GoogleInnerConfig | OIDCInnerConfig
|
|
41
|
+
|
|
42
|
+
export interface GoogleInnerConfig {
|
|
43
|
+
clientID: string
|
|
44
|
+
clientSecret: string
|
|
45
|
+
activated: boolean
|
|
46
|
+
/**
|
|
47
|
+
* @deprecated read only
|
|
48
|
+
*/
|
|
49
|
+
callbackURL?: string
|
|
28
50
|
}
|
|
29
51
|
|
|
30
52
|
export interface GoogleConfig extends Config {
|
|
31
|
-
config:
|
|
32
|
-
clientID: string
|
|
33
|
-
clientSecret: string
|
|
34
|
-
activated: boolean
|
|
35
|
-
}
|
|
53
|
+
config: GoogleInnerConfig
|
|
36
54
|
}
|
|
37
55
|
|
|
38
|
-
export interface
|
|
56
|
+
export interface OIDCStrategyConfiguration {
|
|
39
57
|
issuer: string
|
|
40
58
|
authorizationURL: string
|
|
41
59
|
tokenURL: string
|
|
@@ -45,7 +63,11 @@ export interface OIDCConfiguration {
|
|
|
45
63
|
callbackURL: string
|
|
46
64
|
}
|
|
47
65
|
|
|
48
|
-
export interface
|
|
66
|
+
export interface OIDCConfigs {
|
|
67
|
+
configs: OIDCInnerConfig[]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface OIDCInnerConfig {
|
|
49
71
|
configUrl: string
|
|
50
72
|
clientID: string
|
|
51
73
|
clientSecret: string
|
|
@@ -53,12 +75,18 @@ export interface OIDCInnerCfg {
|
|
|
53
75
|
name: string
|
|
54
76
|
uuid: string
|
|
55
77
|
activated: boolean
|
|
78
|
+
scopes: string[]
|
|
56
79
|
}
|
|
57
80
|
|
|
58
81
|
export interface OIDCConfig extends Config {
|
|
59
|
-
config:
|
|
60
|
-
|
|
61
|
-
|
|
82
|
+
config: OIDCConfigs
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface OIDCWellKnownConfig {
|
|
86
|
+
issuer: string
|
|
87
|
+
authorization_endpoint: string
|
|
88
|
+
token_endpoint: string
|
|
89
|
+
userinfo_endpoint: string
|
|
62
90
|
}
|
|
63
91
|
|
|
64
92
|
export const isSettingsConfig = (config: Config): config is SettingsConfig =>
|
|
@@ -1,37 +1,44 @@
|
|
|
1
1
|
import { Document } from "../document"
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
_json: {
|
|
10
|
-
email: string
|
|
11
|
-
picture: string
|
|
12
|
-
}
|
|
13
|
-
provider?: string
|
|
3
|
+
// SSO
|
|
4
|
+
|
|
5
|
+
export interface SSOProfileJson {
|
|
6
|
+
email?: string
|
|
7
|
+
picture?: string
|
|
14
8
|
}
|
|
15
9
|
|
|
16
|
-
export interface
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
lastName?: string
|
|
20
|
-
pictureUrl?: string
|
|
21
|
-
profile?: SSOProfile
|
|
22
|
-
oauth2?: any
|
|
23
|
-
provider?: string
|
|
24
|
-
providerType?: string
|
|
25
|
-
email: string
|
|
26
|
-
userId?: string
|
|
27
|
-
forceResetPassword?: boolean
|
|
28
|
-
userGroups?: string[]
|
|
10
|
+
export interface OAuth2 {
|
|
11
|
+
accessToken: string
|
|
12
|
+
refreshToken?: string
|
|
29
13
|
}
|
|
30
14
|
|
|
31
|
-
export
|
|
15
|
+
export enum SSOProviderType {
|
|
16
|
+
OIDC = "oidc",
|
|
17
|
+
GOOGLE = "google",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface UserSSO {
|
|
21
|
+
provider: string // the individual provider e.g. Okta, Auth0, Google
|
|
22
|
+
providerType: SSOProviderType
|
|
23
|
+
oauth2?: OAuth2
|
|
24
|
+
thirdPartyProfile?: SSOProfileJson
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type SSOUser = User & UserSSO
|
|
28
|
+
|
|
29
|
+
export function isSSOUser(user: User): user is SSOUser {
|
|
30
|
+
return !!(user as SSOUser).providerType
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// USER
|
|
34
|
+
|
|
35
|
+
export interface User extends Document {
|
|
32
36
|
tenantId: string
|
|
33
37
|
email: string
|
|
34
38
|
userId?: string
|
|
39
|
+
firstName?: string
|
|
40
|
+
lastName?: string
|
|
41
|
+
pictureUrl?: string
|
|
35
42
|
forceResetPassword?: boolean
|
|
36
43
|
roles: UserRoles
|
|
37
44
|
builder?: {
|
|
@@ -41,20 +48,23 @@ export interface User extends ThirdPartyUser {
|
|
|
41
48
|
global: boolean
|
|
42
49
|
}
|
|
43
50
|
password?: string
|
|
44
|
-
status?:
|
|
51
|
+
status?: UserStatus
|
|
45
52
|
createdAt?: number // override the default createdAt behaviour - users sdk historically set this to Date.now()
|
|
46
53
|
dayPassRecordedAt?: string
|
|
47
|
-
|
|
48
|
-
authType: string
|
|
49
|
-
}
|
|
54
|
+
userGroups?: string[]
|
|
50
55
|
onboardedAt?: string
|
|
51
56
|
}
|
|
52
57
|
|
|
58
|
+
export enum UserStatus {
|
|
59
|
+
ACTIVE = "active",
|
|
60
|
+
INACTIVE = "inactive",
|
|
61
|
+
}
|
|
62
|
+
|
|
53
63
|
export interface UserRoles {
|
|
54
64
|
[key: string]: string
|
|
55
65
|
}
|
|
56
66
|
|
|
57
|
-
//
|
|
67
|
+
// UTILITY TYPES
|
|
58
68
|
|
|
59
69
|
export interface BuilderUser extends User {
|
|
60
70
|
builder: {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Event, HostInfo } from "./events"
|
|
2
|
+
import { AuditLogDoc } from "../documents"
|
|
3
|
+
|
|
4
|
+
export type AuditWriteOpts = {
|
|
5
|
+
appId?: string
|
|
6
|
+
timestamp?: string | number
|
|
7
|
+
userId?: string
|
|
8
|
+
hostInfo?: HostInfo
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type AuditLogFn = (
|
|
12
|
+
event: Event,
|
|
13
|
+
metadata: any,
|
|
14
|
+
opts: AuditWriteOpts
|
|
15
|
+
) => Promise<AuditLogDoc | undefined>
|
|
16
|
+
|
|
17
|
+
export type AuditLogQueueEvent = {
|
|
18
|
+
event: Event
|
|
19
|
+
properties: any
|
|
20
|
+
opts: AuditWriteOpts
|
|
21
|
+
tenantId: string
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Event } from "../events"
|
|
2
|
+
|
|
3
|
+
export enum CommandWord {
|
|
4
|
+
BACKUPS = "backups",
|
|
5
|
+
HOSTING = "hosting",
|
|
6
|
+
ANALYTICS = "analytics",
|
|
7
|
+
HELP = "help",
|
|
8
|
+
PLUGIN = "plugins",
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export enum InitType {
|
|
12
|
+
QUICK = "quick",
|
|
13
|
+
DIGITAL_OCEAN = "do",
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const AnalyticsEvent = {
|
|
17
|
+
OptOut: "analytics:opt:out",
|
|
18
|
+
OptIn: "analytics:opt:in",
|
|
19
|
+
SelfHostInit: "hosting:init",
|
|
20
|
+
PluginInit: Event.PLUGIN_INIT,
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./constants"
|
package/src/sdk/context.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { User, Account } from "../documents"
|
|
2
|
-
import { IdentityType } from "./events"
|
|
2
|
+
import { IdentityType, HostInfo } from "./events"
|
|
3
3
|
|
|
4
4
|
export interface BaseContext {
|
|
5
5
|
_id: string
|
|
@@ -16,6 +16,7 @@ export interface UserContext extends BaseContext, User {
|
|
|
16
16
|
_id: string
|
|
17
17
|
tenantId: string
|
|
18
18
|
account?: Account
|
|
19
|
+
hostInfo: HostInfo
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
export type IdentityContext = BaseContext | AccountUserContext | UserContext
|
package/src/sdk/db.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import PouchDB from "pouchdb"
|
|
2
1
|
import Nano from "@budibase/nano"
|
|
3
2
|
import { AllDocsResponse, AnyDocument, Document } from "../"
|
|
3
|
+
import { Writable } from "stream"
|
|
4
|
+
|
|
5
|
+
export enum SearchIndex {
|
|
6
|
+
ROWS = "rows",
|
|
7
|
+
AUDIT = "audit",
|
|
8
|
+
}
|
|
4
9
|
|
|
5
10
|
export type PouchOptions = {
|
|
6
11
|
inMemory?: boolean
|
|
@@ -64,6 +69,18 @@ export const isDocument = (doc: any): doc is Document => {
|
|
|
64
69
|
return typeof doc === "object" && doc._id && doc._rev
|
|
65
70
|
}
|
|
66
71
|
|
|
72
|
+
export interface DatabaseDumpOpts {
|
|
73
|
+
filter?: (doc: AnyDocument) => boolean
|
|
74
|
+
batch_size?: number
|
|
75
|
+
batch_limit?: number
|
|
76
|
+
style?: "main_only" | "all_docs"
|
|
77
|
+
timeout?: number
|
|
78
|
+
doc_ids?: string[]
|
|
79
|
+
query_params?: any
|
|
80
|
+
view?: string
|
|
81
|
+
selector?: any
|
|
82
|
+
}
|
|
83
|
+
|
|
67
84
|
export interface Database {
|
|
68
85
|
name: string
|
|
69
86
|
|
|
@@ -88,7 +105,7 @@ export interface Database {
|
|
|
88
105
|
compact(): Promise<Nano.OkResponse | void>
|
|
89
106
|
// these are all PouchDB related functions that are rarely used - in future
|
|
90
107
|
// should be replaced by better typed/non-pouch implemented methods
|
|
91
|
-
dump(
|
|
108
|
+
dump(stream: Writable, opts?: DatabaseDumpOpts): Promise<any>
|
|
92
109
|
load(...args: any[]): Promise<any>
|
|
93
110
|
createIndex(...args: any[]): Promise<any>
|
|
94
111
|
deleteIndex(...args: any[]): Promise<any>
|
package/src/sdk/events/app.ts
CHANGED
|
@@ -3,50 +3,83 @@ import { BaseEvent } from "./event"
|
|
|
3
3
|
export interface AppCreatedEvent extends BaseEvent {
|
|
4
4
|
appId: string
|
|
5
5
|
version: string
|
|
6
|
+
audited: {
|
|
7
|
+
name: string
|
|
8
|
+
}
|
|
6
9
|
}
|
|
7
10
|
|
|
8
11
|
export interface AppUpdatedEvent extends BaseEvent {
|
|
9
12
|
appId: string
|
|
10
13
|
version: string
|
|
14
|
+
audited: {
|
|
15
|
+
name: string
|
|
16
|
+
}
|
|
11
17
|
}
|
|
12
18
|
|
|
13
19
|
export interface AppDeletedEvent extends BaseEvent {
|
|
14
20
|
appId: string
|
|
21
|
+
audited: {
|
|
22
|
+
name: string
|
|
23
|
+
}
|
|
15
24
|
}
|
|
16
25
|
|
|
17
26
|
export interface AppPublishedEvent extends BaseEvent {
|
|
18
27
|
appId: string
|
|
28
|
+
audited: {
|
|
29
|
+
name: string
|
|
30
|
+
}
|
|
19
31
|
}
|
|
20
32
|
|
|
21
33
|
export interface AppUnpublishedEvent extends BaseEvent {
|
|
22
34
|
appId: string
|
|
35
|
+
audited: {
|
|
36
|
+
name: string
|
|
37
|
+
}
|
|
23
38
|
}
|
|
24
39
|
|
|
25
40
|
export interface AppFileImportedEvent extends BaseEvent {
|
|
26
41
|
appId: string
|
|
42
|
+
audited: {
|
|
43
|
+
name: string
|
|
44
|
+
}
|
|
27
45
|
}
|
|
28
46
|
|
|
29
47
|
export interface AppTemplateImportedEvent extends BaseEvent {
|
|
30
48
|
appId: string
|
|
31
49
|
templateKey: string
|
|
50
|
+
audited: {
|
|
51
|
+
name: string
|
|
52
|
+
}
|
|
32
53
|
}
|
|
33
54
|
|
|
34
55
|
export interface AppVersionUpdatedEvent extends BaseEvent {
|
|
35
56
|
appId: string
|
|
36
57
|
currentVersion: string
|
|
37
58
|
updatedToVersion: string
|
|
59
|
+
audited: {
|
|
60
|
+
name: string
|
|
61
|
+
}
|
|
38
62
|
}
|
|
39
63
|
|
|
40
64
|
export interface AppVersionRevertedEvent extends BaseEvent {
|
|
41
65
|
appId: string
|
|
42
66
|
currentVersion: string
|
|
43
67
|
revertedToVersion: string
|
|
68
|
+
audited: {
|
|
69
|
+
name: string
|
|
70
|
+
}
|
|
44
71
|
}
|
|
45
72
|
|
|
46
73
|
export interface AppRevertedEvent extends BaseEvent {
|
|
47
74
|
appId: string
|
|
75
|
+
audited: {
|
|
76
|
+
name: string
|
|
77
|
+
}
|
|
48
78
|
}
|
|
49
79
|
|
|
50
80
|
export interface AppExportedEvent extends BaseEvent {
|
|
51
81
|
appId: string
|
|
82
|
+
audited: {
|
|
83
|
+
name: string
|
|
84
|
+
}
|
|
52
85
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseEvent } from "./event"
|
|
2
|
+
import { AuditLogSearchParams } from "../../api"
|
|
3
|
+
|
|
4
|
+
export interface AuditLogFilteredEvent extends BaseEvent {
|
|
5
|
+
filters: AuditLogSearchParams
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface AuditLogDownloadedEvent extends BaseEvent {
|
|
9
|
+
filters: AuditLogSearchParams
|
|
10
|
+
}
|
package/src/sdk/events/auth.ts
CHANGED
|
@@ -7,10 +7,16 @@ export type SSOType = ConfigType.OIDC | ConfigType.GOOGLE
|
|
|
7
7
|
export interface LoginEvent extends BaseEvent {
|
|
8
8
|
userId: string
|
|
9
9
|
source: LoginSource
|
|
10
|
+
audited: {
|
|
11
|
+
email: string
|
|
12
|
+
}
|
|
10
13
|
}
|
|
11
14
|
|
|
12
15
|
export interface LogoutEvent extends BaseEvent {
|
|
13
16
|
userId: string
|
|
17
|
+
audited: {
|
|
18
|
+
email?: string
|
|
19
|
+
}
|
|
14
20
|
}
|
|
15
21
|
|
|
16
22
|
export interface SSOCreatedEvent extends BaseEvent {
|
|
@@ -5,6 +5,9 @@ export interface AutomationCreatedEvent extends BaseEvent {
|
|
|
5
5
|
automationId: string
|
|
6
6
|
triggerId: string
|
|
7
7
|
triggerType: string
|
|
8
|
+
audited: {
|
|
9
|
+
name: string
|
|
10
|
+
}
|
|
8
11
|
}
|
|
9
12
|
|
|
10
13
|
export interface AutomationTriggerUpdatedEvent extends BaseEvent {
|
|
@@ -19,6 +22,9 @@ export interface AutomationDeletedEvent extends BaseEvent {
|
|
|
19
22
|
automationId: string
|
|
20
23
|
triggerId: string
|
|
21
24
|
triggerType: string
|
|
25
|
+
audited: {
|
|
26
|
+
name: string
|
|
27
|
+
}
|
|
22
28
|
}
|
|
23
29
|
|
|
24
30
|
export interface AutomationTestedEvent extends BaseEvent {
|
|
@@ -35,6 +41,9 @@ export interface AutomationStepCreatedEvent extends BaseEvent {
|
|
|
35
41
|
triggerType: string
|
|
36
42
|
stepId: string
|
|
37
43
|
stepType: string
|
|
44
|
+
audited: {
|
|
45
|
+
name: string
|
|
46
|
+
}
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
export interface AutomationStepDeletedEvent extends BaseEvent {
|
|
@@ -44,6 +53,9 @@ export interface AutomationStepDeletedEvent extends BaseEvent {
|
|
|
44
53
|
triggerType: string
|
|
45
54
|
stepId: string
|
|
46
55
|
stepType: string
|
|
56
|
+
audited: {
|
|
57
|
+
name: string
|
|
58
|
+
}
|
|
47
59
|
}
|
|
48
60
|
|
|
49
61
|
export interface AutomationsRunEvent extends BaseEvent {
|
package/src/sdk/events/backup.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface AppBackupRestoreEvent extends BaseEvent {
|
|
|
5
5
|
appId: string
|
|
6
6
|
restoreId: string
|
|
7
7
|
backupCreatedAt: string
|
|
8
|
+
name: string
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
export interface AppBackupTriggeredEvent extends BaseEvent {
|
|
@@ -12,4 +13,5 @@ export interface AppBackupTriggeredEvent extends BaseEvent {
|
|
|
12
13
|
appId: string
|
|
13
14
|
trigger: AppBackupTrigger
|
|
14
15
|
type: AppBackupType
|
|
16
|
+
name: string
|
|
15
17
|
}
|
package/src/sdk/events/event.ts
CHANGED
|
@@ -180,6 +180,190 @@ export enum Event {
|
|
|
180
180
|
ENVIRONMENT_VARIABLE_CREATED = "environment_variable:created",
|
|
181
181
|
ENVIRONMENT_VARIABLE_DELETED = "environment_variable:deleted",
|
|
182
182
|
ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED = "environment_variable:upgrade_panel_opened",
|
|
183
|
+
|
|
184
|
+
// AUDIT LOG
|
|
185
|
+
AUDIT_LOGS_FILTERED = "audit_log:filtered",
|
|
186
|
+
AUDIT_LOGS_DOWNLOADED = "audit_log:downloaded",
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// all events that are not audited have been added to this record as undefined, this means
|
|
190
|
+
// that Typescript can protect us against new events being added and auditing of those
|
|
191
|
+
// events not being considered. This might be a little ugly, but provides a level of
|
|
192
|
+
// Typescript build protection for the audit log feature, any new event also needs to be
|
|
193
|
+
// added to this map, during which the developer will need to consider if it should be
|
|
194
|
+
// a user facing event or not.
|
|
195
|
+
export const AuditedEventFriendlyName: Record<Event, string | undefined> = {
|
|
196
|
+
// USER
|
|
197
|
+
[Event.USER_CREATED]: `User "{{ email }}" created`,
|
|
198
|
+
[Event.USER_UPDATED]: `User "{{ email }}" updated`,
|
|
199
|
+
[Event.USER_DELETED]: `User "{{ email }}" deleted`,
|
|
200
|
+
[Event.USER_PERMISSION_ADMIN_ASSIGNED]: `User "{{ email }}" admin role assigned`,
|
|
201
|
+
[Event.USER_PERMISSION_ADMIN_REMOVED]: `User "{{ email }}" admin role removed`,
|
|
202
|
+
[Event.USER_PERMISSION_BUILDER_ASSIGNED]: `User "{{ email }}" builder role assigned`,
|
|
203
|
+
[Event.USER_PERMISSION_BUILDER_REMOVED]: `User "{{ email }}" builder role removed`,
|
|
204
|
+
[Event.USER_INVITED]: `User "{{ email }}" invited`,
|
|
205
|
+
[Event.USER_INVITED_ACCEPTED]: `User "{{ email }}" accepted invite`,
|
|
206
|
+
[Event.USER_PASSWORD_UPDATED]: `User "{{ email }}" password updated`,
|
|
207
|
+
[Event.USER_PASSWORD_RESET_REQUESTED]: `User "{{ email }}" password reset requested`,
|
|
208
|
+
[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`,
|
|
214
|
+
[Event.USER_GROUP_PERMISSIONS_EDITED]: `User group "{{ name }}" permissions edited`,
|
|
215
|
+
[Event.USER_PASSWORD_FORCE_RESET]: undefined,
|
|
216
|
+
[Event.USER_GROUP_ONBOARDING]: undefined,
|
|
217
|
+
[Event.USER_ONBOARDING_COMPLETE]: undefined,
|
|
218
|
+
|
|
219
|
+
// EMAIL
|
|
220
|
+
[Event.EMAIL_SMTP_CREATED]: `Email configuration created`,
|
|
221
|
+
[Event.EMAIL_SMTP_UPDATED]: `Email configuration updated`,
|
|
222
|
+
|
|
223
|
+
// AUTH
|
|
224
|
+
[Event.AUTH_SSO_CREATED]: `SSO configuration created`,
|
|
225
|
+
[Event.AUTH_SSO_UPDATED]: `SSO configuration updated`,
|
|
226
|
+
[Event.AUTH_SSO_ACTIVATED]: `SSO configuration activated`,
|
|
227
|
+
[Event.AUTH_SSO_DEACTIVATED]: `SSO configuration deactivated`,
|
|
228
|
+
[Event.AUTH_LOGIN]: `User "{{ email }}" logged in`,
|
|
229
|
+
[Event.AUTH_LOGOUT]: `User "{{ email }}" logged out`,
|
|
230
|
+
|
|
231
|
+
// ORG
|
|
232
|
+
[Event.ORG_NAME_UPDATED]: `Organisation name updated`,
|
|
233
|
+
[Event.ORG_LOGO_UPDATED]: `Organisation logo updated`,
|
|
234
|
+
[Event.ORG_PLATFORM_URL_UPDATED]: `Organisation platform URL updated`,
|
|
235
|
+
|
|
236
|
+
// APP
|
|
237
|
+
[Event.APP_CREATED]: `App "{{ name }}" created`,
|
|
238
|
+
[Event.APP_UPDATED]: `App "{{ name }}" updated`,
|
|
239
|
+
[Event.APP_DELETED]: `App "{{ name }}" deleted`,
|
|
240
|
+
[Event.APP_PUBLISHED]: `App "{{ name }}" published`,
|
|
241
|
+
[Event.APP_UNPUBLISHED]: `App "{{ name }}" unpublished`,
|
|
242
|
+
[Event.APP_TEMPLATE_IMPORTED]: `App "{{ name }}" template imported`,
|
|
243
|
+
[Event.APP_FILE_IMPORTED]: `App "{{ name }}" file imported`,
|
|
244
|
+
[Event.APP_VERSION_UPDATED]: `App "{{ name }}" version updated`,
|
|
245
|
+
[Event.APP_VERSION_REVERTED]: `App "{{ name }}" version reverted`,
|
|
246
|
+
[Event.APP_REVERTED]: `App "{{ name }}" reverted`,
|
|
247
|
+
[Event.APP_EXPORTED]: `App "{{ name }}" exported`,
|
|
248
|
+
[Event.APP_BACKUP_RESTORED]: `App backup "{{ name }}" restored`,
|
|
249
|
+
[Event.APP_BACKUP_TRIGGERED]: `App backup "{{ name }}" triggered`,
|
|
250
|
+
|
|
251
|
+
// DATASOURCE
|
|
252
|
+
[Event.DATASOURCE_CREATED]: `Datasource created`,
|
|
253
|
+
[Event.DATASOURCE_UPDATED]: `Datasource updated`,
|
|
254
|
+
[Event.DATASOURCE_DELETED]: `Datasource deleted`,
|
|
255
|
+
|
|
256
|
+
// QUERY
|
|
257
|
+
[Event.QUERY_CREATED]: `Query created`,
|
|
258
|
+
[Event.QUERY_UPDATED]: `Query updated`,
|
|
259
|
+
[Event.QUERY_DELETED]: `Query deleted`,
|
|
260
|
+
[Event.QUERY_IMPORT]: `Query import`,
|
|
261
|
+
[Event.QUERIES_RUN]: undefined,
|
|
262
|
+
[Event.QUERY_PREVIEWED]: undefined,
|
|
263
|
+
|
|
264
|
+
// TABLE
|
|
265
|
+
[Event.TABLE_CREATED]: `Table "{{ name }}" created`,
|
|
266
|
+
[Event.TABLE_UPDATED]: `Table "{{ name }}" updated`,
|
|
267
|
+
[Event.TABLE_DELETED]: `Table "{{ name }}" deleted`,
|
|
268
|
+
[Event.TABLE_EXPORTED]: `Table "{{ name }}" exported`,
|
|
269
|
+
[Event.TABLE_IMPORTED]: `Table "{{ name }}" imported`,
|
|
270
|
+
[Event.TABLE_DATA_IMPORTED]: `Data imported to table`,
|
|
271
|
+
|
|
272
|
+
// ROWS
|
|
273
|
+
[Event.ROWS_CREATED]: `Rows created`,
|
|
274
|
+
[Event.ROWS_IMPORTED]: `Rows imported`,
|
|
275
|
+
|
|
276
|
+
// AUTOMATION
|
|
277
|
+
[Event.AUTOMATION_CREATED]: `Automation "{{ name }}" created`,
|
|
278
|
+
[Event.AUTOMATION_DELETED]: `Automation "{{ name }}" deleted`,
|
|
279
|
+
[Event.AUTOMATION_STEP_CREATED]: `Automation "{{ name }}" step added`,
|
|
280
|
+
[Event.AUTOMATION_STEP_DELETED]: `Automation "{{ name }}" step removed`,
|
|
281
|
+
[Event.AUTOMATION_TESTED]: undefined,
|
|
282
|
+
[Event.AUTOMATIONS_RUN]: undefined,
|
|
283
|
+
[Event.AUTOMATION_TRIGGER_UPDATED]: undefined,
|
|
284
|
+
|
|
285
|
+
// SCREEN
|
|
286
|
+
[Event.SCREEN_CREATED]: `Screen "{{ name }}" created`,
|
|
287
|
+
[Event.SCREEN_DELETED]: `Screen "{{ name }}" deleted`,
|
|
288
|
+
|
|
289
|
+
// COMPONENT
|
|
290
|
+
[Event.COMPONENT_CREATED]: `Component created`,
|
|
291
|
+
[Event.COMPONENT_DELETED]: `Component deleted`,
|
|
292
|
+
|
|
293
|
+
// ENVIRONMENT VARIABLE
|
|
294
|
+
[Event.ENVIRONMENT_VARIABLE_CREATED]: `Environment variable created`,
|
|
295
|
+
[Event.ENVIRONMENT_VARIABLE_DELETED]: `Environment variable deleted`,
|
|
296
|
+
[Event.ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED]: undefined,
|
|
297
|
+
|
|
298
|
+
// PLUGIN
|
|
299
|
+
[Event.PLUGIN_IMPORTED]: `Plugin imported`,
|
|
300
|
+
[Event.PLUGIN_DELETED]: `Plugin deleted`,
|
|
301
|
+
[Event.PLUGIN_INIT]: undefined,
|
|
302
|
+
|
|
303
|
+
// ROLE - NOT AUDITED
|
|
304
|
+
[Event.ROLE_CREATED]: undefined,
|
|
305
|
+
[Event.ROLE_UPDATED]: undefined,
|
|
306
|
+
[Event.ROLE_DELETED]: undefined,
|
|
307
|
+
[Event.ROLE_ASSIGNED]: undefined,
|
|
308
|
+
[Event.ROLE_UNASSIGNED]: undefined,
|
|
309
|
+
|
|
310
|
+
// LICENSE - NOT AUDITED
|
|
311
|
+
[Event.LICENSE_PLAN_CHANGED]: undefined,
|
|
312
|
+
[Event.LICENSE_TIER_CHANGED]: undefined,
|
|
313
|
+
[Event.LICENSE_ACTIVATED]: undefined,
|
|
314
|
+
[Event.LICENSE_PAYMENT_FAILED]: undefined,
|
|
315
|
+
[Event.LICENSE_PAYMENT_RECOVERED]: undefined,
|
|
316
|
+
[Event.LICENSE_CHECKOUT_OPENED]: undefined,
|
|
317
|
+
[Event.LICENSE_CHECKOUT_SUCCESS]: undefined,
|
|
318
|
+
[Event.LICENSE_PORTAL_OPENED]: undefined,
|
|
319
|
+
|
|
320
|
+
// ACCOUNT - NOT AUDITED
|
|
321
|
+
[Event.ACCOUNT_CREATED]: undefined,
|
|
322
|
+
[Event.ACCOUNT_DELETED]: undefined,
|
|
323
|
+
[Event.ACCOUNT_VERIFIED]: undefined,
|
|
324
|
+
|
|
325
|
+
// BACKFILL - NOT AUDITED
|
|
326
|
+
[Event.APP_BACKFILL_SUCCEEDED]: undefined,
|
|
327
|
+
[Event.APP_BACKFILL_FAILED]: undefined,
|
|
328
|
+
[Event.TENANT_BACKFILL_SUCCEEDED]: undefined,
|
|
329
|
+
[Event.TENANT_BACKFILL_FAILED]: undefined,
|
|
330
|
+
[Event.INSTALLATION_BACKFILL_SUCCEEDED]: undefined,
|
|
331
|
+
[Event.INSTALLATION_BACKFILL_FAILED]: undefined,
|
|
332
|
+
|
|
333
|
+
// LAYOUT - NOT AUDITED
|
|
334
|
+
[Event.LAYOUT_CREATED]: undefined,
|
|
335
|
+
[Event.LAYOUT_DELETED]: undefined,
|
|
336
|
+
|
|
337
|
+
// VIEW - NOT AUDITED
|
|
338
|
+
[Event.VIEW_CREATED]: undefined,
|
|
339
|
+
[Event.VIEW_UPDATED]: undefined,
|
|
340
|
+
[Event.VIEW_DELETED]: undefined,
|
|
341
|
+
[Event.VIEW_EXPORTED]: undefined,
|
|
342
|
+
[Event.VIEW_FILTER_CREATED]: undefined,
|
|
343
|
+
[Event.VIEW_FILTER_UPDATED]: undefined,
|
|
344
|
+
[Event.VIEW_FILTER_DELETED]: undefined,
|
|
345
|
+
[Event.VIEW_CALCULATION_CREATED]: undefined,
|
|
346
|
+
[Event.VIEW_CALCULATION_UPDATED]: undefined,
|
|
347
|
+
[Event.VIEW_CALCULATION_DELETED]: undefined,
|
|
348
|
+
|
|
349
|
+
// SERVED - NOT AUDITED
|
|
350
|
+
[Event.SERVED_BUILDER]: undefined,
|
|
351
|
+
[Event.SERVED_APP]: undefined,
|
|
352
|
+
[Event.SERVED_APP_PREVIEW]: undefined,
|
|
353
|
+
|
|
354
|
+
// ANALYTICS - NOT AUDITED
|
|
355
|
+
[Event.ANALYTICS_OPT_OUT]: undefined,
|
|
356
|
+
[Event.ANALYTICS_OPT_IN]: undefined,
|
|
357
|
+
|
|
358
|
+
// INSTALLATION - NOT AUDITED
|
|
359
|
+
[Event.INSTALLATION_VERSION_CHECKED]: undefined,
|
|
360
|
+
[Event.INSTALLATION_VERSION_UPGRADED]: undefined,
|
|
361
|
+
[Event.INSTALLATION_VERSION_DOWNGRADED]: undefined,
|
|
362
|
+
[Event.INSTALLATION_FIRST_STARTUP]: undefined,
|
|
363
|
+
|
|
364
|
+
// AUDIT LOG - NOT AUDITED
|
|
365
|
+
[Event.AUDIT_LOGS_FILTERED]: undefined,
|
|
366
|
+
[Event.AUDIT_LOGS_DOWNLOADED]: undefined,
|
|
183
367
|
}
|
|
184
368
|
|
|
185
369
|
// properties added at the final stage of the event pipeline
|
|
@@ -191,6 +375,11 @@ export interface BaseEvent {
|
|
|
191
375
|
installationId?: string
|
|
192
376
|
tenantId?: string
|
|
193
377
|
hosting?: Hosting
|
|
378
|
+
// any props in the audited section will be removed before passing events
|
|
379
|
+
// up out of system (purely for use with auditing)
|
|
380
|
+
audited?: {
|
|
381
|
+
[key: string]: any
|
|
382
|
+
}
|
|
194
383
|
}
|
|
195
384
|
|
|
196
385
|
export type TableExportFormat = "json" | "csv"
|