@budibase/backend-core 3.18.13 → 3.18.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +16 -16
- package/dist/index.js.map +2 -3
- package/dist/package.json +2 -2
- package/dist/plugins.js +1 -1
- package/dist/plugins.js.map +2 -3
- package/package.json +2 -2
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/backend-core",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.14",
|
|
4
4
|
"description": "Budibase backend core libraries used in server and worker",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -112,5 +112,5 @@
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
|
-
"gitHead": "
|
|
115
|
+
"gitHead": "da28258ca1bcc8260d29f82069545761429eeea7"
|
|
116
116
|
}
|
package/dist/plugins.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var b=Object.create;var T=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var l=(t,n)=>T(t,"name",{value:n,configurable:!0});var x=(t,n)=>{for(var i in n)T(t,i,{get:n[i],enumerable:!0})},L=(t,n,i,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let g of D(n))!N.call(t,g)&&g!==i&&T(t,g,{get:()=>n[g],enumerable:!(a=P(n,g))||a.enumerable});return t};var U=(t,n,i)=>(i=t!=null?b(A(t)):{},L(n||!t||!t.__esModule?T(i,"default",{value:t,enumerable:!0}):i,t)),I=t=>L(T({},"__esModule",{value:!0}),t);var j={};x(j,{validate:()=>M});module.exports=I(j);var O=(a=>(a.SQL="sql",a.JSON="json",a.FIELDS="fields",a))(O||{}),c=(o=>(o.STRING="string",o.CODE="code",o.LONGFORM="longForm",o.BOOLEAN="boolean",o.NUMBER="number",o.PASSWORD="password",o.LIST="list",o.OBJECT="object",o.JSON="json",o.FILE="file",o.FIELD_GROUP="fieldGroup",o.SELECT="select",o))(c||{});var p=(a=>(a.CONNECTION_CHECKING="connection",a.FETCH_TABLE_NAMES="fetch_table_names",a.EXPORT_SCHEMA="export_schema",a))(p||{});var u=(E=>(E.OBJECT="object",E.STRING="string",E.BOOLEAN="boolean",E.NUMBER="number",E.ARRAY="array",E.JSON="json",E.DATE="date",E.DATETIME="datetime",E.ATTACHMENT="attachment",E.LONGFORM="longform",E))(u||{}),d=(s=>(s.TABLE="table",s.ROW="row",s.ROWS="rows",s.WIDE="wide",s.QUERY="query",s.QUERY_PARAMS="queryParams",s.QUERY_LIMIT="queryLimit",s.LOOP_OPTION="loopOption",s.ITEM="item",s.CODE="code",s.FILTERS="filters",s.COLUMN="column",s.TRIGGER_SCHEMA="triggerSchema",s.CRON="cron",s.WEBHOOK_URL="webhookUrl",s.AUTOMATION="automation",s.AUTOMATION_FIELDS="automationFields",s.MULTI_ATTACHMENTS="multi_attachments",s.TRIGGER_FILTER="trigger_filter",s.CATEGORIES="categories",s))(d||{}),C=(R=>(R.ROW_SAVED="ROW_SAVED",R.ROW_UPDATED="ROW_UPDATED",R.ROW_DELETED="ROW_DELETED",R.WEBHOOK="WEBHOOK",R.APP="APP",R.CRON="CRON",R.ROW_ACTION="ROW_ACTION",R))(C||{});var m=(r=>(r.SEND_EMAIL_SMTP="SEND_EMAIL_SMTP",r.CREATE_ROW="CREATE_ROW",r.UPDATE_ROW="UPDATE_ROW",r.DELETE_ROW="DELETE_ROW",r.EXECUTE_BASH="EXECUTE_BASH",r.OUTGOING_WEBHOOK="OUTGOING_WEBHOOK",r.EXECUTE_SCRIPT="EXECUTE_SCRIPT",r.EXECUTE_SCRIPT_V2="EXECUTE_SCRIPT_V2",r.EXECUTE_QUERY="EXECUTE_QUERY",r.SERVER_LOG="SERVER_LOG",r.DELAY="DELAY",r.FILTER="FILTER",r.API_REQUEST="API_REQUEST",r.QUERY_ROWS="QUERY_ROWS",r.LOOP="LOOP",r.COLLECT="COLLECT",r.OPENAI="OPENAI",r.TRIGGER_AUTOMATION_RUN="TRIGGER_AUTOMATION_RUN",r.BRANCH="BRANCH",r.CLASSIFY_CONTENT="CLASSIFY_CONTENT",r.PROMPT_LLM="PROMPT_LLM",r.TRANSLATE="TRANSLATE",r.SUMMARISE="SUMMARISE",r.GENERATE_TEXT="GENERATE_TEXT",r.EXTRACT_FILE_DATA="EXTRACT_FILE_DATA",r.EXTRACT_STATE="EXTRACT_STATE",r.LOOP_V2="LOOP_V2",r.discord="discord",r.slack="slack",r.zapier="zapier",r.integromat="integromat",r.n8n="n8n",r))(m||{}),f=[...Object.values(m),...Object.values(C)];var e=U(require("joi"));var y=["Relational","Non-relational","Spreadsheet","Object store","Graph","API"];function _(t,n){let{error:i}=t.validate(n);if(i)throw i}l(_,"runJoi");function S(t){let n=e.default.object({type:e.default.string().allow("component").required(),metadata:e.default.object().unknown(!0).required(),hash:e.default.string().optional(),version:e.default.string().optional(),schema:e.default.object({name:e.default.string().required(),settings:e.default.array().items(e.default.object().unknown(!0)).required()}).unknown(!0)});_(n,t)}l(S,"validateComponent");function G(t){let n=e.default.object({type:e.default.string().allow(...Object.values(c)).required(),required:e.default.boolean().required(),default:e.default.any(),display:e.default.string()}),i=e.default.object({type:e.default.string().allow(...Object.values(O)),readable:e.default.boolean(),displayName:e.default.string(),fields:e.default.object().pattern(e.default.string(),n)}).required(),a=e.default.object({type:e.default.string().allow("datasource").required(),metadata:e.default.object().unknown(!0).required(),hash:e.default.string().optional(),version:e.default.string().optional(),schema:e.default.object({docs:e.default.string(),plus:e.default.boolean().optional(),isSQL:e.default.boolean().optional(),auth:e.default.object({type:e.default.string().required()}).optional(),features:e.default.object(Object.fromEntries(Object.values(p).map(g=>[g,e.default.boolean().optional()]))).optional(),relationships:e.default.boolean().optional(),description:e.default.string().required(),friendlyName:e.default.string().required(),type:e.default.string().allow(...y),datasource:e.default.object().pattern(e.default.string(),n).required(),query:e.default.object().pattern(e.default.string(),i).unknown(!0).required(),extra:e.default.object().pattern(e.default.string(),e.default.object({type:e.default.string().required(),displayName:e.default.string().required(),required:e.default.boolean(),data:e.default.object()}))})});_(a,t)}l(G,"validateDatasource");function B(t){let n=e.default.object().pattern(e.default.string(),{type:e.default.string().allow(...Object.values(u)).required(),customType:e.default.string().allow(...Object.values(d)),title:e.default.string(),description:e.default.string(),enum:e.default.array().items(e.default.string()),pretty:e.default.array().items(e.default.string())}),i=e.default.object({properties:n,required:e.default.array().items(e.default.string())}).concat(n).required(),a=e.default.object({type:e.default.string().allow("automation").required(),metadata:e.default.object().unknown(!0).required(),hash:e.default.string().optional(),version:e.default.string().optional(),schema:e.default.object({name:e.default.string().required(),tagline:e.default.string().required(),icon:e.default.string().required(),description:e.default.string().required(),type:e.default.string().allow("ACTION","LOGIC").required(),stepId:e.default.string().disallow(...f).required(),inputs:e.default.object().optional(),schema:e.default.object({inputs:i,outputs:i}).required()})});_(a,t)}l(B,"validateAutomation");function M(t){switch(t?.type){case"component":S(t);break;case"datasource":G(t);break;case"automation":B(t);break;default:throw new Error(`Unknown plugin type - check schema.json: ${t.type}`)}}l(M,"validate");0&&(module.exports={validate});
|
|
2
2
|
//# sourceMappingURL=plugins.js.map
|
package/dist/plugins.js.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/plugin/index.ts", "../../types/src/sdk/datasources.ts", "../../types/src/documents/workspace/automation/automation.ts", "../src/plugin/utils.ts"],
|
|
4
|
-
"sourcesContent": ["export * from \"./utils\"\n", "import { Table, Row } from \"../documents\"\nimport { EnrichedQueryJson } 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 COUNT = \"COUNT\",\n BULK_CREATE = \"BULK_CREATE\",\n BULK_UPSERT = \"BULK_UPSERT\",\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 Operation.BULK_UPSERT,\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 AIRTABLE = \"AIRTABLE\",\n ARANGODB = \"ARANGODB\",\n BUDIBASE = \"BUDIBASE\",\n COUCHDB = \"COUCHDB\",\n DYNAMODB = \"DYNAMODB\",\n ELASTICSEARCH = \"ELASTICSEARCH\",\n FIRESTORE = \"FIRESTORE\",\n GOOGLE_SHEETS = \"GOOGLE_SHEETS\",\n MONGODB = \"MONGODB\",\n MYSQL = \"MYSQL\",\n ORACLE = \"ORACLE\",\n POSTGRES = \"POSTGRES\",\n REDIS = \"REDIS\",\n REST = \"REST\",\n S3 = \"S3\",\n SNOWFLAKE = \"SNOWFLAKE\",\n SQL_SERVER = \"SQL_SERVER\",\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 placeholder?: 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 patch?(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\nexport enum 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 | { total: number }[]\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: EnrichedQueryJson): Promise<DatasourcePlusQueryResponse>\n buildSchema(\n datasourceId: string,\n entities: Record<string, Table>,\n filter?: string[]\n ): Promise<Schema>\n getTableNames(): Promise<string[]>\n}\n", "import { Document } from \"../../document\"\nimport { User } from \"../../global\"\nimport { Row } from \"../row\"\nimport { Table } from \"../table\"\nimport { AutomationStep, AutomationTrigger } from \"./schema\"\nimport { ContextEmitter } from \"../../../sdk\"\nimport { Readable } from \"stream\"\nimport { LoopSummary } from \"./StepInputsOutputs\"\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 DATETIME = \"datetime\",\n ATTACHMENT = \"attachment\",\n LONGFORM = \"longform\",\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 MULTI_ATTACHMENTS = \"multi_attachments\",\n TRIGGER_FILTER = \"trigger_filter\",\n CATEGORIES = \"categories\",\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 ROW_ACTION = \"ROW_ACTION\",\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_SCRIPT_V2 = \"EXECUTE_SCRIPT_V2\",\n EXECUTE_QUERY = \"EXECUTE_QUERY\",\n SERVER_LOG = \"SERVER_LOG\",\n DELAY = \"DELAY\",\n FILTER = \"FILTER\",\n API_REQUEST = \"API_REQUEST\",\n QUERY_ROWS = \"QUERY_ROWS\",\n LOOP = \"LOOP\",\n COLLECT = \"COLLECT\",\n OPENAI = \"OPENAI\",\n TRIGGER_AUTOMATION_RUN = \"TRIGGER_AUTOMATION_RUN\",\n BRANCH = \"BRANCH\",\n CLASSIFY_CONTENT = \"CLASSIFY_CONTENT\",\n PROMPT_LLM = \"PROMPT_LLM\",\n TRANSLATE = \"TRANSLATE\",\n SUMMARISE = \"SUMMARISE\",\n GENERATE_TEXT = \"GENERATE_TEXT\",\n EXTRACT_FILE_DATA = \"EXTRACT_FILE_DATA\",\n EXTRACT_STATE = \"EXTRACT_STATE\",\n LOOP_V2 = \"LOOP_V2\",\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 EmailAttachment {\n url: string\n filename: string\n}\n\nexport interface SendEmailOpts {\n to?: string\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?: string\n bcc?: string\n automation?: boolean\n invite?: EmailInvite\n attachments?: EmailAttachment[]\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 // stepNames is used to lookup step names from their correspnding step ID.\n stepNames?: Record<string, string>\n }\n screenId?: string\n uiTree?: any\n appId: string\n live?: boolean\n name: string\n internal?: boolean\n type?: string\n disabled?: boolean\n testData?: AutomationTriggerResultOutputs\n}\n\nexport interface BaseIOStructure {\n type?: AutomationIOType\n subtype?: AutomationIOType\n customType?: AutomationCustomIOType\n title?: string\n description?: string\n dependsOn?: string | { field: string; value: string | string[] }\n enum?: string[]\n pretty?: string[]\n properties?: AutomationIOProps\n required?: string[]\n readonly?: true\n}\n\nexport interface InputOutputBlock {\n properties: AutomationIOProps\n required?: string[]\n}\n\nexport interface AutomationIOProps {\n [key: string]: BaseIOStructure\n}\n\nexport enum AutomationFeature {\n LOOPING = \"LOOPING\",\n}\n\nexport enum AutomationStepStatus {\n NO_ITERATIONS = \"no_iterations\",\n MAX_ITERATIONS = \"max_iterations_reached\",\n FAILURE_CONDITION = \"FAILURE_CONDITION_MET\",\n INCORRECT_TYPE = \"INCORRECT_TYPE\",\n}\n\nexport enum AutomationStatus {\n SUCCESS = \"success\",\n ERROR = \"error\",\n STOPPED = \"stopped\",\n STOPPED_ERROR = \"stopped_error\",\n NO_CONDITION_MET = \"No branch condition met\",\n TIMED_OUT = \"timed_out\",\n}\n\nexport enum AutomationStoppedReason {\n TRIGGER_FILTER_NOT_MET = \"Automation did not run. Filter conditions in trigger were not met.\",\n TIMED_OUT = \"Automation timed out.\",\n}\n\nexport interface AutomationStepResultOutputs {\n success: boolean\n [key: string]: any\n}\n\nexport interface AutomationStepResultInputs {\n [key: string]: any\n}\n\nexport interface AutomationStepResult {\n id: string\n name?: string\n icon?: string\n stepId: AutomationActionStepId\n inputs: AutomationStepResultInputs\n outputs: AutomationStepResultOutputs\n}\n\nexport type AutomationTriggerResultInputs = Record<string, any>\nexport type AutomationTriggerResultOutputs = Record<string, any>\n\nexport interface AutomationTriggerResult {\n id: string\n name?: string\n icon?: string\n stepId: AutomationTriggerStepId\n inputs?: AutomationTriggerResultInputs | null\n outputs: AutomationTriggerResultOutputs\n}\n\nexport interface AutomationResults {\n automationId?: string\n status: AutomationStatus\n trigger: AutomationTriggerResult\n steps: [AutomationTriggerResult, ...AutomationStepResult[]]\n state?: Record<string, any>\n}\n\nexport interface DidNotTriggerResponse {\n outputs: {\n success: false\n status: AutomationStatus.STOPPED\n }\n message: AutomationStoppedReason.TRIGGER_FILTER_NOT_MET\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 interface AutomationStepInputBase {\n context: Record<string, any>\n emitter: ContextEmitter\n appId: string\n apiKey?: string\n}\n\nexport type ActionImplementation<TInputs, TOutputs> = (\n params: {\n inputs: TInputs\n } & AutomationStepInputBase\n) => Promise<TOutputs>\n\nexport interface AutomationMetadata extends Document {\n errorCount?: number\n automationChainCount?: number\n}\n\nexport type AutomationAttachment = {\n url: string\n filename: string\n}\n\nexport type AutomationAttachmentContent = {\n filename: string\n content: Readable\n}\n\nexport type BucketedContent = AutomationAttachmentContent & {\n bucket: string\n path: string\n}\n\nexport enum AutomationEventType {\n ROW_SAVE = \"row:save\",\n ROW_UPDATE = \"row:update\",\n ROW_DELETE = \"row:delete\",\n APP_TRIGGER = \"app:trigger\",\n CRON_TRIGGER = \"cron:trigger\",\n WEBHOOK_TRIGGER = \"web:trigger\",\n ROW_ACTION = \"row:action\",\n}\n\nexport type UpdatedRowEventEmitter = {\n row: Row\n oldRow: Row\n table: Table\n appId: string\n user: User\n}\n\nexport enum LoopStepType {\n ARRAY = \"Array\",\n STRING = \"String\",\n}\n\nexport enum ContentType {\n EMAIL = \"email\",\n DOCUMENT = \"document\",\n BLOG_POST = \"blog_post\",\n CHAT_MESSAGE = \"chat_message\",\n LETTER = \"letter\",\n PROPOSAL = \"proposal\",\n OTHER = \"other\",\n}\n\nexport const PrettyContentTypes = {\n [ContentType.EMAIL]: \"Email\",\n [ContentType.DOCUMENT]: \"Document\",\n [ContentType.BLOG_POST]: \"Blog post\",\n [ContentType.CHAT_MESSAGE]: \"Chat message\",\n [ContentType.LETTER]: \"Letter\",\n [ContentType.PROPOSAL]: \"Proposal\",\n [ContentType.OTHER]: \"Other\",\n}\n\nexport enum DocumentSourceType {\n URL = \"URL\",\n ATTACHMENT = \"Attachment\",\n}\n\nexport enum SupportedFileType {\n PDF = \"pdf\",\n JPG = \"jpg\",\n PNG = \"png\",\n JPEG = \"jpeg\",\n}\n\nexport const ImageContentTypes = [\n \"png\",\n \"jpg\",\n \"jpeg\",\n \"image/png\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/jpeg\",\n]\n\nexport interface LoopStorage {\n results: Record<string, AutomationStepResult[]>\n summary: LoopSummary\n nestedSummaries: Record<string, LoopSummary[]>\n maxStoredResults: number\n}\n", "import {\n DatasourceFieldType,\n QueryType,\n PluginType,\n AutomationStepType,\n AutomationStepIdArray,\n AutomationIOType,\n AutomationCustomIOType,\n DatasourceFeature,\n} from \"@budibase/types\"\nimport joi from \"joi\"\n\nconst DATASOURCE_TYPES = [\n \"Relational\",\n \"Non-relational\",\n \"Spreadsheet\",\n \"Object store\",\n \"Graph\",\n \"API\",\n]\n\nfunction runJoi(validator: joi.Schema, schema: any) {\n const { error } = validator.validate(schema)\n if (error) {\n throw error\n }\n}\n\nfunction validateComponent(schema: any) {\n const validator = joi.object({\n type: joi.string().allow(PluginType.COMPONENT).required(),\n metadata: joi.object().unknown(true).required(),\n hash: joi.string().optional(),\n version: joi.string().optional(),\n schema: joi\n .object({\n name: joi.string().required(),\n settings: joi.array().items(joi.object().unknown(true)).required(),\n })\n .unknown(true),\n })\n runJoi(validator, schema)\n}\n\nfunction validateDatasource(schema: any) {\n const fieldValidator = joi.object({\n type: joi\n .string()\n .allow(...Object.values(DatasourceFieldType))\n .required(),\n required: joi.boolean().required(),\n default: joi.any(),\n display: joi.string(),\n })\n\n const queryValidator = joi\n .object({\n type: joi.string().allow(...Object.values(QueryType)),\n readable: joi.boolean(),\n displayName: joi.string(),\n fields: joi.object().pattern(joi.string(), fieldValidator),\n })\n .required()\n\n const validator = joi.object({\n type: joi.string().allow(PluginType.DATASOURCE).required(),\n metadata: joi.object().unknown(true).required(),\n hash: joi.string().optional(),\n version: joi.string().optional(),\n schema: joi.object({\n docs: joi.string(),\n plus: joi.boolean().optional(),\n isSQL: joi.boolean().optional(),\n auth: joi\n .object({\n type: joi.string().required(),\n })\n .optional(),\n features: joi\n .object(\n Object.fromEntries(\n Object.values(DatasourceFeature).map(key => [\n key,\n joi.boolean().optional(),\n ])\n )\n )\n .optional(),\n relationships: joi.boolean().optional(),\n description: joi.string().required(),\n friendlyName: joi.string().required(),\n type: joi.string().allow(...DATASOURCE_TYPES),\n datasource: joi.object().pattern(joi.string(), fieldValidator).required(),\n query: joi\n .object()\n .pattern(joi.string(), queryValidator)\n .unknown(true)\n .required(),\n extra: joi.object().pattern(\n joi.string(),\n joi.object({\n type: joi.string().required(),\n displayName: joi.string().required(),\n required: joi.boolean(),\n data: joi.object(),\n })\n ),\n }),\n })\n runJoi(validator, schema)\n}\n\nfunction validateAutomation(schema: any) {\n const basePropsValidator = joi.object().pattern(joi.string(), {\n type: joi\n .string()\n .allow(...Object.values(AutomationIOType))\n .required(),\n customType: joi.string().allow(...Object.values(AutomationCustomIOType)),\n title: joi.string(),\n description: joi.string(),\n enum: joi.array().items(joi.string()),\n pretty: joi.array().items(joi.string()),\n })\n const stepSchemaValidator = joi\n .object({\n properties: basePropsValidator,\n required: joi.array().items(joi.string()),\n })\n .concat(basePropsValidator)\n .required()\n const validator = joi.object({\n type: joi.string().allow(PluginType.AUTOMATION).required(),\n metadata: joi.object().unknown(true).required(),\n hash: joi.string().optional(),\n version: joi.string().optional(),\n schema: joi.object({\n name: joi.string().required(),\n tagline: joi.string().required(),\n icon: joi.string().required(),\n description: joi.string().required(),\n type: joi\n .string()\n .allow(AutomationStepType.ACTION, AutomationStepType.LOGIC)\n .required(),\n stepId: joi\n .string()\n .disallow(...AutomationStepIdArray)\n .required(),\n inputs: joi.object().optional(),\n schema: joi\n .object({\n inputs: stepSchemaValidator,\n outputs: stepSchemaValidator,\n })\n .required(),\n }),\n })\n runJoi(validator, schema)\n}\n\nexport function validate(schema: any) {\n switch (schema?.type) {\n case PluginType.COMPONENT:\n validateComponent(schema)\n break\n case PluginType.DATASOURCE:\n validateDatasource(schema)\n break\n case PluginType.AUTOMATION:\n validateAutomation(schema)\n break\n default:\n throw new Error(`Unknown plugin type - check schema.json: ${schema.type}`)\n }\n}\n"],
|
|
5
|
-
"
|
|
6
|
-
"names": ["plugin_exports", "__export", "validate", "__toCommonJS", "QueryType", "DatasourceFieldType", "DatasourceFeature", "AutomationIOType", "AutomationCustomIOType", "AutomationTriggerStepId", "AutomationActionStepId", "AutomationStepIdArray", "AutomationTriggerStepId", "import_joi", "DATASOURCE_TYPES", "runJoi", "validator", "schema", "error", "validateComponent", "joi", "validateDatasource", "fieldValidator", "DatasourceFieldType", "queryValidator", "QueryType", "DatasourceFeature", "key", "validateAutomation", "basePropsValidator", "AutomationIOType", "AutomationCustomIOType", "stepSchemaValidator", "AutomationStepIdArray", "validate"]
|
|
4
|
+
"mappings": "6mBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GC2BO,IAAKI,OACVA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,OAAS,SAHCA,OAAA,IAMAC,OACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,SAAW,WACXA,EAAA,QAAU,UACVA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,YAAc,aACdA,EAAA,OAAS,SAZCA,OAAA,IAmDL,IAAKC,OACVA,EAAA,oBAAsB,aACtBA,EAAA,kBAAoB,oBACpBA,EAAA,cAAgB,gBAHNA,OAAA,IC3EL,IAAKC,OACVA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,OAAS,SACTA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,SAAW,WACXA,EAAA,WAAa,aACbA,EAAA,SAAW,WAVDA,OAAA,IAaAC,OACVA,EAAA,MAAQ,QACRA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,aAAe,cACfA,EAAA,YAAc,aACdA,EAAA,YAAc,aACdA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,OAAS,SACTA,EAAA,eAAiB,gBACjBA,EAAA,KAAO,OACPA,EAAA,YAAc,aACdA,EAAA,WAAa,aACbA,EAAA,kBAAoB,mBACpBA,EAAA,kBAAoB,oBACpBA,EAAA,eAAiB,iBACjBA,EAAA,WAAa,aApBHA,OAAA,IAuBAC,OACVA,EAAA,UAAY,YACZA,EAAA,YAAc,cACdA,EAAA,YAAc,cACdA,EAAA,QAAU,UACVA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,WAAa,aAPHA,OAAA,IAgBL,IAAKC,OACVA,EAAA,gBAAkB,kBAClBA,EAAA,WAAa,aACbA,EAAA,WAAa,aACbA,EAAA,WAAa,aACbA,EAAA,aAAe,eACfA,EAAA,iBAAmB,mBACnBA,EAAA,eAAiB,iBACjBA,EAAA,kBAAoB,oBACpBA,EAAA,cAAgB,gBAChBA,EAAA,WAAa,aACbA,EAAA,MAAQ,QACRA,EAAA,OAAS,SACTA,EAAA,YAAc,cACdA,EAAA,WAAa,aACbA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,OAAS,SACTA,EAAA,uBAAyB,yBACzBA,EAAA,OAAS,SACTA,EAAA,iBAAmB,mBACnBA,EAAA,WAAa,aACbA,EAAA,UAAY,YACZA,EAAA,UAAY,YACZA,EAAA,cAAgB,gBAChBA,EAAA,kBAAoB,oBACpBA,EAAA,cAAgB,gBAChBA,EAAA,QAAU,UAEVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,OAAS,SACTA,EAAA,WAAa,aACbA,EAAA,IAAM,MAjCIA,OAAA,IAsECC,EAAwB,CACnC,GAAG,OAAO,OAAOD,CAAsB,EACvC,GAAG,OAAO,OAAOE,CAAuB,CAC1C,EC5HA,IAAAC,EAAgB,kBAEhB,IAAMC,EAAmB,CACvB,aACA,iBACA,cACA,eACA,QACA,KACF,EAEA,SAASC,EAAOC,EAAuBC,EAAa,CAClD,GAAM,CAAE,MAAAC,CAAM,EAAIF,EAAU,SAASC,CAAM,EAC3C,GAAIC,EACF,MAAMA,CAEV,CALSC,EAAAJ,EAAA,UAOT,SAASK,EAAkBH,EAAa,CACtC,IAAMD,EAAY,EAAAK,QAAI,OAAO,CAC3B,KAAM,EAAAA,QAAI,OAAO,EAAE,iBAA0B,EAAE,SAAS,EACxD,SAAU,EAAAA,QAAI,OAAO,EAAE,QAAQ,EAAI,EAAE,SAAS,EAC9C,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC5B,QAAS,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC/B,OAAQ,EAAAA,QACL,OAAO,CACN,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC5B,SAAU,EAAAA,QAAI,MAAM,EAAE,MAAM,EAAAA,QAAI,OAAO,EAAE,QAAQ,EAAI,CAAC,EAAE,SAAS,CACnE,CAAC,EACA,QAAQ,EAAI,CACjB,CAAC,EACDN,EAAOC,EAAWC,CAAM,CAC1B,CAdSE,EAAAC,EAAA,qBAgBT,SAASE,EAAmBL,EAAa,CACvC,IAAMM,EAAiB,EAAAF,QAAI,OAAO,CAChC,KAAM,EAAAA,QACH,OAAO,EACP,MAAM,GAAG,OAAO,OAAOG,CAAmB,CAAC,EAC3C,SAAS,EACZ,SAAU,EAAAH,QAAI,QAAQ,EAAE,SAAS,EACjC,QAAS,EAAAA,QAAI,IAAI,EACjB,QAAS,EAAAA,QAAI,OAAO,CACtB,CAAC,EAEKI,EAAiB,EAAAJ,QACpB,OAAO,CACN,KAAM,EAAAA,QAAI,OAAO,EAAE,MAAM,GAAG,OAAO,OAAOK,CAAS,CAAC,EACpD,SAAU,EAAAL,QAAI,QAAQ,EACtB,YAAa,EAAAA,QAAI,OAAO,EACxB,OAAQ,EAAAA,QAAI,OAAO,EAAE,QAAQ,EAAAA,QAAI,OAAO,EAAGE,CAAc,CAC3D,CAAC,EACA,SAAS,EAENP,EAAY,EAAAK,QAAI,OAAO,CAC3B,KAAM,EAAAA,QAAI,OAAO,EAAE,kBAA2B,EAAE,SAAS,EACzD,SAAU,EAAAA,QAAI,OAAO,EAAE,QAAQ,EAAI,EAAE,SAAS,EAC9C,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC5B,QAAS,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC/B,OAAQ,EAAAA,QAAI,OAAO,CACjB,KAAM,EAAAA,QAAI,OAAO,EACjB,KAAM,EAAAA,QAAI,QAAQ,EAAE,SAAS,EAC7B,MAAO,EAAAA,QAAI,QAAQ,EAAE,SAAS,EAC9B,KAAM,EAAAA,QACH,OAAO,CACN,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,CAC9B,CAAC,EACA,SAAS,EACZ,SAAU,EAAAA,QACP,OACC,OAAO,YACL,OAAO,OAAOM,CAAiB,EAAE,IAAIC,GAAO,CAC1CA,EACA,EAAAP,QAAI,QAAQ,EAAE,SAAS,CACzB,CAAC,CACH,CACF,EACC,SAAS,EACZ,cAAe,EAAAA,QAAI,QAAQ,EAAE,SAAS,EACtC,YAAa,EAAAA,QAAI,OAAO,EAAE,SAAS,EACnC,aAAc,EAAAA,QAAI,OAAO,EAAE,SAAS,EACpC,KAAM,EAAAA,QAAI,OAAO,EAAE,MAAM,GAAGP,CAAgB,EAC5C,WAAY,EAAAO,QAAI,OAAO,EAAE,QAAQ,EAAAA,QAAI,OAAO,EAAGE,CAAc,EAAE,SAAS,EACxE,MAAO,EAAAF,QACJ,OAAO,EACP,QAAQ,EAAAA,QAAI,OAAO,EAAGI,CAAc,EACpC,QAAQ,EAAI,EACZ,SAAS,EACZ,MAAO,EAAAJ,QAAI,OAAO,EAAE,QAClB,EAAAA,QAAI,OAAO,EACX,EAAAA,QAAI,OAAO,CACT,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC5B,YAAa,EAAAA,QAAI,OAAO,EAAE,SAAS,EACnC,SAAU,EAAAA,QAAI,QAAQ,EACtB,KAAM,EAAAA,QAAI,OAAO,CACnB,CAAC,CACH,CACF,CAAC,CACH,CAAC,EACDN,EAAOC,EAAWC,CAAM,CAC1B,CAlESE,EAAAG,EAAA,sBAoET,SAASO,EAAmBZ,EAAa,CACvC,IAAMa,EAAqB,EAAAT,QAAI,OAAO,EAAE,QAAQ,EAAAA,QAAI,OAAO,EAAG,CAC5D,KAAM,EAAAA,QACH,OAAO,EACP,MAAM,GAAG,OAAO,OAAOU,CAAgB,CAAC,EACxC,SAAS,EACZ,WAAY,EAAAV,QAAI,OAAO,EAAE,MAAM,GAAG,OAAO,OAAOW,CAAsB,CAAC,EACvE,MAAO,EAAAX,QAAI,OAAO,EAClB,YAAa,EAAAA,QAAI,OAAO,EACxB,KAAM,EAAAA,QAAI,MAAM,EAAE,MAAM,EAAAA,QAAI,OAAO,CAAC,EACpC,OAAQ,EAAAA,QAAI,MAAM,EAAE,MAAM,EAAAA,QAAI,OAAO,CAAC,CACxC,CAAC,EACKY,EAAsB,EAAAZ,QACzB,OAAO,CACN,WAAYS,EACZ,SAAU,EAAAT,QAAI,MAAM,EAAE,MAAM,EAAAA,QAAI,OAAO,CAAC,CAC1C,CAAC,EACA,OAAOS,CAAkB,EACzB,SAAS,EACNd,EAAY,EAAAK,QAAI,OAAO,CAC3B,KAAM,EAAAA,QAAI,OAAO,EAAE,kBAA2B,EAAE,SAAS,EACzD,SAAU,EAAAA,QAAI,OAAO,EAAE,QAAQ,EAAI,EAAE,SAAS,EAC9C,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC5B,QAAS,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC/B,OAAQ,EAAAA,QAAI,OAAO,CACjB,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC5B,QAAS,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC/B,KAAM,EAAAA,QAAI,OAAO,EAAE,SAAS,EAC5B,YAAa,EAAAA,QAAI,OAAO,EAAE,SAAS,EACnC,KAAM,EAAAA,QACH,OAAO,EACP,sBAAyD,EACzD,SAAS,EACZ,OAAQ,EAAAA,QACL,OAAO,EACP,SAAS,GAAGa,CAAqB,EACjC,SAAS,EACZ,OAAQ,EAAAb,QAAI,OAAO,EAAE,SAAS,EAC9B,OAAQ,EAAAA,QACL,OAAO,CACN,OAAQY,EACR,QAASA,CACX,CAAC,EACA,SAAS,CACd,CAAC,CACH,CAAC,EACDlB,EAAOC,EAAWC,CAAM,CAC1B,CA/CSE,EAAAU,EAAA,sBAiDF,SAASM,EAASlB,EAAa,CACpC,OAAQA,GAAQ,KAAM,CACpB,gBACEG,EAAkBH,CAAM,EACxB,MACF,iBACEK,EAAmBL,CAAM,EACzB,MACF,iBACEY,EAAmBZ,CAAM,EACzB,MACF,QACE,MAAM,IAAI,MAAM,4CAA4CA,EAAO,IAAI,EAAE,CAC7E,CACF,CAdgBE,EAAAgB,EAAA",
|
|
5
|
+
"names": ["plugin_exports", "__export", "validate", "__toCommonJS", "QueryType", "DatasourceFieldType", "DatasourceFeature", "AutomationIOType", "AutomationCustomIOType", "AutomationTriggerStepId", "AutomationActionStepId", "AutomationStepIdArray", "AutomationTriggerStepId", "import_joi", "DATASOURCE_TYPES", "runJoi", "validator", "schema", "error", "__name", "validateComponent", "joi", "validateDatasource", "fieldValidator", "DatasourceFieldType", "queryValidator", "QueryType", "DatasourceFeature", "key", "validateAutomation", "basePropsValidator", "AutomationIOType", "AutomationCustomIOType", "stepSchemaValidator", "AutomationStepIdArray", "validate"]
|
|
7
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/backend-core",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.14",
|
|
4
4
|
"description": "Budibase backend core libraries used in server and worker",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -112,5 +112,5 @@
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
|
-
"gitHead": "
|
|
115
|
+
"gitHead": "da28258ca1bcc8260d29f82069545761429eeea7"
|
|
116
116
|
}
|