@budibase/types 2.1.39 → 2.1.40-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 (90) hide show
  1. package/dist/api/web/user.d.ts +5 -0
  2. package/dist/documents/app/app.d.ts +2 -1
  3. package/dist/documents/app/automation.d.ts +28 -3
  4. package/dist/documents/app/automation.js +1 -0
  5. package/dist/documents/app/automation.js.map +1 -1
  6. package/dist/documents/app/backup.d.ts +1 -0
  7. package/dist/documents/app/index.d.ts +1 -0
  8. package/dist/documents/app/index.js +1 -0
  9. package/dist/documents/app/index.js.map +1 -1
  10. package/dist/documents/app/links.d.ts +19 -0
  11. package/dist/documents/app/links.js +3 -0
  12. package/dist/documents/app/links.js.map +1 -0
  13. package/dist/documents/app/role.d.ts +1 -1
  14. package/dist/documents/app/screen.d.ts +6 -5
  15. package/dist/documents/app/table.d.ts +23 -3
  16. package/dist/documents/app/view.d.ts +4 -1
  17. package/dist/documents/app/view.js.map +1 -1
  18. package/dist/documents/document.d.ts +3 -0
  19. package/dist/documents/global/config.d.ts +22 -10
  20. package/dist/documents/global/config.js +2 -0
  21. package/dist/documents/global/config.js.map +1 -1
  22. package/dist/documents/global/index.d.ts +1 -0
  23. package/dist/documents/global/index.js +1 -0
  24. package/dist/documents/global/index.js.map +1 -1
  25. package/dist/documents/global/templates.d.ts +8 -0
  26. package/dist/documents/global/templates.js +3 -0
  27. package/dist/documents/global/templates.js.map +1 -0
  28. package/dist/documents/global/user.d.ts +31 -3
  29. package/dist/documents/platform/index.d.ts +1 -0
  30. package/dist/documents/platform/index.js +1 -0
  31. package/dist/documents/platform/index.js.map +1 -1
  32. package/dist/documents/platform/tenants.d.ts +4 -0
  33. package/dist/documents/platform/tenants.js +3 -0
  34. package/dist/documents/platform/tenants.js.map +1 -0
  35. package/dist/documents/pouch.d.ts +7 -2
  36. package/dist/sdk/auth.d.ts +8 -0
  37. package/dist/sdk/context.d.ts +1 -1
  38. package/dist/sdk/db.d.ts +55 -4
  39. package/dist/sdk/db.js +5 -1
  40. package/dist/sdk/db.js.map +1 -1
  41. package/dist/sdk/events/role.d.ts +3 -3
  42. package/dist/sdk/featureFlag.d.ts +6 -0
  43. package/dist/sdk/featureFlag.js +8 -0
  44. package/dist/sdk/featureFlag.js.map +1 -0
  45. package/dist/sdk/index.d.ts +2 -0
  46. package/dist/sdk/index.js +2 -0
  47. package/dist/sdk/index.js.map +1 -1
  48. package/dist/sdk/koa.d.ts +13 -4
  49. package/dist/sdk/middleware/index.d.ts +2 -0
  50. package/dist/sdk/middleware/index.js +19 -0
  51. package/dist/sdk/middleware/index.js.map +1 -0
  52. package/dist/sdk/middleware/matchers.d.ts +21 -0
  53. package/dist/sdk/middleware/matchers.js +3 -0
  54. package/dist/sdk/middleware/matchers.js.map +1 -0
  55. package/dist/sdk/middleware/tenancy.d.ts +12 -0
  56. package/dist/sdk/middleware/tenancy.js +12 -0
  57. package/dist/sdk/middleware/tenancy.js.map +1 -0
  58. package/dist/sdk/search.d.ts +2 -2
  59. package/dist/tsconfig.build.tsbuildinfo +1 -1
  60. package/package.json +3 -2
  61. package/src/api/web/user.ts +6 -0
  62. package/src/documents/app/app.ts +2 -1
  63. package/src/documents/app/automation.ts +30 -3
  64. package/src/documents/app/backup.ts +1 -0
  65. package/src/documents/app/index.ts +1 -0
  66. package/src/documents/app/links.ts +21 -0
  67. package/src/documents/app/role.ts +1 -1
  68. package/src/documents/app/screen.ts +7 -5
  69. package/src/documents/app/table.ts +26 -3
  70. package/src/documents/app/view.ts +4 -1
  71. package/src/documents/document.ts +4 -0
  72. package/src/documents/global/config.ts +23 -9
  73. package/src/documents/global/index.ts +1 -0
  74. package/src/documents/global/templates.ts +9 -0
  75. package/src/documents/global/user.ts +33 -3
  76. package/src/documents/platform/index.ts +1 -0
  77. package/src/documents/platform/tenants.ts +5 -0
  78. package/src/documents/pouch.ts +8 -2
  79. package/src/sdk/auth.ts +10 -0
  80. package/src/sdk/context.ts +1 -1
  81. package/src/sdk/db.ts +76 -4
  82. package/src/sdk/events/role.ts +3 -3
  83. package/src/sdk/featureFlag.ts +7 -0
  84. package/src/sdk/index.ts +2 -0
  85. package/src/sdk/koa.ts +13 -4
  86. package/src/sdk/middleware/index.ts +2 -0
  87. package/src/sdk/middleware/matchers.ts +22 -0
  88. package/src/sdk/middleware/tenancy.ts +13 -0
  89. package/src/sdk/search.ts +2 -2
  90. package/tsconfig.build.json +0 -1
@@ -1,5 +1,6 @@
1
1
  import { Document } from "../document"
2
2
  import { View } from "./view"
3
+ import { RenameColumn } from "../../sdk"
3
4
 
4
5
  export interface FieldSchema {
5
6
  // TODO: replace with field types enum when done
@@ -7,10 +8,12 @@ export interface FieldSchema {
7
8
  externalType?: string
8
9
  fieldName?: string
9
10
  name: string
11
+ sortable?: boolean
10
12
  tableId?: string
11
13
  relationshipType?: string
12
14
  through?: string
13
15
  foreignKey?: string
16
+ icon?: string
14
17
  autocolumn?: boolean
15
18
  subtype?: string
16
19
  throughFrom?: string
@@ -19,6 +22,9 @@ export interface FieldSchema {
19
22
  formulaType?: string
20
23
  main?: boolean
21
24
  ignoreTimezones?: boolean
25
+ timeOnly?: boolean
26
+ lastID?: number
27
+ useRichText?: boolean | null
22
28
  meta?: {
23
29
  toTable: string
24
30
  toKey: string
@@ -28,10 +34,22 @@ export interface FieldSchema {
28
34
  email?: boolean
29
35
  inclusion?: string[]
30
36
  length?: {
31
- minimum?: string | number
32
- maximum?: string | number
37
+ minimum?: string | number | null
38
+ maximum?: string | number | null
39
+ }
40
+ numericality?: {
41
+ greaterThanOrEqualTo: string | null
42
+ lessThanOrEqualTo: string | null
43
+ }
44
+ presence?:
45
+ | boolean
46
+ | {
47
+ allowEmpty?: boolean
48
+ }
49
+ datetime?: {
50
+ latest: string
51
+ earliest: string
33
52
  }
34
- presence?: boolean
35
53
  }
36
54
  }
37
55
 
@@ -53,3 +71,8 @@ export interface Table extends Document {
53
71
  indexes?: { [key: string]: any }
54
72
  dataImport?: { [key: string]: any }
55
73
  }
74
+
75
+ export interface TableRequest extends Table {
76
+ _rename?: RenameColumn
77
+ created?: boolean
78
+ }
@@ -5,6 +5,9 @@ export interface View {
5
5
  filters: ViewFilter[]
6
6
  schema: ViewSchema
7
7
  calculation?: ViewCalculation
8
+ map?: string
9
+ reduce?: any
10
+ meta?: Record<string, any>
8
11
  }
9
12
 
10
13
  export type ViewSchema = ViewCountOrSumSchema | ViewStatisticsSchema
@@ -30,7 +33,7 @@ export interface ViewStatisticsSchema {
30
33
  }
31
34
 
32
35
  export interface ViewFilter {
33
- value: any
36
+ value?: any
34
37
  condition: string
35
38
  key: string
36
39
  conjunction?: string
@@ -4,3 +4,7 @@ export interface Document {
4
4
  createdAt?: string | number
5
5
  updatedAt?: string
6
6
  }
7
+
8
+ export interface AnyDocument extends Document {
9
+ [key: string]: any
10
+ }
@@ -31,17 +31,29 @@ export interface GoogleConfig extends Config {
31
31
  }
32
32
  }
33
33
 
34
+ export interface OIDCConfiguration {
35
+ issuer: string
36
+ authorizationURL: string
37
+ tokenURL: string
38
+ userInfoURL: string
39
+ clientID: string
40
+ clientSecret: string
41
+ callbackURL: string
42
+ }
43
+
44
+ export interface OIDCInnerCfg {
45
+ configUrl: string
46
+ clientID: string
47
+ clientSecret: string
48
+ logo: string
49
+ name: string
50
+ uuid: string
51
+ activated: boolean
52
+ }
53
+
34
54
  export interface OIDCConfig extends Config {
35
55
  config: {
36
- configs: {
37
- configUrl: string
38
- clientID: string
39
- clientSecret: string
40
- logo: string
41
- name: string
42
- uuid: string
43
- activated: boolean
44
- }[]
56
+ configs: OIDCInnerCfg[]
45
57
  }
46
58
  }
47
59
 
@@ -62,7 +74,9 @@ export const isOIDCConfig = (config: Config): config is OIDCConfig =>
62
74
 
63
75
  export enum ConfigType {
64
76
  SETTINGS = "settings",
77
+ ACCOUNT = "account",
65
78
  SMTP = "smtp",
66
79
  GOOGLE = "google",
67
80
  OIDC = "oidc",
81
+ OIDC_LOGOS = "logos_oidc",
68
82
  }
@@ -4,3 +4,4 @@ export * from "./userGroup"
4
4
  export * from "./plugin"
5
5
  export * from "./quotas"
6
6
  export * from "./schedule"
7
+ export * from "./templates"
@@ -0,0 +1,9 @@
1
+ import { Document } from "../document"
2
+
3
+ export interface Template extends Document {
4
+ ownerId?: string
5
+ name?: string
6
+ contents: string
7
+ purpose: string
8
+ type?: string
9
+ }
@@ -1,8 +1,37 @@
1
1
  import { Document } from "../document"
2
2
 
3
- export interface User extends Document {
3
+ export interface SSOProfile {
4
+ id: string
5
+ name?: {
6
+ givenName?: string
7
+ familyName?: string
8
+ }
9
+ _json: {
10
+ email: string
11
+ picture: string
12
+ }
13
+ provider?: string
14
+ }
15
+
16
+ export interface ThirdPartyUser extends Document {
17
+ thirdPartyProfile?: SSOProfile["_json"]
18
+ firstName?: string
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
+ }
29
+
30
+ export interface User extends ThirdPartyUser {
4
31
  tenantId: string
5
32
  email: string
33
+ userId?: string
34
+ forceResetPassword?: boolean
6
35
  roles: UserRoles
7
36
  builder?: {
8
37
  global: boolean
@@ -10,13 +39,14 @@ export interface User extends Document {
10
39
  admin?: {
11
40
  global: boolean
12
41
  }
13
- providerType?: string
14
42
  password?: string
15
43
  status?: string
16
44
  createdAt?: number // override the default createdAt behaviour - users sdk historically set this to Date.now()
17
45
  userGroups?: string[]
18
- forceResetPassword?: boolean
19
46
  dayPassRecordedAt?: string
47
+ account?: {
48
+ authType: string
49
+ }
20
50
  }
21
51
 
22
52
  export interface UserRoles {
@@ -1,3 +1,4 @@
1
1
  export * from "./info"
2
2
  export * from "./users"
3
3
  export * from "./accounts"
4
+ export * from "./tenants"
@@ -0,0 +1,5 @@
1
+ import { Document } from "../document"
2
+
3
+ export interface Tenants extends Document {
4
+ tenantIds: string[]
5
+ }
@@ -7,8 +7,8 @@ export interface RowResponse<T> {
7
7
  id: string
8
8
  key: string
9
9
  error: string
10
- value: RowValue
11
- doc: T
10
+ value: T | RowValue
11
+ doc?: T | any
12
12
  }
13
13
 
14
14
  export interface AllDocsResponse<T> {
@@ -24,3 +24,9 @@ interface BulkDocResponse {
24
24
  id: string
25
25
  rev: string
26
26
  }
27
+
28
+ export interface PutResponse {
29
+ ok: boolean
30
+ id: string
31
+ rev: string
32
+ }
package/src/sdk/auth.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { BBContext } from "./koa"
2
+ import { Hosting } from "./hosting"
3
+
1
4
  export interface AuthToken {
2
5
  userId: string
3
6
  tenantId: string
@@ -8,6 +11,7 @@ export interface CreateSession {
8
11
  sessionId: string
9
12
  tenantId: string
10
13
  csrfToken?: string
14
+ hosting?: Hosting
11
15
  }
12
16
 
13
17
  export interface Session extends CreateSession {
@@ -25,3 +29,9 @@ export interface SessionKey {
25
29
  export interface ScannedSession {
26
30
  value: Session
27
31
  }
32
+
33
+ export interface PlatformLogoutOpts {
34
+ ctx: BBContext
35
+ userId: string
36
+ keepActiveSession?: boolean
37
+ }
@@ -1,5 +1,5 @@
1
1
  import { User, Account } from "../documents"
2
- import { IdentityType } from "./events/identification"
2
+ import { IdentityType } from "./events"
3
3
 
4
4
  export interface BaseContext {
5
5
  _id: string
package/src/sdk/db.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import PouchDB from "pouchdb"
2
+ import Nano from "nano"
3
+ import { AllDocsResponse, AnyDocument, Document } from "../"
2
4
 
3
5
  export type PouchOptions = {
4
- inMemory: boolean
5
- replication: boolean
6
- onDisk: boolean
7
- find: boolean
6
+ inMemory?: boolean
7
+ replication?: boolean
8
+ onDisk?: boolean
9
+ find?: boolean
8
10
  }
9
11
 
10
12
  export enum SortOption {
@@ -22,3 +24,73 @@ export type CouchFindOptions = {
22
24
  skip?: number
23
25
  bookmark?: string
24
26
  }
27
+
28
+ export type DatabaseOpts = {
29
+ skip_setup?: boolean
30
+ }
31
+
32
+ export type DatabasePutOpts = {
33
+ force?: boolean
34
+ }
35
+
36
+ export type DatabaseCreateIndexOpts = {
37
+ index: {
38
+ fields: string[]
39
+ name?: string | undefined
40
+ ddoc?: string | undefined
41
+ type?: string | undefined
42
+ }
43
+ }
44
+
45
+ export type DatabaseDeleteIndexOpts = {
46
+ name: string
47
+ ddoc: string
48
+ type?: string | undefined
49
+ }
50
+
51
+ export type DatabaseQueryOpts = {
52
+ include_docs?: boolean
53
+ startkey?: string
54
+ endkey?: string
55
+ limit?: number
56
+ skip?: number
57
+ descending?: boolean
58
+ key?: string
59
+ keys?: string[]
60
+ group?: boolean
61
+ }
62
+
63
+ export const isDocument = (doc: any): doc is Document => {
64
+ return typeof doc === "object" && doc._id && doc._rev
65
+ }
66
+
67
+ export interface Database {
68
+ name: string
69
+
70
+ exists(): Promise<boolean>
71
+ checkSetup(): Promise<Nano.DocumentScope<any>>
72
+ get<T>(id?: string): Promise<T | any>
73
+ remove(
74
+ id: string | Document,
75
+ rev?: string
76
+ ): Promise<Nano.DocumentDestroyResponse>
77
+ put(
78
+ document: AnyDocument,
79
+ opts?: DatabasePutOpts
80
+ ): Promise<Nano.DocumentInsertResponse>
81
+ bulkDocs(documents: AnyDocument[]): Promise<Nano.DocumentBulkResponse[]>
82
+ allDocs<T>(params: DatabaseQueryOpts): Promise<AllDocsResponse<T>>
83
+ query<T>(
84
+ viewName: string,
85
+ params: DatabaseQueryOpts
86
+ ): Promise<AllDocsResponse<T>>
87
+ destroy(): Promise<Nano.OkResponse | void>
88
+ compact(): Promise<Nano.OkResponse | void>
89
+ // these are all PouchDB related functions that are rarely used - in future
90
+ // should be replaced by better typed/non-pouch implemented methods
91
+ dump(...args: any[]): Promise<any>
92
+ load(...args: any[]): Promise<any>
93
+ createIndex(...args: any[]): Promise<any>
94
+ deleteIndex(...args: any[]): Promise<any>
95
+ getIndexes(...args: any[]): Promise<any>
96
+ }
@@ -3,19 +3,19 @@ import { BaseEvent } from "./event"
3
3
  export interface RoleCreatedEvent extends BaseEvent {
4
4
  roleId: string
5
5
  permissionId: string
6
- inherits: string
6
+ inherits?: string
7
7
  }
8
8
 
9
9
  export interface RoleUpdatedEvent extends BaseEvent {
10
10
  roleId: string
11
11
  permissionId: string
12
- inherits: string
12
+ inherits?: string
13
13
  }
14
14
 
15
15
  export interface RoleDeletedEvent extends BaseEvent {
16
16
  roleId: string
17
17
  permissionId: string
18
- inherits: string
18
+ inherits?: string
19
19
  }
20
20
 
21
21
  export interface RoleAssignedEvent extends BaseEvent {
@@ -0,0 +1,7 @@
1
+ export enum FeatureFlag {
2
+ LICENSING = "LICENSING",
3
+ }
4
+
5
+ export interface TenantFeatureFlags {
6
+ [key: string]: FeatureFlag[]
7
+ }
package/src/sdk/index.ts CHANGED
@@ -9,3 +9,5 @@ export * from "./koa"
9
9
  export * from "./auth"
10
10
  export * from "./locks"
11
11
  export * from "./db"
12
+ export * from "./middleware"
13
+ export * from "./featureFlag"
package/src/sdk/koa.ts CHANGED
@@ -1,14 +1,23 @@
1
1
  import { Context, Request } from "koa"
2
- import { User } from "../documents"
3
- import { License } from "../sdk"
2
+ import { User, Role, UserRoles, Account } from "../documents"
3
+ import { FeatureFlag, License } from "../sdk"
4
4
 
5
- export interface ContextUser extends User {
5
+ export interface ContextUser extends Omit<User, "roles"> {
6
6
  globalId?: string
7
- license: License
7
+ license?: License
8
+ userId?: string
9
+ roleId?: string | null
10
+ role?: Role
11
+ roles?: UserRoles
12
+ csrfToken?: string
13
+ featureFlags?: FeatureFlag[]
14
+ accountPortalAccess?: boolean
15
+ account?: Account
8
16
  }
9
17
 
10
18
  export interface BBRequest extends Request {
11
19
  body: any
20
+ files?: any
12
21
  }
13
22
 
14
23
  export interface BBContext extends Context {
@@ -0,0 +1,2 @@
1
+ export * from "./matchers"
2
+ export * from "./tenancy"
@@ -0,0 +1,22 @@
1
+ export interface EndpointMatcher {
2
+ /**
3
+ * The HTTP Path. e.g. /api/things/:thingId
4
+ */
5
+ route: string
6
+ /**
7
+ * The HTTP Verb. e.g. GET, POST, etc.
8
+ * ALL is also accepted to cover all verbs.
9
+ */
10
+ method: string
11
+ /**
12
+ * The route must match exactly - not just begins with
13
+ */
14
+ strict?: boolean
15
+ }
16
+
17
+ export interface RegexMatcher {
18
+ regex: RegExp
19
+ method: string
20
+ strict: boolean
21
+ route: string
22
+ }
@@ -0,0 +1,13 @@
1
+ export interface GetTenantIdOptions {
2
+ allowNoTenant?: boolean
3
+ excludeStrategies?: TenantResolutionStrategy[]
4
+ includeStrategies?: TenantResolutionStrategy[]
5
+ }
6
+
7
+ export enum TenantResolutionStrategy {
8
+ USER = "user",
9
+ HEADER = "header",
10
+ QUERY = "query",
11
+ SUBDOMAIN = "subdomain",
12
+ PATH = "path",
13
+ }
package/src/sdk/search.ts CHANGED
@@ -72,7 +72,7 @@ export interface QueryJson {
72
72
  operation: Operation
73
73
  schema?: string
74
74
  }
75
- resource: {
75
+ resource?: {
76
76
  fields: string[]
77
77
  }
78
78
  filters?: SearchFilters
@@ -83,7 +83,7 @@ export interface QueryJson {
83
83
  meta?: {
84
84
  table?: Table
85
85
  tables?: Record<string, Table>
86
- renamed: RenameColumn
86
+ renamed?: RenameColumn
87
87
  }
88
88
  extra?: {
89
89
  idFilter?: SearchFilters
@@ -3,7 +3,6 @@
3
3
  "target": "es6",
4
4
  "module": "commonjs",
5
5
  "lib": ["es2020"],
6
- "allowJs": true,
7
6
  "strict": true,
8
7
  "noImplicitAny": true,
9
8
  "esModuleInterop": true,