@budibase/types 2.5.4 → 2.5.5-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.
Files changed (124) hide show
  1. package/dist/cjs/api/account/accounts.d.ts +11 -0
  2. package/dist/cjs/api/account/accounts.js +3 -0
  3. package/dist/cjs/api/account/accounts.js.map +1 -0
  4. package/dist/cjs/api/account/index.d.ts +1 -0
  5. package/dist/cjs/api/account/index.js +1 -0
  6. package/dist/cjs/api/account/index.js.map +1 -1
  7. package/dist/cjs/api/web/global/index.d.ts +1 -0
  8. package/dist/cjs/api/web/global/index.js +1 -0
  9. package/dist/cjs/api/web/global/index.js.map +1 -1
  10. package/dist/cjs/api/web/global/scim/groups.d.ts +27 -0
  11. package/dist/cjs/api/web/global/scim/groups.js +3 -0
  12. package/dist/cjs/api/web/global/scim/groups.js.map +1 -0
  13. package/dist/cjs/api/web/global/scim/index.d.ts +3 -0
  14. package/dist/cjs/api/web/global/scim/index.js +20 -0
  15. package/dist/cjs/api/web/global/scim/index.js.map +1 -0
  16. package/dist/cjs/api/web/global/scim/shared.d.ts +12 -0
  17. package/dist/cjs/api/web/global/scim/shared.js +3 -0
  18. package/dist/cjs/api/web/global/scim/shared.js.map +1 -0
  19. package/dist/cjs/api/web/global/scim/users.d.ts +48 -0
  20. package/dist/cjs/api/web/global/scim/users.js +3 -0
  21. package/dist/cjs/api/web/global/scim/users.js.map +1 -0
  22. package/dist/cjs/api/web/index.d.ts +1 -0
  23. package/dist/cjs/api/web/index.js +1 -0
  24. package/dist/cjs/api/web/index.js.map +1 -1
  25. package/dist/cjs/api/web/pagination.d.ts +1 -1
  26. package/dist/cjs/api/web/system/environment.d.ts +8 -0
  27. package/dist/cjs/api/web/system/environment.js +3 -0
  28. package/dist/cjs/api/web/system/environment.js.map +1 -0
  29. package/dist/cjs/api/web/system/index.d.ts +1 -0
  30. package/dist/cjs/api/web/system/index.js +18 -0
  31. package/dist/cjs/api/web/system/index.js.map +1 -0
  32. package/dist/cjs/documents/app/automation.d.ts +2 -1
  33. package/dist/cjs/documents/app/automation.js +1 -0
  34. package/dist/cjs/documents/app/automation.js.map +1 -1
  35. package/dist/cjs/documents/global/config.d.ts +14 -11
  36. package/dist/cjs/documents/global/config.js +4 -1
  37. package/dist/cjs/documents/global/config.js.map +1 -1
  38. package/dist/cjs/documents/global/user.d.ts +3 -0
  39. package/dist/cjs/documents/global/user.js.map +1 -1
  40. package/dist/cjs/documents/global/userGroup.d.ts +4 -0
  41. package/dist/cjs/sdk/db.d.ts +2 -1
  42. package/dist/cjs/sdk/db.js +1 -0
  43. package/dist/cjs/sdk/db.js.map +1 -1
  44. package/dist/cjs/sdk/events/event.js +8 -8
  45. package/dist/cjs/sdk/events/event.js.map +1 -1
  46. package/dist/cjs/sdk/events/user.d.ts +3 -0
  47. package/dist/cjs/sdk/events/userGroup.d.ts +5 -0
  48. package/dist/cjs/sdk/licensing/feature.d.ts +2 -1
  49. package/dist/cjs/sdk/licensing/feature.js +1 -0
  50. package/dist/cjs/sdk/licensing/feature.js.map +1 -1
  51. package/dist/cjs/tsconfig-cjs.build.tsbuildinfo +1 -1
  52. package/dist/mjs/api/account/accounts.d.ts +11 -0
  53. package/dist/mjs/api/account/accounts.js +2 -0
  54. package/dist/mjs/api/account/accounts.js.map +1 -0
  55. package/dist/mjs/api/account/index.d.ts +1 -0
  56. package/dist/mjs/api/account/index.js +1 -0
  57. package/dist/mjs/api/account/index.js.map +1 -1
  58. package/dist/mjs/api/web/global/index.d.ts +1 -0
  59. package/dist/mjs/api/web/global/index.js +1 -0
  60. package/dist/mjs/api/web/global/index.js.map +1 -1
  61. package/dist/mjs/api/web/global/scim/groups.d.ts +27 -0
  62. package/dist/mjs/api/web/global/scim/groups.js +2 -0
  63. package/dist/mjs/api/web/global/scim/groups.js.map +1 -0
  64. package/dist/mjs/api/web/global/scim/index.d.ts +3 -0
  65. package/dist/mjs/api/web/global/scim/index.js +4 -0
  66. package/dist/mjs/api/web/global/scim/index.js.map +1 -0
  67. package/dist/mjs/api/web/global/scim/shared.d.ts +12 -0
  68. package/dist/mjs/api/web/global/scim/shared.js +2 -0
  69. package/dist/mjs/api/web/global/scim/shared.js.map +1 -0
  70. package/dist/mjs/api/web/global/scim/users.d.ts +48 -0
  71. package/dist/mjs/api/web/global/scim/users.js +2 -0
  72. package/dist/mjs/api/web/global/scim/users.js.map +1 -0
  73. package/dist/mjs/api/web/index.d.ts +1 -0
  74. package/dist/mjs/api/web/index.js +1 -0
  75. package/dist/mjs/api/web/index.js.map +1 -1
  76. package/dist/mjs/api/web/pagination.d.ts +1 -1
  77. package/dist/mjs/api/web/system/environment.d.ts +8 -0
  78. package/dist/mjs/api/web/system/environment.js +2 -0
  79. package/dist/mjs/api/web/system/environment.js.map +1 -0
  80. package/dist/mjs/api/web/system/index.d.ts +1 -0
  81. package/dist/mjs/api/web/system/index.js +2 -0
  82. package/dist/mjs/api/web/system/index.js.map +1 -0
  83. package/dist/mjs/documents/app/automation.d.ts +2 -1
  84. package/dist/mjs/documents/app/automation.js +1 -0
  85. package/dist/mjs/documents/app/automation.js.map +1 -1
  86. package/dist/mjs/documents/global/config.d.ts +14 -11
  87. package/dist/mjs/documents/global/config.js +2 -0
  88. package/dist/mjs/documents/global/config.js.map +1 -1
  89. package/dist/mjs/documents/global/user.d.ts +3 -0
  90. package/dist/mjs/documents/global/user.js.map +1 -1
  91. package/dist/mjs/documents/global/userGroup.d.ts +4 -0
  92. package/dist/mjs/sdk/db.d.ts +2 -1
  93. package/dist/mjs/sdk/db.js +1 -0
  94. package/dist/mjs/sdk/db.js.map +1 -1
  95. package/dist/mjs/sdk/events/event.js +8 -8
  96. package/dist/mjs/sdk/events/event.js.map +1 -1
  97. package/dist/mjs/sdk/events/user.d.ts +3 -0
  98. package/dist/mjs/sdk/events/userGroup.d.ts +5 -0
  99. package/dist/mjs/sdk/licensing/feature.d.ts +2 -1
  100. package/dist/mjs/sdk/licensing/feature.js +1 -0
  101. package/dist/mjs/sdk/licensing/feature.js.map +1 -1
  102. package/dist/mjs/tsconfig.build.tsbuildinfo +1 -1
  103. package/package.json +6 -3
  104. package/src/api/account/accounts.ts +13 -0
  105. package/src/api/account/index.ts +1 -0
  106. package/src/api/web/global/index.ts +1 -0
  107. package/src/api/web/global/scim/groups.ts +30 -0
  108. package/src/api/web/global/scim/index.ts +3 -0
  109. package/src/api/web/global/scim/shared.ts +14 -0
  110. package/src/api/web/global/scim/users.ts +53 -0
  111. package/src/api/web/index.ts +1 -0
  112. package/src/api/web/pagination.ts +1 -1
  113. package/src/api/web/system/environment.ts +8 -0
  114. package/src/api/web/system/index.ts +1 -0
  115. package/src/documents/app/automation.ts +1 -0
  116. package/src/documents/global/config.ts +16 -14
  117. package/src/documents/global/user.ts +1 -0
  118. package/src/documents/global/userGroup.ts +4 -0
  119. package/src/sdk/db.ts +2 -0
  120. package/src/sdk/events/event.ts +8 -8
  121. package/src/sdk/events/user.ts +3 -0
  122. package/src/sdk/events/userGroup.ts +5 -0
  123. package/src/sdk/licensing/feature.ts +1 -0
  124. package/tsconfig-base.build.json +2 -1
@@ -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: any
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
  }
@@ -53,6 +53,7 @@ export interface User extends Document {
53
53
  dayPassRecordedAt?: string
54
54
  userGroups?: string[]
55
55
  onboardedAt?: string
56
+ scimInfo?: { isSync: true } & Record<string, any>
56
57
  }
57
58
 
58
59
  export enum UserStatus {
@@ -7,6 +7,10 @@ export interface UserGroup extends Document {
7
7
  users?: GroupUser[]
8
8
  roles?: UserGroupRoles
9
9
  createdAt?: number
10
+ scimInfo?: {
11
+ externalId: string
12
+ isSync: boolean
13
+ }
10
14
  }
11
15
 
12
16
  export interface GroupUser {
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 = {
@@ -194,9 +194,9 @@ export enum Event {
194
194
  // a user facing event or not.
195
195
  export const AuditedEventFriendlyName: Record<Event, string | undefined> = {
196
196
  // USER
197
- [Event.USER_CREATED]: `User "{{ email }}" created`,
198
- [Event.USER_UPDATED]: `User "{{ email }}" updated`,
199
- [Event.USER_DELETED]: `User "{{ email }}" deleted`,
197
+ [Event.USER_CREATED]: `User "{{ email }}" created{{#if viaScim}} via SCIM{{/if}}`,
198
+ [Event.USER_UPDATED]: `User "{{ email }}" updated{{#if viaScim}} via SCIM{{/if}}`,
199
+ [Event.USER_DELETED]: `User "{{ email }}" deleted{{#if viaScim}} via SCIM{{/if}}`,
200
200
  [Event.USER_PERMISSION_ADMIN_ASSIGNED]: `User "{{ email }}" admin role assigned`,
201
201
  [Event.USER_PERMISSION_ADMIN_REMOVED]: `User "{{ email }}" admin role removed`,
202
202
  [Event.USER_PERMISSION_BUILDER_ASSIGNED]: `User "{{ email }}" builder role assigned`,
@@ -206,11 +206,11 @@ export const AuditedEventFriendlyName: Record<Event, string | undefined> = {
206
206
  [Event.USER_PASSWORD_UPDATED]: `User "{{ email }}" password updated`,
207
207
  [Event.USER_PASSWORD_RESET_REQUESTED]: `User "{{ email }}" password reset requested`,
208
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`,
209
+ [Event.USER_GROUP_CREATED]: `User group "{{ name }}" created{{#if viaScim}} via SCIM{{/if}}`,
210
+ [Event.USER_GROUP_UPDATED]: `User group "{{ name }}" updated{{#if viaScim}} via SCIM{{/if}}`,
211
+ [Event.USER_GROUP_DELETED]: `User group "{{ name }}" deleted{{#if viaScim}} via SCIM{{/if}}`,
212
+ [Event.USER_GROUP_USERS_ADDED]: `User group "{{ name }}" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}`,
213
+ [Event.USER_GROUP_USERS_REMOVED]: `User group "{{ name }}" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}`,
214
214
  [Event.USER_GROUP_PERMISSIONS_EDITED]: `User group "{{ name }}" permissions edited`,
215
215
  [Event.USER_PASSWORD_FORCE_RESET]: undefined,
216
216
  [Event.USER_GROUP_ONBOARDING]: undefined,
@@ -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
  }
@@ -5,4 +5,5 @@ export enum Feature {
5
5
  AUDIT_LOGS = "auditLogs",
6
6
  ENFORCEABLE_SSO = "enforceableSSO",
7
7
  BRANDING = "branding",
8
+ SCIM = "scim",
8
9
  }
@@ -7,7 +7,8 @@
7
7
  "resolveJsonModule": true,
8
8
  "incremental": true,
9
9
  "sourceMap": true,
10
- "declaration": true
10
+ "declaration": true,
11
+ "skipLibCheck": true
11
12
  },
12
13
  "include": ["src/**/*"],
13
14
  "exclude": ["node_modules", "dist", "**/*.spec.ts", "**/*.spec.js"]