@budibase/types 2.23.9 → 2.23.10
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.
|
@@ -11,9 +11,7 @@ export interface Datasource extends Document {
|
|
|
11
11
|
config?: Record<string, any>;
|
|
12
12
|
plus?: boolean;
|
|
13
13
|
isSQL?: boolean;
|
|
14
|
-
entities?:
|
|
15
|
-
[key: string]: Table;
|
|
16
|
-
};
|
|
14
|
+
entities?: Record<string, Table>;
|
|
17
15
|
}
|
|
18
16
|
export declare enum RestAuthType {
|
|
19
17
|
BASIC = "basic",
|
|
@@ -60,6 +60,7 @@ export interface DateFieldMetadata extends Omit<BaseFieldSchema, "subtype"> {
|
|
|
60
60
|
type: FieldType.DATETIME;
|
|
61
61
|
ignoreTimezones?: boolean;
|
|
62
62
|
timeOnly?: boolean;
|
|
63
|
+
dateOnly?: boolean;
|
|
63
64
|
subtype?: AutoFieldSubType.CREATED_AT | AutoFieldSubType.UPDATED_AT;
|
|
64
65
|
}
|
|
65
66
|
export interface LongFormFieldMetadata extends BaseFieldSchema {
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/sdk/hosting.ts", "../src/sdk/events/event.ts", "../src/sdk/events/identification.ts", "../src/sdk/licensing/plan.ts", "../src/sdk/licensing/quota.ts", "../src/sdk/licensing/feature.ts", "../src/sdk/migrations.ts", "../src/sdk/datasources.ts", "../src/sdk/search.ts", "../src/sdk/locks.ts", "../src/sdk/db.ts", "../src/sdk/middleware/tenancy.ts", "../src/sdk/featureFlag.ts", "../src/sdk/environmentVariables.ts", "../src/sdk/cli/constants.ts", "../src/sdk/permissions.ts", "../src/documents/account/account.ts", "../src/documents/app/automation.ts", "../src/documents/app/datasource.ts", "../src/documents/app/query.ts", "../src/documents/app/table/table.ts", "../src/documents/app/row.ts", "../src/documents/app/table/constants.ts", "../src/documents/app/table/schema.ts", "../src/documents/app/view.ts", "../src/documents/document.ts", "../src/documents/app/backup.ts", "../src/documents/app/webhook.ts", "../src/documents/app/sqlite.ts", "../src/documents/global/config.ts", "../src/documents/global/user.ts", "../src/documents/global/plugin.ts", "../src/documents/global/quotas.ts", "../src/documents/global/schedule.ts", "../src/documents/global/auditLogs.ts", "../src/api/web/analytics.ts", "../src/api/web/global/auditLogs.ts", "../src/api/web/global/events.ts", "../src/api/web/pagination.ts", "../src/core/installation.ts"],
|
|
4
|
-
"sourcesContent": ["export * from \"./documents\"\nexport * from \"./sdk\"\nexport * from \"./api\"\nexport * from \"./core\"\nexport * from \"./shared\"\n", "export enum Hosting {\n CLOUD = \"cloud\",\n SELF = \"self\",\n}\n", "import { Hosting } from \"../hosting\"\nimport { Group, Identity } from \"./identification\"\n\nexport enum Event {\n // USER\n USER_CREATED = \"user:created\",\n USER_UPDATED = \"user:updated\",\n USER_DELETED = \"user:deleted\",\n\n // USER / ONBOARDING\n USER_ONBOARDING_COMPLETE = \"user:onboarding:complete\",\n\n // USER / PERMISSIONS\n USER_PERMISSION_ADMIN_ASSIGNED = \"user:admin:assigned\",\n USER_PERMISSION_ADMIN_REMOVED = \"user:admin:removed\",\n USER_PERMISSION_BUILDER_ASSIGNED = \"user:builder:assigned\",\n USER_PERMISSION_BUILDER_REMOVED = \"user:builder:removed\",\n\n // USER / INVITE\n USER_INVITED = \"user:invited\",\n USER_INVITED_ACCEPTED = \"user:invite:accepted\",\n\n // USER / PASSWORD\n USER_PASSWORD_FORCE_RESET = \"user:password:force:reset\",\n USER_PASSWORD_UPDATED = \"user:password:updated\",\n USER_PASSWORD_RESET_REQUESTED = \"user:password:reset:requested\",\n USER_PASSWORD_RESET = \"user:password:reset\",\n\n // USER / COLLABORATION\n USER_DATA_COLLABORATION = \"user:data:collaboration\",\n\n // EMAIL\n EMAIL_SMTP_CREATED = \"email:smtp:created\",\n EMAIL_SMTP_UPDATED = \"email:smtp:updated\",\n\n // AUTH\n AUTH_SSO_CREATED = \"auth:sso:created\",\n AUTH_SSO_UPDATED = \"auth:sso:updated\",\n AUTH_SSO_ACTIVATED = \"auth:sso:activated\",\n AUTH_SSO_DEACTIVATED = \"auth:sso:deactivated\",\n AUTH_LOGIN = \"auth:login\",\n AUTH_LOGOUT = \"auth:logout\",\n\n // ORG\n ORG_NAME_UPDATED = \"org:info:name:updated\",\n ORG_LOGO_UPDATED = \"org:info:logo:updated\",\n ORG_PLATFORM_URL_UPDATED = \"org:platformurl:updated\",\n\n // INSTALLATION\n INSTALLATION_VERSION_CHECKED = \"installation:version:checked\",\n INSTALLATION_VERSION_UPGRADED = \"installation:version:upgraded\",\n INSTALLATION_VERSION_DOWNGRADED = \"installation:version:downgraded\",\n INSTALLATION_FIRST_STARTUP = \"installation:firstStartup\",\n\n // ORG / ANALYTICS\n ANALYTICS_OPT_OUT = \"analytics:opt:out\",\n ANALYTICS_OPT_IN = \"analytics:opt:in\",\n\n // APP\n APP_CREATED = \"app:created\",\n APP_UPDATED = \"app:updated\",\n APP_DELETED = \"app:deleted\",\n APP_DUPLICATED = \"app:duplicated\",\n APP_PUBLISHED = \"app:published\",\n APP_UNPUBLISHED = \"app:unpublished\",\n APP_TEMPLATE_IMPORTED = \"app:template:imported\",\n APP_FILE_IMPORTED = \"app:file:imported\",\n APP_VERSION_UPDATED = \"app:version:updated\",\n APP_VERSION_REVERTED = \"app:version:reverted\",\n APP_REVERTED = \"app:reverted\",\n APP_EXPORTED = \"app:exported\",\n\n // ROLE\n ROLE_CREATED = \"role:created\",\n ROLE_UPDATED = \"role:updated\",\n ROLE_DELETED = \"role:deleted\",\n ROLE_ASSIGNED = \"role:assigned\",\n ROLE_UNASSIGNED = \"role:unassigned\",\n\n // SERVE\n SERVED_BUILDER = \"served:builder\",\n SERVED_APP = \"served:app\",\n SERVED_APP_PREVIEW = \"served:app:preview\",\n\n // DATASOURCE\n DATASOURCE_CREATED = \"datasource:created\",\n DATASOURCE_UPDATED = \"datasource:updated\",\n DATASOURCE_DELETED = \"datasource:deleted\",\n\n // QUERY\n QUERY_CREATED = \"query:created\",\n QUERY_UPDATED = \"query:updated\",\n QUERY_DELETED = \"query:deleted\",\n QUERY_IMPORT = \"query:import\",\n QUERIES_RUN = \"queries:run\",\n QUERY_PREVIEWED = \"query:previewed\",\n\n // TABLE\n TABLE_CREATED = \"table:created\",\n TABLE_UPDATED = \"table:updated\",\n TABLE_DELETED = \"table:deleted\",\n TABLE_EXPORTED = \"table:exported\",\n TABLE_IMPORTED = \"table:imported\",\n TABLE_DATA_IMPORTED = \"table:data:imported\",\n\n // VIEW\n VIEW_CREATED = \"view:created\",\n VIEW_UPDATED = \"view:updated\",\n VIEW_DELETED = \"view:deleted\",\n VIEW_EXPORTED = \"view:exported\",\n VIEW_FILTER_CREATED = \"view:filter:created\",\n VIEW_FILTER_UPDATED = \"view:filter:updated\",\n VIEW_FILTER_DELETED = \"view:filter:deleted\",\n VIEW_CALCULATION_CREATED = \"view:calculation:created\",\n VIEW_CALCULATION_UPDATED = \"view:calculation:updated\",\n VIEW_CALCULATION_DELETED = \"view:calculation:deleted\",\n\n // ROWS\n ROWS_CREATED = \"rows:created\",\n ROWS_IMPORTED = \"rows:imported\",\n\n // COMPONENT\n COMPONENT_CREATED = \"component:created\",\n COMPONENT_DELETED = \"component:deleted\",\n\n // SCREEN\n SCREEN_CREATED = \"screen:created\",\n SCREEN_DELETED = \"screen:deleted\",\n\n // LAYOUT\n LAYOUT_CREATED = \"layout:created\",\n LAYOUT_DELETED = \"layout:deleted\",\n\n // AUTOMATION\n AUTOMATION_CREATED = \"automation:created\",\n AUTOMATION_DELETED = \"automation:deleted\",\n AUTOMATION_TESTED = \"automation:tested\",\n AUTOMATIONS_RUN = \"automations:run\",\n AUTOMATION_STEP_CREATED = \"automation:step:created\",\n AUTOMATION_STEP_DELETED = \"automation:step:deleted\",\n AUTOMATION_TRIGGER_UPDATED = \"automation:trigger:updated\",\n\n // LICENSE\n LICENSE_PLAN_CHANGED = \"license:plan:changed\",\n LICENSE_ACTIVATED = \"license:activated\",\n LICENSE_PAYMENT_FAILED = \"license:payment:failed\",\n LICENSE_PAYMENT_RECOVERED = \"license:payment:recovered\",\n LICENSE_CHECKOUT_OPENED = \"license:checkout:opened\",\n LICENSE_CHECKOUT_SUCCESS = \"license:checkout:success\",\n LICENSE_PORTAL_OPENED = \"license:portal:opened\",\n\n // ACCOUNT\n ACCOUNT_CREATED = \"account:created\",\n ACCOUNT_DELETED = \"account:deleted\",\n ACCOUNT_VERIFIED = \"account:verified\",\n\n // BACKFILL\n APP_BACKFILL_SUCCEEDED = \"app:backfill:succeeded\",\n APP_BACKFILL_FAILED = \"app:backfill:failed\",\n TENANT_BACKFILL_SUCCEEDED = \"tenant:backfill:succeeded\",\n TENANT_BACKFILL_FAILED = \"tenant:backfill:failed\",\n INSTALLATION_BACKFILL_SUCCEEDED = \"installation:backfill:succeeded\",\n INSTALLATION_BACKFILL_FAILED = \"installation:backfill:failed\",\n\n // USER\n USER_GROUP_CREATED = \"user_group:created\",\n USER_GROUP_UPDATED = \"user_group:updated\",\n USER_GROUP_DELETED = \"user_group:deleted\",\n USER_GROUP_USERS_ADDED = \"user_group:user_added\",\n USER_GROUP_USERS_REMOVED = \"user_group:users_deleted\",\n USER_GROUP_PERMISSIONS_EDITED = \"user_group:permissions_edited\",\n USER_GROUP_ONBOARDING = \"user_group:onboarding_added\",\n\n // PLUGIN\n PLUGIN_INIT = \"plugin:init\",\n PLUGIN_IMPORTED = \"plugin:imported\",\n PLUGIN_DELETED = \"plugin:deleted\",\n\n // BACKUP\n APP_BACKUP_RESTORED = \"app:backup:restored\",\n APP_BACKUP_TRIGGERED = \"app:backup:triggered\",\n\n // ENVIRONMENT VARIABLE\n ENVIRONMENT_VARIABLE_CREATED = \"environment_variable:created\",\n ENVIRONMENT_VARIABLE_DELETED = \"environment_variable:deleted\",\n ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED = \"environment_variable:upgrade_panel_opened\",\n\n // AUDIT LOG\n AUDIT_LOGS_FILTERED = \"audit_log:filtered\",\n AUDIT_LOGS_DOWNLOADED = \"audit_log:downloaded\",\n}\n\nexport const UserGroupSyncEvents: Event[] = [\n Event.USER_CREATED,\n Event.USER_UPDATED,\n Event.USER_DELETED,\n Event.USER_PERMISSION_ADMIN_ASSIGNED,\n Event.USER_PERMISSION_ADMIN_REMOVED,\n Event.USER_PERMISSION_BUILDER_ASSIGNED,\n Event.USER_PERMISSION_BUILDER_REMOVED,\n Event.USER_GROUP_CREATED,\n Event.USER_GROUP_UPDATED,\n Event.USER_GROUP_DELETED,\n Event.USER_GROUP_USERS_ADDED,\n Event.USER_GROUP_USERS_REMOVED,\n Event.USER_GROUP_PERMISSIONS_EDITED,\n]\n\nexport const AsyncEvents: Event[] = [...UserGroupSyncEvents]\n\n// all events that are not audited have been added to this record as undefined, this means\n// that Typescript can protect us against new events being added and auditing of those\n// events not being considered. This might be a little ugly, but provides a level of\n// Typescript build protection for the audit log feature, any new event also needs to be\n// added to this map, during which the developer will need to consider if it should be\n// a user facing event or not.\nexport const AuditedEventFriendlyName: Record<Event, string | undefined> = {\n // USER\n [Event.USER_CREATED]: `User \"{{ email }}\" created{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_UPDATED]: `User \"{{ email }}\" updated{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_DELETED]: `User \"{{ email }}\" deleted{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_PERMISSION_ADMIN_ASSIGNED]: `User \"{{ email }}\" admin role assigned`,\n [Event.USER_PERMISSION_ADMIN_REMOVED]: `User \"{{ email }}\" admin role removed`,\n [Event.USER_PERMISSION_BUILDER_ASSIGNED]: `User \"{{ email }}\" builder role assigned`,\n [Event.USER_PERMISSION_BUILDER_REMOVED]: `User \"{{ email }}\" builder role removed`,\n [Event.USER_INVITED]: `User \"{{ email }}\" invited`,\n [Event.USER_INVITED_ACCEPTED]: `User \"{{ email }}\" accepted invite`,\n [Event.USER_PASSWORD_UPDATED]: `User \"{{ email }}\" password updated`,\n [Event.USER_PASSWORD_RESET_REQUESTED]: `User \"{{ email }}\" password reset requested`,\n [Event.USER_PASSWORD_RESET]: `User \"{{ email }}\" password reset`,\n [Event.USER_GROUP_CREATED]: `User group \"{{ name }}\" created{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_UPDATED]: `User group \"{{ name }}\" updated{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_DELETED]: `User group \"{{ name }}\" deleted{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_USERS_ADDED]: `User group \"{{ name }}\" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_USERS_REMOVED]: `User group \"{{ name }}\" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_PERMISSIONS_EDITED]: `User group \"{{ name }}\" permissions edited`,\n [Event.USER_PASSWORD_FORCE_RESET]: undefined,\n [Event.USER_GROUP_ONBOARDING]: undefined,\n [Event.USER_ONBOARDING_COMPLETE]: undefined,\n [Event.USER_DATA_COLLABORATION]: undefined,\n\n // EMAIL\n [Event.EMAIL_SMTP_CREATED]: `Email configuration created`,\n [Event.EMAIL_SMTP_UPDATED]: `Email configuration updated`,\n\n // AUTH\n [Event.AUTH_SSO_CREATED]: `SSO configuration created`,\n [Event.AUTH_SSO_UPDATED]: `SSO configuration updated`,\n [Event.AUTH_SSO_ACTIVATED]: `SSO configuration activated`,\n [Event.AUTH_SSO_DEACTIVATED]: `SSO configuration deactivated`,\n [Event.AUTH_LOGIN]: `User \"{{ email }}\" logged in`,\n [Event.AUTH_LOGOUT]: `User \"{{ email }}\" logged out`,\n\n // ORG\n [Event.ORG_NAME_UPDATED]: `Organisation name updated`,\n [Event.ORG_LOGO_UPDATED]: `Organisation logo updated`,\n [Event.ORG_PLATFORM_URL_UPDATED]: `Organisation platform URL updated`,\n\n // APP\n [Event.APP_CREATED]: `App \"{{ name }}\" created`,\n [Event.APP_UPDATED]: `App \"{{ name }}\" updated`,\n [Event.APP_DELETED]: `App \"{{ name }}\" deleted`,\n [Event.APP_DUPLICATED]: `App \"{{ name }}\" duplicated`,\n [Event.APP_PUBLISHED]: `App \"{{ name }}\" published`,\n [Event.APP_UNPUBLISHED]: `App \"{{ name }}\" unpublished`,\n [Event.APP_TEMPLATE_IMPORTED]: `App \"{{ name }}\" template imported`,\n [Event.APP_FILE_IMPORTED]: `App \"{{ name }}\" file imported`,\n [Event.APP_VERSION_UPDATED]: `App \"{{ name }}\" version updated`,\n [Event.APP_VERSION_REVERTED]: `App \"{{ name }}\" version reverted`,\n [Event.APP_REVERTED]: `App \"{{ name }}\" reverted`,\n [Event.APP_EXPORTED]: `App \"{{ name }}\" exported`,\n [Event.APP_BACKUP_RESTORED]: `App backup \"{{ name }}\" restored`,\n [Event.APP_BACKUP_TRIGGERED]: `App backup \"{{ name }}\" triggered`,\n\n // DATASOURCE\n [Event.DATASOURCE_CREATED]: `Datasource created`,\n [Event.DATASOURCE_UPDATED]: `Datasource updated`,\n [Event.DATASOURCE_DELETED]: `Datasource deleted`,\n\n // QUERY\n [Event.QUERY_CREATED]: `Query created`,\n [Event.QUERY_UPDATED]: `Query updated`,\n [Event.QUERY_DELETED]: `Query deleted`,\n [Event.QUERY_IMPORT]: `Query import`,\n [Event.QUERIES_RUN]: undefined,\n [Event.QUERY_PREVIEWED]: undefined,\n\n // TABLE\n [Event.TABLE_CREATED]: `Table \"{{ name }}\" created`,\n [Event.TABLE_UPDATED]: `Table \"{{ name }}\" updated`,\n [Event.TABLE_DELETED]: `Table \"{{ name }}\" deleted`,\n [Event.TABLE_EXPORTED]: `Table \"{{ name }}\" exported`,\n [Event.TABLE_IMPORTED]: `Table \"{{ name }}\" imported`,\n [Event.TABLE_DATA_IMPORTED]: `Data imported to table`,\n\n // ROWS\n [Event.ROWS_CREATED]: `Rows created`,\n [Event.ROWS_IMPORTED]: `Rows imported`,\n\n // AUTOMATION\n [Event.AUTOMATION_CREATED]: `Automation \"{{ name }}\" created`,\n [Event.AUTOMATION_DELETED]: `Automation \"{{ name }}\" deleted`,\n [Event.AUTOMATION_STEP_CREATED]: `Automation \"{{ name }}\" step added`,\n [Event.AUTOMATION_STEP_DELETED]: `Automation \"{{ name }}\" step removed`,\n [Event.AUTOMATION_TESTED]: undefined,\n [Event.AUTOMATIONS_RUN]: undefined,\n [Event.AUTOMATION_TRIGGER_UPDATED]: undefined,\n\n // SCREEN\n [Event.SCREEN_CREATED]: `Screen \"{{ name }}\" created`,\n [Event.SCREEN_DELETED]: `Screen \"{{ name }}\" deleted`,\n\n // COMPONENT\n [Event.COMPONENT_CREATED]: `Component created`,\n [Event.COMPONENT_DELETED]: `Component deleted`,\n\n // ENVIRONMENT VARIABLE\n [Event.ENVIRONMENT_VARIABLE_CREATED]: `Environment variable created`,\n [Event.ENVIRONMENT_VARIABLE_DELETED]: `Environment variable deleted`,\n [Event.ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED]: undefined,\n\n // PLUGIN\n [Event.PLUGIN_IMPORTED]: `Plugin imported`,\n [Event.PLUGIN_DELETED]: `Plugin deleted`,\n [Event.PLUGIN_INIT]: undefined,\n\n // ROLE - NOT AUDITED\n [Event.ROLE_CREATED]: undefined,\n [Event.ROLE_UPDATED]: undefined,\n [Event.ROLE_DELETED]: undefined,\n [Event.ROLE_ASSIGNED]: undefined,\n [Event.ROLE_UNASSIGNED]: undefined,\n\n // LICENSE - NOT AUDITED\n [Event.LICENSE_PLAN_CHANGED]: undefined,\n [Event.LICENSE_ACTIVATED]: undefined,\n [Event.LICENSE_PAYMENT_FAILED]: undefined,\n [Event.LICENSE_PAYMENT_RECOVERED]: undefined,\n [Event.LICENSE_CHECKOUT_OPENED]: undefined,\n [Event.LICENSE_CHECKOUT_SUCCESS]: undefined,\n [Event.LICENSE_PORTAL_OPENED]: undefined,\n\n // ACCOUNT - NOT AUDITED\n [Event.ACCOUNT_CREATED]: undefined,\n [Event.ACCOUNT_DELETED]: undefined,\n [Event.ACCOUNT_VERIFIED]: undefined,\n\n // BACKFILL - NOT AUDITED\n [Event.APP_BACKFILL_SUCCEEDED]: undefined,\n [Event.APP_BACKFILL_FAILED]: undefined,\n [Event.TENANT_BACKFILL_SUCCEEDED]: undefined,\n [Event.TENANT_BACKFILL_FAILED]: undefined,\n [Event.INSTALLATION_BACKFILL_SUCCEEDED]: undefined,\n [Event.INSTALLATION_BACKFILL_FAILED]: undefined,\n\n // LAYOUT - NOT AUDITED\n [Event.LAYOUT_CREATED]: undefined,\n [Event.LAYOUT_DELETED]: undefined,\n\n // VIEW - NOT AUDITED\n [Event.VIEW_CREATED]: undefined,\n [Event.VIEW_UPDATED]: undefined,\n [Event.VIEW_DELETED]: undefined,\n [Event.VIEW_EXPORTED]: undefined,\n [Event.VIEW_FILTER_CREATED]: undefined,\n [Event.VIEW_FILTER_UPDATED]: undefined,\n [Event.VIEW_FILTER_DELETED]: undefined,\n [Event.VIEW_CALCULATION_CREATED]: undefined,\n [Event.VIEW_CALCULATION_UPDATED]: undefined,\n [Event.VIEW_CALCULATION_DELETED]: undefined,\n\n // SERVED - NOT AUDITED\n [Event.SERVED_BUILDER]: undefined,\n [Event.SERVED_APP]: undefined,\n [Event.SERVED_APP_PREVIEW]: undefined,\n\n // ANALYTICS - NOT AUDITED\n [Event.ANALYTICS_OPT_OUT]: undefined,\n [Event.ANALYTICS_OPT_IN]: undefined,\n\n // INSTALLATION - NOT AUDITED\n [Event.INSTALLATION_VERSION_CHECKED]: undefined,\n [Event.INSTALLATION_VERSION_UPGRADED]: undefined,\n [Event.INSTALLATION_VERSION_DOWNGRADED]: undefined,\n [Event.INSTALLATION_FIRST_STARTUP]: undefined,\n\n // AUDIT LOG - NOT AUDITED\n [Event.AUDIT_LOGS_FILTERED]: undefined,\n [Event.AUDIT_LOGS_DOWNLOADED]: undefined,\n}\n\n// properties added at the final stage of the event pipeline\nexport interface BaseEvent {\n version?: string\n service?: string\n environment?: string\n appId?: string\n installationId?: string\n tenantId?: string\n hosting?: Hosting\n // any props in the audited section will be removed before passing events\n // up out of system (purely for use with auditing)\n audited?: {\n [key: string]: any\n }\n}\n\nexport type TableExportFormat = \"json\" | \"csv\"\n\nexport type DocUpdateEvent = {\n id: string\n tenantId: string\n appId?: string\n}\n\nexport interface EventProcessor {\n processEvent(\n event: Event,\n identity: Identity,\n properties: any,\n timestamp?: string | number\n ): Promise<void>\n identify?(identity: Identity, timestamp?: string | number): Promise<void>\n identifyGroup?(group: Group, timestamp?: string | number): Promise<void>\n shutdown?(): void\n}\n", "import { Hosting } from \"..\"\n\n// GROUPS\n\nexport enum GroupType {\n TENANT = \"tenant\",\n INSTALLATION = \"installation\",\n}\n\nexport interface Group {\n id: string\n type: IdentityType\n environment: string\n hosting: Hosting\n}\n\nexport interface TenantGroup extends Group {\n // account level information is associated with the tenant group\n // as we don't have this at the user level\n profession?: string // only available in cloud\n companySize?: string // only available in cloud\n installationId: string\n}\n\nexport interface InstallationGroup extends Group {\n version: string\n}\n\n// IDENTITIES\n\nexport enum IdentityType {\n USER = \"user\",\n TENANT = \"tenant\",\n INSTALLATION = \"installation\",\n}\n\nexport interface HostInfo {\n ipAddress?: string\n userAgent?: string\n}\n\nexport interface Identity {\n id: string\n type: IdentityType\n hosting: Hosting\n environment: string\n installationId?: string\n tenantId?: string\n // usable - no unique format\n realTenantId?: string\n hostInfo?: HostInfo\n}\n\nexport interface UserIdentity extends Identity {\n verified: boolean\n accountHolder: boolean\n providerType?: string\n builder?: boolean\n admin?: boolean\n}\n", "export enum PlanType {\n FREE = \"free\",\n /** @deprecated */\n PRO = \"pro\",\n /** @deprecated */\n TEAM = \"team\",\n /** @deprecated */\n PREMIUM = \"premium\",\n PREMIUM_PLUS = \"premium_plus\",\n /** @deprecated */\n BUSINESS = \"business\",\n ENTERPRISE_BASIC = \"enterprise_basic\",\n ENTERPRISE = \"enterprise\",\n}\n\nexport enum PriceDuration {\n MONTHLY = \"monthly\",\n YEARLY = \"yearly\",\n}\n\nexport interface AvailablePlan {\n type: PlanType\n maxUsers: number\n prices: AvailablePrice[]\n}\n\nexport interface AvailablePrice {\n amount: number\n amountMonthly: number\n currency: string\n duration: PriceDuration\n priceId: string\n type?: string\n}\n\nexport enum PlanModel {\n PER_USER = \"perUser\",\n PER_CREATOR_PER_USER = \"per_creator_per_user\",\n DAY_PASS = \"dayPass\",\n}\n\nexport interface PurchasedPlan {\n type: PlanType\n model: PlanModel\n usesInvoicing: boolean\n price?: PurchasedPrice\n}\n\nexport interface PurchasedPrice extends AvailablePrice {\n dayPasses: number | undefined\n /** @deprecated - now at the plan level via model */\n isPerUser: boolean\n}\n", "import { PlanType } from \".\"\n\nexport enum QuotaUsageType {\n STATIC = \"static\",\n MONTHLY = \"monthly\",\n}\n\nexport enum QuotaType {\n USAGE = \"usage\",\n CONSTANT = \"constant\",\n}\n\nexport enum StaticQuotaName {\n ROWS = \"rows\",\n APPS = \"apps\",\n USERS = \"users\",\n CREATORS = \"creators\",\n USER_GROUPS = \"userGroups\",\n PLUGINS = \"plugins\",\n}\n\nexport enum MonthlyQuotaName {\n QUERIES = \"queries\",\n AUTOMATIONS = \"automations\",\n DAY_PASSES = \"dayPasses\",\n}\n\nexport enum ConstantQuotaName {\n AUTOMATION_LOG_RETENTION_DAYS = \"automationLogRetentionDays\",\n APP_BACKUPS_RETENTION_DAYS = \"appBackupRetentionDays\",\n}\n\nexport type MeteredQuotaName = StaticQuotaName | MonthlyQuotaName\nexport type QuotaName = StaticQuotaName | MonthlyQuotaName | ConstantQuotaName\n\nexport const isStaticQuota = (\n quotaType: QuotaType,\n usageType: QuotaUsageType,\n name: QuotaName\n): name is StaticQuotaName => {\n return quotaType === QuotaType.USAGE && usageType === QuotaUsageType.STATIC\n}\n\nexport const isMonthlyQuota = (\n quotaType: QuotaType,\n usageType: QuotaUsageType,\n name: QuotaName\n): name is MonthlyQuotaName => {\n return quotaType === QuotaType.USAGE && usageType === QuotaUsageType.MONTHLY\n}\n\nexport const isConstantQuota = (\n quotaType: QuotaType,\n name: QuotaName\n): name is ConstantQuotaName => {\n return quotaType === QuotaType.CONSTANT\n}\n\nexport type PlanQuotas = { [key in PlanType]: Quotas | undefined }\n\nexport type MonthlyQuotas = {\n [MonthlyQuotaName.QUERIES]: Quota\n [MonthlyQuotaName.AUTOMATIONS]: Quota\n [MonthlyQuotaName.DAY_PASSES]: Quota\n}\n\nexport type StaticQuotas = {\n [StaticQuotaName.ROWS]: Quota\n [StaticQuotaName.APPS]: Quota\n [StaticQuotaName.USERS]: Quota\n [StaticQuotaName.CREATORS]: Quota\n [StaticQuotaName.USER_GROUPS]: Quota\n [StaticQuotaName.PLUGINS]: Quota\n}\n\nexport type ConstantQuotas = {\n [ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]: Quota\n [ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]: Quota\n}\n\nexport type Quotas = {\n [QuotaType.USAGE]: {\n [QuotaUsageType.MONTHLY]: MonthlyQuotas\n [QuotaUsageType.STATIC]: StaticQuotas\n }\n [QuotaType.CONSTANT]: ConstantQuotas\n}\n\nexport interface Quota {\n name: string\n value: number\n /**\n * Array of whole numbers (1-100) that dictate the percentage that this quota should trigger\n * at in relation to the corresponding usage inside budibase.\n *\n * Triggering results in a budibase installation sending a request to account-portal,\n * which can have subsequent effects such as sending emails to users.\n */\n triggers: number[]\n startDate?: number\n}\n", "import { PlanType } from \"./plan\"\n\nexport enum Feature {\n USER_GROUPS = \"userGroups\",\n APP_BACKUPS = \"appBackups\",\n ENVIRONMENT_VARIABLES = \"environmentVariables\",\n AUDIT_LOGS = \"auditLogs\",\n ENFORCEABLE_SSO = \"enforceableSSO\",\n BRANDING = \"branding\",\n SCIM = \"scim\",\n SYNC_AUTOMATIONS = \"syncAutomations\",\n TRIGGER_AUTOMATION_RUN = \"triggerAutomationRun\",\n APP_BUILDERS = \"appBuilders\",\n OFFLINE = \"offline\",\n EXPANDED_PUBLIC_API = \"expandedPublicApi\",\n VIEW_PERMISSIONS = \"viewPermissions\",\n}\n\nexport type PlanFeatures = { [key in PlanType]: Feature[] | undefined }\n", "export interface Migration extends MigrationDefinition {\n appOpts?: object\n fn: Function\n silent?: boolean\n preventRetry?: boolean\n}\n\nexport enum MigrationType {\n // run once per tenant, recorded in global db, global db is provided as an argument\n GLOBAL = \"global\",\n // run per app, recorded in each app db, app db is provided as an argument\n APP = \"app\",\n // run once, recorded in global info db, global info db is provided as an argument\n INSTALLATION = \"installation\",\n}\n\nexport interface MigrationNoOpOptions {\n type: MigrationType\n tenantId: string\n appId?: string\n}\n\n/**\n * e.g.\n * {\n * tenantIds: ['bb'],\n * force: {\n * global: ['quota_1']\n * }\n * }\n */\nexport interface MigrationOptions {\n tenantIds?: string[]\n force?: {\n [type: string]: string[]\n }\n noOp?: MigrationNoOpOptions\n}\n\nexport enum MigrationName {\n USER_EMAIL_VIEW_CASING = \"user_email_view_casing\",\n APP_URLS = \"app_urls\",\n EVENT_APP_BACKFILL = \"event_app_backfill\",\n EVENT_GLOBAL_BACKFILL = \"event_global_backfill\",\n EVENT_INSTALLATION_BACKFILL = \"event_installation_backfill\",\n GLOBAL_INFO_SYNC_USERS = \"global_info_sync_users\",\n TABLE_SETTINGS_LINKS_TO_ACTIONS = \"table_settings_links_to_actions\",\n // increment this number to re-activate this migration\n SYNC_QUOTAS = \"sync_quotas_2\",\n}\n\nexport interface MigrationDefinition {\n type: MigrationType\n name: MigrationName\n}\n", "import { Table, Row } from \"../documents\"\nimport { QueryJson } from \"./search\"\n\nexport const PASSWORD_REPLACEMENT = \"--secret-value--\"\n\nexport enum Operation {\n CREATE = \"CREATE\",\n READ = \"READ\",\n UPDATE = \"UPDATE\",\n DELETE = \"DELETE\",\n BULK_CREATE = \"BULK_CREATE\",\n CREATE_TABLE = \"CREATE_TABLE\",\n UPDATE_TABLE = \"UPDATE_TABLE\",\n DELETE_TABLE = \"DELETE_TABLE\",\n}\n\nexport const RowOperations = [\n Operation.CREATE,\n Operation.READ,\n Operation.UPDATE,\n Operation.DELETE,\n Operation.BULK_CREATE,\n]\n\nexport enum SortDirection {\n ASCENDING = \"ASCENDING\",\n DESCENDING = \"DESCENDING\",\n}\n\nexport enum QueryType {\n SQL = \"sql\",\n JSON = \"json\",\n FIELDS = \"fields\",\n}\n\nexport enum DatasourceFieldType {\n STRING = \"string\",\n CODE = \"code\",\n LONGFORM = \"longForm\",\n BOOLEAN = \"boolean\",\n NUMBER = \"number\",\n PASSWORD = \"password\",\n LIST = \"list\",\n OBJECT = \"object\",\n JSON = \"json\",\n FILE = \"file\",\n FIELD_GROUP = \"fieldGroup\",\n SELECT = \"select\",\n}\n\nexport enum SourceName {\n POSTGRES = \"POSTGRES\",\n DYNAMODB = \"DYNAMODB\",\n MONGODB = \"MONGODB\",\n ELASTICSEARCH = \"ELASTICSEARCH\",\n COUCHDB = \"COUCHDB\",\n SQL_SERVER = \"SQL_SERVER\",\n S3 = \"S3\",\n AIRTABLE = \"AIRTABLE\",\n MYSQL = \"MYSQL\",\n ARANGODB = \"ARANGODB\",\n REST = \"REST\",\n ORACLE = \"ORACLE\",\n GOOGLE_SHEETS = \"GOOGLE_SHEETS\",\n FIRESTORE = \"FIRESTORE\",\n REDIS = \"REDIS\",\n SNOWFLAKE = \"SNOWFLAKE\",\n BUDIBASE = \"BUDIBASE\",\n}\n\nexport enum IncludeRelationship {\n INCLUDE = 1,\n EXCLUDE = 0,\n}\n\nexport enum FilterType {\n STRING = \"string\",\n FUZZY = \"fuzzy\",\n RANGE = \"range\",\n EQUAL = \"equal\",\n NOT_EQUAL = \"notEqual\",\n EMPTY = \"empty\",\n NOT_EMPTY = \"notEmpty\",\n ONE_OF = \"oneOf\",\n}\n\nexport enum DatasourceFeature {\n CONNECTION_CHECKING = \"connection\",\n FETCH_TABLE_NAMES = \"fetch_table_names\",\n EXPORT_SCHEMA = \"export_schema\",\n}\n\nexport interface StepDefinition {\n key: string\n template: string\n}\n\nexport interface QueryDefinition {\n type: QueryType\n displayName?: string\n readable?: boolean\n customisable?: boolean\n fields?: object\n urlDisplay?: boolean\n steps?: Array<StepDefinition>\n}\n\nexport interface ExtraQueryConfig {\n [key: string]: {\n displayName: string\n type: string\n required: boolean\n data?: object\n }\n}\n\ninterface DatasourceBasicFieldConfig {\n type: DatasourceFieldType\n display?: string\n required?: boolean\n default?: any\n deprecated?: boolean\n hidden?: string\n}\n\ninterface DatasourceSelectFieldConfig extends DatasourceBasicFieldConfig {\n type: DatasourceFieldType.SELECT\n config: { options: string[] }\n}\n\ninterface DatasourceFieldGroupConfig extends DatasourceBasicFieldConfig {\n type: DatasourceFieldType.FIELD_GROUP\n config: {\n openByDefault?: boolean\n nestedFields?: boolean\n }\n}\n\ntype DatasourceFieldConfig =\n | DatasourceSelectFieldConfig\n | DatasourceFieldGroupConfig\n | DatasourceBasicFieldConfig\n\nexport interface DatasourceConfig {\n [key: string]: DatasourceFieldConfig & {\n fields?: DatasourceConfig\n }\n}\n\nexport interface Integration {\n docs: string\n plus?: boolean\n isSQL?: boolean\n auth?: { type: string }\n features?: Partial<Record<DatasourceFeature, boolean>>\n relationships?: boolean\n description: string\n friendlyName: string\n type?: string\n iconUrl?: string\n datasource: DatasourceConfig\n query: {\n [key: string]: QueryDefinition\n }\n extra?: ExtraQueryConfig\n}\n\nexport type ConnectionInfo = {\n connected: boolean\n error?: string\n}\n\nexport interface IntegrationBase {\n create?(query: any): Promise<any[] | any>\n read?(query: any): Promise<any[] | any>\n update?(query: any): Promise<any[] | any>\n delete?(query: any): Promise<any[] | any>\n testConnection?(): Promise<ConnectionInfo>\n getExternalSchema?(): Promise<string>\n defineTypeCastingFromSchema?(schema: {\n [key: string]: {\n name: string\n type: string\n }\n }): void\n}\n\nexport interface Schema {\n tables: Record<string, Table>\n errors: Record<string, string>\n}\n\n// return these when an operation occurred but we got no response\nenum DSPlusOperation {\n CREATE = \"create\",\n READ = \"read\",\n UPDATE = \"update\",\n DELETE = \"delete\",\n}\n\nexport type DatasourcePlusQueryResponse =\n | Row[]\n | Record<DSPlusOperation, boolean>[]\n | void\n\nexport interface DatasourcePlus extends IntegrationBase {\n // if the datasource supports the use of bindings directly (to protect against SQL injection)\n // this returns the format of the identifier\n getBindingIdentifier(): string\n getStringConcat(parts: string[]): string\n query(json: QueryJson): Promise<DatasourcePlusQueryResponse>\n buildSchema(\n datasourceId: string,\n entities: Record<string, Table>\n ): Promise<Schema>\n getTableNames(): Promise<string[]>\n}\n", "import { Operation, SortDirection } from \"./datasources\"\nimport { Row, Table } from \"../documents\"\nimport { SortType } from \"../api\"\nimport { Knex } from \"knex\"\n\nexport enum SearchFilterOperator {\n STRING = \"string\",\n FUZZY = \"fuzzy\",\n RANGE = \"range\",\n EQUAL = \"equal\",\n NOT_EQUAL = \"notEqual\",\n EMPTY = \"empty\",\n NOT_EMPTY = \"notEmpty\",\n ONE_OF = \"oneOf\",\n CONTAINS = \"contains\",\n NOT_CONTAINS = \"notContains\",\n CONTAINS_ANY = \"containsAny\",\n}\n\nexport interface SearchFilters {\n allOr?: boolean\n onEmptyFilter?: EmptyFilterOption\n [SearchFilterOperator.STRING]?: {\n [key: string]: string\n }\n [SearchFilterOperator.FUZZY]?: {\n [key: string]: string\n }\n [SearchFilterOperator.RANGE]?: {\n [key: string]:\n | {\n high: number | string\n low: number | string\n }\n | { high: number | string }\n | { low: number | string }\n }\n [SearchFilterOperator.EQUAL]?: {\n [key: string]: any\n }\n [SearchFilterOperator.NOT_EQUAL]?: {\n [key: string]: any\n }\n [SearchFilterOperator.EMPTY]?: {\n [key: string]: any\n }\n [SearchFilterOperator.NOT_EMPTY]?: {\n [key: string]: any\n }\n [SearchFilterOperator.ONE_OF]?: {\n [key: string]: any[]\n }\n [SearchFilterOperator.CONTAINS]?: {\n [key: string]: any[]\n }\n [SearchFilterOperator.NOT_CONTAINS]?: {\n [key: string]: any[]\n }\n [SearchFilterOperator.CONTAINS_ANY]?: {\n [key: string]: any[]\n }\n}\n\nexport type SearchQueryFields = Omit<SearchFilters, \"allOr\" | \"onEmptyFilter\">\n\nexport interface SortJson {\n [key: string]: {\n direction: SortDirection\n type?: SortType\n }\n}\n\nexport interface PaginationJson {\n limit: number\n page?: string | number\n}\n\nexport interface RenameColumn {\n old: string\n updated: string\n}\n\nexport interface RelationshipsJson {\n through?: string\n from?: string\n to?: string\n fromPrimary?: string\n toPrimary?: string\n tableName: string\n column: string\n}\n\nexport interface QueryJson {\n endpoint: {\n datasourceId: string\n entityId: string\n operation: Operation\n schema?: string\n }\n resource?: {\n fields: string[]\n }\n filters?: SearchFilters\n sort?: SortJson\n paginate?: PaginationJson\n body?: Row | Row[]\n table?: Table\n meta: {\n table: Table\n tables?: Record<string, Table>\n renamed?: RenameColumn\n }\n extra?: {\n idFilter?: SearchFilters\n }\n relationships?: RelationshipsJson[]\n tableAliases?: Record<string, string>\n}\n\nexport type SqlQueryBinding = Knex.Value[]\n\nexport interface SqlQuery {\n sql: string\n bindings?: SqlQueryBinding\n}\n\nexport enum EmptyFilterOption {\n RETURN_ALL = \"all\",\n RETURN_NONE = \"none\",\n}\n", "import Redlock from \"redlock\"\n\nexport enum LockType {\n /**\n * If this lock is already held the attempted operation will not be performed.\n * No retries will take place and no error will be thrown.\n */\n TRY_ONCE = \"try_once\",\n TRY_TWICE = \"try_twice\",\n DEFAULT = \"default\",\n DELAY_500 = \"delay_500\",\n CUSTOM = \"custom\",\n AUTO_EXTEND = \"auto_extend\",\n}\n\nexport enum LockName {\n MIGRATIONS = \"migrations\",\n TRIGGER_QUOTA = \"trigger_quota\",\n SYNC_ACCOUNT_LICENSE = \"sync_account_license\",\n UPDATE_TENANTS_DOC = \"update_tenants_doc\",\n PERSIST_WRITETHROUGH = \"persist_writethrough\",\n QUOTA_USAGE_EVENT = \"quota_usage_event\",\n APP_MIGRATION = \"app_migrations\",\n PROCESS_AUTO_COLUMNS = \"process_auto_columns\",\n PROCESS_USER_INVITE = \"process_user_invite\",\n}\n\nexport type LockOptions = {\n /**\n * The lock type determines which client to use\n */\n type: LockType\n /**\n * The custom options to use when creating the redlock instance\n * type must be set to custom for the options to be applied\n */\n customOptions?: Redlock.Options\n /**\n * The name for the lock\n */\n name: LockName\n /**\n * The individual resource to lock. This is useful for locking around very specific identifiers, e.g. a document that is prone to conflicts\n */\n resource?: string\n /**\n * This is a system-wide lock - don't use tenancy in lock key\n */\n systemLock?: boolean\n} & (\n | {\n /**\n * The ttl to auto-expire the lock if not unlocked manually\n */\n ttl: number\n type: Exclude<LockType, LockType.AUTO_EXTEND>\n }\n | {\n type: LockType.AUTO_EXTEND\n onExtend?: () => void\n }\n)\n", "import type Nano from \"@budibase/nano\"\nimport {\n AllDocsResponse,\n AnyDocument,\n Document,\n RowValue,\n SqlQueryBinding,\n ViewTemplateOpts,\n} from \"../\"\nimport { Writable } from \"stream\"\nimport type PouchDB from \"pouchdb-find\"\n\nexport enum SearchIndex {\n ROWS = \"rows\",\n AUDIT = \"audit\",\n USER = \"user\",\n}\n\nexport type PouchOptions = {\n inMemory?: boolean\n replication?: boolean\n onDisk?: boolean\n find?: boolean\n}\n\nexport enum SortOption {\n ASCENDING = \"asc\",\n DESCENDING = \"desc\",\n}\n\nexport type IndexAnalyzer = {\n name: string\n default?: string\n fields?: Record<string, string>\n}\n\nexport type DBView = {\n name?: string\n map: string\n reduce?: string\n meta?: ViewTemplateOpts\n groupBy?: string\n}\n\nexport interface DesignDocument extends Document {\n // we use this static reference for all design documents\n _id: \"_design/database\"\n language?: string\n // CouchDB views\n views?: {\n [viewName: string]: DBView\n }\n // Lucene indexes\n indexes?: {\n [indexName: string]: {\n index: string\n analyzer?: string | IndexAnalyzer\n }\n }\n}\n\nexport type CouchFindOptions = {\n selector: PouchDB.Find.Selector\n fields?: string[]\n sort?: {\n [key: string]: SortOption\n }[]\n limit?: number\n skip?: number\n bookmark?: string\n}\n\nexport type DatabaseOpts = {\n skip_setup?: boolean\n}\n\nexport type DatabasePutOpts = {\n force?: boolean\n}\n\nexport type DatabaseCreateIndexOpts = {\n index: {\n fields: string[]\n name?: string | undefined\n ddoc?: string | undefined\n type?: string | undefined\n }\n}\n\nexport type DatabaseDeleteIndexOpts = {\n name: string\n ddoc: string\n type?: string | undefined\n}\n\ntype DBPrimitiveKey = string | number | {}\nexport type DatabaseKey = DBPrimitiveKey | DBPrimitiveKey[]\n\nexport type DatabaseQueryOpts = {\n include_docs?: boolean\n startkey?: DatabaseKey\n endkey?: DatabaseKey\n limit?: number\n skip?: number\n descending?: boolean\n key?: DatabaseKey\n keys?: DatabaseKey[]\n group?: boolean\n startkey_docid?: string\n}\n\nexport const isDocument = (doc: any): doc is Document => {\n return typeof doc === \"object\" && doc._id && doc._rev\n}\n\nexport interface DatabaseDumpOpts {\n filter?: (doc: AnyDocument) => boolean\n batch_size?: number\n batch_limit?: number\n style?: \"main_only\" | \"all_docs\"\n timeout?: number\n doc_ids?: string[]\n query_params?: any\n view?: string\n selector?: any\n}\n\nexport interface Database {\n name: string\n\n exists(): Promise<boolean>\n get<T extends Document>(id?: string): Promise<T>\n exists(docId: string): Promise<boolean>\n getMultiple<T extends Document>(\n ids: string[],\n opts?: { allowMissing?: boolean }\n ): Promise<T[]>\n remove(\n id: string | Document,\n rev?: string\n ): Promise<Nano.DocumentDestroyResponse>\n put(\n document: AnyDocument,\n opts?: DatabasePutOpts\n ): Promise<Nano.DocumentInsertResponse>\n bulkDocs(documents: AnyDocument[]): Promise<Nano.DocumentBulkResponse[]>\n sql<T extends Document>(\n sql: string,\n parameters?: SqlQueryBinding\n ): Promise<T[]>\n allDocs<T extends Document | RowValue>(\n params: DatabaseQueryOpts\n ): Promise<AllDocsResponse<T>>\n query<T extends Document>(\n viewName: string,\n params: DatabaseQueryOpts\n ): Promise<AllDocsResponse<T>>\n destroy(): Promise<Nano.OkResponse | void>\n compact(): Promise<Nano.OkResponse | void>\n // these are all PouchDB related functions that are rarely used - in future\n // should be replaced by better typed/non-pouch implemented methods\n dump(stream: Writable, opts?: DatabaseDumpOpts): Promise<any>\n load(...args: any[]): Promise<any>\n createIndex(...args: any[]): Promise<any>\n deleteIndex(...args: any[]): Promise<any>\n getIndexes(...args: any[]): Promise<any>\n}\n", "export interface GetTenantIdOptions {\n allowNoTenant?: boolean\n excludeStrategies?: TenantResolutionStrategy[]\n includeStrategies?: TenantResolutionStrategy[]\n}\n\nexport enum TenantResolutionStrategy {\n USER = \"user\",\n HEADER = \"header\",\n QUERY = \"query\",\n SUBDOMAIN = \"subdomain\",\n PATH = \"path\",\n}\n", "export enum FeatureFlag {\n LICENSING = \"LICENSING\",\n PER_CREATOR_PER_USER_PRICE = \"PER_CREATOR_PER_USER_PRICE\",\n PER_CREATOR_PER_USER_PRICE_ALERT = \"PER_CREATOR_PER_USER_PRICE_ALERT\",\n}\n\nexport interface TenantFeatureFlags {\n [key: string]: FeatureFlag[]\n}\n", "export enum AppEnvironment {\n PRODUCTION = \"production\",\n DEVELOPMENT = \"development\",\n}\n", "import { Event } from \"../events\"\n\nexport enum CommandWord {\n BACKUPS = \"backups\",\n HOSTING = \"hosting\",\n ANALYTICS = \"analytics\",\n HELP = \"help\",\n PLUGIN = \"plugins\",\n}\n\nexport enum InitType {\n QUICK = \"quick\",\n DIGITAL_OCEAN = \"do\",\n}\n\nexport const AnalyticsEvent = {\n OptOut: \"analytics:opt:out\",\n OptIn: \"analytics:opt:in\",\n SelfHostInit: \"hosting:init\",\n PluginInit: Event.PLUGIN_INIT,\n}\n", "export enum PermissionLevel {\n READ = \"read\",\n WRITE = \"write\",\n EXECUTE = \"execute\",\n ADMIN = \"admin\",\n}\n\n// these are the global types, that govern the underlying default behaviour\nexport enum PermissionType {\n APP = \"app\",\n TABLE = \"table\",\n USER = \"user\",\n AUTOMATION = \"automation\",\n WEBHOOK = \"webhook\",\n BUILDER = \"builder\",\n CREATOR = \"creator\",\n GLOBAL_BUILDER = \"globalBuilder\",\n QUERY = \"query\",\n VIEW = \"view\",\n LEGACY_VIEW = \"legacy_view\",\n}\n\nexport enum PermissionSource {\n EXPLICIT = \"EXPLICIT\",\n INHERITED = \"INHERITED\",\n BASE = \"BASE\",\n}\n", "import { Feature, Hosting, License, PlanType, Quotas } from \"../../sdk\"\nimport { DeepPartial } from \"../../shared\"\nimport { QuotaUsage } from \"../global\"\n\nexport interface CreateAccount {\n email: string\n tenantId: string\n hosting: Hosting\n authType: AuthType\n // optional fields - for sso based sign ups\n registrationStep?: string\n // profile\n tenantName?: string\n name?: string\n size?: string\n profession?: string\n}\n\nexport interface CreatePassswordAccount extends CreateAccount {\n password: string\n}\n\nexport interface CreateVerifiableSSOAccount extends CreateAccount {\n provider?: AccountSSOProvider\n thirdPartyProfile?: any\n}\n\nexport const isCreatePasswordAccount = (\n account: CreateAccount\n): account is CreatePassswordAccount => account.authType === AuthType.PASSWORD\n\nexport interface LicenseOverrides {\n features?: Feature[]\n quotas?: DeepPartial<Quotas>\n}\n\nexport interface Account extends CreateAccount {\n // generated\n accountId: string\n createdAt: number\n // registration\n verified: boolean\n verificationSent: boolean\n // licensing\n tier: string // deprecated\n planType?: PlanType\n /** @deprecated */\n planTier?: number\n license?: License\n installId?: string\n installTenantId?: string\n installVersion?: string\n stripeCustomerId?: string\n licenseKey?: string\n licenseKeyActivatedAt?: number\n licenseRequestedAt?: number\n licenseOverrides?: LicenseOverrides\n provider?: AccountSSOProvider\n providerType?: AccountSSOProviderType\n quotaUsage?: QuotaUsage\n offlineLicenseToken?: string\n}\n\nexport interface PasswordAccount extends Account {\n password: string\n}\n\nexport const isPasswordAccount = (\n account: Account\n): account is PasswordAccount =>\n account.authType === AuthType.PASSWORD && account.hosting === Hosting.SELF\n\nexport interface CloudAccount extends Account {\n password?: string\n budibaseUserId: string\n}\n\nexport const isCloudAccount = (account: Account): account is CloudAccount =>\n account.hosting === Hosting.CLOUD\n\nexport const isSelfHostAccount = (account: Account) =>\n account.hosting === Hosting.SELF\n\nexport const isSSOAccount = (account: Account): account is SSOAccount =>\n account.authType === AuthType.SSO\n\nexport enum AccountSSOProviderType {\n GOOGLE = \"google\",\n MICROSOFT = \"microsoft\",\n}\n\nexport enum AccountSSOProvider {\n GOOGLE = \"google\",\n MICROSOFT = \"microsoft\",\n}\n\nconst verifiableSSOProviders: AccountSSOProvider[] = [\n AccountSSOProvider.MICROSOFT,\n]\nexport function isVerifiableSSOProvider(provider: AccountSSOProvider): boolean {\n return verifiableSSOProviders.includes(provider)\n}\n\nexport interface AccountSSO {\n ssoId?: string\n provider: AccountSSOProvider\n providerType: AccountSSOProviderType\n oauth2?: OAuthTokens\n pictureUrl?: string\n thirdPartyProfile: any // TODO: define what the google profile looks like\n}\n\nexport type SSOAccount = (Account | CloudAccount) & AccountSSO\n\nexport enum AuthType {\n SSO = \"sso\",\n PASSWORD = \"password\",\n}\n\nexport interface OAuthTokens {\n accessToken: string\n refreshToken: string\n}\n", "import { Document } from \"../document\"\nimport { EventEmitter } from \"events\"\nimport { User } from \"../global\"\n\nexport enum AutomationIOType {\n OBJECT = \"object\",\n STRING = \"string\",\n BOOLEAN = \"boolean\",\n NUMBER = \"number\",\n ARRAY = \"array\",\n JSON = \"json\",\n DATE = \"date\",\n}\n\nexport enum AutomationCustomIOType {\n TABLE = \"table\",\n ROW = \"row\",\n ROWS = \"rows\",\n WIDE = \"wide\",\n QUERY = \"query\",\n QUERY_PARAMS = \"queryParams\",\n QUERY_LIMIT = \"queryLimit\",\n LOOP_OPTION = \"loopOption\",\n ITEM = \"item\",\n CODE = \"code\",\n FILTERS = \"filters\",\n COLUMN = \"column\",\n TRIGGER_SCHEMA = \"triggerSchema\",\n CRON = \"cron\",\n WEBHOOK_URL = \"webhookUrl\",\n AUTOMATION = \"automation\",\n AUTOMATION_FIELDS = \"automationFields\",\n}\n\nexport enum AutomationTriggerStepId {\n ROW_SAVED = \"ROW_SAVED\",\n ROW_UPDATED = \"ROW_UPDATED\",\n ROW_DELETED = \"ROW_DELETED\",\n WEBHOOK = \"WEBHOOK\",\n APP = \"APP\",\n CRON = \"CRON\",\n}\n\nexport enum AutomationStepType {\n LOGIC = \"LOGIC\",\n ACTION = \"ACTION\",\n TRIGGER = \"TRIGGER\",\n}\n\nexport enum AutomationActionStepId {\n SEND_EMAIL_SMTP = \"SEND_EMAIL_SMTP\",\n CREATE_ROW = \"CREATE_ROW\",\n UPDATE_ROW = \"UPDATE_ROW\",\n DELETE_ROW = \"DELETE_ROW\",\n EXECUTE_BASH = \"EXECUTE_BASH\",\n OUTGOING_WEBHOOK = \"OUTGOING_WEBHOOK\",\n EXECUTE_SCRIPT = \"EXECUTE_SCRIPT\",\n EXECUTE_QUERY = \"EXECUTE_QUERY\",\n SERVER_LOG = \"SERVER_LOG\",\n DELAY = \"DELAY\",\n FILTER = \"FILTER\",\n QUERY_ROWS = \"QUERY_ROWS\",\n LOOP = \"LOOP\",\n COLLECT = \"COLLECT\",\n OPENAI = \"OPENAI\",\n TRIGGER_AUTOMATION_RUN = \"TRIGGER_AUTOMATION_RUN\",\n // these used to be lowercase step IDs, maintain for backwards compat\n discord = \"discord\",\n slack = \"slack\",\n zapier = \"zapier\",\n integromat = \"integromat\",\n n8n = \"n8n\",\n}\n\nexport interface EmailInvite {\n startTime: Date\n endTime: Date\n summary: string\n location?: string\n url?: string\n}\n\nexport interface SendEmailOpts {\n // workspaceId If finer grain controls being used then this will lookup config for workspace.\n workspaceId?: string\n // user If sending to an existing user the object can be provided, this is used in the context.\n user: User\n // from If sending from an address that is not what is configured in the SMTP config.\n from?: string\n // contents If sending a custom email then can supply contents which will be added to it.\n contents?: string\n // subject A custom subject can be specified if the config one is not desired.\n subject?: string\n // info Pass in a structure of information to be stored alongside the invitation.\n info?: any\n cc?: boolean\n bcc?: boolean\n automation?: boolean\n invite?: EmailInvite\n}\n\nexport const AutomationStepIdArray = [\n ...Object.values(AutomationActionStepId),\n ...Object.values(AutomationTriggerStepId),\n]\n\nexport interface Automation extends Document {\n definition: {\n steps: AutomationStep[]\n trigger: AutomationTrigger\n }\n screenId?: string\n uiTree?: any\n appId: string\n live?: boolean\n name: string\n internal?: boolean\n type?: string\n}\n\ninterface BaseIOStructure {\n type?: AutomationIOType\n customType?: AutomationCustomIOType\n title?: string\n description?: string\n dependsOn?: string\n enum?: string[]\n pretty?: string[]\n properties?: {\n [key: string]: BaseIOStructure\n }\n required?: string[]\n}\n\ninterface InputOutputBlock {\n properties: {\n [key: string]: BaseIOStructure\n }\n required?: string[]\n}\n\nexport interface AutomationStepSchema {\n name: string\n stepTitle?: string\n tagline: string\n icon: string\n description: string\n type: AutomationStepType\n internal?: boolean\n deprecated?: boolean\n stepId: AutomationTriggerStepId | AutomationActionStepId\n blockToLoop?: string\n inputs: {\n [key: string]: any\n }\n schema: {\n inputs: InputOutputBlock\n outputs: InputOutputBlock\n }\n custom?: boolean\n features?: Partial<Record<AutomationFeature, boolean>>\n}\n\nexport enum AutomationFeature {\n LOOPING = \"LOOPING\",\n}\n\nexport interface AutomationStep extends AutomationStepSchema {\n id: string\n}\n\nexport interface AutomationTriggerSchema extends AutomationStepSchema {\n event?: string\n cronJobId?: string\n}\n\nexport interface AutomationTrigger extends AutomationTriggerSchema {\n id: string\n}\n\nexport enum AutomationStepStatus {\n NO_ITERATIONS = \"no_iterations\",\n}\n\nexport enum AutomationStatus {\n SUCCESS = \"success\",\n ERROR = \"error\",\n STOPPED = \"stopped\",\n STOPPED_ERROR = \"stopped_error\",\n}\n\nexport interface AutomationResults {\n automationId?: string\n status?: AutomationStatus\n trigger?: any\n steps: {\n stepId: AutomationTriggerStepId | AutomationActionStepId\n inputs: {\n [key: string]: any\n }\n outputs: {\n [key: string]: any\n }\n }[]\n}\n\nexport interface AutomationLog extends AutomationResults, Document {\n automationName: string\n _rev?: string\n}\n\nexport interface AutomationLogPage {\n data: AutomationLog[]\n hasNextPage: boolean\n nextPage?: string\n}\n\nexport type AutomationStepInput = {\n inputs: Record<string, any>\n context: Record<string, any>\n emitter: EventEmitter\n appId: string\n apiKey?: string\n}\n\nexport interface AutomationMetadata extends Document {\n errorCount?: number\n automationChainCount?: number\n}\n", "import { Document } from \"../document\"\nimport { SourceName } from \"../../sdk\"\nimport { Table } from \"./table\"\n\nexport interface Datasource extends Document {\n type: string\n name?: string\n source: SourceName\n // this is a googlesheets specific property which\n // can be found in the GSheets schema - pertains to SSO creds\n auth?: { type: string }\n // the config is defined by the schema\n config?: Record<string, any>\n plus?: boolean\n isSQL?: boolean\n entities?: {\n [key: string]: Table\n }\n}\n\nexport enum RestAuthType {\n BASIC = \"basic\",\n BEARER = \"bearer\",\n}\n\nexport interface RestBasicAuthConfig {\n username: string\n password: string\n}\n\nexport interface RestBearerAuthConfig {\n token: string\n}\n\nexport interface RestAuthConfig {\n _id: string\n name: string\n type: RestAuthType\n config: RestBasicAuthConfig | RestBearerAuthConfig\n}\n\nexport interface DynamicVariable {\n name: string\n queryId: string\n value: string\n}\n\nexport interface RestConfig {\n url: string\n rejectUnauthorized: boolean\n defaultHeaders: {\n [key: string]: any\n }\n legacyHttpParser: boolean\n authConfigs: RestAuthConfig[]\n staticVariables: {\n [key: string]: string\n }\n dynamicVariables: DynamicVariable[]\n}\n", "import { Document } from \"../document\"\n\nexport interface QuerySchema {\n name?: string\n type: string\n subtype?: string\n}\n\nexport interface Query extends Document {\n datasourceId: string\n name: string\n parameters: QueryParameter[]\n fields: RestQueryFields | any\n transformer: string | null\n schema: Record<string, QuerySchema | string>\n readable: boolean\n queryVerb: string\n // flag to state whether the default bindings are empty strings (old behaviour) or null\n nullDefaultSupport?: boolean\n}\n\nexport interface QueryPreview extends Omit<Query, \"_id\"> {\n queryId?: string\n}\n\nexport interface QueryParameter {\n name: string\n default: string\n}\n\nexport interface QueryResponse {\n rows: any[]\n keys: string[]\n info: any\n extra: any\n pagination: any\n}\n\nexport interface RestQueryFields {\n path: string\n queryString?: string\n headers: { [key: string]: any }\n disabledHeaders: { [key: string]: any }\n requestBody: any\n bodyType: string\n json: object\n method: string\n authConfigId: string\n pagination: PaginationConfig | null\n paginationValues: PaginationValues | null\n}\n\nexport interface PaginationConfig {\n type: string\n location: string\n pageParam: string\n sizeParam: string | null\n responseParam: string | null\n}\n\nexport interface PaginationValues {\n page: string | number | null\n limit: number | null\n}\n\nexport enum HttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PATCH = \"PATCH\",\n PUT = \"PUT\",\n HEAD = \"HEAD\",\n DELETE = \"DELETE\",\n}\n", "import { Document } from \"../../document\"\nimport { View, ViewV2 } from \"../view\"\nimport { RenameColumn } from \"../../../sdk\"\nimport { TableSchema } from \"./schema\"\n\nexport const INTERNAL_TABLE_SOURCE_ID = \"bb_internal\"\n\nexport enum TableSourceType {\n EXTERNAL = \"external\",\n INTERNAL = \"internal\",\n}\n\nexport interface Table extends Document {\n type: \"table\"\n sourceType: TableSourceType\n views?: { [key: string]: View | ViewV2 }\n name: string\n originalName?: string\n sourceId: string\n primary?: string[]\n schema: TableSchema\n primaryDisplay?: string\n relatedFormula?: string[]\n constrained?: string[]\n sql?: boolean\n indexes?: { [key: string]: any }\n created?: boolean\n rowHeight?: number\n}\n\nexport interface TableRequest extends Table {\n _rename?: RenameColumn\n created?: boolean\n}\n", "import { Document } from \"../document\"\n\nexport enum FieldType {\n /**\n * a primitive type, stores a string, called Text within Budibase. This is one of the default\n * types of Budibase, if an external type is not fully understood, we will treat it as text.\n */\n STRING = \"string\",\n /**\n * similar to string type, called Long Form Text within Budibase. This is mainly a frontend\n * orientated type which enables a larger text input area. This can also be used\n * in conjunction with the 'useRichText' option to support a markdown editor/viewer.\n */\n LONGFORM = \"longform\",\n /**\n * similar to string type, called Options within Budibase. This works very similarly to\n * the string type within the backend, but is validated to a list of options. This will\n * display a <select> input within the builder/client.\n */\n OPTIONS = \"options\",\n /**\n * a primitive type, stores a number, as a floating point, called Number within Budibase.\n * this type will always represent numbers as reals/floating point - there is no integer only\n * type within Budibase.\n */\n NUMBER = \"number\",\n /**\n * a primitive type, stores a boolean, called Boolean within Budibase. This is often represented\n * as a toggle or checkbox within forms/grids.\n */\n BOOLEAN = \"boolean\",\n /**\n * a JSON type, this type is always an array of strings, called Multi-select within Budibase.\n * This type can be compared to the options type, as it functions similarly, but allows picking\n * multiple options rather than a single option.\n */\n ARRAY = \"array\",\n /**\n * a string type, this is always a string when input/returned from the API, called Date/Time within\n * Budibase. We utilise ISO date strings for representing dates, this type has a range of subtypes\n * to restrict it to date only, time only and ignore timezone capabilities.\n */\n DATETIME = \"datetime\",\n /**\n * a JSON type, an array of metadata about files held in object storage, called Attachment List within\n * Budibase. To utilise this type there is an API for uploading files to Budibase, which returns metadata\n * that can be stored against columns of this type. Currently this is not supported on external databases.\n */\n ATTACHMENTS = \"attachment\",\n /**\n * a JSON type, similar to the attachments type, called Attachment within Budibase. This type functions\n * much the same as the attachment list, but only holds a single attachment metadata as an object.\n * This simplifies the binding experience of using this column type.\n */\n ATTACHMENT_SINGLE = \"attachment_single\",\n /**\n * a complex type, called Relationships within Budibase. This is the most complex type of Budibase,\n * nothing should be stored against rows under link columns; this type simply represents the\n * relationship between tables as part of the table schema. When rows are input to the Budibase API\n * relationships to be made are represented as a list of row IDs to link. When rows are returned\n * from the Budibase API it will contain a list of row IDs and display column values of the related rows.\n */\n LINK = \"link\",\n /**\n * a complex type, called Formulas within Budibase. This type has two variants, static and dynamic, with\n * static only being supported against internal tables. Dynamic formulas calculate a provided HBS/JS binding\n * based on the row context and enrich it when rows are being returned from the API. Static bindings calculate\n * this when rows are being stored, so that the formula output can be searched upon within the DB.\n */\n FORMULA = \"formula\",\n /**\n * a complex type, called Auto Column within Budibase. This type has a few variants, with options such as a\n * date for created at/updated at, an auto ID column with auto-increments as rows are saved and a user\n * relationship type which stores the created by/updated by user details. These subtypes all depend on the\n * date, number of link types respectively. There is one case where these will be executed in the browser,\n * that is part of the initial formula definition, the formula will be live evaluated in the browser.\n */\n AUTO = \"auto\",\n /**\n * a JSON type, called JSON within Budibase. This type allows any arbitrary JSON to be input to this column\n * type, which will be represented as a JSON object in the row. This type depends on a schema being\n * provided to make the JSON searchable/bindable, the JSON cannot be fully dynamic.\n */\n JSON = \"json\",\n /**\n * @deprecated an internal type, this is an old deprecated type which is no longer used - still represented to note it\n * could appear in very old tables.\n */\n INTERNAL = \"internal\",\n /**\n * a string type, called Barcode/QR within Budibase. This type is used to denote to forms to that this column\n * should be filled in using a camera to read a barcode, there is a form component which will be used when this\n * type is found. The column will contain the contents of any barcode scanned.\n */\n BARCODEQR = \"barcodeqr\",\n /**\n * a string type, this allows representing very large integers, but they are held/managed within Budibase as\n * strings. When stored in external databases Budibase will attempt to use a real big integer type and depend\n * on the database parsing the string to this type as part of saving.\n */\n BIGINT = \"bigint\",\n /**\n * a JSON type, called User within Budibase. This type is used to represent a link to an internal Budibase\n * resource, like a user or group, today only users are supported. This type will be represented as an\n * array of internal resource IDs (e.g. user IDs) within the row - this ID list will be enriched with\n * the full resources when rows are returned from the API. The full resources can be input to the API, or\n * an array of resource IDs, the API will squash these down and validate them before saving the row.\n */\n BB_REFERENCE = \"bb_reference\",\n}\n\nexport interface RowAttachment {\n size: number\n name: string\n extension: string\n key: string\n // Populated on read\n url?: string\n}\n\nexport interface Row extends Document {\n type?: string\n tableId?: string\n _viewId?: string\n [key: string]: any\n}\n\nexport enum FieldSubtype {\n USER = \"user\",\n USERS = \"users\",\n}\n\n// The 'as' are required for typescript not to type the outputs as generic FieldSubtype\nexport const FieldTypeSubtypes = {\n BB_REFERENCE: {\n USER: FieldSubtype.USER as FieldSubtype.USER,\n USERS: FieldSubtype.USERS as FieldSubtype.USERS,\n },\n}\n", "export enum RelationshipType {\n ONE_TO_MANY = \"one-to-many\",\n MANY_TO_ONE = \"many-to-one\",\n MANY_TO_MANY = \"many-to-many\",\n}\n\nexport enum AutoReason {\n FOREIGN_KEY = \"foreign_key\",\n}\n\nexport enum AutoFieldSubType {\n CREATED_BY = \"createdBy\",\n CREATED_AT = \"createdAt\",\n UPDATED_BY = \"updatedBy\",\n UPDATED_AT = \"updatedAt\",\n AUTO_ID = \"autoID\",\n}\n\nexport enum JsonFieldSubType {\n ARRAY = \"array\",\n}\n\nexport enum FormulaType {\n STATIC = \"static\",\n DYNAMIC = \"dynamic\",\n}\n", "// all added by grid/table when defining the\n// column size, position and whether it can be viewed\nimport { FieldSubtype, FieldType } from \"../row\"\nimport {\n AutoFieldSubType,\n AutoReason,\n FormulaType,\n JsonFieldSubType,\n RelationshipType,\n} from \"./constants\"\n\nexport interface UIFieldMetadata {\n order?: number\n width?: number\n visible?: boolean\n icon?: string\n}\n\ninterface BaseRelationshipFieldMetadata\n extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.LINK\n main?: boolean\n fieldName: string\n tableId: string\n tableRev?: string\n subtype?: AutoFieldSubType.CREATED_BY | AutoFieldSubType.UPDATED_BY\n}\n\n// External tables use junction tables, internal tables don't require them\ntype ManyToManyJunctionTableMetadata =\n | {\n through: string\n throughFrom: string\n throughTo: string\n }\n | {\n through?: never\n throughFrom?: never\n throughTo?: never\n }\n\nexport type ManyToManyRelationshipFieldMetadata =\n BaseRelationshipFieldMetadata & {\n relationshipType: RelationshipType.MANY_TO_MANY\n } & ManyToManyJunctionTableMetadata\n\nexport interface OneToManyRelationshipFieldMetadata\n extends BaseRelationshipFieldMetadata {\n relationshipType: RelationshipType.ONE_TO_MANY\n foreignKey?: string\n}\nexport interface ManyToOneRelationshipFieldMetadata\n extends BaseRelationshipFieldMetadata {\n relationshipType: RelationshipType.MANY_TO_ONE\n foreignKey?: string\n}\nexport type RelationshipFieldMetadata =\n | ManyToManyRelationshipFieldMetadata\n | OneToManyRelationshipFieldMetadata\n | ManyToOneRelationshipFieldMetadata\n\nexport interface AutoColumnFieldMetadata\n extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.AUTO\n autocolumn: true\n subtype?: AutoFieldSubType\n lastID?: number\n // if the column was turned to an auto-column for SQL, explains why (primary, foreign etc)\n autoReason?: AutoReason\n}\n\nexport interface NumberFieldMetadata extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.NUMBER\n subtype?: AutoFieldSubType.AUTO_ID\n lastID?: number\n autoReason?: AutoReason.FOREIGN_KEY\n // used specifically when Budibase generates external tables, this denotes if a number field\n // is a foreign key used for a many-to-many relationship\n meta?: {\n toTable: string\n toKey: string\n }\n}\n\nexport interface JsonFieldMetadata extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.JSON\n subtype?: JsonFieldSubType.ARRAY\n}\n\nexport interface DateFieldMetadata extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.DATETIME\n ignoreTimezones?: boolean\n timeOnly?: boolean\n subtype?: AutoFieldSubType.CREATED_AT | AutoFieldSubType.UPDATED_AT\n}\n\nexport interface LongFormFieldMetadata extends BaseFieldSchema {\n type: FieldType.LONGFORM\n useRichText?: boolean | null\n}\n\nexport interface FormulaFieldMetadata extends BaseFieldSchema {\n type: FieldType.FORMULA\n formula: string\n formulaType?: FormulaType\n}\n\nexport interface BBReferenceFieldMetadata\n extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.BB_REFERENCE\n subtype: FieldSubtype.USER | FieldSubtype.USERS\n relationshipType?: RelationshipType\n}\n\nexport interface AttachmentFieldMetadata extends BaseFieldSchema {\n type: FieldType.ATTACHMENTS\n}\n\nexport interface FieldConstraints {\n type?: string\n email?: boolean\n inclusion?: string[]\n length?: {\n minimum?: string | number | null\n maximum?: string | number | null\n message?: string\n }\n numericality?: {\n greaterThanOrEqualTo: string | null\n lessThanOrEqualTo: string | null\n }\n presence?:\n | boolean\n | {\n allowEmpty?: boolean\n }\n datetime?: {\n latest: string\n earliest: string\n }\n}\n\ninterface BaseFieldSchema extends UIFieldMetadata {\n type: FieldType\n name: string\n sortable?: boolean\n // only used by external databases, to denote the real type\n externalType?: string\n constraints?: FieldConstraints\n autocolumn?: boolean\n autoReason?: AutoReason.FOREIGN_KEY\n subtype?: never\n}\n\ninterface OtherFieldMetadata extends BaseFieldSchema {\n type: Exclude<\n FieldType,\n | FieldType.DATETIME\n | FieldType.LINK\n | FieldType.AUTO\n | FieldType.FORMULA\n | FieldType.NUMBER\n | FieldType.LONGFORM\n | FieldType.BB_REFERENCE\n | FieldType.ATTACHMENTS\n >\n}\n\nexport type FieldSchema =\n | OtherFieldMetadata\n | DateFieldMetadata\n | RelationshipFieldMetadata\n | AutoColumnFieldMetadata\n | FormulaFieldMetadata\n | NumberFieldMetadata\n | LongFormFieldMetadata\n | BBReferenceFieldMetadata\n | JsonFieldMetadata\n | AttachmentFieldMetadata\n\nexport interface TableSchema {\n [key: string]: FieldSchema\n}\n\nexport function isRelationshipField(\n field: FieldSchema\n): field is RelationshipFieldMetadata {\n return field.type === FieldType.LINK\n}\n\nexport function isManyToMany(\n field: RelationshipFieldMetadata\n): field is ManyToManyRelationshipFieldMetadata {\n return field.relationshipType === RelationshipType.MANY_TO_MANY\n}\n\nexport function isOneToMany(\n field: RelationshipFieldMetadata\n): field is OneToManyRelationshipFieldMetadata {\n return field.relationshipType === RelationshipType.ONE_TO_MANY\n}\n\nexport function isManyToOne(\n field: RelationshipFieldMetadata\n): field is ManyToOneRelationshipFieldMetadata {\n return field.relationshipType === RelationshipType.MANY_TO_ONE\n}\n\nexport function isBBReferenceField(\n field: FieldSchema\n): field is BBReferenceFieldMetadata {\n return field.type === FieldType.BB_REFERENCE\n}\n\nexport function isAttachmentField(\n field: FieldSchema\n): field is AttachmentFieldMetadata {\n return field.type === FieldType.ATTACHMENTS\n}\n", "import { SearchFilter, SortOrder, SortType } from \"../../api\"\nimport { TableSchema, UIFieldMetadata } from \"./table\"\nimport { Document } from \"../document\"\nimport { DBView } from \"../../sdk\"\n\nexport type ViewTemplateOpts = {\n field: string\n tableId: string\n groupBy: string\n filters: ViewFilter[]\n schema: any\n calculation: string\n groupByMulti?: boolean\n}\n\nexport interface InMemoryView extends Document {\n view: DBView\n name: string\n tableId: string\n groupBy?: string\n}\n\nexport interface View {\n name?: string\n tableId: string\n field?: string\n filters: ViewFilter[]\n schema: ViewSchema\n calculation?: ViewCalculation\n map?: string\n reduce?: any\n meta?: ViewTemplateOpts\n groupBy?: string\n}\n\nexport interface ViewV2 {\n version: 2\n id: string\n name: string\n primaryDisplay?: string\n tableId: string\n query?: SearchFilter[]\n sort?: {\n field: string\n order?: SortOrder\n type?: SortType\n }\n schema?: Record<string, UIFieldMetadata>\n}\n\nexport interface ViewV2Enriched extends ViewV2 {\n schema?: TableSchema\n}\n\nexport type ViewSchema = ViewCountOrSumSchema | ViewStatisticsSchema\n\nexport interface ViewCountOrSumSchema {\n field: string\n value: string\n}\n\n/**\n e.g:\n \"min\": {\n \"type\": \"number\"\n },\n \"max\": {\n \"type\": \"number\"\n }\n */\nexport interface ViewStatisticsSchema {\n [key: string]: {\n type: string\n }\n}\n\nexport interface ViewFilter {\n value?: any\n condition: string\n key: string\n conjunction?: string\n}\n\nexport enum ViewCalculation {\n SUM = \"sum\",\n COUNT = \"count\",\n STATISTICS = \"stats\",\n}\n", "export const SEPARATOR = \"_\"\nexport const UNICODE_MAX = \"\\ufff0\"\n\nexport const prefixed = (type: DocumentType) => `${type}${SEPARATOR}`\n\nexport enum DocumentType {\n USER = \"us\",\n GROUP = \"gr\",\n WORKSPACE = \"workspace\",\n CONFIG = \"config\",\n TEMPLATE = \"template\",\n APP = \"app\",\n DEV = \"dev\",\n APP_DEV = \"app_dev\",\n APP_METADATA = \"app_metadata\",\n ROLE = \"role\",\n MIGRATIONS = \"migrations\",\n DEV_INFO = \"devinfo\",\n AUTOMATION_LOG = \"log_au\",\n ACCOUNT_METADATA = \"acc_metadata\",\n PLUGIN = \"plg\",\n DATASOURCE = \"datasource\",\n DATASOURCE_PLUS = \"datasource_plus\",\n APP_BACKUP = \"backup\",\n TABLE = \"ta\",\n ROW = \"ro\",\n AUTOMATION = \"au\",\n LINK = \"li\",\n WEBHOOK = \"wh\",\n INSTANCE = \"inst\",\n LAYOUT = \"layout\",\n SCREEN = \"screen\",\n QUERY = \"query\",\n DEPLOYMENTS = \"deployments\",\n METADATA = \"metadata\",\n MEM_VIEW = \"view\",\n USER_FLAG = \"flag\",\n AUTOMATION_METADATA = \"meta_au\",\n AUDIT_LOG = \"al\",\n APP_MIGRATION_METADATA = \"_design/migrations\",\n SCIM_LOG = \"scimlog\",\n}\n\n// these are the core documents that make up the data, design\n// and automation sections of an app. This excludes any internal\n// rows as we shouldn't import data.\nexport const DocumentTypesToImport: DocumentType[] = [\n DocumentType.ROLE,\n DocumentType.DATASOURCE,\n DocumentType.DATASOURCE_PLUS,\n DocumentType.TABLE,\n DocumentType.AUTOMATION,\n DocumentType.WEBHOOK,\n DocumentType.SCREEN,\n DocumentType.QUERY,\n DocumentType.METADATA,\n DocumentType.MEM_VIEW,\n // Deprecated but still copied\n DocumentType.INSTANCE,\n DocumentType.LAYOUT,\n]\n\nexport enum InternalTable {\n USER_METADATA = \"ta_users\",\n}\n\n// these documents don't really exist, they are part of other\n// documents or enriched into existence as part of get requests\nexport enum VirtualDocumentType {\n VIEW = \"view\",\n}\n\nexport interface Document {\n _id?: string\n _rev?: string\n createdAt?: string | number\n updatedAt?: string\n}\n\nexport interface AnyDocument extends Document {\n [key: string]: any\n}\n", "import { Document } from \"../document\"\nimport { User } from \"../../\"\n\nexport enum AppBackupType {\n BACKUP = \"backup\",\n RESTORE = \"restore\",\n}\n\nexport enum AppBackupStatus {\n STARTED = \"started\",\n PENDING = \"pending\",\n COMPLETE = \"complete\",\n FAILED = \"failed\",\n}\n\nexport enum AppBackupTrigger {\n PUBLISH = \"publish\",\n MANUAL = \"manual\",\n SCHEDULED = \"scheduled\",\n RESTORING = \"restoring\",\n}\n\nexport interface AppBackupContents {\n datasources: string[]\n screens: string[]\n automations: string[]\n}\n\nexport interface AppBackupMetadata {\n appId: string\n trigger?: AppBackupTrigger\n type: AppBackupType\n status: AppBackupStatus\n name?: string\n createdBy?: string | User\n timestamp: string\n finishedAt?: string\n startedAt?: string\n contents?: AppBackupContents\n}\n\nexport interface AppBackup extends Document, AppBackupMetadata {\n _id: string\n filename?: string\n}\n\nexport type AppBackupFetchOpts = {\n trigger?: AppBackupTrigger\n type?: AppBackupType\n limit?: number\n page?: string\n paginate?: boolean\n startDate?: string\n endDate?: string\n}\n\nexport interface AppBackupQueueData {\n appId: string\n docId: string\n docRev: string\n export?: {\n trigger: AppBackupTrigger\n name?: string\n createdBy?: string\n }\n import?: {\n backupId: string\n nameForBackup: string\n createdBy?: string\n }\n}\n", "import { Document } from \"../document\"\n\nexport enum WebhookActionType {\n AUTOMATION = \"automation\",\n}\n\nexport interface Webhook extends Document {\n live: boolean\n name: string\n action: {\n type: WebhookActionType\n target: string\n }\n bodySchema?: any\n}\n", "export enum SQLiteType {\n REAL = \"REAL\",\n TEXT = \"VARCHAR\",\n INT = \"INTEGER\",\n BLOB = \"BLOB\",\n NUMERIC = \"NUMERIC\",\n}\n\nexport type SQLiteTable = Record<\n string,\n SQLiteType | { field: string; type: SQLiteType }\n>\n\nexport type SQLiteTables = Record<\n string,\n {\n fields: SQLiteTable\n }\n>\n\nexport interface SQLiteDefinition {\n _id: string\n language: string\n sql: {\n tables: SQLiteTables\n options: {\n table_name: string\n }\n }\n}\n", "import { Document } from \"../document\"\n\nexport interface Config<T = any> extends Document {\n type: ConfigType\n config: T\n}\n\nexport interface SMTPInnerConfig {\n port: number\n host: string\n from: string\n subject?: string\n secure: boolean\n auth?: {\n user: string\n pass: string\n }\n connectionTimeout?: any\n}\n\nexport interface SMTPConfig extends Config<SMTPInnerConfig> {}\n\n/**\n * Accessible only via pro.\n */\nexport interface SettingsBrandingConfig {\n faviconUrl?: string\n faviconUrlEtag?: string\n\n emailBrandingEnabled?: boolean\n testimonialsEnabled?: boolean\n platformTitle?: string\n loginHeading?: string\n loginButton?: string\n\n metaDescription?: string\n metaImageUrl?: string\n metaTitle?: string\n}\n\nexport interface SettingsInnerConfig {\n platformUrl?: string\n company?: string\n logoUrl?: string // Populated on read\n logoUrlEtag?: string\n uniqueTenantId?: string\n analyticsEnabled?: boolean\n isSSOEnforced?: boolean\n}\n\nexport interface SettingsConfig extends Config<SettingsInnerConfig> {}\n\nexport type SSOConfigType = ConfigType.GOOGLE | ConfigType.OIDC\nexport type SSOConfig = GoogleInnerConfig | OIDCInnerConfig\n\nexport interface GoogleInnerConfig {\n clientID: string\n clientSecret: string\n activated: boolean\n /**\n * @deprecated read only\n */\n callbackURL?: string\n}\n\nexport interface GoogleConfig extends Config<GoogleInnerConfig> {}\n\nexport interface OIDCStrategyConfiguration {\n issuer: string\n authorizationURL: string\n tokenURL: string\n userInfoURL: string\n clientID: string\n clientSecret: string\n callbackURL: string\n}\n\nexport interface OIDCConfigs {\n configs: OIDCInnerConfig[]\n}\n\nexport interface OIDCLogosInnerConfig {\n [key: string]: string\n}\n\nexport interface OIDCLogosConfig extends Config<OIDCLogosInnerConfig> {}\n\nexport interface OIDCInnerConfig {\n configUrl: string\n clientID: string\n clientSecret: string\n logo: string\n name: string\n uuid: string\n activated: boolean\n scopes: string[]\n}\n\nexport interface OIDCConfig extends Config<OIDCConfigs> {}\n\nexport interface OIDCWellKnownConfig {\n issuer: string\n authorization_endpoint: string\n token_endpoint: string\n userinfo_endpoint: string\n}\n\nexport interface SCIMInnerConfig {\n enabled: boolean\n}\n\nexport interface SCIMConfig extends Config<SCIMInnerConfig> {}\n\nexport const isSettingsConfig = (config: Config): config is SettingsConfig =>\n config.type === ConfigType.SETTINGS\n\nexport const isSMTPConfig = (config: Config): config is SMTPConfig =>\n config.type === ConfigType.SMTP\n\nexport const isGoogleConfig = (config: Config): config is GoogleConfig =>\n config.type === ConfigType.GOOGLE\n\nexport const isOIDCConfig = (config: Config): config is OIDCConfig =>\n config.type === ConfigType.OIDC\n\nexport const isSCIMConfig = (config: Config): config is SCIMConfig =>\n config.type === ConfigType.SCIM\n\nexport enum ConfigType {\n SETTINGS = \"settings\",\n ACCOUNT = \"account\",\n SMTP = \"smtp\",\n GOOGLE = \"google\",\n OIDC = \"oidc\",\n OIDC_LOGOS = \"logos_oidc\",\n SCIM = \"scim\",\n}\n", "import { Document } from \"../document\"\n\n// SSO\n\nexport interface SSOProfileJson {\n email?: string\n picture?: string\n}\n\nexport interface OAuth2 {\n accessToken: string\n refreshToken?: string\n}\n\nexport enum SSOProviderType {\n OIDC = \"oidc\",\n GOOGLE = \"google\",\n}\n\nexport interface UserSSO {\n provider: string // the individual provider e.g. Okta, Auth0, Google\n providerType: SSOProviderType\n oauth2?: OAuth2\n thirdPartyProfile?: SSOProfileJson\n profile?: {\n displayName?: string\n name?: {\n givenName?: string\n familyName?: string\n }\n }\n}\n\nexport type SSOUser = User & UserSSO\n\nexport function isSSOUser(user: User): user is SSOUser {\n return !!(user as SSOUser).providerType\n}\n\n// USER\n\nexport interface User extends Document {\n tenantId: string\n email: string\n userId?: string\n firstName?: string\n lastName?: string\n pictureUrl?: string\n forceResetPassword?: boolean\n roles: UserRoles\n builder?: {\n global?: boolean\n apps?: string[]\n creator?: boolean\n }\n admin?: {\n global: boolean\n }\n password?: string\n status?: UserStatus\n createdAt?: number // override the default createdAt behaviour - users sdk historically set this to Date.now()\n dayPassRecordedAt?: string\n userGroups?: string[]\n onboardedAt?: string\n tours?: Record<string, Date>\n scimInfo?: { isSync: true } & Record<string, any>\n appFavourites?: string[]\n ssoId?: string\n}\n\nexport enum UserStatus {\n ACTIVE = \"active\",\n INACTIVE = \"inactive\",\n}\n\nexport interface UserRoles {\n [key: string]: string\n}\n\n// UTILITY TYPES\n\nexport interface BuilderUser extends User {\n builder: {\n global?: boolean\n apps?: string[]\n }\n}\n\nexport interface AdminUser extends User {\n admin: {\n global: boolean\n }\n builder: {\n global: boolean\n }\n}\n\nexport interface AdminOnlyUser extends User {\n admin: {\n global: boolean\n }\n}\n\nexport function isUser(user: object): user is User {\n return !!(user as User).roles\n}\n", "import { Document } from \"../document\"\n\nexport enum PluginType {\n DATASOURCE = \"datasource\",\n COMPONENT = \"component\",\n AUTOMATION = \"automation\",\n}\n\nexport enum PluginSource {\n NPM = \"NPM\",\n GITHUB = \"Github\",\n URL = \"URL\",\n FILE = \"File Upload\",\n}\nexport interface FileType {\n path: string\n name: string\n}\n\nexport interface Plugin extends Document {\n description: string\n name: string\n version: string\n source: PluginSource\n package: { [key: string]: any }\n hash: string\n schema: {\n type: PluginType\n [key: string]: any\n }\n iconFileName?: string\n // Populated on read\n jsUrl?: string\n // Populated on read\n iconUrl?: string\n}\n\nexport const PLUGIN_TYPE_ARR = Object.values(PluginType)\n", "import { MonthlyQuotaName, StaticQuotaName } from \"../../sdk\"\n\nexport enum BreakdownQuotaName {\n ROW_QUERIES = \"rowQueries\",\n DATASOURCE_QUERIES = \"datasourceQueries\",\n AUTOMATIONS = \"automations\",\n}\n\nexport const APP_QUOTA_NAMES = [\n StaticQuotaName.ROWS,\n MonthlyQuotaName.QUERIES,\n MonthlyQuotaName.AUTOMATIONS,\n]\n\nexport const BREAKDOWN_QUOTA_NAMES = [\n MonthlyQuotaName.QUERIES,\n MonthlyQuotaName.AUTOMATIONS,\n]\n\nexport interface UsageBreakdown {\n parent: MonthlyQuotaName\n values: {\n [key: string]: number\n }\n}\n\nexport type QuotaTriggers = {\n [key: string]: string | undefined\n}\n\nexport interface StaticUsage {\n [StaticQuotaName.APPS]: number\n [StaticQuotaName.PLUGINS]: number\n [StaticQuotaName.USERS]: number\n [StaticQuotaName.CREATORS]: number\n [StaticQuotaName.USER_GROUPS]: number\n [StaticQuotaName.ROWS]: number\n triggers: {\n [key in StaticQuotaName]?: QuotaTriggers\n }\n}\n\nexport interface MonthlyUsage {\n [MonthlyQuotaName.QUERIES]: number\n [MonthlyQuotaName.AUTOMATIONS]: number\n [MonthlyQuotaName.DAY_PASSES]: number\n triggers: {\n [key in MonthlyQuotaName]?: QuotaTriggers\n }\n breakdown?: {\n [key in BreakdownQuotaName]?: UsageBreakdown\n }\n}\n\nexport interface BaseQuotaUsage {\n usageQuota: StaticUsage\n monthly: {\n [key: string]: MonthlyUsage\n }\n}\n\nexport interface QuotaUsage extends BaseQuotaUsage {\n _id: string\n _rev?: string\n quotaReset: string\n apps?: {\n [key: string]: BaseQuotaUsage\n }\n}\n\nexport type SetUsageValues = {\n total: number\n app?: number\n breakdown?: number\n triggers?: QuotaTriggers\n}\n\nexport type UsageValues = {\n total: number\n app?: number\n breakdown?: number\n}\n", "import { Document } from \"../document\"\n\nexport enum ScheduleType {\n APP_BACKUP = \"app_backup\",\n}\n\nexport enum ScheduleRepeatPeriod {\n DAILY = \"daily\",\n WEEKLY = \"weekly\",\n MONTHLY = \"monthly\",\n}\n\nexport interface Schedule extends Document {\n type: ScheduleType\n name: string\n startDate: string\n repeat: ScheduleRepeatPeriod\n metadata: ScheduleMetadata\n}\n\nexport type ScheduleMetadata = AppBackupScheduleMetadata\n\nexport const isAppBackupMetadata = (\n type: ScheduleType,\n metadata: ScheduleMetadata\n): metadata is AppBackupScheduleMetadata => {\n return type === ScheduleType.APP_BACKUP\n}\n\nexport interface AppBackupScheduleMetadata {\n apps: string[]\n}\n", "import { Document } from \"../document\"\nimport { Event } from \"../../sdk\"\n\nexport const AuditLogSystemUser = \"SYSTEM\"\n\nexport type FallbackInfo = {\n appName?: string\n email?: string\n}\n\nexport interface AuditLogDoc extends Document {\n appId?: string\n event: Event\n userId: string\n timestamp: string\n metadata: any\n name: string\n fallback?: FallbackInfo\n}\n", "export enum PingSource {\n BUILDER = \"builder\",\n APP = \"app\",\n}\n\nexport interface AnalyticsPingRequest {\n source: PingSource\n timezone: string\n embedded?: boolean\n}\n", "import { Event } from \"../../../sdk\"\nimport { PaginationResponse, BasicPaginationRequest } from \"../\"\nimport { User, App } from \"../../../\"\n\nexport interface AuditLogSearchParams {\n userIds?: string[]\n appIds?: string[]\n events?: Event[]\n startDate?: string\n endDate?: string\n fullSearch?: string\n bookmark?: string\n}\n\nexport interface DownloadAuditLogsRequest extends AuditLogSearchParams {}\n\nexport interface SearchAuditLogsRequest\n extends BasicPaginationRequest,\n AuditLogSearchParams {}\n\nexport enum AuditLogResourceStatus {\n DELETED = \"deleted\",\n}\n\nexport type DeletedResourceInfo = {\n _id: string\n status: AuditLogResourceStatus\n email?: string\n name?: string\n}\n\nexport interface AuditLogEnriched {\n app?: App | DeletedResourceInfo\n user: User | DeletedResourceInfo\n event: Event\n timestamp: string\n name: string\n metadata: any\n}\n\nexport interface SearchAuditLogsResponse extends PaginationResponse {\n data: AuditLogEnriched[]\n}\n\nexport interface DefinitionsAuditLogsResponse {\n events: Record<string, string>\n}\n", "export enum EventPublishType {\n ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED = \"environment_variable_upgrade_panel_opened\",\n}\n\nexport interface PostEventPublishRequest {\n type: EventPublishType\n}\n", "export enum SortOrder {\n ASCENDING = \"ascending\",\n DESCENDING = \"descending\",\n}\n\nexport enum SortType {\n STRING = \"string\",\n NUMBER = \"number\",\n}\n\nexport interface BasicPaginationRequest {\n bookmark?: string\n}\n\nexport interface PaginationRequest extends BasicPaginationRequest {\n limit?: number\n sort?: {\n order: SortOrder\n column: string\n type: SortType\n }\n}\n\nexport interface PaginationResponse {\n bookmark: string | number | undefined\n hasNextPage?: boolean\n}\n", "export enum ServiceType {\n WORKER = \"worker\",\n APPS = \"apps\",\n}\n\nexport enum MaintenanceType {\n SQS_MISSING = \"sqs_missing\",\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["export * from \"./documents\"\nexport * from \"./sdk\"\nexport * from \"./api\"\nexport * from \"./core\"\nexport * from \"./shared\"\n", "export enum Hosting {\n CLOUD = \"cloud\",\n SELF = \"self\",\n}\n", "import { Hosting } from \"../hosting\"\nimport { Group, Identity } from \"./identification\"\n\nexport enum Event {\n // USER\n USER_CREATED = \"user:created\",\n USER_UPDATED = \"user:updated\",\n USER_DELETED = \"user:deleted\",\n\n // USER / ONBOARDING\n USER_ONBOARDING_COMPLETE = \"user:onboarding:complete\",\n\n // USER / PERMISSIONS\n USER_PERMISSION_ADMIN_ASSIGNED = \"user:admin:assigned\",\n USER_PERMISSION_ADMIN_REMOVED = \"user:admin:removed\",\n USER_PERMISSION_BUILDER_ASSIGNED = \"user:builder:assigned\",\n USER_PERMISSION_BUILDER_REMOVED = \"user:builder:removed\",\n\n // USER / INVITE\n USER_INVITED = \"user:invited\",\n USER_INVITED_ACCEPTED = \"user:invite:accepted\",\n\n // USER / PASSWORD\n USER_PASSWORD_FORCE_RESET = \"user:password:force:reset\",\n USER_PASSWORD_UPDATED = \"user:password:updated\",\n USER_PASSWORD_RESET_REQUESTED = \"user:password:reset:requested\",\n USER_PASSWORD_RESET = \"user:password:reset\",\n\n // USER / COLLABORATION\n USER_DATA_COLLABORATION = \"user:data:collaboration\",\n\n // EMAIL\n EMAIL_SMTP_CREATED = \"email:smtp:created\",\n EMAIL_SMTP_UPDATED = \"email:smtp:updated\",\n\n // AUTH\n AUTH_SSO_CREATED = \"auth:sso:created\",\n AUTH_SSO_UPDATED = \"auth:sso:updated\",\n AUTH_SSO_ACTIVATED = \"auth:sso:activated\",\n AUTH_SSO_DEACTIVATED = \"auth:sso:deactivated\",\n AUTH_LOGIN = \"auth:login\",\n AUTH_LOGOUT = \"auth:logout\",\n\n // ORG\n ORG_NAME_UPDATED = \"org:info:name:updated\",\n ORG_LOGO_UPDATED = \"org:info:logo:updated\",\n ORG_PLATFORM_URL_UPDATED = \"org:platformurl:updated\",\n\n // INSTALLATION\n INSTALLATION_VERSION_CHECKED = \"installation:version:checked\",\n INSTALLATION_VERSION_UPGRADED = \"installation:version:upgraded\",\n INSTALLATION_VERSION_DOWNGRADED = \"installation:version:downgraded\",\n INSTALLATION_FIRST_STARTUP = \"installation:firstStartup\",\n\n // ORG / ANALYTICS\n ANALYTICS_OPT_OUT = \"analytics:opt:out\",\n ANALYTICS_OPT_IN = \"analytics:opt:in\",\n\n // APP\n APP_CREATED = \"app:created\",\n APP_UPDATED = \"app:updated\",\n APP_DELETED = \"app:deleted\",\n APP_DUPLICATED = \"app:duplicated\",\n APP_PUBLISHED = \"app:published\",\n APP_UNPUBLISHED = \"app:unpublished\",\n APP_TEMPLATE_IMPORTED = \"app:template:imported\",\n APP_FILE_IMPORTED = \"app:file:imported\",\n APP_VERSION_UPDATED = \"app:version:updated\",\n APP_VERSION_REVERTED = \"app:version:reverted\",\n APP_REVERTED = \"app:reverted\",\n APP_EXPORTED = \"app:exported\",\n\n // ROLE\n ROLE_CREATED = \"role:created\",\n ROLE_UPDATED = \"role:updated\",\n ROLE_DELETED = \"role:deleted\",\n ROLE_ASSIGNED = \"role:assigned\",\n ROLE_UNASSIGNED = \"role:unassigned\",\n\n // SERVE\n SERVED_BUILDER = \"served:builder\",\n SERVED_APP = \"served:app\",\n SERVED_APP_PREVIEW = \"served:app:preview\",\n\n // DATASOURCE\n DATASOURCE_CREATED = \"datasource:created\",\n DATASOURCE_UPDATED = \"datasource:updated\",\n DATASOURCE_DELETED = \"datasource:deleted\",\n\n // QUERY\n QUERY_CREATED = \"query:created\",\n QUERY_UPDATED = \"query:updated\",\n QUERY_DELETED = \"query:deleted\",\n QUERY_IMPORT = \"query:import\",\n QUERIES_RUN = \"queries:run\",\n QUERY_PREVIEWED = \"query:previewed\",\n\n // TABLE\n TABLE_CREATED = \"table:created\",\n TABLE_UPDATED = \"table:updated\",\n TABLE_DELETED = \"table:deleted\",\n TABLE_EXPORTED = \"table:exported\",\n TABLE_IMPORTED = \"table:imported\",\n TABLE_DATA_IMPORTED = \"table:data:imported\",\n\n // VIEW\n VIEW_CREATED = \"view:created\",\n VIEW_UPDATED = \"view:updated\",\n VIEW_DELETED = \"view:deleted\",\n VIEW_EXPORTED = \"view:exported\",\n VIEW_FILTER_CREATED = \"view:filter:created\",\n VIEW_FILTER_UPDATED = \"view:filter:updated\",\n VIEW_FILTER_DELETED = \"view:filter:deleted\",\n VIEW_CALCULATION_CREATED = \"view:calculation:created\",\n VIEW_CALCULATION_UPDATED = \"view:calculation:updated\",\n VIEW_CALCULATION_DELETED = \"view:calculation:deleted\",\n\n // ROWS\n ROWS_CREATED = \"rows:created\",\n ROWS_IMPORTED = \"rows:imported\",\n\n // COMPONENT\n COMPONENT_CREATED = \"component:created\",\n COMPONENT_DELETED = \"component:deleted\",\n\n // SCREEN\n SCREEN_CREATED = \"screen:created\",\n SCREEN_DELETED = \"screen:deleted\",\n\n // LAYOUT\n LAYOUT_CREATED = \"layout:created\",\n LAYOUT_DELETED = \"layout:deleted\",\n\n // AUTOMATION\n AUTOMATION_CREATED = \"automation:created\",\n AUTOMATION_DELETED = \"automation:deleted\",\n AUTOMATION_TESTED = \"automation:tested\",\n AUTOMATIONS_RUN = \"automations:run\",\n AUTOMATION_STEP_CREATED = \"automation:step:created\",\n AUTOMATION_STEP_DELETED = \"automation:step:deleted\",\n AUTOMATION_TRIGGER_UPDATED = \"automation:trigger:updated\",\n\n // LICENSE\n LICENSE_PLAN_CHANGED = \"license:plan:changed\",\n LICENSE_ACTIVATED = \"license:activated\",\n LICENSE_PAYMENT_FAILED = \"license:payment:failed\",\n LICENSE_PAYMENT_RECOVERED = \"license:payment:recovered\",\n LICENSE_CHECKOUT_OPENED = \"license:checkout:opened\",\n LICENSE_CHECKOUT_SUCCESS = \"license:checkout:success\",\n LICENSE_PORTAL_OPENED = \"license:portal:opened\",\n\n // ACCOUNT\n ACCOUNT_CREATED = \"account:created\",\n ACCOUNT_DELETED = \"account:deleted\",\n ACCOUNT_VERIFIED = \"account:verified\",\n\n // BACKFILL\n APP_BACKFILL_SUCCEEDED = \"app:backfill:succeeded\",\n APP_BACKFILL_FAILED = \"app:backfill:failed\",\n TENANT_BACKFILL_SUCCEEDED = \"tenant:backfill:succeeded\",\n TENANT_BACKFILL_FAILED = \"tenant:backfill:failed\",\n INSTALLATION_BACKFILL_SUCCEEDED = \"installation:backfill:succeeded\",\n INSTALLATION_BACKFILL_FAILED = \"installation:backfill:failed\",\n\n // USER\n USER_GROUP_CREATED = \"user_group:created\",\n USER_GROUP_UPDATED = \"user_group:updated\",\n USER_GROUP_DELETED = \"user_group:deleted\",\n USER_GROUP_USERS_ADDED = \"user_group:user_added\",\n USER_GROUP_USERS_REMOVED = \"user_group:users_deleted\",\n USER_GROUP_PERMISSIONS_EDITED = \"user_group:permissions_edited\",\n USER_GROUP_ONBOARDING = \"user_group:onboarding_added\",\n\n // PLUGIN\n PLUGIN_INIT = \"plugin:init\",\n PLUGIN_IMPORTED = \"plugin:imported\",\n PLUGIN_DELETED = \"plugin:deleted\",\n\n // BACKUP\n APP_BACKUP_RESTORED = \"app:backup:restored\",\n APP_BACKUP_TRIGGERED = \"app:backup:triggered\",\n\n // ENVIRONMENT VARIABLE\n ENVIRONMENT_VARIABLE_CREATED = \"environment_variable:created\",\n ENVIRONMENT_VARIABLE_DELETED = \"environment_variable:deleted\",\n ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED = \"environment_variable:upgrade_panel_opened\",\n\n // AUDIT LOG\n AUDIT_LOGS_FILTERED = \"audit_log:filtered\",\n AUDIT_LOGS_DOWNLOADED = \"audit_log:downloaded\",\n}\n\nexport const UserGroupSyncEvents: Event[] = [\n Event.USER_CREATED,\n Event.USER_UPDATED,\n Event.USER_DELETED,\n Event.USER_PERMISSION_ADMIN_ASSIGNED,\n Event.USER_PERMISSION_ADMIN_REMOVED,\n Event.USER_PERMISSION_BUILDER_ASSIGNED,\n Event.USER_PERMISSION_BUILDER_REMOVED,\n Event.USER_GROUP_CREATED,\n Event.USER_GROUP_UPDATED,\n Event.USER_GROUP_DELETED,\n Event.USER_GROUP_USERS_ADDED,\n Event.USER_GROUP_USERS_REMOVED,\n Event.USER_GROUP_PERMISSIONS_EDITED,\n]\n\nexport const AsyncEvents: Event[] = [...UserGroupSyncEvents]\n\n// all events that are not audited have been added to this record as undefined, this means\n// that Typescript can protect us against new events being added and auditing of those\n// events not being considered. This might be a little ugly, but provides a level of\n// Typescript build protection for the audit log feature, any new event also needs to be\n// added to this map, during which the developer will need to consider if it should be\n// a user facing event or not.\nexport const AuditedEventFriendlyName: Record<Event, string | undefined> = {\n // USER\n [Event.USER_CREATED]: `User \"{{ email }}\" created{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_UPDATED]: `User \"{{ email }}\" updated{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_DELETED]: `User \"{{ email }}\" deleted{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_PERMISSION_ADMIN_ASSIGNED]: `User \"{{ email }}\" admin role assigned`,\n [Event.USER_PERMISSION_ADMIN_REMOVED]: `User \"{{ email }}\" admin role removed`,\n [Event.USER_PERMISSION_BUILDER_ASSIGNED]: `User \"{{ email }}\" builder role assigned`,\n [Event.USER_PERMISSION_BUILDER_REMOVED]: `User \"{{ email }}\" builder role removed`,\n [Event.USER_INVITED]: `User \"{{ email }}\" invited`,\n [Event.USER_INVITED_ACCEPTED]: `User \"{{ email }}\" accepted invite`,\n [Event.USER_PASSWORD_UPDATED]: `User \"{{ email }}\" password updated`,\n [Event.USER_PASSWORD_RESET_REQUESTED]: `User \"{{ email }}\" password reset requested`,\n [Event.USER_PASSWORD_RESET]: `User \"{{ email }}\" password reset`,\n [Event.USER_GROUP_CREATED]: `User group \"{{ name }}\" created{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_UPDATED]: `User group \"{{ name }}\" updated{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_DELETED]: `User group \"{{ name }}\" deleted{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_USERS_ADDED]: `User group \"{{ name }}\" {{ count }} users added{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_USERS_REMOVED]: `User group \"{{ name }}\" {{ count }} users removed{{#if viaScim}} via SCIM{{/if}}`,\n [Event.USER_GROUP_PERMISSIONS_EDITED]: `User group \"{{ name }}\" permissions edited`,\n [Event.USER_PASSWORD_FORCE_RESET]: undefined,\n [Event.USER_GROUP_ONBOARDING]: undefined,\n [Event.USER_ONBOARDING_COMPLETE]: undefined,\n [Event.USER_DATA_COLLABORATION]: undefined,\n\n // EMAIL\n [Event.EMAIL_SMTP_CREATED]: `Email configuration created`,\n [Event.EMAIL_SMTP_UPDATED]: `Email configuration updated`,\n\n // AUTH\n [Event.AUTH_SSO_CREATED]: `SSO configuration created`,\n [Event.AUTH_SSO_UPDATED]: `SSO configuration updated`,\n [Event.AUTH_SSO_ACTIVATED]: `SSO configuration activated`,\n [Event.AUTH_SSO_DEACTIVATED]: `SSO configuration deactivated`,\n [Event.AUTH_LOGIN]: `User \"{{ email }}\" logged in`,\n [Event.AUTH_LOGOUT]: `User \"{{ email }}\" logged out`,\n\n // ORG\n [Event.ORG_NAME_UPDATED]: `Organisation name updated`,\n [Event.ORG_LOGO_UPDATED]: `Organisation logo updated`,\n [Event.ORG_PLATFORM_URL_UPDATED]: `Organisation platform URL updated`,\n\n // APP\n [Event.APP_CREATED]: `App \"{{ name }}\" created`,\n [Event.APP_UPDATED]: `App \"{{ name }}\" updated`,\n [Event.APP_DELETED]: `App \"{{ name }}\" deleted`,\n [Event.APP_DUPLICATED]: `App \"{{ name }}\" duplicated`,\n [Event.APP_PUBLISHED]: `App \"{{ name }}\" published`,\n [Event.APP_UNPUBLISHED]: `App \"{{ name }}\" unpublished`,\n [Event.APP_TEMPLATE_IMPORTED]: `App \"{{ name }}\" template imported`,\n [Event.APP_FILE_IMPORTED]: `App \"{{ name }}\" file imported`,\n [Event.APP_VERSION_UPDATED]: `App \"{{ name }}\" version updated`,\n [Event.APP_VERSION_REVERTED]: `App \"{{ name }}\" version reverted`,\n [Event.APP_REVERTED]: `App \"{{ name }}\" reverted`,\n [Event.APP_EXPORTED]: `App \"{{ name }}\" exported`,\n [Event.APP_BACKUP_RESTORED]: `App backup \"{{ name }}\" restored`,\n [Event.APP_BACKUP_TRIGGERED]: `App backup \"{{ name }}\" triggered`,\n\n // DATASOURCE\n [Event.DATASOURCE_CREATED]: `Datasource created`,\n [Event.DATASOURCE_UPDATED]: `Datasource updated`,\n [Event.DATASOURCE_DELETED]: `Datasource deleted`,\n\n // QUERY\n [Event.QUERY_CREATED]: `Query created`,\n [Event.QUERY_UPDATED]: `Query updated`,\n [Event.QUERY_DELETED]: `Query deleted`,\n [Event.QUERY_IMPORT]: `Query import`,\n [Event.QUERIES_RUN]: undefined,\n [Event.QUERY_PREVIEWED]: undefined,\n\n // TABLE\n [Event.TABLE_CREATED]: `Table \"{{ name }}\" created`,\n [Event.TABLE_UPDATED]: `Table \"{{ name }}\" updated`,\n [Event.TABLE_DELETED]: `Table \"{{ name }}\" deleted`,\n [Event.TABLE_EXPORTED]: `Table \"{{ name }}\" exported`,\n [Event.TABLE_IMPORTED]: `Table \"{{ name }}\" imported`,\n [Event.TABLE_DATA_IMPORTED]: `Data imported to table`,\n\n // ROWS\n [Event.ROWS_CREATED]: `Rows created`,\n [Event.ROWS_IMPORTED]: `Rows imported`,\n\n // AUTOMATION\n [Event.AUTOMATION_CREATED]: `Automation \"{{ name }}\" created`,\n [Event.AUTOMATION_DELETED]: `Automation \"{{ name }}\" deleted`,\n [Event.AUTOMATION_STEP_CREATED]: `Automation \"{{ name }}\" step added`,\n [Event.AUTOMATION_STEP_DELETED]: `Automation \"{{ name }}\" step removed`,\n [Event.AUTOMATION_TESTED]: undefined,\n [Event.AUTOMATIONS_RUN]: undefined,\n [Event.AUTOMATION_TRIGGER_UPDATED]: undefined,\n\n // SCREEN\n [Event.SCREEN_CREATED]: `Screen \"{{ name }}\" created`,\n [Event.SCREEN_DELETED]: `Screen \"{{ name }}\" deleted`,\n\n // COMPONENT\n [Event.COMPONENT_CREATED]: `Component created`,\n [Event.COMPONENT_DELETED]: `Component deleted`,\n\n // ENVIRONMENT VARIABLE\n [Event.ENVIRONMENT_VARIABLE_CREATED]: `Environment variable created`,\n [Event.ENVIRONMENT_VARIABLE_DELETED]: `Environment variable deleted`,\n [Event.ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED]: undefined,\n\n // PLUGIN\n [Event.PLUGIN_IMPORTED]: `Plugin imported`,\n [Event.PLUGIN_DELETED]: `Plugin deleted`,\n [Event.PLUGIN_INIT]: undefined,\n\n // ROLE - NOT AUDITED\n [Event.ROLE_CREATED]: undefined,\n [Event.ROLE_UPDATED]: undefined,\n [Event.ROLE_DELETED]: undefined,\n [Event.ROLE_ASSIGNED]: undefined,\n [Event.ROLE_UNASSIGNED]: undefined,\n\n // LICENSE - NOT AUDITED\n [Event.LICENSE_PLAN_CHANGED]: undefined,\n [Event.LICENSE_ACTIVATED]: undefined,\n [Event.LICENSE_PAYMENT_FAILED]: undefined,\n [Event.LICENSE_PAYMENT_RECOVERED]: undefined,\n [Event.LICENSE_CHECKOUT_OPENED]: undefined,\n [Event.LICENSE_CHECKOUT_SUCCESS]: undefined,\n [Event.LICENSE_PORTAL_OPENED]: undefined,\n\n // ACCOUNT - NOT AUDITED\n [Event.ACCOUNT_CREATED]: undefined,\n [Event.ACCOUNT_DELETED]: undefined,\n [Event.ACCOUNT_VERIFIED]: undefined,\n\n // BACKFILL - NOT AUDITED\n [Event.APP_BACKFILL_SUCCEEDED]: undefined,\n [Event.APP_BACKFILL_FAILED]: undefined,\n [Event.TENANT_BACKFILL_SUCCEEDED]: undefined,\n [Event.TENANT_BACKFILL_FAILED]: undefined,\n [Event.INSTALLATION_BACKFILL_SUCCEEDED]: undefined,\n [Event.INSTALLATION_BACKFILL_FAILED]: undefined,\n\n // LAYOUT - NOT AUDITED\n [Event.LAYOUT_CREATED]: undefined,\n [Event.LAYOUT_DELETED]: undefined,\n\n // VIEW - NOT AUDITED\n [Event.VIEW_CREATED]: undefined,\n [Event.VIEW_UPDATED]: undefined,\n [Event.VIEW_DELETED]: undefined,\n [Event.VIEW_EXPORTED]: undefined,\n [Event.VIEW_FILTER_CREATED]: undefined,\n [Event.VIEW_FILTER_UPDATED]: undefined,\n [Event.VIEW_FILTER_DELETED]: undefined,\n [Event.VIEW_CALCULATION_CREATED]: undefined,\n [Event.VIEW_CALCULATION_UPDATED]: undefined,\n [Event.VIEW_CALCULATION_DELETED]: undefined,\n\n // SERVED - NOT AUDITED\n [Event.SERVED_BUILDER]: undefined,\n [Event.SERVED_APP]: undefined,\n [Event.SERVED_APP_PREVIEW]: undefined,\n\n // ANALYTICS - NOT AUDITED\n [Event.ANALYTICS_OPT_OUT]: undefined,\n [Event.ANALYTICS_OPT_IN]: undefined,\n\n // INSTALLATION - NOT AUDITED\n [Event.INSTALLATION_VERSION_CHECKED]: undefined,\n [Event.INSTALLATION_VERSION_UPGRADED]: undefined,\n [Event.INSTALLATION_VERSION_DOWNGRADED]: undefined,\n [Event.INSTALLATION_FIRST_STARTUP]: undefined,\n\n // AUDIT LOG - NOT AUDITED\n [Event.AUDIT_LOGS_FILTERED]: undefined,\n [Event.AUDIT_LOGS_DOWNLOADED]: undefined,\n}\n\n// properties added at the final stage of the event pipeline\nexport interface BaseEvent {\n version?: string\n service?: string\n environment?: string\n appId?: string\n installationId?: string\n tenantId?: string\n hosting?: Hosting\n // any props in the audited section will be removed before passing events\n // up out of system (purely for use with auditing)\n audited?: {\n [key: string]: any\n }\n}\n\nexport type TableExportFormat = \"json\" | \"csv\"\n\nexport type DocUpdateEvent = {\n id: string\n tenantId: string\n appId?: string\n}\n\nexport interface EventProcessor {\n processEvent(\n event: Event,\n identity: Identity,\n properties: any,\n timestamp?: string | number\n ): Promise<void>\n identify?(identity: Identity, timestamp?: string | number): Promise<void>\n identifyGroup?(group: Group, timestamp?: string | number): Promise<void>\n shutdown?(): void\n}\n", "import { Hosting } from \"..\"\n\n// GROUPS\n\nexport enum GroupType {\n TENANT = \"tenant\",\n INSTALLATION = \"installation\",\n}\n\nexport interface Group {\n id: string\n type: IdentityType\n environment: string\n hosting: Hosting\n}\n\nexport interface TenantGroup extends Group {\n // account level information is associated with the tenant group\n // as we don't have this at the user level\n profession?: string // only available in cloud\n companySize?: string // only available in cloud\n installationId: string\n}\n\nexport interface InstallationGroup extends Group {\n version: string\n}\n\n// IDENTITIES\n\nexport enum IdentityType {\n USER = \"user\",\n TENANT = \"tenant\",\n INSTALLATION = \"installation\",\n}\n\nexport interface HostInfo {\n ipAddress?: string\n userAgent?: string\n}\n\nexport interface Identity {\n id: string\n type: IdentityType\n hosting: Hosting\n environment: string\n installationId?: string\n tenantId?: string\n // usable - no unique format\n realTenantId?: string\n hostInfo?: HostInfo\n}\n\nexport interface UserIdentity extends Identity {\n verified: boolean\n accountHolder: boolean\n providerType?: string\n builder?: boolean\n admin?: boolean\n}\n", "export enum PlanType {\n FREE = \"free\",\n /** @deprecated */\n PRO = \"pro\",\n /** @deprecated */\n TEAM = \"team\",\n /** @deprecated */\n PREMIUM = \"premium\",\n PREMIUM_PLUS = \"premium_plus\",\n /** @deprecated */\n BUSINESS = \"business\",\n ENTERPRISE_BASIC = \"enterprise_basic\",\n ENTERPRISE = \"enterprise\",\n}\n\nexport enum PriceDuration {\n MONTHLY = \"monthly\",\n YEARLY = \"yearly\",\n}\n\nexport interface AvailablePlan {\n type: PlanType\n maxUsers: number\n prices: AvailablePrice[]\n}\n\nexport interface AvailablePrice {\n amount: number\n amountMonthly: number\n currency: string\n duration: PriceDuration\n priceId: string\n type?: string\n}\n\nexport enum PlanModel {\n PER_USER = \"perUser\",\n PER_CREATOR_PER_USER = \"per_creator_per_user\",\n DAY_PASS = \"dayPass\",\n}\n\nexport interface PurchasedPlan {\n type: PlanType\n model: PlanModel\n usesInvoicing: boolean\n price?: PurchasedPrice\n}\n\nexport interface PurchasedPrice extends AvailablePrice {\n dayPasses: number | undefined\n /** @deprecated - now at the plan level via model */\n isPerUser: boolean\n}\n", "import { PlanType } from \".\"\n\nexport enum QuotaUsageType {\n STATIC = \"static\",\n MONTHLY = \"monthly\",\n}\n\nexport enum QuotaType {\n USAGE = \"usage\",\n CONSTANT = \"constant\",\n}\n\nexport enum StaticQuotaName {\n ROWS = \"rows\",\n APPS = \"apps\",\n USERS = \"users\",\n CREATORS = \"creators\",\n USER_GROUPS = \"userGroups\",\n PLUGINS = \"plugins\",\n}\n\nexport enum MonthlyQuotaName {\n QUERIES = \"queries\",\n AUTOMATIONS = \"automations\",\n DAY_PASSES = \"dayPasses\",\n}\n\nexport enum ConstantQuotaName {\n AUTOMATION_LOG_RETENTION_DAYS = \"automationLogRetentionDays\",\n APP_BACKUPS_RETENTION_DAYS = \"appBackupRetentionDays\",\n}\n\nexport type MeteredQuotaName = StaticQuotaName | MonthlyQuotaName\nexport type QuotaName = StaticQuotaName | MonthlyQuotaName | ConstantQuotaName\n\nexport const isStaticQuota = (\n quotaType: QuotaType,\n usageType: QuotaUsageType,\n name: QuotaName\n): name is StaticQuotaName => {\n return quotaType === QuotaType.USAGE && usageType === QuotaUsageType.STATIC\n}\n\nexport const isMonthlyQuota = (\n quotaType: QuotaType,\n usageType: QuotaUsageType,\n name: QuotaName\n): name is MonthlyQuotaName => {\n return quotaType === QuotaType.USAGE && usageType === QuotaUsageType.MONTHLY\n}\n\nexport const isConstantQuota = (\n quotaType: QuotaType,\n name: QuotaName\n): name is ConstantQuotaName => {\n return quotaType === QuotaType.CONSTANT\n}\n\nexport type PlanQuotas = { [key in PlanType]: Quotas | undefined }\n\nexport type MonthlyQuotas = {\n [MonthlyQuotaName.QUERIES]: Quota\n [MonthlyQuotaName.AUTOMATIONS]: Quota\n [MonthlyQuotaName.DAY_PASSES]: Quota\n}\n\nexport type StaticQuotas = {\n [StaticQuotaName.ROWS]: Quota\n [StaticQuotaName.APPS]: Quota\n [StaticQuotaName.USERS]: Quota\n [StaticQuotaName.CREATORS]: Quota\n [StaticQuotaName.USER_GROUPS]: Quota\n [StaticQuotaName.PLUGINS]: Quota\n}\n\nexport type ConstantQuotas = {\n [ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]: Quota\n [ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]: Quota\n}\n\nexport type Quotas = {\n [QuotaType.USAGE]: {\n [QuotaUsageType.MONTHLY]: MonthlyQuotas\n [QuotaUsageType.STATIC]: StaticQuotas\n }\n [QuotaType.CONSTANT]: ConstantQuotas\n}\n\nexport interface Quota {\n name: string\n value: number\n /**\n * Array of whole numbers (1-100) that dictate the percentage that this quota should trigger\n * at in relation to the corresponding usage inside budibase.\n *\n * Triggering results in a budibase installation sending a request to account-portal,\n * which can have subsequent effects such as sending emails to users.\n */\n triggers: number[]\n startDate?: number\n}\n", "import { PlanType } from \"./plan\"\n\nexport enum Feature {\n USER_GROUPS = \"userGroups\",\n APP_BACKUPS = \"appBackups\",\n ENVIRONMENT_VARIABLES = \"environmentVariables\",\n AUDIT_LOGS = \"auditLogs\",\n ENFORCEABLE_SSO = \"enforceableSSO\",\n BRANDING = \"branding\",\n SCIM = \"scim\",\n SYNC_AUTOMATIONS = \"syncAutomations\",\n TRIGGER_AUTOMATION_RUN = \"triggerAutomationRun\",\n APP_BUILDERS = \"appBuilders\",\n OFFLINE = \"offline\",\n EXPANDED_PUBLIC_API = \"expandedPublicApi\",\n VIEW_PERMISSIONS = \"viewPermissions\",\n}\n\nexport type PlanFeatures = { [key in PlanType]: Feature[] | undefined }\n", "export interface Migration extends MigrationDefinition {\n appOpts?: object\n fn: Function\n silent?: boolean\n preventRetry?: boolean\n}\n\nexport enum MigrationType {\n // run once per tenant, recorded in global db, global db is provided as an argument\n GLOBAL = \"global\",\n // run per app, recorded in each app db, app db is provided as an argument\n APP = \"app\",\n // run once, recorded in global info db, global info db is provided as an argument\n INSTALLATION = \"installation\",\n}\n\nexport interface MigrationNoOpOptions {\n type: MigrationType\n tenantId: string\n appId?: string\n}\n\n/**\n * e.g.\n * {\n * tenantIds: ['bb'],\n * force: {\n * global: ['quota_1']\n * }\n * }\n */\nexport interface MigrationOptions {\n tenantIds?: string[]\n force?: {\n [type: string]: string[]\n }\n noOp?: MigrationNoOpOptions\n}\n\nexport enum MigrationName {\n USER_EMAIL_VIEW_CASING = \"user_email_view_casing\",\n APP_URLS = \"app_urls\",\n EVENT_APP_BACKFILL = \"event_app_backfill\",\n EVENT_GLOBAL_BACKFILL = \"event_global_backfill\",\n EVENT_INSTALLATION_BACKFILL = \"event_installation_backfill\",\n GLOBAL_INFO_SYNC_USERS = \"global_info_sync_users\",\n TABLE_SETTINGS_LINKS_TO_ACTIONS = \"table_settings_links_to_actions\",\n // increment this number to re-activate this migration\n SYNC_QUOTAS = \"sync_quotas_2\",\n}\n\nexport interface MigrationDefinition {\n type: MigrationType\n name: MigrationName\n}\n", "import { Table, Row } from \"../documents\"\nimport { QueryJson } from \"./search\"\n\nexport const PASSWORD_REPLACEMENT = \"--secret-value--\"\n\nexport enum Operation {\n CREATE = \"CREATE\",\n READ = \"READ\",\n UPDATE = \"UPDATE\",\n DELETE = \"DELETE\",\n BULK_CREATE = \"BULK_CREATE\",\n CREATE_TABLE = \"CREATE_TABLE\",\n UPDATE_TABLE = \"UPDATE_TABLE\",\n DELETE_TABLE = \"DELETE_TABLE\",\n}\n\nexport const RowOperations = [\n Operation.CREATE,\n Operation.READ,\n Operation.UPDATE,\n Operation.DELETE,\n Operation.BULK_CREATE,\n]\n\nexport enum SortDirection {\n ASCENDING = \"ASCENDING\",\n DESCENDING = \"DESCENDING\",\n}\n\nexport enum QueryType {\n SQL = \"sql\",\n JSON = \"json\",\n FIELDS = \"fields\",\n}\n\nexport enum DatasourceFieldType {\n STRING = \"string\",\n CODE = \"code\",\n LONGFORM = \"longForm\",\n BOOLEAN = \"boolean\",\n NUMBER = \"number\",\n PASSWORD = \"password\",\n LIST = \"list\",\n OBJECT = \"object\",\n JSON = \"json\",\n FILE = \"file\",\n FIELD_GROUP = \"fieldGroup\",\n SELECT = \"select\",\n}\n\nexport enum SourceName {\n POSTGRES = \"POSTGRES\",\n DYNAMODB = \"DYNAMODB\",\n MONGODB = \"MONGODB\",\n ELASTICSEARCH = \"ELASTICSEARCH\",\n COUCHDB = \"COUCHDB\",\n SQL_SERVER = \"SQL_SERVER\",\n S3 = \"S3\",\n AIRTABLE = \"AIRTABLE\",\n MYSQL = \"MYSQL\",\n ARANGODB = \"ARANGODB\",\n REST = \"REST\",\n ORACLE = \"ORACLE\",\n GOOGLE_SHEETS = \"GOOGLE_SHEETS\",\n FIRESTORE = \"FIRESTORE\",\n REDIS = \"REDIS\",\n SNOWFLAKE = \"SNOWFLAKE\",\n BUDIBASE = \"BUDIBASE\",\n}\n\nexport enum IncludeRelationship {\n INCLUDE = 1,\n EXCLUDE = 0,\n}\n\nexport enum FilterType {\n STRING = \"string\",\n FUZZY = \"fuzzy\",\n RANGE = \"range\",\n EQUAL = \"equal\",\n NOT_EQUAL = \"notEqual\",\n EMPTY = \"empty\",\n NOT_EMPTY = \"notEmpty\",\n ONE_OF = \"oneOf\",\n}\n\nexport enum DatasourceFeature {\n CONNECTION_CHECKING = \"connection\",\n FETCH_TABLE_NAMES = \"fetch_table_names\",\n EXPORT_SCHEMA = \"export_schema\",\n}\n\nexport interface StepDefinition {\n key: string\n template: string\n}\n\nexport interface QueryDefinition {\n type: QueryType\n displayName?: string\n readable?: boolean\n customisable?: boolean\n fields?: object\n urlDisplay?: boolean\n steps?: Array<StepDefinition>\n}\n\nexport interface ExtraQueryConfig {\n [key: string]: {\n displayName: string\n type: string\n required: boolean\n data?: object\n }\n}\n\ninterface DatasourceBasicFieldConfig {\n type: DatasourceFieldType\n display?: string\n required?: boolean\n default?: any\n deprecated?: boolean\n hidden?: string\n}\n\ninterface DatasourceSelectFieldConfig extends DatasourceBasicFieldConfig {\n type: DatasourceFieldType.SELECT\n config: { options: string[] }\n}\n\ninterface DatasourceFieldGroupConfig extends DatasourceBasicFieldConfig {\n type: DatasourceFieldType.FIELD_GROUP\n config: {\n openByDefault?: boolean\n nestedFields?: boolean\n }\n}\n\ntype DatasourceFieldConfig =\n | DatasourceSelectFieldConfig\n | DatasourceFieldGroupConfig\n | DatasourceBasicFieldConfig\n\nexport interface DatasourceConfig {\n [key: string]: DatasourceFieldConfig & {\n fields?: DatasourceConfig\n }\n}\n\nexport interface Integration {\n docs: string\n plus?: boolean\n isSQL?: boolean\n auth?: { type: string }\n features?: Partial<Record<DatasourceFeature, boolean>>\n relationships?: boolean\n description: string\n friendlyName: string\n type?: string\n iconUrl?: string\n datasource: DatasourceConfig\n query: {\n [key: string]: QueryDefinition\n }\n extra?: ExtraQueryConfig\n}\n\nexport type ConnectionInfo = {\n connected: boolean\n error?: string\n}\n\nexport interface IntegrationBase {\n create?(query: any): Promise<any[] | any>\n read?(query: any): Promise<any[] | any>\n update?(query: any): Promise<any[] | any>\n delete?(query: any): Promise<any[] | any>\n testConnection?(): Promise<ConnectionInfo>\n getExternalSchema?(): Promise<string>\n defineTypeCastingFromSchema?(schema: {\n [key: string]: {\n name: string\n type: string\n }\n }): void\n}\n\nexport interface Schema {\n tables: Record<string, Table>\n errors: Record<string, string>\n}\n\n// return these when an operation occurred but we got no response\nenum DSPlusOperation {\n CREATE = \"create\",\n READ = \"read\",\n UPDATE = \"update\",\n DELETE = \"delete\",\n}\n\nexport type DatasourcePlusQueryResponse =\n | Row[]\n | Record<DSPlusOperation, boolean>[]\n | void\n\nexport interface DatasourcePlus extends IntegrationBase {\n // if the datasource supports the use of bindings directly (to protect against SQL injection)\n // this returns the format of the identifier\n getBindingIdentifier(): string\n getStringConcat(parts: string[]): string\n query(json: QueryJson): Promise<DatasourcePlusQueryResponse>\n buildSchema(\n datasourceId: string,\n entities: Record<string, Table>\n ): Promise<Schema>\n getTableNames(): Promise<string[]>\n}\n", "import { Operation, SortDirection } from \"./datasources\"\nimport { Row, Table } from \"../documents\"\nimport { SortType } from \"../api\"\nimport { Knex } from \"knex\"\n\nexport enum SearchFilterOperator {\n STRING = \"string\",\n FUZZY = \"fuzzy\",\n RANGE = \"range\",\n EQUAL = \"equal\",\n NOT_EQUAL = \"notEqual\",\n EMPTY = \"empty\",\n NOT_EMPTY = \"notEmpty\",\n ONE_OF = \"oneOf\",\n CONTAINS = \"contains\",\n NOT_CONTAINS = \"notContains\",\n CONTAINS_ANY = \"containsAny\",\n}\n\nexport interface SearchFilters {\n allOr?: boolean\n onEmptyFilter?: EmptyFilterOption\n [SearchFilterOperator.STRING]?: {\n [key: string]: string\n }\n [SearchFilterOperator.FUZZY]?: {\n [key: string]: string\n }\n [SearchFilterOperator.RANGE]?: {\n [key: string]:\n | {\n high: number | string\n low: number | string\n }\n | { high: number | string }\n | { low: number | string }\n }\n [SearchFilterOperator.EQUAL]?: {\n [key: string]: any\n }\n [SearchFilterOperator.NOT_EQUAL]?: {\n [key: string]: any\n }\n [SearchFilterOperator.EMPTY]?: {\n [key: string]: any\n }\n [SearchFilterOperator.NOT_EMPTY]?: {\n [key: string]: any\n }\n [SearchFilterOperator.ONE_OF]?: {\n [key: string]: any[]\n }\n [SearchFilterOperator.CONTAINS]?: {\n [key: string]: any[]\n }\n [SearchFilterOperator.NOT_CONTAINS]?: {\n [key: string]: any[]\n }\n [SearchFilterOperator.CONTAINS_ANY]?: {\n [key: string]: any[]\n }\n}\n\nexport type SearchQueryFields = Omit<SearchFilters, \"allOr\" | \"onEmptyFilter\">\n\nexport interface SortJson {\n [key: string]: {\n direction: SortDirection\n type?: SortType\n }\n}\n\nexport interface PaginationJson {\n limit: number\n page?: string | number\n}\n\nexport interface RenameColumn {\n old: string\n updated: string\n}\n\nexport interface RelationshipsJson {\n through?: string\n from?: string\n to?: string\n fromPrimary?: string\n toPrimary?: string\n tableName: string\n column: string\n}\n\nexport interface QueryJson {\n endpoint: {\n datasourceId: string\n entityId: string\n operation: Operation\n schema?: string\n }\n resource?: {\n fields: string[]\n }\n filters?: SearchFilters\n sort?: SortJson\n paginate?: PaginationJson\n body?: Row | Row[]\n table?: Table\n meta: {\n table: Table\n tables?: Record<string, Table>\n renamed?: RenameColumn\n }\n extra?: {\n idFilter?: SearchFilters\n }\n relationships?: RelationshipsJson[]\n tableAliases?: Record<string, string>\n}\n\nexport type SqlQueryBinding = Knex.Value[]\n\nexport interface SqlQuery {\n sql: string\n bindings?: SqlQueryBinding\n}\n\nexport enum EmptyFilterOption {\n RETURN_ALL = \"all\",\n RETURN_NONE = \"none\",\n}\n", "import Redlock from \"redlock\"\n\nexport enum LockType {\n /**\n * If this lock is already held the attempted operation will not be performed.\n * No retries will take place and no error will be thrown.\n */\n TRY_ONCE = \"try_once\",\n TRY_TWICE = \"try_twice\",\n DEFAULT = \"default\",\n DELAY_500 = \"delay_500\",\n CUSTOM = \"custom\",\n AUTO_EXTEND = \"auto_extend\",\n}\n\nexport enum LockName {\n MIGRATIONS = \"migrations\",\n TRIGGER_QUOTA = \"trigger_quota\",\n SYNC_ACCOUNT_LICENSE = \"sync_account_license\",\n UPDATE_TENANTS_DOC = \"update_tenants_doc\",\n PERSIST_WRITETHROUGH = \"persist_writethrough\",\n QUOTA_USAGE_EVENT = \"quota_usage_event\",\n APP_MIGRATION = \"app_migrations\",\n PROCESS_AUTO_COLUMNS = \"process_auto_columns\",\n PROCESS_USER_INVITE = \"process_user_invite\",\n}\n\nexport type LockOptions = {\n /**\n * The lock type determines which client to use\n */\n type: LockType\n /**\n * The custom options to use when creating the redlock instance\n * type must be set to custom for the options to be applied\n */\n customOptions?: Redlock.Options\n /**\n * The name for the lock\n */\n name: LockName\n /**\n * The individual resource to lock. This is useful for locking around very specific identifiers, e.g. a document that is prone to conflicts\n */\n resource?: string\n /**\n * This is a system-wide lock - don't use tenancy in lock key\n */\n systemLock?: boolean\n} & (\n | {\n /**\n * The ttl to auto-expire the lock if not unlocked manually\n */\n ttl: number\n type: Exclude<LockType, LockType.AUTO_EXTEND>\n }\n | {\n type: LockType.AUTO_EXTEND\n onExtend?: () => void\n }\n)\n", "import type Nano from \"@budibase/nano\"\nimport {\n AllDocsResponse,\n AnyDocument,\n Document,\n RowValue,\n SqlQueryBinding,\n ViewTemplateOpts,\n} from \"../\"\nimport { Writable } from \"stream\"\nimport type PouchDB from \"pouchdb-find\"\n\nexport enum SearchIndex {\n ROWS = \"rows\",\n AUDIT = \"audit\",\n USER = \"user\",\n}\n\nexport type PouchOptions = {\n inMemory?: boolean\n replication?: boolean\n onDisk?: boolean\n find?: boolean\n}\n\nexport enum SortOption {\n ASCENDING = \"asc\",\n DESCENDING = \"desc\",\n}\n\nexport type IndexAnalyzer = {\n name: string\n default?: string\n fields?: Record<string, string>\n}\n\nexport type DBView = {\n name?: string\n map: string\n reduce?: string\n meta?: ViewTemplateOpts\n groupBy?: string\n}\n\nexport interface DesignDocument extends Document {\n // we use this static reference for all design documents\n _id: \"_design/database\"\n language?: string\n // CouchDB views\n views?: {\n [viewName: string]: DBView\n }\n // Lucene indexes\n indexes?: {\n [indexName: string]: {\n index: string\n analyzer?: string | IndexAnalyzer\n }\n }\n}\n\nexport type CouchFindOptions = {\n selector: PouchDB.Find.Selector\n fields?: string[]\n sort?: {\n [key: string]: SortOption\n }[]\n limit?: number\n skip?: number\n bookmark?: string\n}\n\nexport type DatabaseOpts = {\n skip_setup?: boolean\n}\n\nexport type DatabasePutOpts = {\n force?: boolean\n}\n\nexport type DatabaseCreateIndexOpts = {\n index: {\n fields: string[]\n name?: string | undefined\n ddoc?: string | undefined\n type?: string | undefined\n }\n}\n\nexport type DatabaseDeleteIndexOpts = {\n name: string\n ddoc: string\n type?: string | undefined\n}\n\ntype DBPrimitiveKey = string | number | {}\nexport type DatabaseKey = DBPrimitiveKey | DBPrimitiveKey[]\n\nexport type DatabaseQueryOpts = {\n include_docs?: boolean\n startkey?: DatabaseKey\n endkey?: DatabaseKey\n limit?: number\n skip?: number\n descending?: boolean\n key?: DatabaseKey\n keys?: DatabaseKey[]\n group?: boolean\n startkey_docid?: string\n}\n\nexport const isDocument = (doc: any): doc is Document => {\n return typeof doc === \"object\" && doc._id && doc._rev\n}\n\nexport interface DatabaseDumpOpts {\n filter?: (doc: AnyDocument) => boolean\n batch_size?: number\n batch_limit?: number\n style?: \"main_only\" | \"all_docs\"\n timeout?: number\n doc_ids?: string[]\n query_params?: any\n view?: string\n selector?: any\n}\n\nexport interface Database {\n name: string\n\n exists(): Promise<boolean>\n get<T extends Document>(id?: string): Promise<T>\n exists(docId: string): Promise<boolean>\n getMultiple<T extends Document>(\n ids: string[],\n opts?: { allowMissing?: boolean }\n ): Promise<T[]>\n remove(\n id: string | Document,\n rev?: string\n ): Promise<Nano.DocumentDestroyResponse>\n put(\n document: AnyDocument,\n opts?: DatabasePutOpts\n ): Promise<Nano.DocumentInsertResponse>\n bulkDocs(documents: AnyDocument[]): Promise<Nano.DocumentBulkResponse[]>\n sql<T extends Document>(\n sql: string,\n parameters?: SqlQueryBinding\n ): Promise<T[]>\n allDocs<T extends Document | RowValue>(\n params: DatabaseQueryOpts\n ): Promise<AllDocsResponse<T>>\n query<T extends Document>(\n viewName: string,\n params: DatabaseQueryOpts\n ): Promise<AllDocsResponse<T>>\n destroy(): Promise<Nano.OkResponse | void>\n compact(): Promise<Nano.OkResponse | void>\n // these are all PouchDB related functions that are rarely used - in future\n // should be replaced by better typed/non-pouch implemented methods\n dump(stream: Writable, opts?: DatabaseDumpOpts): Promise<any>\n load(...args: any[]): Promise<any>\n createIndex(...args: any[]): Promise<any>\n deleteIndex(...args: any[]): Promise<any>\n getIndexes(...args: any[]): Promise<any>\n}\n", "export interface GetTenantIdOptions {\n allowNoTenant?: boolean\n excludeStrategies?: TenantResolutionStrategy[]\n includeStrategies?: TenantResolutionStrategy[]\n}\n\nexport enum TenantResolutionStrategy {\n USER = \"user\",\n HEADER = \"header\",\n QUERY = \"query\",\n SUBDOMAIN = \"subdomain\",\n PATH = \"path\",\n}\n", "export enum FeatureFlag {\n LICENSING = \"LICENSING\",\n PER_CREATOR_PER_USER_PRICE = \"PER_CREATOR_PER_USER_PRICE\",\n PER_CREATOR_PER_USER_PRICE_ALERT = \"PER_CREATOR_PER_USER_PRICE_ALERT\",\n}\n\nexport interface TenantFeatureFlags {\n [key: string]: FeatureFlag[]\n}\n", "export enum AppEnvironment {\n PRODUCTION = \"production\",\n DEVELOPMENT = \"development\",\n}\n", "import { Event } from \"../events\"\n\nexport enum CommandWord {\n BACKUPS = \"backups\",\n HOSTING = \"hosting\",\n ANALYTICS = \"analytics\",\n HELP = \"help\",\n PLUGIN = \"plugins\",\n}\n\nexport enum InitType {\n QUICK = \"quick\",\n DIGITAL_OCEAN = \"do\",\n}\n\nexport const AnalyticsEvent = {\n OptOut: \"analytics:opt:out\",\n OptIn: \"analytics:opt:in\",\n SelfHostInit: \"hosting:init\",\n PluginInit: Event.PLUGIN_INIT,\n}\n", "export enum PermissionLevel {\n READ = \"read\",\n WRITE = \"write\",\n EXECUTE = \"execute\",\n ADMIN = \"admin\",\n}\n\n// these are the global types, that govern the underlying default behaviour\nexport enum PermissionType {\n APP = \"app\",\n TABLE = \"table\",\n USER = \"user\",\n AUTOMATION = \"automation\",\n WEBHOOK = \"webhook\",\n BUILDER = \"builder\",\n CREATOR = \"creator\",\n GLOBAL_BUILDER = \"globalBuilder\",\n QUERY = \"query\",\n VIEW = \"view\",\n LEGACY_VIEW = \"legacy_view\",\n}\n\nexport enum PermissionSource {\n EXPLICIT = \"EXPLICIT\",\n INHERITED = \"INHERITED\",\n BASE = \"BASE\",\n}\n", "import { Feature, Hosting, License, PlanType, Quotas } from \"../../sdk\"\nimport { DeepPartial } from \"../../shared\"\nimport { QuotaUsage } from \"../global\"\n\nexport interface CreateAccount {\n email: string\n tenantId: string\n hosting: Hosting\n authType: AuthType\n // optional fields - for sso based sign ups\n registrationStep?: string\n // profile\n tenantName?: string\n name?: string\n size?: string\n profession?: string\n}\n\nexport interface CreatePassswordAccount extends CreateAccount {\n password: string\n}\n\nexport interface CreateVerifiableSSOAccount extends CreateAccount {\n provider?: AccountSSOProvider\n thirdPartyProfile?: any\n}\n\nexport const isCreatePasswordAccount = (\n account: CreateAccount\n): account is CreatePassswordAccount => account.authType === AuthType.PASSWORD\n\nexport interface LicenseOverrides {\n features?: Feature[]\n quotas?: DeepPartial<Quotas>\n}\n\nexport interface Account extends CreateAccount {\n // generated\n accountId: string\n createdAt: number\n // registration\n verified: boolean\n verificationSent: boolean\n // licensing\n tier: string // deprecated\n planType?: PlanType\n /** @deprecated */\n planTier?: number\n license?: License\n installId?: string\n installTenantId?: string\n installVersion?: string\n stripeCustomerId?: string\n licenseKey?: string\n licenseKeyActivatedAt?: number\n licenseRequestedAt?: number\n licenseOverrides?: LicenseOverrides\n provider?: AccountSSOProvider\n providerType?: AccountSSOProviderType\n quotaUsage?: QuotaUsage\n offlineLicenseToken?: string\n}\n\nexport interface PasswordAccount extends Account {\n password: string\n}\n\nexport const isPasswordAccount = (\n account: Account\n): account is PasswordAccount =>\n account.authType === AuthType.PASSWORD && account.hosting === Hosting.SELF\n\nexport interface CloudAccount extends Account {\n password?: string\n budibaseUserId: string\n}\n\nexport const isCloudAccount = (account: Account): account is CloudAccount =>\n account.hosting === Hosting.CLOUD\n\nexport const isSelfHostAccount = (account: Account) =>\n account.hosting === Hosting.SELF\n\nexport const isSSOAccount = (account: Account): account is SSOAccount =>\n account.authType === AuthType.SSO\n\nexport enum AccountSSOProviderType {\n GOOGLE = \"google\",\n MICROSOFT = \"microsoft\",\n}\n\nexport enum AccountSSOProvider {\n GOOGLE = \"google\",\n MICROSOFT = \"microsoft\",\n}\n\nconst verifiableSSOProviders: AccountSSOProvider[] = [\n AccountSSOProvider.MICROSOFT,\n]\nexport function isVerifiableSSOProvider(provider: AccountSSOProvider): boolean {\n return verifiableSSOProviders.includes(provider)\n}\n\nexport interface AccountSSO {\n ssoId?: string\n provider: AccountSSOProvider\n providerType: AccountSSOProviderType\n oauth2?: OAuthTokens\n pictureUrl?: string\n thirdPartyProfile: any // TODO: define what the google profile looks like\n}\n\nexport type SSOAccount = (Account | CloudAccount) & AccountSSO\n\nexport enum AuthType {\n SSO = \"sso\",\n PASSWORD = \"password\",\n}\n\nexport interface OAuthTokens {\n accessToken: string\n refreshToken: string\n}\n", "import { Document } from \"../document\"\nimport { EventEmitter } from \"events\"\nimport { User } from \"../global\"\n\nexport enum AutomationIOType {\n OBJECT = \"object\",\n STRING = \"string\",\n BOOLEAN = \"boolean\",\n NUMBER = \"number\",\n ARRAY = \"array\",\n JSON = \"json\",\n DATE = \"date\",\n}\n\nexport enum AutomationCustomIOType {\n TABLE = \"table\",\n ROW = \"row\",\n ROWS = \"rows\",\n WIDE = \"wide\",\n QUERY = \"query\",\n QUERY_PARAMS = \"queryParams\",\n QUERY_LIMIT = \"queryLimit\",\n LOOP_OPTION = \"loopOption\",\n ITEM = \"item\",\n CODE = \"code\",\n FILTERS = \"filters\",\n COLUMN = \"column\",\n TRIGGER_SCHEMA = \"triggerSchema\",\n CRON = \"cron\",\n WEBHOOK_URL = \"webhookUrl\",\n AUTOMATION = \"automation\",\n AUTOMATION_FIELDS = \"automationFields\",\n}\n\nexport enum AutomationTriggerStepId {\n ROW_SAVED = \"ROW_SAVED\",\n ROW_UPDATED = \"ROW_UPDATED\",\n ROW_DELETED = \"ROW_DELETED\",\n WEBHOOK = \"WEBHOOK\",\n APP = \"APP\",\n CRON = \"CRON\",\n}\n\nexport enum AutomationStepType {\n LOGIC = \"LOGIC\",\n ACTION = \"ACTION\",\n TRIGGER = \"TRIGGER\",\n}\n\nexport enum AutomationActionStepId {\n SEND_EMAIL_SMTP = \"SEND_EMAIL_SMTP\",\n CREATE_ROW = \"CREATE_ROW\",\n UPDATE_ROW = \"UPDATE_ROW\",\n DELETE_ROW = \"DELETE_ROW\",\n EXECUTE_BASH = \"EXECUTE_BASH\",\n OUTGOING_WEBHOOK = \"OUTGOING_WEBHOOK\",\n EXECUTE_SCRIPT = \"EXECUTE_SCRIPT\",\n EXECUTE_QUERY = \"EXECUTE_QUERY\",\n SERVER_LOG = \"SERVER_LOG\",\n DELAY = \"DELAY\",\n FILTER = \"FILTER\",\n QUERY_ROWS = \"QUERY_ROWS\",\n LOOP = \"LOOP\",\n COLLECT = \"COLLECT\",\n OPENAI = \"OPENAI\",\n TRIGGER_AUTOMATION_RUN = \"TRIGGER_AUTOMATION_RUN\",\n // these used to be lowercase step IDs, maintain for backwards compat\n discord = \"discord\",\n slack = \"slack\",\n zapier = \"zapier\",\n integromat = \"integromat\",\n n8n = \"n8n\",\n}\n\nexport interface EmailInvite {\n startTime: Date\n endTime: Date\n summary: string\n location?: string\n url?: string\n}\n\nexport interface SendEmailOpts {\n // workspaceId If finer grain controls being used then this will lookup config for workspace.\n workspaceId?: string\n // user If sending to an existing user the object can be provided, this is used in the context.\n user: User\n // from If sending from an address that is not what is configured in the SMTP config.\n from?: string\n // contents If sending a custom email then can supply contents which will be added to it.\n contents?: string\n // subject A custom subject can be specified if the config one is not desired.\n subject?: string\n // info Pass in a structure of information to be stored alongside the invitation.\n info?: any\n cc?: boolean\n bcc?: boolean\n automation?: boolean\n invite?: EmailInvite\n}\n\nexport const AutomationStepIdArray = [\n ...Object.values(AutomationActionStepId),\n ...Object.values(AutomationTriggerStepId),\n]\n\nexport interface Automation extends Document {\n definition: {\n steps: AutomationStep[]\n trigger: AutomationTrigger\n }\n screenId?: string\n uiTree?: any\n appId: string\n live?: boolean\n name: string\n internal?: boolean\n type?: string\n}\n\ninterface BaseIOStructure {\n type?: AutomationIOType\n customType?: AutomationCustomIOType\n title?: string\n description?: string\n dependsOn?: string\n enum?: string[]\n pretty?: string[]\n properties?: {\n [key: string]: BaseIOStructure\n }\n required?: string[]\n}\n\ninterface InputOutputBlock {\n properties: {\n [key: string]: BaseIOStructure\n }\n required?: string[]\n}\n\nexport interface AutomationStepSchema {\n name: string\n stepTitle?: string\n tagline: string\n icon: string\n description: string\n type: AutomationStepType\n internal?: boolean\n deprecated?: boolean\n stepId: AutomationTriggerStepId | AutomationActionStepId\n blockToLoop?: string\n inputs: {\n [key: string]: any\n }\n schema: {\n inputs: InputOutputBlock\n outputs: InputOutputBlock\n }\n custom?: boolean\n features?: Partial<Record<AutomationFeature, boolean>>\n}\n\nexport enum AutomationFeature {\n LOOPING = \"LOOPING\",\n}\n\nexport interface AutomationStep extends AutomationStepSchema {\n id: string\n}\n\nexport interface AutomationTriggerSchema extends AutomationStepSchema {\n event?: string\n cronJobId?: string\n}\n\nexport interface AutomationTrigger extends AutomationTriggerSchema {\n id: string\n}\n\nexport enum AutomationStepStatus {\n NO_ITERATIONS = \"no_iterations\",\n}\n\nexport enum AutomationStatus {\n SUCCESS = \"success\",\n ERROR = \"error\",\n STOPPED = \"stopped\",\n STOPPED_ERROR = \"stopped_error\",\n}\n\nexport interface AutomationResults {\n automationId?: string\n status?: AutomationStatus\n trigger?: any\n steps: {\n stepId: AutomationTriggerStepId | AutomationActionStepId\n inputs: {\n [key: string]: any\n }\n outputs: {\n [key: string]: any\n }\n }[]\n}\n\nexport interface AutomationLog extends AutomationResults, Document {\n automationName: string\n _rev?: string\n}\n\nexport interface AutomationLogPage {\n data: AutomationLog[]\n hasNextPage: boolean\n nextPage?: string\n}\n\nexport type AutomationStepInput = {\n inputs: Record<string, any>\n context: Record<string, any>\n emitter: EventEmitter\n appId: string\n apiKey?: string\n}\n\nexport interface AutomationMetadata extends Document {\n errorCount?: number\n automationChainCount?: number\n}\n", "import { Document } from \"../document\"\nimport { SourceName } from \"../../sdk\"\nimport { Table } from \"./table\"\n\nexport interface Datasource extends Document {\n type: string\n name?: string\n source: SourceName\n // this is a googlesheets specific property which\n // can be found in the GSheets schema - pertains to SSO creds\n auth?: { type: string }\n // the config is defined by the schema\n config?: Record<string, any>\n plus?: boolean\n isSQL?: boolean\n entities?: Record<string, Table>\n}\n\nexport enum RestAuthType {\n BASIC = \"basic\",\n BEARER = \"bearer\",\n}\n\nexport interface RestBasicAuthConfig {\n username: string\n password: string\n}\n\nexport interface RestBearerAuthConfig {\n token: string\n}\n\nexport interface RestAuthConfig {\n _id: string\n name: string\n type: RestAuthType\n config: RestBasicAuthConfig | RestBearerAuthConfig\n}\n\nexport interface DynamicVariable {\n name: string\n queryId: string\n value: string\n}\n\nexport interface RestConfig {\n url: string\n rejectUnauthorized: boolean\n defaultHeaders: {\n [key: string]: any\n }\n legacyHttpParser: boolean\n authConfigs: RestAuthConfig[]\n staticVariables: {\n [key: string]: string\n }\n dynamicVariables: DynamicVariable[]\n}\n", "import { Document } from \"../document\"\n\nexport interface QuerySchema {\n name?: string\n type: string\n subtype?: string\n}\n\nexport interface Query extends Document {\n datasourceId: string\n name: string\n parameters: QueryParameter[]\n fields: RestQueryFields | any\n transformer: string | null\n schema: Record<string, QuerySchema | string>\n readable: boolean\n queryVerb: string\n // flag to state whether the default bindings are empty strings (old behaviour) or null\n nullDefaultSupport?: boolean\n}\n\nexport interface QueryPreview extends Omit<Query, \"_id\"> {\n queryId?: string\n}\n\nexport interface QueryParameter {\n name: string\n default: string\n}\n\nexport interface QueryResponse {\n rows: any[]\n keys: string[]\n info: any\n extra: any\n pagination: any\n}\n\nexport interface RestQueryFields {\n path: string\n queryString?: string\n headers: { [key: string]: any }\n disabledHeaders: { [key: string]: any }\n requestBody: any\n bodyType: string\n json: object\n method: string\n authConfigId: string\n pagination: PaginationConfig | null\n paginationValues: PaginationValues | null\n}\n\nexport interface PaginationConfig {\n type: string\n location: string\n pageParam: string\n sizeParam: string | null\n responseParam: string | null\n}\n\nexport interface PaginationValues {\n page: string | number | null\n limit: number | null\n}\n\nexport enum HttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PATCH = \"PATCH\",\n PUT = \"PUT\",\n HEAD = \"HEAD\",\n DELETE = \"DELETE\",\n}\n", "import { Document } from \"../../document\"\nimport { View, ViewV2 } from \"../view\"\nimport { RenameColumn } from \"../../../sdk\"\nimport { TableSchema } from \"./schema\"\n\nexport const INTERNAL_TABLE_SOURCE_ID = \"bb_internal\"\n\nexport enum TableSourceType {\n EXTERNAL = \"external\",\n INTERNAL = \"internal\",\n}\n\nexport interface Table extends Document {\n type: \"table\"\n sourceType: TableSourceType\n views?: { [key: string]: View | ViewV2 }\n name: string\n originalName?: string\n sourceId: string\n primary?: string[]\n schema: TableSchema\n primaryDisplay?: string\n relatedFormula?: string[]\n constrained?: string[]\n sql?: boolean\n indexes?: { [key: string]: any }\n created?: boolean\n rowHeight?: number\n}\n\nexport interface TableRequest extends Table {\n _rename?: RenameColumn\n created?: boolean\n}\n", "import { Document } from \"../document\"\n\nexport enum FieldType {\n /**\n * a primitive type, stores a string, called Text within Budibase. This is one of the default\n * types of Budibase, if an external type is not fully understood, we will treat it as text.\n */\n STRING = \"string\",\n /**\n * similar to string type, called Long Form Text within Budibase. This is mainly a frontend\n * orientated type which enables a larger text input area. This can also be used\n * in conjunction with the 'useRichText' option to support a markdown editor/viewer.\n */\n LONGFORM = \"longform\",\n /**\n * similar to string type, called Options within Budibase. This works very similarly to\n * the string type within the backend, but is validated to a list of options. This will\n * display a <select> input within the builder/client.\n */\n OPTIONS = \"options\",\n /**\n * a primitive type, stores a number, as a floating point, called Number within Budibase.\n * this type will always represent numbers as reals/floating point - there is no integer only\n * type within Budibase.\n */\n NUMBER = \"number\",\n /**\n * a primitive type, stores a boolean, called Boolean within Budibase. This is often represented\n * as a toggle or checkbox within forms/grids.\n */\n BOOLEAN = \"boolean\",\n /**\n * a JSON type, this type is always an array of strings, called Multi-select within Budibase.\n * This type can be compared to the options type, as it functions similarly, but allows picking\n * multiple options rather than a single option.\n */\n ARRAY = \"array\",\n /**\n * a string type, this is always a string when input/returned from the API, called Date/Time within\n * Budibase. We utilise ISO date strings for representing dates, this type has a range of subtypes\n * to restrict it to date only, time only and ignore timezone capabilities.\n */\n DATETIME = \"datetime\",\n /**\n * a JSON type, an array of metadata about files held in object storage, called Attachment List within\n * Budibase. To utilise this type there is an API for uploading files to Budibase, which returns metadata\n * that can be stored against columns of this type. Currently this is not supported on external databases.\n */\n ATTACHMENTS = \"attachment\",\n /**\n * a JSON type, similar to the attachments type, called Attachment within Budibase. This type functions\n * much the same as the attachment list, but only holds a single attachment metadata as an object.\n * This simplifies the binding experience of using this column type.\n */\n ATTACHMENT_SINGLE = \"attachment_single\",\n /**\n * a complex type, called Relationships within Budibase. This is the most complex type of Budibase,\n * nothing should be stored against rows under link columns; this type simply represents the\n * relationship between tables as part of the table schema. When rows are input to the Budibase API\n * relationships to be made are represented as a list of row IDs to link. When rows are returned\n * from the Budibase API it will contain a list of row IDs and display column values of the related rows.\n */\n LINK = \"link\",\n /**\n * a complex type, called Formulas within Budibase. This type has two variants, static and dynamic, with\n * static only being supported against internal tables. Dynamic formulas calculate a provided HBS/JS binding\n * based on the row context and enrich it when rows are being returned from the API. Static bindings calculate\n * this when rows are being stored, so that the formula output can be searched upon within the DB.\n */\n FORMULA = \"formula\",\n /**\n * a complex type, called Auto Column within Budibase. This type has a few variants, with options such as a\n * date for created at/updated at, an auto ID column with auto-increments as rows are saved and a user\n * relationship type which stores the created by/updated by user details. These subtypes all depend on the\n * date, number of link types respectively. There is one case where these will be executed in the browser,\n * that is part of the initial formula definition, the formula will be live evaluated in the browser.\n */\n AUTO = \"auto\",\n /**\n * a JSON type, called JSON within Budibase. This type allows any arbitrary JSON to be input to this column\n * type, which will be represented as a JSON object in the row. This type depends on a schema being\n * provided to make the JSON searchable/bindable, the JSON cannot be fully dynamic.\n */\n JSON = \"json\",\n /**\n * @deprecated an internal type, this is an old deprecated type which is no longer used - still represented to note it\n * could appear in very old tables.\n */\n INTERNAL = \"internal\",\n /**\n * a string type, called Barcode/QR within Budibase. This type is used to denote to forms to that this column\n * should be filled in using a camera to read a barcode, there is a form component which will be used when this\n * type is found. The column will contain the contents of any barcode scanned.\n */\n BARCODEQR = \"barcodeqr\",\n /**\n * a string type, this allows representing very large integers, but they are held/managed within Budibase as\n * strings. When stored in external databases Budibase will attempt to use a real big integer type and depend\n * on the database parsing the string to this type as part of saving.\n */\n BIGINT = \"bigint\",\n /**\n * a JSON type, called User within Budibase. This type is used to represent a link to an internal Budibase\n * resource, like a user or group, today only users are supported. This type will be represented as an\n * array of internal resource IDs (e.g. user IDs) within the row - this ID list will be enriched with\n * the full resources when rows are returned from the API. The full resources can be input to the API, or\n * an array of resource IDs, the API will squash these down and validate them before saving the row.\n */\n BB_REFERENCE = \"bb_reference\",\n}\n\nexport interface RowAttachment {\n size: number\n name: string\n extension: string\n key: string\n // Populated on read\n url?: string\n}\n\nexport interface Row extends Document {\n type?: string\n tableId?: string\n _viewId?: string\n [key: string]: any\n}\n\nexport enum FieldSubtype {\n USER = \"user\",\n USERS = \"users\",\n}\n\n// The 'as' are required for typescript not to type the outputs as generic FieldSubtype\nexport const FieldTypeSubtypes = {\n BB_REFERENCE: {\n USER: FieldSubtype.USER as FieldSubtype.USER,\n USERS: FieldSubtype.USERS as FieldSubtype.USERS,\n },\n}\n", "export enum RelationshipType {\n ONE_TO_MANY = \"one-to-many\",\n MANY_TO_ONE = \"many-to-one\",\n MANY_TO_MANY = \"many-to-many\",\n}\n\nexport enum AutoReason {\n FOREIGN_KEY = \"foreign_key\",\n}\n\nexport enum AutoFieldSubType {\n CREATED_BY = \"createdBy\",\n CREATED_AT = \"createdAt\",\n UPDATED_BY = \"updatedBy\",\n UPDATED_AT = \"updatedAt\",\n AUTO_ID = \"autoID\",\n}\n\nexport enum JsonFieldSubType {\n ARRAY = \"array\",\n}\n\nexport enum FormulaType {\n STATIC = \"static\",\n DYNAMIC = \"dynamic\",\n}\n", "// all added by grid/table when defining the\n// column size, position and whether it can be viewed\nimport { FieldSubtype, FieldType } from \"../row\"\nimport {\n AutoFieldSubType,\n AutoReason,\n FormulaType,\n JsonFieldSubType,\n RelationshipType,\n} from \"./constants\"\n\nexport interface UIFieldMetadata {\n order?: number\n width?: number\n visible?: boolean\n icon?: string\n}\n\ninterface BaseRelationshipFieldMetadata\n extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.LINK\n main?: boolean\n fieldName: string\n tableId: string\n tableRev?: string\n subtype?: AutoFieldSubType.CREATED_BY | AutoFieldSubType.UPDATED_BY\n}\n\n// External tables use junction tables, internal tables don't require them\ntype ManyToManyJunctionTableMetadata =\n | {\n through: string\n throughFrom: string\n throughTo: string\n }\n | {\n through?: never\n throughFrom?: never\n throughTo?: never\n }\n\nexport type ManyToManyRelationshipFieldMetadata =\n BaseRelationshipFieldMetadata & {\n relationshipType: RelationshipType.MANY_TO_MANY\n } & ManyToManyJunctionTableMetadata\n\nexport interface OneToManyRelationshipFieldMetadata\n extends BaseRelationshipFieldMetadata {\n relationshipType: RelationshipType.ONE_TO_MANY\n foreignKey?: string\n}\nexport interface ManyToOneRelationshipFieldMetadata\n extends BaseRelationshipFieldMetadata {\n relationshipType: RelationshipType.MANY_TO_ONE\n foreignKey?: string\n}\nexport type RelationshipFieldMetadata =\n | ManyToManyRelationshipFieldMetadata\n | OneToManyRelationshipFieldMetadata\n | ManyToOneRelationshipFieldMetadata\n\nexport interface AutoColumnFieldMetadata\n extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.AUTO\n autocolumn: true\n subtype?: AutoFieldSubType\n lastID?: number\n // if the column was turned to an auto-column for SQL, explains why (primary, foreign etc)\n autoReason?: AutoReason\n}\n\nexport interface NumberFieldMetadata extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.NUMBER\n subtype?: AutoFieldSubType.AUTO_ID\n lastID?: number\n autoReason?: AutoReason.FOREIGN_KEY\n // used specifically when Budibase generates external tables, this denotes if a number field\n // is a foreign key used for a many-to-many relationship\n meta?: {\n toTable: string\n toKey: string\n }\n}\n\nexport interface JsonFieldMetadata extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.JSON\n subtype?: JsonFieldSubType.ARRAY\n}\n\nexport interface DateFieldMetadata extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.DATETIME\n ignoreTimezones?: boolean\n timeOnly?: boolean\n dateOnly?: boolean\n subtype?: AutoFieldSubType.CREATED_AT | AutoFieldSubType.UPDATED_AT\n}\n\nexport interface LongFormFieldMetadata extends BaseFieldSchema {\n type: FieldType.LONGFORM\n useRichText?: boolean | null\n}\n\nexport interface FormulaFieldMetadata extends BaseFieldSchema {\n type: FieldType.FORMULA\n formula: string\n formulaType?: FormulaType\n}\n\nexport interface BBReferenceFieldMetadata\n extends Omit<BaseFieldSchema, \"subtype\"> {\n type: FieldType.BB_REFERENCE\n subtype: FieldSubtype.USER | FieldSubtype.USERS\n relationshipType?: RelationshipType\n}\n\nexport interface AttachmentFieldMetadata extends BaseFieldSchema {\n type: FieldType.ATTACHMENTS\n}\n\nexport interface FieldConstraints {\n type?: string\n email?: boolean\n inclusion?: string[]\n length?: {\n minimum?: string | number | null\n maximum?: string | number | null\n message?: string\n }\n numericality?: {\n greaterThanOrEqualTo: string | null\n lessThanOrEqualTo: string | null\n }\n presence?:\n | boolean\n | {\n allowEmpty?: boolean\n }\n datetime?: {\n latest: string\n earliest: string\n }\n}\n\ninterface BaseFieldSchema extends UIFieldMetadata {\n type: FieldType\n name: string\n sortable?: boolean\n // only used by external databases, to denote the real type\n externalType?: string\n constraints?: FieldConstraints\n autocolumn?: boolean\n autoReason?: AutoReason.FOREIGN_KEY\n subtype?: never\n}\n\ninterface OtherFieldMetadata extends BaseFieldSchema {\n type: Exclude<\n FieldType,\n | FieldType.DATETIME\n | FieldType.LINK\n | FieldType.AUTO\n | FieldType.FORMULA\n | FieldType.NUMBER\n | FieldType.LONGFORM\n | FieldType.BB_REFERENCE\n | FieldType.ATTACHMENTS\n >\n}\n\nexport type FieldSchema =\n | OtherFieldMetadata\n | DateFieldMetadata\n | RelationshipFieldMetadata\n | AutoColumnFieldMetadata\n | FormulaFieldMetadata\n | NumberFieldMetadata\n | LongFormFieldMetadata\n | BBReferenceFieldMetadata\n | JsonFieldMetadata\n | AttachmentFieldMetadata\n\nexport interface TableSchema {\n [key: string]: FieldSchema\n}\n\nexport function isRelationshipField(\n field: FieldSchema\n): field is RelationshipFieldMetadata {\n return field.type === FieldType.LINK\n}\n\nexport function isManyToMany(\n field: RelationshipFieldMetadata\n): field is ManyToManyRelationshipFieldMetadata {\n return field.relationshipType === RelationshipType.MANY_TO_MANY\n}\n\nexport function isOneToMany(\n field: RelationshipFieldMetadata\n): field is OneToManyRelationshipFieldMetadata {\n return field.relationshipType === RelationshipType.ONE_TO_MANY\n}\n\nexport function isManyToOne(\n field: RelationshipFieldMetadata\n): field is ManyToOneRelationshipFieldMetadata {\n return field.relationshipType === RelationshipType.MANY_TO_ONE\n}\n\nexport function isBBReferenceField(\n field: FieldSchema\n): field is BBReferenceFieldMetadata {\n return field.type === FieldType.BB_REFERENCE\n}\n\nexport function isAttachmentField(\n field: FieldSchema\n): field is AttachmentFieldMetadata {\n return field.type === FieldType.ATTACHMENTS\n}\n", "import { SearchFilter, SortOrder, SortType } from \"../../api\"\nimport { TableSchema, UIFieldMetadata } from \"./table\"\nimport { Document } from \"../document\"\nimport { DBView } from \"../../sdk\"\n\nexport type ViewTemplateOpts = {\n field: string\n tableId: string\n groupBy: string\n filters: ViewFilter[]\n schema: any\n calculation: string\n groupByMulti?: boolean\n}\n\nexport interface InMemoryView extends Document {\n view: DBView\n name: string\n tableId: string\n groupBy?: string\n}\n\nexport interface View {\n name?: string\n tableId: string\n field?: string\n filters: ViewFilter[]\n schema: ViewSchema\n calculation?: ViewCalculation\n map?: string\n reduce?: any\n meta?: ViewTemplateOpts\n groupBy?: string\n}\n\nexport interface ViewV2 {\n version: 2\n id: string\n name: string\n primaryDisplay?: string\n tableId: string\n query?: SearchFilter[]\n sort?: {\n field: string\n order?: SortOrder\n type?: SortType\n }\n schema?: Record<string, UIFieldMetadata>\n}\n\nexport interface ViewV2Enriched extends ViewV2 {\n schema?: TableSchema\n}\n\nexport type ViewSchema = ViewCountOrSumSchema | ViewStatisticsSchema\n\nexport interface ViewCountOrSumSchema {\n field: string\n value: string\n}\n\n/**\n e.g:\n \"min\": {\n \"type\": \"number\"\n },\n \"max\": {\n \"type\": \"number\"\n }\n */\nexport interface ViewStatisticsSchema {\n [key: string]: {\n type: string\n }\n}\n\nexport interface ViewFilter {\n value?: any\n condition: string\n key: string\n conjunction?: string\n}\n\nexport enum ViewCalculation {\n SUM = \"sum\",\n COUNT = \"count\",\n STATISTICS = \"stats\",\n}\n", "export const SEPARATOR = \"_\"\nexport const UNICODE_MAX = \"\\ufff0\"\n\nexport const prefixed = (type: DocumentType) => `${type}${SEPARATOR}`\n\nexport enum DocumentType {\n USER = \"us\",\n GROUP = \"gr\",\n WORKSPACE = \"workspace\",\n CONFIG = \"config\",\n TEMPLATE = \"template\",\n APP = \"app\",\n DEV = \"dev\",\n APP_DEV = \"app_dev\",\n APP_METADATA = \"app_metadata\",\n ROLE = \"role\",\n MIGRATIONS = \"migrations\",\n DEV_INFO = \"devinfo\",\n AUTOMATION_LOG = \"log_au\",\n ACCOUNT_METADATA = \"acc_metadata\",\n PLUGIN = \"plg\",\n DATASOURCE = \"datasource\",\n DATASOURCE_PLUS = \"datasource_plus\",\n APP_BACKUP = \"backup\",\n TABLE = \"ta\",\n ROW = \"ro\",\n AUTOMATION = \"au\",\n LINK = \"li\",\n WEBHOOK = \"wh\",\n INSTANCE = \"inst\",\n LAYOUT = \"layout\",\n SCREEN = \"screen\",\n QUERY = \"query\",\n DEPLOYMENTS = \"deployments\",\n METADATA = \"metadata\",\n MEM_VIEW = \"view\",\n USER_FLAG = \"flag\",\n AUTOMATION_METADATA = \"meta_au\",\n AUDIT_LOG = \"al\",\n APP_MIGRATION_METADATA = \"_design/migrations\",\n SCIM_LOG = \"scimlog\",\n}\n\n// these are the core documents that make up the data, design\n// and automation sections of an app. This excludes any internal\n// rows as we shouldn't import data.\nexport const DocumentTypesToImport: DocumentType[] = [\n DocumentType.ROLE,\n DocumentType.DATASOURCE,\n DocumentType.DATASOURCE_PLUS,\n DocumentType.TABLE,\n DocumentType.AUTOMATION,\n DocumentType.WEBHOOK,\n DocumentType.SCREEN,\n DocumentType.QUERY,\n DocumentType.METADATA,\n DocumentType.MEM_VIEW,\n // Deprecated but still copied\n DocumentType.INSTANCE,\n DocumentType.LAYOUT,\n]\n\nexport enum InternalTable {\n USER_METADATA = \"ta_users\",\n}\n\n// these documents don't really exist, they are part of other\n// documents or enriched into existence as part of get requests\nexport enum VirtualDocumentType {\n VIEW = \"view\",\n}\n\nexport interface Document {\n _id?: string\n _rev?: string\n createdAt?: string | number\n updatedAt?: string\n}\n\nexport interface AnyDocument extends Document {\n [key: string]: any\n}\n", "import { Document } from \"../document\"\nimport { User } from \"../../\"\n\nexport enum AppBackupType {\n BACKUP = \"backup\",\n RESTORE = \"restore\",\n}\n\nexport enum AppBackupStatus {\n STARTED = \"started\",\n PENDING = \"pending\",\n COMPLETE = \"complete\",\n FAILED = \"failed\",\n}\n\nexport enum AppBackupTrigger {\n PUBLISH = \"publish\",\n MANUAL = \"manual\",\n SCHEDULED = \"scheduled\",\n RESTORING = \"restoring\",\n}\n\nexport interface AppBackupContents {\n datasources: string[]\n screens: string[]\n automations: string[]\n}\n\nexport interface AppBackupMetadata {\n appId: string\n trigger?: AppBackupTrigger\n type: AppBackupType\n status: AppBackupStatus\n name?: string\n createdBy?: string | User\n timestamp: string\n finishedAt?: string\n startedAt?: string\n contents?: AppBackupContents\n}\n\nexport interface AppBackup extends Document, AppBackupMetadata {\n _id: string\n filename?: string\n}\n\nexport type AppBackupFetchOpts = {\n trigger?: AppBackupTrigger\n type?: AppBackupType\n limit?: number\n page?: string\n paginate?: boolean\n startDate?: string\n endDate?: string\n}\n\nexport interface AppBackupQueueData {\n appId: string\n docId: string\n docRev: string\n export?: {\n trigger: AppBackupTrigger\n name?: string\n createdBy?: string\n }\n import?: {\n backupId: string\n nameForBackup: string\n createdBy?: string\n }\n}\n", "import { Document } from \"../document\"\n\nexport enum WebhookActionType {\n AUTOMATION = \"automation\",\n}\n\nexport interface Webhook extends Document {\n live: boolean\n name: string\n action: {\n type: WebhookActionType\n target: string\n }\n bodySchema?: any\n}\n", "export enum SQLiteType {\n REAL = \"REAL\",\n TEXT = \"VARCHAR\",\n INT = \"INTEGER\",\n BLOB = \"BLOB\",\n NUMERIC = \"NUMERIC\",\n}\n\nexport type SQLiteTable = Record<\n string,\n SQLiteType | { field: string; type: SQLiteType }\n>\n\nexport type SQLiteTables = Record<\n string,\n {\n fields: SQLiteTable\n }\n>\n\nexport interface SQLiteDefinition {\n _id: string\n language: string\n sql: {\n tables: SQLiteTables\n options: {\n table_name: string\n }\n }\n}\n", "import { Document } from \"../document\"\n\nexport interface Config<T = any> extends Document {\n type: ConfigType\n config: T\n}\n\nexport interface SMTPInnerConfig {\n port: number\n host: string\n from: string\n subject?: string\n secure: boolean\n auth?: {\n user: string\n pass: string\n }\n connectionTimeout?: any\n}\n\nexport interface SMTPConfig extends Config<SMTPInnerConfig> {}\n\n/**\n * Accessible only via pro.\n */\nexport interface SettingsBrandingConfig {\n faviconUrl?: string\n faviconUrlEtag?: string\n\n emailBrandingEnabled?: boolean\n testimonialsEnabled?: boolean\n platformTitle?: string\n loginHeading?: string\n loginButton?: string\n\n metaDescription?: string\n metaImageUrl?: string\n metaTitle?: string\n}\n\nexport interface SettingsInnerConfig {\n platformUrl?: string\n company?: string\n logoUrl?: string // Populated on read\n logoUrlEtag?: string\n uniqueTenantId?: string\n analyticsEnabled?: boolean\n isSSOEnforced?: boolean\n}\n\nexport interface SettingsConfig extends Config<SettingsInnerConfig> {}\n\nexport type SSOConfigType = ConfigType.GOOGLE | ConfigType.OIDC\nexport type SSOConfig = GoogleInnerConfig | OIDCInnerConfig\n\nexport interface GoogleInnerConfig {\n clientID: string\n clientSecret: string\n activated: boolean\n /**\n * @deprecated read only\n */\n callbackURL?: string\n}\n\nexport interface GoogleConfig extends Config<GoogleInnerConfig> {}\n\nexport interface OIDCStrategyConfiguration {\n issuer: string\n authorizationURL: string\n tokenURL: string\n userInfoURL: string\n clientID: string\n clientSecret: string\n callbackURL: string\n}\n\nexport interface OIDCConfigs {\n configs: OIDCInnerConfig[]\n}\n\nexport interface OIDCLogosInnerConfig {\n [key: string]: string\n}\n\nexport interface OIDCLogosConfig extends Config<OIDCLogosInnerConfig> {}\n\nexport interface OIDCInnerConfig {\n configUrl: string\n clientID: string\n clientSecret: string\n logo: string\n name: string\n uuid: string\n activated: boolean\n scopes: string[]\n}\n\nexport interface OIDCConfig extends Config<OIDCConfigs> {}\n\nexport interface OIDCWellKnownConfig {\n issuer: string\n authorization_endpoint: string\n token_endpoint: string\n userinfo_endpoint: string\n}\n\nexport interface SCIMInnerConfig {\n enabled: boolean\n}\n\nexport interface SCIMConfig extends Config<SCIMInnerConfig> {}\n\nexport const isSettingsConfig = (config: Config): config is SettingsConfig =>\n config.type === ConfigType.SETTINGS\n\nexport const isSMTPConfig = (config: Config): config is SMTPConfig =>\n config.type === ConfigType.SMTP\n\nexport const isGoogleConfig = (config: Config): config is GoogleConfig =>\n config.type === ConfigType.GOOGLE\n\nexport const isOIDCConfig = (config: Config): config is OIDCConfig =>\n config.type === ConfigType.OIDC\n\nexport const isSCIMConfig = (config: Config): config is SCIMConfig =>\n config.type === ConfigType.SCIM\n\nexport enum ConfigType {\n SETTINGS = \"settings\",\n ACCOUNT = \"account\",\n SMTP = \"smtp\",\n GOOGLE = \"google\",\n OIDC = \"oidc\",\n OIDC_LOGOS = \"logos_oidc\",\n SCIM = \"scim\",\n}\n", "import { Document } from \"../document\"\n\n// SSO\n\nexport interface SSOProfileJson {\n email?: string\n picture?: string\n}\n\nexport interface OAuth2 {\n accessToken: string\n refreshToken?: string\n}\n\nexport enum SSOProviderType {\n OIDC = \"oidc\",\n GOOGLE = \"google\",\n}\n\nexport interface UserSSO {\n provider: string // the individual provider e.g. Okta, Auth0, Google\n providerType: SSOProviderType\n oauth2?: OAuth2\n thirdPartyProfile?: SSOProfileJson\n profile?: {\n displayName?: string\n name?: {\n givenName?: string\n familyName?: string\n }\n }\n}\n\nexport type SSOUser = User & UserSSO\n\nexport function isSSOUser(user: User): user is SSOUser {\n return !!(user as SSOUser).providerType\n}\n\n// USER\n\nexport interface User extends Document {\n tenantId: string\n email: string\n userId?: string\n firstName?: string\n lastName?: string\n pictureUrl?: string\n forceResetPassword?: boolean\n roles: UserRoles\n builder?: {\n global?: boolean\n apps?: string[]\n creator?: boolean\n }\n admin?: {\n global: boolean\n }\n password?: string\n status?: UserStatus\n createdAt?: number // override the default createdAt behaviour - users sdk historically set this to Date.now()\n dayPassRecordedAt?: string\n userGroups?: string[]\n onboardedAt?: string\n tours?: Record<string, Date>\n scimInfo?: { isSync: true } & Record<string, any>\n appFavourites?: string[]\n ssoId?: string\n}\n\nexport enum UserStatus {\n ACTIVE = \"active\",\n INACTIVE = \"inactive\",\n}\n\nexport interface UserRoles {\n [key: string]: string\n}\n\n// UTILITY TYPES\n\nexport interface BuilderUser extends User {\n builder: {\n global?: boolean\n apps?: string[]\n }\n}\n\nexport interface AdminUser extends User {\n admin: {\n global: boolean\n }\n builder: {\n global: boolean\n }\n}\n\nexport interface AdminOnlyUser extends User {\n admin: {\n global: boolean\n }\n}\n\nexport function isUser(user: object): user is User {\n return !!(user as User).roles\n}\n", "import { Document } from \"../document\"\n\nexport enum PluginType {\n DATASOURCE = \"datasource\",\n COMPONENT = \"component\",\n AUTOMATION = \"automation\",\n}\n\nexport enum PluginSource {\n NPM = \"NPM\",\n GITHUB = \"Github\",\n URL = \"URL\",\n FILE = \"File Upload\",\n}\nexport interface FileType {\n path: string\n name: string\n}\n\nexport interface Plugin extends Document {\n description: string\n name: string\n version: string\n source: PluginSource\n package: { [key: string]: any }\n hash: string\n schema: {\n type: PluginType\n [key: string]: any\n }\n iconFileName?: string\n // Populated on read\n jsUrl?: string\n // Populated on read\n iconUrl?: string\n}\n\nexport const PLUGIN_TYPE_ARR = Object.values(PluginType)\n", "import { MonthlyQuotaName, StaticQuotaName } from \"../../sdk\"\n\nexport enum BreakdownQuotaName {\n ROW_QUERIES = \"rowQueries\",\n DATASOURCE_QUERIES = \"datasourceQueries\",\n AUTOMATIONS = \"automations\",\n}\n\nexport const APP_QUOTA_NAMES = [\n StaticQuotaName.ROWS,\n MonthlyQuotaName.QUERIES,\n MonthlyQuotaName.AUTOMATIONS,\n]\n\nexport const BREAKDOWN_QUOTA_NAMES = [\n MonthlyQuotaName.QUERIES,\n MonthlyQuotaName.AUTOMATIONS,\n]\n\nexport interface UsageBreakdown {\n parent: MonthlyQuotaName\n values: {\n [key: string]: number\n }\n}\n\nexport type QuotaTriggers = {\n [key: string]: string | undefined\n}\n\nexport interface StaticUsage {\n [StaticQuotaName.APPS]: number\n [StaticQuotaName.PLUGINS]: number\n [StaticQuotaName.USERS]: number\n [StaticQuotaName.CREATORS]: number\n [StaticQuotaName.USER_GROUPS]: number\n [StaticQuotaName.ROWS]: number\n triggers: {\n [key in StaticQuotaName]?: QuotaTriggers\n }\n}\n\nexport interface MonthlyUsage {\n [MonthlyQuotaName.QUERIES]: number\n [MonthlyQuotaName.AUTOMATIONS]: number\n [MonthlyQuotaName.DAY_PASSES]: number\n triggers: {\n [key in MonthlyQuotaName]?: QuotaTriggers\n }\n breakdown?: {\n [key in BreakdownQuotaName]?: UsageBreakdown\n }\n}\n\nexport interface BaseQuotaUsage {\n usageQuota: StaticUsage\n monthly: {\n [key: string]: MonthlyUsage\n }\n}\n\nexport interface QuotaUsage extends BaseQuotaUsage {\n _id: string\n _rev?: string\n quotaReset: string\n apps?: {\n [key: string]: BaseQuotaUsage\n }\n}\n\nexport type SetUsageValues = {\n total: number\n app?: number\n breakdown?: number\n triggers?: QuotaTriggers\n}\n\nexport type UsageValues = {\n total: number\n app?: number\n breakdown?: number\n}\n", "import { Document } from \"../document\"\n\nexport enum ScheduleType {\n APP_BACKUP = \"app_backup\",\n}\n\nexport enum ScheduleRepeatPeriod {\n DAILY = \"daily\",\n WEEKLY = \"weekly\",\n MONTHLY = \"monthly\",\n}\n\nexport interface Schedule extends Document {\n type: ScheduleType\n name: string\n startDate: string\n repeat: ScheduleRepeatPeriod\n metadata: ScheduleMetadata\n}\n\nexport type ScheduleMetadata = AppBackupScheduleMetadata\n\nexport const isAppBackupMetadata = (\n type: ScheduleType,\n metadata: ScheduleMetadata\n): metadata is AppBackupScheduleMetadata => {\n return type === ScheduleType.APP_BACKUP\n}\n\nexport interface AppBackupScheduleMetadata {\n apps: string[]\n}\n", "import { Document } from \"../document\"\nimport { Event } from \"../../sdk\"\n\nexport const AuditLogSystemUser = \"SYSTEM\"\n\nexport type FallbackInfo = {\n appName?: string\n email?: string\n}\n\nexport interface AuditLogDoc extends Document {\n appId?: string\n event: Event\n userId: string\n timestamp: string\n metadata: any\n name: string\n fallback?: FallbackInfo\n}\n", "export enum PingSource {\n BUILDER = \"builder\",\n APP = \"app\",\n}\n\nexport interface AnalyticsPingRequest {\n source: PingSource\n timezone: string\n embedded?: boolean\n}\n", "import { Event } from \"../../../sdk\"\nimport { PaginationResponse, BasicPaginationRequest } from \"../\"\nimport { User, App } from \"../../../\"\n\nexport interface AuditLogSearchParams {\n userIds?: string[]\n appIds?: string[]\n events?: Event[]\n startDate?: string\n endDate?: string\n fullSearch?: string\n bookmark?: string\n}\n\nexport interface DownloadAuditLogsRequest extends AuditLogSearchParams {}\n\nexport interface SearchAuditLogsRequest\n extends BasicPaginationRequest,\n AuditLogSearchParams {}\n\nexport enum AuditLogResourceStatus {\n DELETED = \"deleted\",\n}\n\nexport type DeletedResourceInfo = {\n _id: string\n status: AuditLogResourceStatus\n email?: string\n name?: string\n}\n\nexport interface AuditLogEnriched {\n app?: App | DeletedResourceInfo\n user: User | DeletedResourceInfo\n event: Event\n timestamp: string\n name: string\n metadata: any\n}\n\nexport interface SearchAuditLogsResponse extends PaginationResponse {\n data: AuditLogEnriched[]\n}\n\nexport interface DefinitionsAuditLogsResponse {\n events: Record<string, string>\n}\n", "export enum EventPublishType {\n ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED = \"environment_variable_upgrade_panel_opened\",\n}\n\nexport interface PostEventPublishRequest {\n type: EventPublishType\n}\n", "export enum SortOrder {\n ASCENDING = \"ascending\",\n DESCENDING = \"descending\",\n}\n\nexport enum SortType {\n STRING = \"string\",\n NUMBER = \"number\",\n}\n\nexport interface BasicPaginationRequest {\n bookmark?: string\n}\n\nexport interface PaginationRequest extends BasicPaginationRequest {\n limit?: number\n sort?: {\n order: SortOrder\n column: string\n type: SortType\n }\n}\n\nexport interface PaginationResponse {\n bookmark: string | number | undefined\n hasNextPage?: boolean\n}\n", "export enum ServiceType {\n WORKER = \"worker\",\n APPS = \"apps\",\n}\n\nexport enum MaintenanceType {\n SQS_MISSING = \"sqs_missing\",\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Hosting", "Event", "GroupType", "IdentityType", "PlanType", "PriceDuration", "PlanModel", "QuotaUsageType", "QuotaType", "StaticQuotaName", "MonthlyQuotaName", "ConstantQuotaName", "Feature", "MigrationType", "MigrationName", "Operation", "SortDirection", "QueryType", "DatasourceFieldType", "SourceName", "IncludeRelationship", "FilterType", "DatasourceFeature", "SearchFilterOperator", "EmptyFilterOption", "LockType", "LockName", "SearchIndex", "SortOption", "TenantResolutionStrategy", "FeatureFlag", "AppEnvironment", "CommandWord", "InitType", "PermissionLevel", "PermissionType", "PermissionSource", "AccountSSOProviderType", "AccountSSOProvider", "AuthType", "AutomationIOType", "AutomationCustomIOType", "AutomationTriggerStepId", "AutomationStepType", "AutomationActionStepId", "AutomationFeature", "AutomationStepStatus", "AutomationStatus", "RestAuthType", "HttpMethod", "TableSourceType", "FieldType", "FieldSubtype", "RelationshipType", "AutoReason", "AutoFieldSubType", "JsonFieldSubType", "FormulaType", "ViewCalculation", "DocumentType", "InternalTable", "VirtualDocumentType", "AppBackupType", "AppBackupStatus", "AppBackupTrigger", "WebhookActionType", "SQLiteType", "ConfigType", "SSOProviderType", "UserStatus", "PluginType", "PluginSource", "BreakdownQuotaName", "ScheduleType", "ScheduleRepeatPeriod", "PingSource", "AuditLogResourceStatus", "EventPublishType", "SortOrder", "SortType", "ServiceType", "MaintenanceType"]
|
|
7
7
|
}
|