@budibase/server 3.12.11 → 3.12.12

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.
@@ -7,7 +7,7 @@
7
7
  <title>Budibase</title>
8
8
  <link href="/builder/fonts/source-sans-3/source-sans-3.css" rel="stylesheet" />
9
9
  <link href="/builder/fonts/remixicon.css" rel="stylesheet" />
10
- <script type="module" crossorigin src="/builder/assets/index-8e25d7aa.js"></script>
10
+ <script type="module" crossorigin src="/builder/assets/index-1f0d1c6b.js"></script>
11
11
  <link rel="stylesheet" href="/builder/assets/index-53d1a28f.css">
12
12
  </head>
13
13
 
@@ -438,7 +438,7 @@ Please report this to https://github.com/markedjs/marked.`,p){const w="<p>An err
438
438
  </g>
439
439
  </g>
440
440
  </svg>
441
- `;var HTTPMethod=(v=>(v.POST="POST",v.PATCH="PATCH",v.GET="GET",v.PUT="PUT",v.DELETE="DELETE",v))(HTTPMethod||{});const BannedSearchTypes=[FieldType.LINK,FieldType.ATTACHMENT_SINGLE,FieldType.ATTACHMENTS,FieldType.FORMULA,FieldType.JSON,FieldType.ATTACHMENT_SINGLE,FieldType.SIGNATURE_SINGLE,"jsonarray","queryarray"],Cookies={Auth:"budibase:auth",CurrentApp:"budibase:currentapp",ReturnUrl:"budibase:returnurl",AccountReturnUrl:"budibase:account:returnurl",OnboardingProcessCorrelationKey:BpmCorrelationKey.ONBOARDING};var TableNames=(v=>(v.USERS="ta_users",v))(TableNames||{});const BudibaseRoles={AppUser:"appUser",Developer:"developer",Creator:"creator",Admin:"admin",Owner:"owner"},BudibaseRoleOptionsOld=[{label:"Developer",value:BudibaseRoles.Developer,sortOrder:2}],BudibaseRoleOptions=[{label:"Tenant admin",value:BudibaseRoles.Admin,subtitle:"Has full access to all workspaces in your tenant",sortOrder:1},{label:"Creator",value:BudibaseRoles.Creator,subtitle:"Can create and edit apps they have access to",sortOrder:2},{label:"App user",value:BudibaseRoles.AppUser,subtitle:"Can only use published apps they have access to",sortOrder:3}],ExtendedBudibaseRoleOptions=[{label:"Account holder",value:BudibaseRoles.Owner,sortOrder:0},...BudibaseRoleOptions,...BudibaseRoleOptionsOld],PlanType={FREE:"free",TEAM:"team",PRO:"pro",BUSINESS:"business",PREMIUM:"premium",PREMIUM_PLUS:"premium_plus",ENTERPRISE:"enterprise",ENTERPRISE_BASIC_TRIAL:"enterprise_basic_trial"},ApiVersion="1",Roles={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC",BUILDER:"BUILDER",CREATOR:"CREATOR",GROUP:"GROUP"},EventPublishType={ENV_VAR_UPGRADE_PANEL_OPENED:"environment_variable_upgrade_panel_opened"},TypeIconMap={[FieldType.STRING]:"Text",[FieldType.OPTIONS]:"Dropdown",[FieldType.DATETIME]:"Calendar",[FieldType.BARCODEQR]:"Camera",[FieldType.SIGNATURE_SINGLE]:"AnnotatePen",[FieldType.LONGFORM]:"TextAlignLeft",[FieldType.ARRAY]:"Duplicate",[FieldType.NUMBER]:"123",[FieldType.BOOLEAN]:"Boolean",[FieldType.ATTACHMENTS]:"DocumentFragmentGroup",[FieldType.ATTACHMENT_SINGLE]:"DocumentFragment",[FieldType.LINK]:"DataCorrelated",[FieldType.FORMULA]:"Calculator",[FieldType.AI]:"MagicWand",[FieldType.JSON]:"Brackets",[FieldType.BIGINT]:"TagBold",[FieldType.AUTO]:"Shapes",[FieldType.BB_REFERENCE]:{[BBReferenceFieldSubType.USER]:"UserGroup",[BBReferenceFieldSubType.USERS]:"UserGroup"},[FieldType.BB_REFERENCE_SINGLE]:{[BBReferenceFieldSubType.USER]:"User"}},OptionColours=[...new Array(12).keys()].map(v=>`hsla(${(v+1)*222%360}, 90%, 75%, 0.3)`),FilterOperator={ANY:"any",ALL:"all"},OnEmptyFilter={RETURN_ALL:"all",RETURN_NONE:"none"},FilterValueType={BINDING:"Binding",VALUE:"Value"},FieldPermissions={WRITABLE:"writable",READONLY:"readonly",HIDDEN:"hidden"},APP_NAME_REGEX=/^[\w\s]+$/,APP_URL_REGEX=/^[0-9a-zA-Z-_]+$/,Constants$2=Object.freeze(Object.defineProperty({__proto__:null,APP_NAME_REGEX,APP_URL_REGEX,ApiVersion,BannedSearchTypes,BudibaseRoleOptions,BudibaseRoleOptionsOld,BudibaseRoles,ContextScopes:ComponentContextScopes,Cookies,DEFAULT_BB_DATASOURCE_ID,EventPublishType,ExtendedBudibaseRoleOptions,Features:Feature,FieldPermissions,FilterOperator,FilterValueType,OnEmptyFilter,OperatorOptions,OptionColours,PlanType,Roles,SqlNumberTypeRangeMap,TableNames,TypeIconMap},Symbol.toStringTag,{value:"Module"})),buildAnalyticsEndpoints=v=>({getAnalyticsStatus:async()=>await v.get({url:"/api/bbtel"}),analyticsPing:async p=>await v.post({url:"/api/bbtel/ping",body:{...p,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}})}),buildAIEndpoints=v=>({generateCronExpression:async p=>await v.post({url:"/api/ai/cron",body:{prompt:p}}),generateJs:async p=>await v.post({url:"/api/ai/js",body:p}),generateTables:async p=>await v.post({url:"/api/ai/tables",body:p})}),buildAppEndpoints=v=>({fetchAppPackage:async p=>await v.get({url:`/api/applications/${p}/appPackage`}),saveAppMetadata:async(p,m)=>await v.put({url:`/api/applications/${p}`,body:m}),publishAppChanges:async p=>await v.post({url:`/api/applications/${p}/publish`}),revertAppChanges:async p=>await v.post({url:`/api/dev/${p}/revert`}),updateAppClientVersion:async p=>await v.post({url:`/api/applications/${p}/client/update`}),revertAppClientVersion:async p=>await v.post({url:`/api/applications/${p}/client/revert`}),getAppDeployments:async()=>await v.get({url:"/api/deployments"}),createApp:async p=>await v.post({url:"/api/applications",body:p}),duplicateApp:async(p,m)=>await v.post({url:`/api/applications/${p}/duplicate`,body:m}),updateAppFromExport:async(p,m)=>{const y=getDevAppID(p);return await v.post({url:`/api/applications/${y}/import`,body:m,json:!1})},importApps:async p=>await v.post({url:"/api/cloud/import",body:p,json:!1}),unpublishApp:async p=>await v.post({url:`/api/applications/${p}/unpublish`}),deleteApp:async p=>await v.delete({url:`/api/applications/${p}`}),releaseAppLock:async p=>await v.delete({url:`/api/dev/${p}/lock`}),fetchSystemDebugInfo:async()=>await v.get({url:"/api/debug/diagnostics"}),syncApp:async p=>await v.post({url:`/api/applications/${p}/sync`}),getApps:async()=>await v.get({url:"/api/applications?status=all"}),fetchComponentLibDefinitions:async p=>await v.get({url:`/api/${p}/components/definitions`}),addSampleData:async p=>await v.post({url:`/api/applications/${p}/sample`})}),buildAttachmentEndpoints=v=>{const p={getSignedDatasourceURL:async(m,y,w)=>await v.post({url:`/api/attachments/${m}/url`,body:{bucket:y,key:w}})};return{...p,uploadAttachment:async(m,y)=>await v.post({url:`/api/attachments/${m}/upload`,body:y,json:!1}),uploadBuilderAttachment:async m=>await v.post({url:"/api/attachments/process",body:m,json:!1}),uploadPWAZip:async m=>await v.post({url:"/api/pwa/process-zip",body:m,json:!1}),externalUpload:async(m,y,w,S)=>{const{signedUrl:k,publicUrl:M}=await p.getSignedDatasourceURL(m,y,w);return k?(await v.put({url:k,body:S,json:!1,external:!0,parseResponse:O=>O}),{publicUrl:M}):{publicUrl:void 0}},downloadAttachment:async(m,y,w)=>await v.get({url:`/api/${m}/rows/${y}/attachment/${w}`,parseResponse:S=>S,suppressErrors:!0})}},buildAuthEndpoints=v=>({logIn:async(p,m,y)=>await v.post({url:`/api/global/auth/${p}/login`,body:{username:m,password:y}}),logOut:async()=>await v.post({url:"/api/global/auth/logout"}),setInitInfo:async p=>await v.post({url:"/api/global/auth/init",body:p}),getInitInfo:async()=>await v.get({url:"/api/global/auth/init"}),requestForgotPassword:async(p,m)=>await v.post({url:`/api/global/auth/${p}/reset`,body:{email:m}}),resetPassword:async(p,m,y)=>await v.post({url:`/api/global/auth/${p}/reset/update`,body:{password:m,resetCode:y}})}),buildAutomationEndpoints=v=>({triggerAutomation:async(p,m,y)=>await v.post({url:`/api/automations/${p}/trigger`,body:{fields:m,timeout:y}}),testAutomation:async(p,m)=>await v.post({url:`/api/automations/${p}/test`,body:m}),getAutomations:async()=>await v.get({url:"/api/automations"}),getAutomationDefinitions:async()=>await v.get({url:"/api/automations/definitions/list"}),createAutomation:async p=>await v.post({url:"/api/automations",body:p}),updateAutomation:async p=>await v.put({url:"/api/automations",body:p}),deleteAutomation:async(p,m)=>await v.delete({url:`/api/automations/${p}/${m}`}),getAutomationLogs:async p=>await v.post({url:"/api/automations/logs/search",body:p}),clearAutomationLogErrors:async(p,m)=>await v.delete({url:"/api/automations/logs",body:{appId:m,automationId:p}})}),buildConfigEndpoints=v=>({saveConfig:async p=>await v.post({url:"/api/global/configs",body:p}),getConfig:async p=>await v.get({url:`/api/global/configs/${p}`}),deleteConfig:async(p,m)=>await v.delete({url:`/api/global/configs/${p}/${m}`}),getTenantConfig:async p=>await v.get({url:`/api/global/configs/public?tenantId=${p}`}),getOIDCConfigs:async p=>await v.get({url:`/api/global/configs/public/oidc?tenantId=${p}`}),getChecklist:async p=>await v.get({url:`/api/global/configs/checklist?tenantId=${p}`}),uploadLogo:async p=>await v.post({url:"/api/global/configs/upload/settings/logoUrl",body:p,json:!1}),uploadFavicon:async p=>await v.post({url:"/api/global/configs/upload/settings/faviconUrl",body:p,json:!1}),uploadOIDCLogo:async(p,m)=>await v.post({url:`/api/global/configs/upload/logos_oidc/${p}`,body:m,json:!1}),getOIDCLogos:async()=>await v.get({url:"/api/global/configs/logos_oidc"})}),buildDatasourceEndpoints=v=>({getDatasources:async()=>await v.get({url:"/api/datasources"}),buildDatasourceSchema:async(p,m)=>await v.post({url:`/api/datasources/${p}/schema`,body:{tablesFilter:m}}),createDatasource:async p=>await v.post({url:"/api/datasources",body:p}),updateDatasource:async p=>await v.put({url:`/api/datasources/${p._id}`,body:p}),deleteDatasource:async(p,m)=>await v.delete({url:`/api/datasources/${p}/${m}`}),validateDatasource:async p=>await v.post({url:"/api/datasources/verify",body:{datasource:p}}),fetchInfoForDatasource:async p=>await v.post({url:"/api/datasources/info",body:{datasource:p}}),fetchExternalSchema:async p=>await v.get({url:`/api/datasources/${p}/schema/external`})}),buildFlagEndpoints=v=>({getFlags:async()=>await v.get({url:"/api/users/flags"}),updateFlag:async(p,m)=>await v.post({url:"/api/users/flags",body:{flag:p,value:m}}),toggleUiFeature:async p=>await v.post({url:`/api/beta/${p}`})}),buildLayoutEndpoints=v=>({saveLayout:async p=>await v.post({url:"/api/layouts",body:p}),deleteLayout:async(p,m)=>await v.delete({url:`/api/layouts/${p}/${m}`})}),buildOtherEndpoints=v=>({getEnvironment:async()=>await v.get({url:"/api/system/environment"}),getSystemStatus:async()=>await v.get({url:"/api/system/status"}),getIntegrations:async()=>await v.get({url:"/api/integrations"}),getBudibaseVersion:async()=>(await v.get({url:"/api/dev/version"})).version,getBasePermissions:async()=>await v.get({url:"/api/permission/builtin"})}),buildPermissionsEndpoints=v=>({getPermissionForResource:async p=>await v.get({url:`/api/permission/${p}`}),updatePermissionForResource:async(p,m,y)=>await v.post({url:`/api/permission/${m}/${p}/${y}`}),removePermissionFromResource:async(p,m,y)=>await v.delete({url:`/api/permission/${m}/${p}/${y}`}),getDependants:async p=>await v.get({url:`/api/permission/${p}/dependants`})}),buildQueryEndpoints=v=>({executeQuery:async(p,{pagination:m,parameters:y}={})=>await v.post({url:`/api/v2/queries/${p}`,body:{parameters:y,pagination:m}}),fetchQueryDefinition:async p=>await v.get({url:`/api/queries/${p}`,cache:!0}),getQueries:async()=>await v.get({url:"/api/queries"}),saveQuery:async p=>await v.post({url:"/api/queries",body:p}),deleteQuery:async(p,m)=>await v.delete({url:`/api/queries/${p}/${m}`}),importQueries:async p=>await v.post({url:"/api/queries/import",body:p}),previewQuery:async p=>await v.post({url:"/api/queries/preview",body:p})}),buildRelationshipEndpoints=v=>({fetchRelationshipData:async(p,m,y)=>{const w=await v.get({url:`/api/${p}/${m}/enrich?field=${y}`});return y?w[y]||[]:[w]}}),buildRoleEndpoints=v=>({deleteRole:async(p,m)=>await v.delete({url:`/api/roles/${p}/${m}`}),saveRole:async p=>await v.post({url:"/api/roles",body:p}),getRoles:async()=>await v.get({url:"/api/roles"}),getRolesForApp:async p=>await v.get({url:`/api/global/roles/${p}`}),getAccessibleRoles:async()=>await v.get({url:"/api/roles/accessible"})}),buildRouteEndpoints=v=>({fetchClientAppRoutes:async()=>await v.get({url:"/api/routing/client"}),fetchAppRoutes:async()=>await v.get({url:"/api/routing"})}),buildRowEndpoints=v=>({fetchRow:async(p,m)=>await v.get({url:`/api/${p}/rows/${m}`}),saveRow:async(p,m=!1)=>{const y=p._viewId||p.tableId;return await v.post({url:`/api/${y}/rows`,body:p,suppressErrors:m})},patchRow:async(p,m=!1)=>{const y=p._viewId||p.tableId;return await v.patch({url:`/api/${y}/rows`,body:p,suppressErrors:m})},deleteRow:async(p,m)=>await v.delete({url:`/api/${p}/rows`,body:{_id:m}}),deleteRows:async(p,m)=>(m.forEach(y=>{typeof y=="object"&&(y==null||delete y._viewId)}),await v.delete({url:`/api/${p}/rows`,body:{rows:m}})),exportRows:async(p,m,y)=>await v.post({url:`/api/${p}/rows/exportRows?format=${m}`,body:y,parseResponse:async w=>await w.text()})}),buildScreenEndpoints=v=>({saveScreen:async p=>await v.post({url:"/api/screens",body:p}),deleteScreen:async(p,m)=>await v.delete({url:`/api/screens/${p}/${m}`}),usageInScreens:async p=>await v.post({url:`/api/screens/usage/${p}`})}),buildTableEndpoints=v=>({fetchTableDefinition:async p=>await v.get({url:`/api/tables/${p}`,cache:!0}),fetchTableData:async p=>await v.get({url:`/api/${p}/rows`}),searchTable:async(p,m)=>await v.post({url:`/api/${p}/search`,body:m}),importTableData:async(p,m,y)=>await v.post({url:`/api/tables/${p}/import`,body:{rows:m,identifierFields:y}}),csvToJson:async p=>await v.post({url:"/api/convert/csvToJson",body:{csvString:p}}),getTables:async()=>await v.get({url:"/api/tables"}),getTable:async p=>await v.get({url:`/api/tables/${p}`}),saveTable:async p=>await v.post({url:"/api/tables",body:p}),deleteTable:async(p,m)=>await v.delete({url:`/api/tables/${p}/${m}`}),validateNewTableImport:async(p,m)=>await v.post({url:"/api/tables/validateNewTableImport",body:{rows:p,schema:m}}),validateExistingTableImport:async(p,m)=>await v.post({url:"/api/tables/validateExistingTableImport",body:{rows:p,tableId:m}}),migrateColumn:async(p,m,y)=>await v.post({url:`/api/tables/${p}/migrate`,body:{oldColumn:m,newColumn:y}})}),buildTemplateEndpoints=v=>({getEmailTemplateDefinitions:async()=>await v.get({url:"/api/global/template/definitions"}),getEmailTemplates:async()=>await v.get({url:"/api/global/template/email"}),saveEmailTemplate:async p=>await v.post({url:"/api/global/template",body:p}),getAppTemplates:async()=>await v.get({url:"/api/templates"})}),buildUserEndpoints=v=>({getUsers:async()=>await v.get({url:"/api/global/users"}),searchUsers:async p=>await v.post({url:"/api/global/users/search",body:p}),getUser:async p=>await v.get({url:`/api/global/users/${p}`}),updateOwnMetadata:async p=>await v.post({url:"/api/users/metadata/self",body:p}),createAdminUser:async p=>await v.post({url:"/api/global/users/init",body:p}),saveUser:async p=>await v.post({url:"/api/global/users",body:p}),createUsers:async(p,m)=>(await v.post({url:"/api/global/users/bulk",body:{create:{users:p,groups:m}}})).created,deleteUser:async p=>await v.delete({url:`/api/global/users/${p}`}),deleteUsers:async p=>(await v.post({url:"/api/global/users/bulk",body:{delete:{users:p}}})).deleted,onboardUsers:async p=>await v.post({url:"/api/global/users/onboard",body:p}),updateUserInvite:async(p,m)=>await v.post({url:`/api/global/users/invite/update/${p}`,body:m}),getUserInvite:async p=>await v.get({url:`/api/global/users/invite/${p}`}),getUserInvites:async()=>await v.get({url:"/api/global/users/invites"}),inviteUsers:async p=>await v.post({url:"/api/global/users/multi/invite",body:p}),removeUserInvites:async p=>await v.post({url:"/api/global/users/multi/invite/delete",body:p}),acceptInvite:async p=>await v.post({url:"/api/global/users/invite/accept",body:p}),getUserCountByApp:async p=>(await v.get({url:`/api/global/users/count/${p}`})).userCount,addAppBuilder:async(p,m)=>await v.post({url:`/api/global/users/${p}/app/${m}/builder`}),removeAppBuilder:async(p,m)=>await v.delete({url:`/api/global/users/${p}/app/${m}/builder`}),getAccountHolder:async()=>await v.get({url:"/api/global/users/accountholder"})}),buildSelfEndpoints=v=>({generateAPIKey:async()=>{const p=await v.post({url:"/api/global/self/api_key"});return p==null?void 0:p.apiKey},fetchDeveloperInfo:async()=>v.get({url:"/api/global/self/api_key"}),fetchSelf:async()=>await v.get({url:"/api/self"}),fetchBuilderSelf:async()=>await v.get({url:"/api/global/self"}),updateSelf:async p=>await v.post({url:"/api/global/self",body:p})}),buildViewEndpoints=v=>({fetchViewData:async(p,{field:m,groupBy:y,calculation:w})=>{const S=new URLSearchParams;w&&(m&&S.set("field",m),S.set("calculation",w)),y&&S.set("group",y);const k=m?`/api/views/${encodeURIComponent(p)}?${S}`:`/api/views/${encodeURIComponent(p)}`;return await v.get({url:k})},exportView:async(p,m)=>{const y=encodeURIComponent(p);return await v.get({url:`/api/views/export?view=${y}&format=${m}`,parseResponse:async w=>await w.text()})},saveView:async p=>await v.post({url:"/api/views",body:p}),deleteView:async p=>await v.delete({url:`/api/views/${encodeURIComponent(p)}`})}),buildViewV2Endpoints=v=>({fetchDefinition:async p=>await v.get({url:`/api/v2/views/${encodeURIComponent(p)}`,cache:!0}),create:async p=>await v.post({url:"/api/v2/views",body:p}),update:async p=>await v.put({url:`/api/v2/views/${encodeURIComponent(p.id)}`,body:p}),fetch:async(p,m)=>await v.post({url:`/api/v2/views/${encodeURIComponent(p)}/search`,body:m}),delete:async p=>await v.delete({url:`/api/v2/views/${encodeURIComponent(p)}`})}),buildLicensingEndpoints=v=>({activateLicenseKey:async p=>v.post({url:"/api/global/license/key",body:{licenseKey:p}}),deleteLicenseKey:async()=>v.delete({url:"/api/global/license/key"}),getLicenseKey:async()=>{try{return await v.get({url:"/api/global/license/key"})}catch(p){if(p.status!==404)throw p}},activateOfflineLicense:async p=>v.post({url:"/api/global/license/offline",body:{offlineLicenseToken:p}}),deleteOfflineLicense:async()=>v.delete({url:"/api/global/license/offline"}),getOfflineLicense:async()=>{try{return await v.get({url:"/api/global/license/offline"})}catch(p){if(p.status!==404)throw p}},getOfflineLicenseIdentifier:async()=>await v.get({url:"/api/global/license/offline/identifier"}),refreshLicense:async()=>v.post({url:"/api/global/license/refresh"}),getQuotaUsage:async()=>v.get({url:"/api/global/license/usage"})}),buildGroupsEndpoints=v=>{async function p(m,y,w,S){return await v.post({url:`/api/global/groups/${m}/${y}`,body:{[w]:S}})}return{saveGroup:async m=>await v.post({url:"/api/global/groups",body:m}),getGroups:async()=>(await v.get({url:"/api/global/groups"})).data,getGroup:async m=>await v.get({url:`/api/global/groups/${m}`}),deleteGroup:async(m,y)=>await v.delete({url:`/api/global/groups/${m}/${y}`}),getGroupUsers:async({id:m,bookmark:y,emailSearch:w})=>{let S=`/api/global/groups/${m}/users?`;return y&&(S+=`bookmark=${y}&`),w&&(S+=`emailSearch=${w}`),await v.get({url:S})},addUsersToGroup:async(m,y)=>p(m,"users","add",y),removeUsersFromGroup:async(m,y)=>p(m,"users","remove",y),addAppsToGroup:async(m,y)=>p(m,"apps","add",y),removeAppsFromGroup:async(m,y)=>p(m,"apps","remove",y),addGroupAppBuilder:async(m,y)=>await v.post({url:`/api/global/groups/${m}/app/${y}/builder`}),removeGroupAppBuilder:async(m,y)=>await v.delete({url:`/api/global/groups/${m}/app/${y}/builder`})}},buildPluginEndpoints=v=>({uploadPlugin:async p=>await v.post({url:"/api/plugin/upload",body:p,json:!1}),createPlugin:async p=>await v.post({url:"/api/plugin",body:p}),getPlugins:async()=>await v.get({url:"/api/plugin"}),deletePlugin:async p=>await v.delete({url:`/api/plugin/${p}`})}),buildBackupEndpoints=v=>({createManualBackup:async p=>await v.post({url:`/api/apps/${p}/backups`}),searchBackups:async(p,m)=>await v.post({url:`/api/apps/${p}/backups/search`,body:m}),deleteBackup:async(p,m)=>await v.delete({url:`/api/apps/${p}/backups/${m}`}),restoreBackup:async(p,m,y)=>await v.post({url:`/api/apps/${p}/backups/${m}/import`,body:{name:y}})}),buildEnvironmentVariableEndpoints=v=>({checkEnvironmentVariableStatus:async()=>await v.get({url:"/api/env/variables/status"}),fetchEnvironmentVariables:async()=>await v.get({url:"/api/env/variables",json:!1}),createEnvironmentVariable:async p=>await v.post({url:"/api/env/variables",body:p}),deleteEnvironmentVariable:async p=>await v.delete({url:`/api/env/variables/${p}`}),updateEnvironmentVariable:async(p,m)=>await v.patch({url:`/api/env/variables/${p}`,body:m})}),buildEventEndpoints=v=>({publishEvent:async p=>await v.post({url:"/api/global/event/publish",body:{type:p}})}),buildAuditLogEndpoints=v=>({searchAuditLogs:async p=>await v.post({url:"/api/global/auditlogs/search",body:p}),getEventDefinitions:async()=>await v.get({url:"/api/global/auditlogs/definitions"}),getDownloadUrl:p=>`/api/global/auditlogs/download?query=${encodeURIComponent(JSON.stringify(p))}`}),buildLogsEndpoints=v=>({getSystemLogs:async()=>await v.get({url:"/api/system/logs",json:!1,parseResponse:async p=>p})}),buildMigrationEndpoints=v=>({getMigrationStatus:async()=>await v.get({url:"/api/migrations/status"})}),buildRowActionEndpoints=v=>({fetch:async p=>(await v.get({url:`/api/tables/${p}/actions`})).actions,create:async(p,m)=>await v.post({url:`/api/tables/${p}/actions`,body:{name:m}}),delete:async(p,m)=>await v.delete({url:`/api/tables/${p}/actions/${m}`}),enableView:async(p,m,y)=>await v.post({url:`/api/tables/${p}/actions/${m}/permissions/${y}`}),disableView:async(p,m,y)=>await v.delete({url:`/api/tables/${p}/actions/${m}/permissions/${y}`}),trigger:async(p,m,y)=>await v.post({url:`/api/tables/${p}/actions/${m}/trigger`,body:{rowId:y}})}),buildOAuth2Endpoints=v=>({fetch:async()=>(await v.get({url:"/api/oauth2"})).configs,create:async p=>await v.post({url:"/api/oauth2",body:{...p}}),update:async p=>await v.put({url:`/api/oauth2/${p._id}`,body:{...p}}),delete:async(p,m)=>await v.delete({url:`/api/oauth2/${p}/${m}`}),validate:async function(p){return await v.post({url:"/api/oauth2/validate",body:{...p}})}}),buildAgentEndpoints=v=>({agentChat:async p=>{const m=p;return await v.post({url:"/api/agent/chat",body:m})},removeChat:async p=>await v.delete({url:`/api/agent/history/${p}`}),fetchChats:async()=>await v.get({url:"/api/agent/history"}),fetchToolSources:async()=>await v.get({url:"/api/agent/toolsource"}),createToolSource:async p=>await v.post({url:"/api/agent/toolsource",body:p}),updateToolSource:async p=>await v.put({url:"/api/agent/toolsource",body:p}),deleteToolSource:async p=>await v.delete({url:`/api/agent/toolsource/${p}`})}),buildFeatureFlagEndpoints=v=>({overrideFeatureFlags:async p=>{const m={flags:p};return await v.patch({url:"/api/features",body:m,parseResponse:()=>{}})}}),buildNavigationEndpoints=v=>({updateNavigation:async(p,m)=>await v.put({url:`/api/navigation/${p}`,body:{navigation:m}})}),buildWorkspaceAppEndpoints=v=>({fetch:async()=>await v.get({url:"/api/workspaceApp"}),create:async p=>await v.post({url:"/api/workspaceApp",body:p}),update:async p=>await v.put({url:`/api/workspaceApp/${p._id}`,body:p}),delete:async(p,m)=>await v.delete({url:`/api/workspaceApp/${p}/${m}`})}),APISessionID=uuid(),createAPIClient=(v={})=>{let p={};const m=async(R,D,H=!1)=>{let N=R.statusText,W=null;try{W=await R.json(),W!=null&&W.message?N=W.message:W!=null&&W.error&&(N=JSON.stringify(W.error))}catch{}return{message:N,json:W,status:R.status,url:R.url,method:D,handled:!0,suppressErrors:H}},y=(R,D,H)=>({message:R,json:null,status:400,url:D,method:H,handled:!0,suppressErrors:!1}),w=async R=>{let{json:D,method:H,external:N,body:W,url:J,parseResponse:ee,suppressErrors:le}=R;D=D&&H!==HTTPMethod.GET;let ce={Accept:"application/json"};ce[Header.SESSION_ID]=APISessionID,N||(ce[Header.API_VER]=ApiVersion),D&&(ce["Content-Type"]="application/json"),v!=null&&v.attachHeaders&&v.attachHeaders(ce);let ue=W;if(D)try{ue=JSON.stringify(W)}catch{throw y("Invalid JSON body",J,H)}let me;try{me=await fetch(J,{method:H,headers:ce,body:ue,credentials:"same-origin"})}catch{throw delete p[J],y("Failed to send request",J,H)}if(me.status>=200&&me.status<400){S(me);try{return me.status===204?void 0:ee?await ee(me):await me.json()}catch(ge){throw delete p[J],`Failed to parse response: ${ge}`}}else throw delete p[J],await m(me,H,le)},S=R=>{if(!v.onMigrationDetected)return;const D=R.headers.get(Header.MIGRATING_APP);D&&v.onMigrationDetected(D)},k=async R=>{const D=R.url;return p[D]||(p[D]=w(R),p[D]=await p[D]),await p[D]},M=R=>async D=>{try{let H={json:!0,external:!1,suppressErrors:!1,cache:!1,method:R,...D},{url:N,cache:W,external:J}=H;return J||(H.url=`/${N}`.replace("//","/")),await(W&&(v==null?void 0:v.enableCaching)?k:w)(H)}catch(H){throw v!=null&&v.onError&&v.onError(H),H}};let O={post:M(HTTPMethod.POST),get:M(HTTPMethod.GET),patch:M(HTTPMethod.PATCH),delete:M(HTTPMethod.DELETE),put:M(HTTPMethod.PUT),invalidateCache:()=>{p={}},getAppID:()=>{var D;let R={};return(D=v==null?void 0:v.attachHeaders)==null||D.call(v,R),R==null?void 0:R[Header.APP_ID]}};return{...O,...buildAIEndpoints(O),...buildAnalyticsEndpoints(O),...buildAppEndpoints(O),...buildAttachmentEndpoints(O),...buildAuthEndpoints(O),...buildAutomationEndpoints(O),...buildConfigEndpoints(O),...buildDatasourceEndpoints(O),...buildFlagEndpoints(O),...buildLayoutEndpoints(O),...buildOtherEndpoints(O),...buildPermissionsEndpoints(O),...buildQueryEndpoints(O),...buildRelationshipEndpoints(O),...buildRoleEndpoints(O),...buildRouteEndpoints(O),...buildRowEndpoints(O),...buildScreenEndpoints(O),...buildTableEndpoints(O),...buildTemplateEndpoints(O),...buildUserEndpoints(O),...buildViewEndpoints(O),...buildSelfEndpoints(O),...buildLicensingEndpoints(O),...buildGroupsEndpoints(O),...buildPluginEndpoints(O),...buildBackupEndpoints(O),...buildEnvironmentVariableEndpoints(O),...buildEventEndpoints(O),...buildAuditLogEndpoints(O),...buildLogsEndpoints(O),...buildMigrationEndpoints(O),...buildAgentEndpoints(O),...buildFeatureFlagEndpoints(O),viewV2:buildViewV2Endpoints(O),rowActions:buildRowActionEndpoints(O),oauth2:buildOAuth2Endpoints(O),navigation:buildNavigationEndpoints(O),workspaceApp:buildWorkspaceAppEndpoints(O)}},getJSONArrayDatasourceSchema=(v,p)=>{let m=v,y=[];p.prefixKeys&&(y=p.prefixKeys.concat(["schema"])),y=y.concat(p.label.split(".").slice(2));for(let w=0;w<y.length;w++)m=m==null?void 0:m[y[w]],m!=null&&m.schema&&(m=m.schema);return convertJSONSchemaToTableSchema(m,{squashObjects:!0,prefixKeys:y})},convertJSONSchemaToTableSchema=(v,p)=>{if(!v)return null;p={squashObjects:!1,prefixKeys:null,...p},v.schema?v=v.schema:v={value:v};const m=extractJSONSchemaKeys(v,p.squashObjects);let y={};return m.forEach(({key:w,type:S})=>{y[w]={type:S,name:w,prefixKeys:p.prefixKeys}}),y},extractJSONSchemaKeys=(v,p=!1)=>{if(!v||!Object.keys(v).length)return[];let m=[];return Object.keys(v).forEach(y=>{const w=v[y].type;if(w==="json"&&p){const S=extractJSONSchemaKeys(v[y].schema,p);m=m.concat(S.map(k=>({key:`${y}.${k.key}`,type:k.type})))}else m.push({key:y,type:w==="array"?"jsonarray":w})}),m},generateQueryArraySchemas=(v,p)=>{var m,y;for(let w in v)((m=v[w])==null?void 0:m.type)==="json"&&((y=v[w])==null?void 0:y.subtype)==="array"&&hasSchema(p[w])&&(v[w]={schema:{schema:Object.entries(p[w]||{}).reduce((S,[k,M])=>(S[k]={name:k,type:M.type,subtype:M.subtype},S),{}),type:"json"},type:"json",subtype:"array"});return v};function setCookie(v,p,m){getCookie(v)&&removeCookie(v);let y=`${v}=${p}; Path=/;`;m&&(y+=` Domain=${m};`),window.document.cookie=y}function getCookie(v){const m=`; ${document.cookie}`.split(`; ${v}=`);if(m.length===2)return m[1].split(";").shift()}function removeCookie(v){getCookie(v)&&(document.cookie=`${v}=; Max-Age=-99999999; Path=/;`)}const RolePriorities={[Roles.ADMIN]:5,[Roles.CREATOR]:4,[Roles.POWER]:3,[Roles.BASIC]:2,[Roles.PUBLIC]:1},getRolePriority=v=>RolePriorities[v]??0,sleep=v=>new Promise(p=>setTimeout(p,v)),debounce=(v,p=1e3)=>{let m;return async(...y)=>new Promise(w=>{m&&clearTimeout(m),m=setTimeout(async()=>{const S=await v(...y);w(S)},p)})},throttle=(v,p=1e3)=>{let m,y=!1,w=!1;const S=(...k)=>{if(m=k,y){w=!0;return}v(...m),y=!0,setTimeout(()=>{y=!1,w&&(w=!1,S(...m))},p)};return S},domDebounce=v=>{let p=!1,m;return(...y)=>{m=y,p||(p=!0,requestAnimationFrame(()=>{v(...m),p=!1}))}},buildFormBlockButtonConfig=v=>{const{_id:p,actionType:m,dataSource:y,notificationOverride:w,actionUrl:S,showDeleteButton:k,deleteButtonLabel:M,showSaveButton:O,saveButtonLabel:R}=v||{};if(!p)return;const D=`${p}-form`,H=`${p}-repeater`,N=y==null?void 0:y.resourceId,W=k===!1?"":M==null?void 0:M.trim(),J=O===!1?"":R==null?void 0:R.trim(),ee=[{"##eventHandlerType":"Validate Form",parameters:{componentId:D}},{"##eventHandlerType":"Save Row",parameters:{providerId:D,tableId:N,notificationOverride:w,confirm:null}},{"##eventHandlerType":"Close Screen Modal"},{"##eventHandlerType":"Close Side Panel"},{"##eventHandlerType":"Close Modal"},...m!=="Create"?[]:[{"##eventHandlerType":"Clear Form",parameters:{componentId:D}}],...S?[{"##eventHandlerType":"Navigate To",parameters:{url:S}}]:[]],le=[{"##eventHandlerType":"Delete Row",parameters:{confirm:!0,tableId:N,rowId:`{{ ${makePropSafe(H)}.${makePropSafe("_id")} }}`,revId:`{{ ${makePropSafe(H)}.${makePropSafe("_rev")} }}`,notificationOverride:w}},{"##eventHandlerType":"Close Screen Modal"},{"##eventHandlerType":"Close Side Panel"},{"##eventHandlerType":"Close Modal"},...S?[{"##eventHandlerType":"Navigate To",parameters:{url:S}}]:[]],ce=[];return m&&["Update","Create"].includes(m)&&O!==!1&&ce.push({text:J||"Save",_id:uuid(),_component:"@budibase/standard-components/button",onClick:ee,type:"cta"}),m==="Update"&&k!==!1&&ce.push({text:W||"Delete",_id:uuid(),_component:"@budibase/standard-components/button",onClick:le,quiet:!0,type:"warning"}),ce},buildMultiStepFormBlockDefaultProps=v=>{const{_id:p,stepCount:m,currentStep:y,actionType:w,dataSource:S}=v||{};if(!p||!m)return;const k=`Step {{ [${p}-form].[__currentStep] }}`,M=S==null?void 0:S.resourceId,O=`${p}-form`;let R=[];return y!==0&&R.push({_id:uuid(),_component:"@budibase/standard-components/button",_instanceName:uuid(),text:"Back",type:"secondary",size:"M",onClick:[{parameters:{type:"prev",componentId:O},"##eventHandlerType":"Change Form Step"}]}),y!==m-1&&R.push({_id:uuid(),_component:"@budibase/standard-components/button",_instanceName:uuid(),text:"Next",type:"cta",size:"M",onClick:[{"##eventHandlerType":"Validate Form",parameters:{componentId:O}},{parameters:{type:"next",componentId:O},"##eventHandlerType":"Change Form Step"}]}),w!=="View"&&y===m-1&&R.push({_id:uuid(),_component:"@budibase/standard-components/button",_instanceName:uuid(),text:"Save",type:"cta",size:"M",onClick:[{"##eventHandlerType":"Validate Form",parameters:{componentId:O}},{"##eventHandlerType":"Save Row",parameters:{tableId:M,providerId:O}},...w!=="Create"?[]:[{"##eventHandlerType":"Clear Form",parameters:{componentId:O}}]]}),{buttons:R,title:k}};function parseFilter(v){if(!(v!=null&&v.groups))return v;const p=lodashExports.cloneDeep(v);return p.groups&&(p.groups=p.groups.map(m=>{var y;return m.filters?(m.filters=m.filters.filter(w=>w.field&&w.operator),(y=m.filters)!=null&&y.length?m:null):m}).filter(m=>!!m)),p}const isBetterSample=(v,p)=>{if(p==null&&v!=null)return!0;if(p!=null&&v==null)return!1;const m=typeof p,y=typeof v;return m!==y?!1:y==="string"&&v.length>p.length||y==="object"&&Object.keys(v).length>Object.keys(p).length},generateGoldenSample=v=>{let p={};return v==null||v.slice(0,100).forEach(m=>{Object.keys(m).forEach(y=>{isBetterSample(m[y],p[y])&&(p[y]=m[y])})}),p},getColumnIcon=v=>{if(v.schema.icon&&!v.schema.icon.startsWith("ri-"))return v.schema.icon;if(v.calculationType)return"Calculator";if(v.schema.autocolumn)return"Shapes";if(isDeprecatedSingleUserColumn(v.schema))return"User";const{type:p,subtype:m}=v.schema;return(typeof TypeIconMap[p]=="object"&&m?TypeIconMap[p][m]:TypeIconMap[p])||"Text"},memo=v=>{const p=writable(v);let m=JSON.stringify(v);const y=w=>{const S=JSON.stringify(w);S!==m&&(p.set(w),m=S)};return{subscribe:p.subscribe,set:y,update:w=>{let S=JSON.parse(m);const k=w(S);y(k)}}},derivedMemo=(v,p)=>{const m=derived(v,p),y=memo(get_store_value(m));return m.subscribe(y.set),y},PACKET_TYPES=Object.create(null);PACKET_TYPES.open="0",PACKET_TYPES.close="1",PACKET_TYPES.ping="2",PACKET_TYPES.pong="3",PACKET_TYPES.message="4",PACKET_TYPES.upgrade="5",PACKET_TYPES.noop="6";const PACKET_TYPES_REVERSE=Object.create(null);Object.keys(PACKET_TYPES).forEach(v=>{PACKET_TYPES_REVERSE[PACKET_TYPES[v]]=v});const ERROR_PACKET={type:"error",data:"parser error"},withNativeBlob$1=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",withNativeArrayBuffer$2=typeof ArrayBuffer=="function",isView$1=v=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(v):v&&v.buffer instanceof ArrayBuffer,encodePacket=({type:v,data:p},m,y)=>withNativeBlob$1&&p instanceof Blob?m?y(p):encodeBlobAsBase64(p,y):withNativeArrayBuffer$2&&(p instanceof ArrayBuffer||isView$1(p))?m?y(p):encodeBlobAsBase64(new Blob([p]),y):y(PACKET_TYPES[v]+(p||"")),encodeBlobAsBase64=(v,p)=>{const m=new FileReader;return m.onload=function(){const y=m.result.split(",")[1];p("b"+(y||""))},m.readAsDataURL(v)};function toArray(v){return v instanceof Uint8Array?v:v instanceof ArrayBuffer?new Uint8Array(v):new Uint8Array(v.buffer,v.byteOffset,v.byteLength)}let TEXT_ENCODER;function encodePacketToBinary(v,p){if(withNativeBlob$1&&v.data instanceof Blob)return v.data.arrayBuffer().then(toArray).then(p);if(withNativeArrayBuffer$2&&(v.data instanceof ArrayBuffer||isView$1(v.data)))return p(toArray(v.data));encodePacket(v,!1,m=>{TEXT_ENCODER||(TEXT_ENCODER=new TextEncoder),p(TEXT_ENCODER.encode(m))})}const chars$4="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",lookup$6=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let v=0;v<chars$4.length;v++)lookup$6[chars$4.charCodeAt(v)]=v;const decode$4=v=>{let p=v.length*.75,m=v.length,y,w=0,S,k,M,O;v[v.length-1]==="="&&(p--,v[v.length-2]==="="&&p--);const R=new ArrayBuffer(p),D=new Uint8Array(R);for(y=0;y<m;y+=4)S=lookup$6[v.charCodeAt(y)],k=lookup$6[v.charCodeAt(y+1)],M=lookup$6[v.charCodeAt(y+2)],O=lookup$6[v.charCodeAt(y+3)],D[w++]=S<<2|k>>4,D[w++]=(k&15)<<4|M>>2,D[w++]=(M&3)<<6|O&63;return R},withNativeArrayBuffer$1=typeof ArrayBuffer=="function",decodePacket=(v,p)=>{if(typeof v!="string")return{type:"message",data:mapBinary(v,p)};const m=v.charAt(0);return m==="b"?{type:"message",data:decodeBase64Packet(v.substring(1),p)}:PACKET_TYPES_REVERSE[m]?v.length>1?{type:PACKET_TYPES_REVERSE[m],data:v.substring(1)}:{type:PACKET_TYPES_REVERSE[m]}:ERROR_PACKET},decodeBase64Packet=(v,p)=>{if(withNativeArrayBuffer$1){const m=decode$4(v);return mapBinary(m,p)}else return{base64:!0,data:v}},mapBinary=(v,p)=>{switch(p){case"blob":return v instanceof Blob?v:new Blob([v]);case"arraybuffer":default:return v instanceof ArrayBuffer?v:v.buffer}},SEPARATOR=String.fromCharCode(30),encodePayload=(v,p)=>{const m=v.length,y=new Array(m);let w=0;v.forEach((S,k)=>{encodePacket(S,!1,M=>{y[k]=M,++w===m&&p(y.join(SEPARATOR))})})},decodePayload=(v,p)=>{const m=v.split(SEPARATOR),y=[];for(let w=0;w<m.length;w++){const S=decodePacket(m[w],p);if(y.push(S),S.type==="error")break}return y};function createPacketEncoderStream(){return new TransformStream({transform(v,p){encodePacketToBinary(v,m=>{const y=m.length;let w;if(y<126)w=new Uint8Array(1),new DataView(w.buffer).setUint8(0,y);else if(y<65536){w=new Uint8Array(3);const S=new DataView(w.buffer);S.setUint8(0,126),S.setUint16(1,y)}else{w=new Uint8Array(9);const S=new DataView(w.buffer);S.setUint8(0,127),S.setBigUint64(1,BigInt(y))}v.data&&typeof v.data!="string"&&(w[0]|=128),p.enqueue(w),p.enqueue(m)})}})}let TEXT_DECODER;function totalLength(v){return v.reduce((p,m)=>p+m.length,0)}function concatChunks(v,p){if(v[0].length===p)return v.shift();const m=new Uint8Array(p);let y=0;for(let w=0;w<p;w++)m[w]=v[0][y++],y===v[0].length&&(v.shift(),y=0);return v.length&&y<v[0].length&&(v[0]=v[0].slice(y)),m}function createPacketDecoderStream(v,p){TEXT_DECODER||(TEXT_DECODER=new TextDecoder);const m=[];let y=0,w=-1,S=!1;return new TransformStream({transform(k,M){for(m.push(k);;){if(y===0){if(totalLength(m)<1)break;const O=concatChunks(m,1);S=(O[0]&128)===128,w=O[0]&127,w<126?y=3:w===126?y=1:y=2}else if(y===1){if(totalLength(m)<2)break;const O=concatChunks(m,2);w=new DataView(O.buffer,O.byteOffset,O.length).getUint16(0),y=3}else if(y===2){if(totalLength(m)<8)break;const O=concatChunks(m,8),R=new DataView(O.buffer,O.byteOffset,O.length),D=R.getUint32(0);if(D>Math.pow(2,53-32)-1){M.enqueue(ERROR_PACKET);break}w=D*Math.pow(2,32)+R.getUint32(4),y=3}else{if(totalLength(m)<w)break;const O=concatChunks(m,w);M.enqueue(decodePacket(S?O:TEXT_DECODER.decode(O),p)),y=0}if(w===0||w>v){M.enqueue(ERROR_PACKET);break}}}})}const protocol$1=4;function Emitter(v){if(v)return mixin(v)}function mixin(v){for(var p in Emitter.prototype)v[p]=Emitter.prototype[p];return v}Emitter.prototype.on=Emitter.prototype.addEventListener=function(v,p){return this._callbacks=this._callbacks||{},(this._callbacks["$"+v]=this._callbacks["$"+v]||[]).push(p),this},Emitter.prototype.once=function(v,p){function m(){this.off(v,m),p.apply(this,arguments)}return m.fn=p,this.on(v,m),this},Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(v,p){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var m=this._callbacks["$"+v];if(!m)return this;if(arguments.length==1)return delete this._callbacks["$"+v],this;for(var y,w=0;w<m.length;w++)if(y=m[w],y===p||y.fn===p){m.splice(w,1);break}return m.length===0&&delete this._callbacks["$"+v],this},Emitter.prototype.emit=function(v){this._callbacks=this._callbacks||{};for(var p=new Array(arguments.length-1),m=this._callbacks["$"+v],y=1;y<arguments.length;y++)p[y-1]=arguments[y];if(m){m=m.slice(0);for(var y=0,w=m.length;y<w;++y)m[y].apply(this,p)}return this},Emitter.prototype.emitReserved=Emitter.prototype.emit,Emitter.prototype.listeners=function(v){return this._callbacks=this._callbacks||{},this._callbacks["$"+v]||[]},Emitter.prototype.hasListeners=function(v){return!!this.listeners(v).length};const globalThisShim=(()=>typeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function pick(v,...p){return p.reduce((m,y)=>(v.hasOwnProperty(y)&&(m[y]=v[y]),m),{})}const NATIVE_SET_TIMEOUT=globalThisShim.setTimeout,NATIVE_CLEAR_TIMEOUT=globalThisShim.clearTimeout;function installTimerFunctions(v,p){p.useNativeTimers?(v.setTimeoutFn=NATIVE_SET_TIMEOUT.bind(globalThisShim),v.clearTimeoutFn=NATIVE_CLEAR_TIMEOUT.bind(globalThisShim)):(v.setTimeoutFn=globalThisShim.setTimeout.bind(globalThisShim),v.clearTimeoutFn=globalThisShim.clearTimeout.bind(globalThisShim))}const BASE64_OVERHEAD=1.33;function byteLength(v){return typeof v=="string"?utf8Length(v):Math.ceil((v.byteLength||v.size)*BASE64_OVERHEAD)}function utf8Length(v){let p=0,m=0;for(let y=0,w=v.length;y<w;y++)p=v.charCodeAt(y),p<128?m+=1:p<2048?m+=2:p<55296||p>=57344?m+=3:(y++,m+=4);return m}function encode$4(v){let p="";for(let m in v)v.hasOwnProperty(m)&&(p.length&&(p+="&"),p+=encodeURIComponent(m)+"="+encodeURIComponent(v[m]));return p}function decode$3(v){let p={},m=v.split("&");for(let y=0,w=m.length;y<w;y++){let S=m[y].split("=");p[decodeURIComponent(S[0])]=decodeURIComponent(S[1])}return p}class TransportError extends Error{constructor(p,m,y){super(p),this.description=m,this.context=y,this.type="TransportError"}}class Transport extends Emitter{constructor(p){super(),this.writable=!1,installTimerFunctions(this,p),this.opts=p,this.query=p.query,this.socket=p.socket}onError(p,m,y){return super.emitReserved("error",new TransportError(p,m,y)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(p){this.readyState==="open"&&this.write(p)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(p){const m=decodePacket(p,this.socket.binaryType);this.onPacket(m)}onPacket(p){super.emitReserved("packet",p)}onClose(p){this.readyState="closed",super.emitReserved("close",p)}pause(p){}createUri(p,m={}){return p+"://"+this._hostname()+this._port()+this.opts.path+this._query(m)}_hostname(){const p=this.opts.hostname;return p.indexOf(":")===-1?p:"["+p+"]"}_port(){return this.opts.port&&(this.opts.secure&&+(this.opts.port!==443)||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(p){const m=encode$4(p);return m.length?"?"+m:""}}const alphabet$3="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),length=64,map={};let seed$1=0,i$4=0,prev;function encode$3(v){let p="";do p=alphabet$3[v%length]+p,v=Math.floor(v/length);while(v>0);return p}function yeast(){const v=encode$3(+new Date);return v!==prev?(seed$1=0,prev=v):v+"."+encode$3(seed$1++)}for(;i$4<length;i$4++)map[alphabet$3[i$4]]=i$4;let value$1=!1;try{value$1=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch(v){}const hasCORS=value$1;function XHR(v){const p=v.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!p||hasCORS))return new XMLHttpRequest}catch{}if(!p)try{return new globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}function createCookieJar(){}function empty(){}const hasXHR2=function(){return new XHR({xdomain:!1}).responseType!=null}();class Polling extends Transport{constructor(p){if(super(p),this.polling=!1,typeof location<"u"){const y=location.protocol==="https:";let w=location.port;w||(w=y?"443":"80"),this.xd=typeof location<"u"&&p.hostname!==location.hostname||w!==p.port}const m=p&&p.forceBase64;this.supportsBinary=hasXHR2&&!m,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(p){this.readyState="pausing";const m=()=>{this.readyState="paused",p()};if(this.polling||!this.writable){let y=0;this.polling&&(y++,this.once("pollComplete",function(){--y||m()})),this.writable||(y++,this.once("drain",function(){--y||m()}))}else m()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(p){const m=y=>{if(this.readyState==="opening"&&y.type==="open"&&this.onOpen(),y.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(y)};decodePayload(p,this.socket.binaryType).forEach(m),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const p=()=>{this.write([{type:"close"}])};this.readyState==="open"?p():this.once("open",p)}write(p){this.writable=!1,encodePayload(p,m=>{this.doWrite(m,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const p=this.opts.secure?"https":"http",m=this.query||{};return this.opts.timestampRequests!==!1&&(m[this.opts.timestampParam]=yeast()),!this.supportsBinary&&!m.sid&&(m.b64=1),this.createUri(p,m)}request(p={}){return Object.assign(p,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Request(this.uri(),p)}doWrite(p,m){const y=this.request({method:"POST",data:p});y.on("success",m),y.on("error",(w,S)=>{this.onError("xhr post error",w,S)})}doPoll(){const p=this.request();p.on("data",this.onData.bind(this)),p.on("error",(m,y)=>{this.onError("xhr poll error",m,y)}),this.pollXhr=p}}class Request extends Emitter{constructor(p,m){super(),installTimerFunctions(this,m),this.opts=m,this.method=m.method||"GET",this.uri=p,this.data=m.data!==void 0?m.data:null,this.create()}create(){var p;const m=pick(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");m.xdomain=!!this.opts.xd;const y=this.xhr=new XHR(m);try{y.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){y.setDisableHeaderCheck&&y.setDisableHeaderCheck(!0);for(let w in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(w)&&y.setRequestHeader(w,this.opts.extraHeaders[w])}}catch{}if(this.method==="POST")try{y.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{y.setRequestHeader("Accept","*/*")}catch{}(p=this.opts.cookieJar)===null||p===void 0||p.addCookies(y),"withCredentials"in y&&(y.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(y.timeout=this.opts.requestTimeout),y.onreadystatechange=()=>{var w;y.readyState===3&&((w=this.opts.cookieJar)===null||w===void 0||w.parseCookies(y)),y.readyState===4&&(y.status===200||y.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof y.status=="number"?y.status:0)},0))},y.send(this.data)}catch(w){this.setTimeoutFn(()=>{this.onError(w)},0);return}typeof document<"u"&&(this.index=Request.requestsCount++,Request.requests[this.index]=this)}onError(p){this.emitReserved("error",p,this.xhr),this.cleanup(!0)}cleanup(p){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=empty,p)try{this.xhr.abort()}catch{}typeof document<"u"&&delete Request.requests[this.index],this.xhr=null}}onLoad(){const p=this.xhr.responseText;p!==null&&(this.emitReserved("data",p),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(Request.requestsCount=0,Request.requests={},typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",unloadHandler);else if(typeof addEventListener=="function"){const v="onpagehide"in globalThisShim?"pagehide":"unload";addEventListener(v,unloadHandler,!1)}}function unloadHandler(){for(let v in Request.requests)Request.requests.hasOwnProperty(v)&&Request.requests[v].abort()}const nextTick=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?p=>Promise.resolve().then(p):(p,m)=>m(p,0))(),WebSocket=globalThisShim.WebSocket||globalThisShim.MozWebSocket,usingBrowserWebSocket=!0,defaultBinaryType="arraybuffer",isReactNative=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class WS extends Transport{constructor(p){super(p),this.supportsBinary=!p.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const p=this.uri(),m=this.opts.protocols,y=isReactNative?{}:pick(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(y.headers=this.opts.extraHeaders);try{this.ws=usingBrowserWebSocket&&!isReactNative?m?new WebSocket(p,m):new WebSocket(p):new WebSocket(p,m,y)}catch(w){return this.emitReserved("error",w)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=p=>this.onClose({description:"websocket connection closed",context:p}),this.ws.onmessage=p=>this.onData(p.data),this.ws.onerror=p=>this.onError("websocket error",p)}write(p){this.writable=!1;for(let m=0;m<p.length;m++){const y=p[m],w=m===p.length-1;encodePacket(y,this.supportsBinary,S=>{const k={};try{usingBrowserWebSocket&&this.ws.send(S)}catch{}w&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const p=this.opts.secure?"wss":"ws",m=this.query||{};return this.opts.timestampRequests&&(m[this.opts.timestampParam]=yeast()),this.supportsBinary||(m.b64=1),this.createUri(p,m)}check(){return!!WebSocket}}class WT extends Transport{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(p=>{this.onError("webtransport error",p)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(p=>{const m=createPacketDecoderStream(Number.MAX_SAFE_INTEGER,this.socket.binaryType),y=p.readable.pipeThrough(m).getReader(),w=createPacketEncoderStream();w.readable.pipeTo(p.writable),this.writer=w.writable.getWriter();const S=()=>{y.read().then(({done:M,value:O})=>{M||(this.onPacket(O),S())}).catch(M=>{})};S();const k={type:"open"};this.query.sid&&(k.data=`{"sid":"${this.query.sid}"}`),this.writer.write(k).then(()=>this.onOpen())})}))}write(p){this.writable=!1;for(let m=0;m<p.length;m++){const y=p[m],w=m===p.length-1;this.writer.write(y).then(()=>{w&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var p;(p=this.transport)===null||p===void 0||p.close()}}const transports={websocket:WS,webtransport:WT,polling:Polling},re=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,parts=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function parse$7(v){if(v.length>2e3)throw"URI too long";const p=v,m=v.indexOf("["),y=v.indexOf("]");m!=-1&&y!=-1&&(v=v.substring(0,m)+v.substring(m,y).replace(/:/g,";")+v.substring(y,v.length));let w=re.exec(v||""),S={},k=14;for(;k--;)S[parts[k]]=w[k]||"";return m!=-1&&y!=-1&&(S.source=p,S.host=S.host.substring(1,S.host.length-1).replace(/;/g,":"),S.authority=S.authority.replace("[","").replace("]","").replace(/;/g,":"),S.ipv6uri=!0),S.pathNames=pathNames(S,S.path),S.queryKey=queryKey(S,S.query),S}function pathNames(v,p){const m=/\/{2,9}/g,y=p.replace(m,"/").split("/");return(p.slice(0,1)=="/"||p.length===0)&&y.splice(0,1),p.slice(-1)=="/"&&y.splice(y.length-1,1),y}function queryKey(v,p){const m={};return p.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(y,w,S){w&&(m[w]=S)}),m}let Socket$1=class Pc extends Emitter{constructor(p,m={}){super(),this.binaryType=defaultBinaryType,this.writeBuffer=[],p&&typeof p=="object"&&(m=p,p=null),p?(p=parse$7(p),m.hostname=p.host,m.secure=p.protocol==="https"||p.protocol==="wss",m.port=p.port,p.query&&(m.query=p.query)):m.host&&(m.hostname=parse$7(m.host).host),installTimerFunctions(this,m),this.secure=m.secure!=null?m.secure:typeof location<"u"&&location.protocol==="https:",m.hostname&&!m.port&&(m.port=this.secure?"443":"80"),this.hostname=m.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=m.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=m.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},m),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=decode$3(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(p){const m=Object.assign({},this.opts.query);m.EIO=protocol$1,m.transport=p,this.id&&(m.sid=this.id);const y=Object.assign({},this.opts,{query:m,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[p]);return new transports[p](y)}open(){let p;if(this.opts.rememberUpgrade&&Pc.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)p="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else p=this.transports[0];this.readyState="opening";try{p=this.createTransport(p)}catch{this.transports.shift(),this.open();return}p.open(),this.setTransport(p)}setTransport(p){this.transport&&this.transport.removeAllListeners(),this.transport=p,p.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",m=>this.onClose("transport close",m))}probe(p){let m=this.createTransport(p),y=!1;Pc.priorWebsocketSuccess=!1;const w=()=>{y||(m.send([{type:"ping",data:"probe"}]),m.once("packet",H=>{if(!y)if(H.type==="pong"&&H.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",m),!m)return;Pc.priorWebsocketSuccess=m.name==="websocket",this.transport.pause(()=>{y||this.readyState!=="closed"&&(D(),this.setTransport(m),m.send([{type:"upgrade"}]),this.emitReserved("upgrade",m),m=null,this.upgrading=!1,this.flush())})}else{const N=new Error("probe error");N.transport=m.name,this.emitReserved("upgradeError",N)}}))};function S(){y||(y=!0,D(),m.close(),m=null)}const k=H=>{const N=new Error("probe error: "+H);N.transport=m.name,S(),this.emitReserved("upgradeError",N)};function M(){k("transport closed")}function O(){k("socket closed")}function R(H){m&&H.name!==m.name&&S()}const D=()=>{m.removeListener("open",w),m.removeListener("error",k),m.removeListener("close",M),this.off("close",O),this.off("upgrading",R)};m.once("open",w),m.once("error",k),m.once("close",M),this.once("close",O),this.once("upgrading",R),this.upgrades.indexOf("webtransport")!==-1&&p!=="webtransport"?this.setTimeoutFn(()=>{y||m.open()},200):m.open()}onOpen(){if(this.readyState="open",Pc.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){let p=0;const m=this.upgrades.length;for(;p<m;p++)this.probe(this.upgrades[p])}}onPacket(p){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",p),this.emitReserved("heartbeat"),this.resetPingTimeout(),p.type){case"open":this.onHandshake(JSON.parse(p.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const m=new Error("server error");m.code=p.data,this.onError(m);break;case"message":this.emitReserved("data",p.data),this.emitReserved("message",p.data);break}}onHandshake(p){this.emitReserved("handshake",p),this.id=p.sid,this.transport.query.sid=p.sid,this.upgrades=this.filterUpgrades(p.upgrades),this.pingInterval=p.pingInterval,this.pingTimeout=p.pingTimeout,this.maxPayload=p.maxPayload,this.onOpen(),this.readyState!=="closed"&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn(()=>{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const p=this.getWritablePackets();this.transport.send(p),this.prevBufferLen=p.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let m=1;for(let y=0;y<this.writeBuffer.length;y++){const w=this.writeBuffer[y].data;if(w&&(m+=byteLength(w)),y>0&&m>this.maxPayload)return this.writeBuffer.slice(0,y);m+=2}return this.writeBuffer}write(p,m,y){return this.sendPacket("message",p,m,y),this}send(p,m,y){return this.sendPacket("message",p,m,y),this}sendPacket(p,m,y,w){if(typeof m=="function"&&(w=m,m=void 0),typeof y=="function"&&(w=y,y=null),this.readyState==="closing"||this.readyState==="closed")return;y=y||{},y.compress=y.compress!==!1;const S={type:p,data:m,options:y};this.emitReserved("packetCreate",S),this.writeBuffer.push(S),w&&this.once("flush",w),this.flush()}close(){const p=()=>{this.onClose("forced close"),this.transport.close()},m=()=>{this.off("upgrade",m),this.off("upgradeError",m),p()},y=()=>{this.once("upgrade",m),this.once("upgradeError",m)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?y():p()}):this.upgrading?y():p()),this}onError(p){Pc.priorWebsocketSuccess=!1,this.emitReserved("error",p),this.onClose("transport error",p)}onClose(p,m){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",p,m),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(p){const m=[];let y=0;const w=p.length;for(;y<w;y++)~this.transports.indexOf(p[y])&&m.push(p[y]);return m}};Socket$1.protocol=protocol$1;function url(v,p="",m){let y=v;m=m||typeof location<"u"&&location,v==null&&(v=m.protocol+"//"+m.host),typeof v=="string"&&(v.charAt(0)==="/"&&(v.charAt(1)==="/"?v=m.protocol+v:v=m.host+v),/^(https?|wss?):\/\//.test(v)||(typeof m<"u"?v=m.protocol+"//"+v:v="https://"+v),y=parse$7(v)),y.port||(/^(http|ws)$/.test(y.protocol)?y.port="80":/^(http|ws)s$/.test(y.protocol)&&(y.port="443")),y.path=y.path||"/";const S=y.host.indexOf(":")!==-1?"["+y.host+"]":y.host;return y.id=y.protocol+"://"+S+":"+y.port+p,y.href=y.protocol+"://"+S+(m&&m.port===y.port?"":":"+y.port),y}const withNativeArrayBuffer=typeof ArrayBuffer=="function",isView=v=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(v):v.buffer instanceof ArrayBuffer,toString=Object.prototype.toString,withNativeBlob=typeof Blob=="function"||typeof Blob<"u"&&toString.call(Blob)==="[object BlobConstructor]",withNativeFile=typeof File=="function"||typeof File<"u"&&toString.call(File)==="[object FileConstructor]";function isBinary(v){return withNativeArrayBuffer&&(v instanceof ArrayBuffer||isView(v))||withNativeBlob&&v instanceof Blob||withNativeFile&&v instanceof File}function hasBinary(v,p){if(!v||typeof v!="object")return!1;if(Array.isArray(v)){for(let m=0,y=v.length;m<y;m++)if(hasBinary(v[m]))return!0;return!1}if(isBinary(v))return!0;if(v.toJSON&&typeof v.toJSON=="function"&&arguments.length===1)return hasBinary(v.toJSON(),!0);for(const m in v)if(Object.prototype.hasOwnProperty.call(v,m)&&hasBinary(v[m]))return!0;return!1}function deconstructPacket(v){const p=[],m=v.data,y=v;return y.data=_deconstructPacket(m,p),y.attachments=p.length,{packet:y,buffers:p}}function _deconstructPacket(v,p){if(!v)return v;if(isBinary(v)){const m={_placeholder:!0,num:p.length};return p.push(v),m}else if(Array.isArray(v)){const m=new Array(v.length);for(let y=0;y<v.length;y++)m[y]=_deconstructPacket(v[y],p);return m}else if(typeof v=="object"&&!(v instanceof Date)){const m={};for(const y in v)Object.prototype.hasOwnProperty.call(v,y)&&(m[y]=_deconstructPacket(v[y],p));return m}return v}function reconstructPacket(v,p){return v.data=_reconstructPacket(v.data,p),delete v.attachments,v}function _reconstructPacket(v,p){if(!v)return v;if(v&&v._placeholder===!0){if(typeof v.num=="number"&&v.num>=0&&v.num<p.length)return p[v.num];throw new Error("illegal attachments")}else if(Array.isArray(v))for(let m=0;m<v.length;m++)v[m]=_reconstructPacket(v[m],p);else if(typeof v=="object")for(const m in v)Object.prototype.hasOwnProperty.call(v,m)&&(v[m]=_reconstructPacket(v[m],p));return v}const RESERVED_EVENTS$1=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],protocol=5;var PacketType;(function(v){v[v.CONNECT=0]="CONNECT",v[v.DISCONNECT=1]="DISCONNECT",v[v.EVENT=2]="EVENT",v[v.ACK=3]="ACK",v[v.CONNECT_ERROR=4]="CONNECT_ERROR",v[v.BINARY_EVENT=5]="BINARY_EVENT",v[v.BINARY_ACK=6]="BINARY_ACK"})(PacketType||(PacketType={}));class Encoder{constructor(p){this.replacer=p}encode(p){return(p.type===PacketType.EVENT||p.type===PacketType.ACK)&&hasBinary(p)?this.encodeAsBinary({type:p.type===PacketType.EVENT?PacketType.BINARY_EVENT:PacketType.BINARY_ACK,nsp:p.nsp,data:p.data,id:p.id}):[this.encodeAsString(p)]}encodeAsString(p){let m=""+p.type;return(p.type===PacketType.BINARY_EVENT||p.type===PacketType.BINARY_ACK)&&(m+=p.attachments+"-"),p.nsp&&p.nsp!=="/"&&(m+=p.nsp+","),p.id!=null&&(m+=p.id),p.data!=null&&(m+=JSON.stringify(p.data,this.replacer)),m}encodeAsBinary(p){const m=deconstructPacket(p),y=this.encodeAsString(m.packet),w=m.buffers;return w.unshift(y),w}}function isObject$1(v){return Object.prototype.toString.call(v)==="[object Object]"}class Decoder extends Emitter{constructor(p){super(),this.reviver=p}add(p){let m;if(typeof p=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");m=this.decodeString(p);const y=m.type===PacketType.BINARY_EVENT;y||m.type===PacketType.BINARY_ACK?(m.type=y?PacketType.EVENT:PacketType.ACK,this.reconstructor=new BinaryReconstructor(m),m.attachments===0&&super.emitReserved("decoded",m)):super.emitReserved("decoded",m)}else if(isBinary(p)||p.base64)if(this.reconstructor)m=this.reconstructor.takeBinaryData(p),m&&(this.reconstructor=null,super.emitReserved("decoded",m));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+p)}decodeString(p){let m=0;const y={type:Number(p.charAt(0))};if(PacketType[y.type]===void 0)throw new Error("unknown packet type "+y.type);if(y.type===PacketType.BINARY_EVENT||y.type===PacketType.BINARY_ACK){const S=m+1;for(;p.charAt(++m)!=="-"&&m!=p.length;);const k=p.substring(S,m);if(k!=Number(k)||p.charAt(m)!=="-")throw new Error("Illegal attachments");y.attachments=Number(k)}if(p.charAt(m+1)==="/"){const S=m+1;for(;++m&&!(p.charAt(m)===","||m===p.length););y.nsp=p.substring(S,m)}else y.nsp="/";const w=p.charAt(m+1);if(w!==""&&Number(w)==w){const S=m+1;for(;++m;){const k=p.charAt(m);if(k==null||Number(k)!=k){--m;break}if(m===p.length)break}y.id=Number(p.substring(S,m+1))}if(p.charAt(++m)){const S=this.tryParse(p.substr(m));if(Decoder.isPayloadValid(y.type,S))y.data=S;else throw new Error("invalid payload")}return y}tryParse(p){try{return JSON.parse(p,this.reviver)}catch{return!1}}static isPayloadValid(p,m){switch(p){case PacketType.CONNECT:return isObject$1(m);case PacketType.DISCONNECT:return m===void 0;case PacketType.CONNECT_ERROR:return typeof m=="string"||isObject$1(m);case PacketType.EVENT:case PacketType.BINARY_EVENT:return Array.isArray(m)&&(typeof m[0]=="number"||typeof m[0]=="string"&&RESERVED_EVENTS$1.indexOf(m[0])===-1);case PacketType.ACK:case PacketType.BINARY_ACK:return Array.isArray(m)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class BinaryReconstructor{constructor(p){this.packet=p,this.buffers=[],this.reconPack=p}takeBinaryData(p){if(this.buffers.push(p),this.buffers.length===this.reconPack.attachments){const m=reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),m}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const parser$1=Object.freeze(Object.defineProperty({__proto__:null,Decoder,Encoder,get PacketType(){return PacketType},protocol},Symbol.toStringTag,{value:"Module"}));function on(v,p,m){return v.on(p,m),function(){v.off(p,m)}}const RESERVED_EVENTS=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Socket extends Emitter{constructor(p,m,y){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=p,this.nsp=m,y&&y.auth&&(this.auth=y.auth),this._opts=Object.assign({},y),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const p=this.io;this.subs=[on(p,"open",this.onopen.bind(this)),on(p,"packet",this.onpacket.bind(this)),on(p,"error",this.onerror.bind(this)),on(p,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...p){return p.unshift("message"),this.emit.apply(this,p),this}emit(p,...m){if(RESERVED_EVENTS.hasOwnProperty(p))throw new Error('"'+p.toString()+'" is a reserved event name');if(m.unshift(p),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(m),this;const y={type:PacketType.EVENT,data:m};if(y.options={},y.options.compress=this.flags.compress!==!1,typeof m[m.length-1]=="function"){const k=this.ids++,M=m.pop();this._registerAckCallback(k,M),y.id=k}const w=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!w||!this.connected)||(this.connected?(this.notifyOutgoingListeners(y),this.packet(y)):this.sendBuffer.push(y)),this.flags={},this}_registerAckCallback(p,m){var y;const w=(y=this.flags.timeout)!==null&&y!==void 0?y:this._opts.ackTimeout;if(w===void 0){this.acks[p]=m;return}const S=this.io.setTimeoutFn(()=>{delete this.acks[p];for(let M=0;M<this.sendBuffer.length;M++)this.sendBuffer[M].id===p&&this.sendBuffer.splice(M,1);m.call(this,new Error("operation has timed out"))},w),k=(...M)=>{this.io.clearTimeoutFn(S),m.apply(this,M)};k.withError=!0,this.acks[p]=k}emitWithAck(p,...m){return new Promise((y,w)=>{const S=(k,M)=>k?w(k):y(M);S.withError=!0,m.push(S),this.emit(p,...m)})}_addToQueue(p){let m;typeof p[p.length-1]=="function"&&(m=p.pop());const y={id:this._queueSeq++,tryCount:0,pending:!1,args:p,flags:Object.assign({fromQueue:!0},this.flags)};p.push((w,...S)=>y!==this._queue[0]?void 0:(w!==null?y.tryCount>this._opts.retries&&(this._queue.shift(),m&&m(w)):(this._queue.shift(),m&&m(null,...S)),y.pending=!1,this._drainQueue())),this._queue.push(y),this._drainQueue()}_drainQueue(p=!1){if(!this.connected||this._queue.length===0)return;const m=this._queue[0];m.pending&&!p||(m.pending=!0,m.tryCount++,this.flags=m.flags,this.emit.apply(this,m.args))}packet(p){p.nsp=this.nsp,this.io._packet(p)}onopen(){typeof this.auth=="function"?this.auth(p=>{this._sendConnectPacket(p)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(p){this.packet({type:PacketType.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},p):p})}onerror(p){this.connected||this.emitReserved("connect_error",p)}onclose(p,m){this.connected=!1,delete this.id,this.emitReserved("disconnect",p,m),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(p=>{if(!this.sendBuffer.some(y=>String(y.id)===p)){const y=this.acks[p];delete this.acks[p],y.withError&&y.call(this,new Error("socket has been disconnected"))}})}onpacket(p){if(p.nsp===this.nsp)switch(p.type){case PacketType.CONNECT:p.data&&p.data.sid?this.onconnect(p.data.sid,p.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case PacketType.EVENT:case PacketType.BINARY_EVENT:this.onevent(p);break;case PacketType.ACK:case PacketType.BINARY_ACK:this.onack(p);break;case PacketType.DISCONNECT:this.ondisconnect();break;case PacketType.CONNECT_ERROR:this.destroy();const y=new Error(p.data.message);y.data=p.data.data,this.emitReserved("connect_error",y);break}}onevent(p){const m=p.data||[];p.id!=null&&m.push(this.ack(p.id)),this.connected?this.emitEvent(m):this.receiveBuffer.push(Object.freeze(m))}emitEvent(p){if(this._anyListeners&&this._anyListeners.length){const m=this._anyListeners.slice();for(const y of m)y.apply(this,p)}super.emit.apply(this,p),this._pid&&p.length&&typeof p[p.length-1]=="string"&&(this._lastOffset=p[p.length-1])}ack(p){const m=this;let y=!1;return function(...w){y||(y=!0,m.packet({type:PacketType.ACK,id:p,data:w}))}}onack(p){const m=this.acks[p.id];typeof m=="function"&&(delete this.acks[p.id],m.withError&&p.data.unshift(null),m.apply(this,p.data))}onconnect(p,m){this.id=p,this.recovered=m&&this._pid===m,this._pid=m,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(p=>this.emitEvent(p)),this.receiveBuffer=[],this.sendBuffer.forEach(p=>{this.notifyOutgoingListeners(p),this.packet(p)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(p=>p()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:PacketType.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(p){return this.flags.compress=p,this}get volatile(){return this.flags.volatile=!0,this}timeout(p){return this.flags.timeout=p,this}onAny(p){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(p),this}prependAny(p){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(p),this}offAny(p){if(!this._anyListeners)return this;if(p){const m=this._anyListeners;for(let y=0;y<m.length;y++)if(p===m[y])return m.splice(y,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(p){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(p),this}prependAnyOutgoing(p){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(p),this}offAnyOutgoing(p){if(!this._anyOutgoingListeners)return this;if(p){const m=this._anyOutgoingListeners;for(let y=0;y<m.length;y++)if(p===m[y])return m.splice(y,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(p){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const m=this._anyOutgoingListeners.slice();for(const y of m)y.apply(this,p.data)}}}function Backoff(v){v=v||{},this.ms=v.min||100,this.max=v.max||1e4,this.factor=v.factor||2,this.jitter=v.jitter>0&&v.jitter<=1?v.jitter:0,this.attempts=0}Backoff.prototype.duration=function(){var v=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var p=Math.random(),m=Math.floor(p*this.jitter*v);v=Math.floor(p*10)&1?v+m:v-m}return Math.min(v,this.max)|0},Backoff.prototype.reset=function(){this.attempts=0},Backoff.prototype.setMin=function(v){this.ms=v},Backoff.prototype.setMax=function(v){this.max=v},Backoff.prototype.setJitter=function(v){this.jitter=v};class Manager extends Emitter{constructor(p,m){var y;super(),this.nsps={},this.subs=[],p&&typeof p=="object"&&(m=p,p=void 0),m=m||{},m.path=m.path||"/socket.io",this.opts=m,installTimerFunctions(this,m),this.reconnection(m.reconnection!==!1),this.reconnectionAttempts(m.reconnectionAttempts||1/0),this.reconnectionDelay(m.reconnectionDelay||1e3),this.reconnectionDelayMax(m.reconnectionDelayMax||5e3),this.randomizationFactor((y=m.randomizationFactor)!==null&&y!==void 0?y:.5),this.backoff=new Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(m.timeout==null?2e4:m.timeout),this._readyState="closed",this.uri=p;const w=m.parser||parser$1;this.encoder=new w.Encoder,this.decoder=new w.Decoder,this._autoConnect=m.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(p){return arguments.length?(this._reconnection=!!p,this):this._reconnection}reconnectionAttempts(p){return p===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=p,this)}reconnectionDelay(p){var m;return p===void 0?this._reconnectionDelay:(this._reconnectionDelay=p,(m=this.backoff)===null||m===void 0||m.setMin(p),this)}randomizationFactor(p){var m;return p===void 0?this._randomizationFactor:(this._randomizationFactor=p,(m=this.backoff)===null||m===void 0||m.setJitter(p),this)}reconnectionDelayMax(p){var m;return p===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=p,(m=this.backoff)===null||m===void 0||m.setMax(p),this)}timeout(p){return arguments.length?(this._timeout=p,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(p){if(~this._readyState.indexOf("open"))return this;this.engine=new Socket$1(this.uri,this.opts);const m=this.engine,y=this;this._readyState="opening",this.skipReconnect=!1;const w=on(m,"open",function(){y.onopen(),p&&p()}),S=M=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",M),p?p(M):this.maybeReconnectOnOpen()},k=on(m,"error",S);if(this._timeout!==!1){const M=this._timeout,O=this.setTimeoutFn(()=>{w(),S(new Error("timeout")),m.close()},M);this.opts.autoUnref&&O.unref(),this.subs.push(()=>{this.clearTimeoutFn(O)})}return this.subs.push(w),this.subs.push(k),this}connect(p){return this.open(p)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const p=this.engine;this.subs.push(on(p,"ping",this.onping.bind(this)),on(p,"data",this.ondata.bind(this)),on(p,"error",this.onerror.bind(this)),on(p,"close",this.onclose.bind(this)),on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(p){try{this.decoder.add(p)}catch(m){this.onclose("parse error",m)}}ondecoded(p){nextTick(()=>{this.emitReserved("packet",p)},this.setTimeoutFn)}onerror(p){this.emitReserved("error",p)}socket(p,m){let y=this.nsps[p];return y?this._autoConnect&&!y.active&&y.connect():(y=new Socket(this,p,m),this.nsps[p]=y),y}_destroy(p){const m=Object.keys(this.nsps);for(const y of m)if(this.nsps[y].active)return;this._close()}_packet(p){const m=this.encoder.encode(p);for(let y=0;y<m.length;y++)this.engine.write(m[y],p.options)}cleanup(){this.subs.forEach(p=>p()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(p,m){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",p,m),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const p=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const m=this.backoff.duration();this._reconnecting=!0;const y=this.setTimeoutFn(()=>{p.skipReconnect||(this.emitReserved("reconnect_attempt",p.backoff.attempts),!p.skipReconnect&&p.open(w=>{w?(p._reconnecting=!1,p.reconnect(),this.emitReserved("reconnect_error",w)):p.onreconnect()}))},m);this.opts.autoUnref&&y.unref(),this.subs.push(()=>{this.clearTimeoutFn(y)})}}onreconnect(){const p=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",p)}}const cache={};function lookup$5(v,p){typeof v=="object"&&(p=v,v=void 0),p=p||{};const m=url(v,p.path||"/socket.io"),y=m.source,w=m.id,S=m.path,k=cache[w]&&S in cache[w].nsps,M=p.forceNew||p["force new connection"]||p.multiplex===!1||k;let O;return M?O=new Manager(y,p):(cache[w]||(cache[w]=new Manager(y,p)),O=cache[w]),m.query&&!p.query&&(p.query=m.queryKey),O.socket(m.path,p)}Object.assign(lookup$5,{Manager,Socket,io:lookup$5,connect:lookup$5});const DefaultOptions={heartbeat:!0},createWebsocket=(v,p=DefaultOptions)=>{if(!v)throw"A websocket path must be provided";const{heartbeat:m}={...DefaultOptions,...p},y=location.protocol==="https:",w=y?"wss:":"ws:",S=location.hostname,k=location.port||(y?443:80);let M=lookup$5(`${w}//${S}:${k}`,{path:v,reconnectionAttempts:3,reconnectionDelay:5e3,reconnectionDelayMax:5e3,timeout:4e3,transports:["websocket"]}),O;return m&&(O=setInterval(()=>{M.emit(SocketEvent.Heartbeat)},SocketSessionTTL*500)),M.on("disconnect",()=>{clearInterval(O)}),M.onOther=(R,D)=>{M.on(R,H=>{(H==null?void 0:H.apiSessionId)!==APISessionID&&D(H)})},M},extractFileNameRegex=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;async function downloadStream(v){const p=await v.blob(),m=v.headers.get("Content-Disposition"),w=extractFileNameRegex.exec(m)[1].replace(/['"]/g,""),S=new Blob([p]),k=URL.createObjectURL(S),M=document.createElement("a");M.href=k,M.download=w,M.click(),URL.revokeObjectURL(k)}const shouldDisplaySetting=(v,p)=>{let m=p.dependsOn;return m&&!Array.isArray(m)&&(m=[m]),m!=null&&m.length?m.every(y=>{let w=y,S=null,k=!!y.invert;if(typeof y=="object"&&(w=y.setting,S=y.value),!w)return!1;Array.isArray(S)||(S=[S]);const M=deepGet$1(v,w);return S.some(R=>R==null?M!=null&&M!==!1&&M!=="":R===M)!==k}):!0},columnTypeManyTypeOverrides={[FieldType.DATETIME]:FieldType.STRING,[FieldType.BOOLEAN]:FieldType.STRING,[FieldType.SIGNATURE_SINGLE]:FieldType.ATTACHMENTS},columnTypeManyParser={[FieldType.DATETIME]:(v,p)=>{function m(y){const{timeOnly:w,dateOnly:S}=p||{},k=!S,M=parseDate(y,{enableTime:k});return getDateDisplayValue(M,{enableTime:k,timeOnly:w})}return v.map(y=>m(y))},[FieldType.BOOLEAN]:v=>v.map(p=>!!p),[FieldType.BB_REFERENCE_SINGLE]:v=>[...new Map(v.map(p=>[p._id,p])).values()],[FieldType.BB_REFERENCE]:v=>[...new Map(v.map(p=>[p._id,p])).values()],[FieldType.ARRAY]:v=>Array.from(new Set(v))};function enrichSchemaWithRelColumns(v){return Object.keys(v).reduce((m,y)=>{const w=v[y];if(m[y]=w,w.visible!==!1&&isRelationshipField(w)&&w.columns){const S=(w==null?void 0:w.relationshipType)===RelationshipType.ONE_TO_MANY;for(const k of Object.keys(w.columns)){const M=w.columns[k];if(!M.visible)continue;const O=`${w.name}.${k}`;m[O]={...M,type:M.type,name:O,related:{field:y,subField:k},cellRenderType:!S&&columnTypeManyTypeOverrides[M.type]||M.type}}}return m},{})}function getRelatedTableValues(v,p,m){var S,k,M,O;const y=isRelationshipField(m)&&(m==null?void 0:m.relationshipType)===RelationshipType.ONE_TO_MANY;let w="";if(y)w=(k=(S=v[p.related.field])==null?void 0:S[0])==null?void 0:k[p.related.subField];else{const R=columnTypeManyParser[p.type]||(N=>N),D=(O=(M=v[p.related.field])==null?void 0:M.flatMap(N=>N[p.related.subField]))==null?void 0:O.filter(N=>N!=null),H=R(D||[],p);w=H,[FieldType.STRING,FieldType.NUMBER,FieldType.BIGINT,FieldType.BOOLEAN,FieldType.DATETIME,FieldType.LONGFORM,FieldType.BARCODEQR].includes(p.type)&&(w=H==null?void 0:H.join(", "))}return w}function canBeDisplayColumn(v){return!(!canBeDisplayColumn$1(v.type)||v.related)}function canBeSortColumn(v){return v.calculationType?!0:!(!canBeSortColumn$1(v.type)||v.related)}const getSettingsDefinition=v=>{var m;if(!v)return[];let p=[];return(m=v.settings)==null||m.forEach(y=>{var w;y.section?p=p.concat((w=y.settings||[])==null?void 0:w.map(S=>({...S,sectionDependsOn:y.dependsOn}))):p.push(y)}),p};function requiredValidator(v){return v!=null&&v!==""||"This field is required"}function createValidationStore(v,...p){let m=!1;const y=writable(v||""),w=derived(y,()=>m||(m=!0,!1)),S=derived([y,w],([k,M])=>M&&validate(k,p));return[y,S,w]}function validate(v,p){const m=p.find(y=>y(v)!==!0);return m&&m(v)}const NumberFormatter=Intl.NumberFormat(),formatNumber=v=>{const p=typeof v;if(p!=="string"&&p!=="number"||p==="string"&&!v.trim().length)return"";const m=NumberFormatter.format(v);return m==="NaN"?stringifyValue(v):m},stringifyValue=v=>{if(v==null)return"";if(typeof v=="string")return v;if(typeof v.toString=="function")return stringifyValue(v.toString());try{return JSON.stringify(v)}catch{return""}},stringifyField=(v,p)=>{switch(p.type){case FieldType.AUTO:return"";case FieldType.SIGNATURE_SINGLE:return v?"Yes":"No";case FieldType.ATTACHMENT_SINGLE:case FieldType.ATTACHMENTS:return v?(Array.isArray(v)?v:[v]).map(y=>y.name).filter(y=>!!y).join(", "):"";case FieldType.LINK:return v?(Array.isArray(v)?v:[v]).map(y=>y.primaryDisplay).filter(y=>!!y).join(", "):"";case FieldType.JSON:return v?JSON.stringify(v):"";case FieldType.BB_REFERENCE:case FieldType.BB_REFERENCE_SINGLE:{if(p.subtype!==BBReferenceFieldSubType.USERS&&p.subtype!==BBReferenceFieldSubType.USER||!v)return"";const m=Array.isArray(v)?v:[v];return(m==null?void 0:m.map(y=>y.primaryDisplay).join(", "))||""}case FieldType.ARRAY:return(v==null?void 0:v.join(", "))||"";case FieldType.BOOLEAN:return capitalise((v==null?void 0:v.toString())||"false");case FieldType.DATETIME:return getDateDisplayValue(v,{enableTime:!p.dateOnly,timeOnly:p.timeOnly});case FieldType.NUMBER:return formatNumber(v);case FieldType.STRING:case FieldType.LONGFORM:case FieldType.BIGINT:case FieldType.OPTIONS:case FieldType.AI:case FieldType.BARCODEQR:return v||"";case FieldType.FORMULA:default:return stringifyValue(v)}},stringifyRow=(v,p)=>{let m={};return Object.entries(p).forEach(([y,w])=>{m[y]=stringifyField(deepGet(v,y),w)}),m},{buildQuery,limit:queryLimit,runQuery,sort}=QueryUtils;class BaseDataFetch{constructor(p){Fi(this,"API");Fi(this,"features");Fi(this,"options");Fi(this,"store");Fi(this,"derivedStore");if(this.features={supportsSearch:!1,supportsSort:!1,supportsPagination:!1},this.options={datasource:p.datasource,limit:10,filter:null,query:p.query,sortColumn:null,sortOrder:SortOrder.ASCENDING,sortType:null,paginate:!0,clientSideSearching:!0,clientSideSorting:!0,clientSideLimiting:!0},this.store=writable({rows:[],info:null,schema:null,loading:!1,loaded:!1,query:p.query,pageNumber:0,cursor:null,cursors:[],resetKey:Math.random().toString(),error:null}),this.API=p==null?void 0:p.API,this.options={...this.options,...p},!this.API)throw"An API client is required for fetching data";if(this.getData=this.getData.bind(this),this.getPage=this.getPage.bind(this),this.getInitialData=this.getInitialData.bind(this),this.determineFeatureFlags=this.determineFeatureFlags.bind(this),this.refresh=this.refresh.bind(this),this.update=this.update.bind(this),this.hasNextPage=this.hasNextPage.bind(this),this.hasPrevPage=this.hasPrevPage.bind(this),this.nextPage=this.nextPage.bind(this),this.prevPage=this.prevPage.bind(this),this.derivedStore=derived(this.store,m=>({...m,...this.features,hasNextPage:this.hasNextPage(m),hasPrevPage:this.hasPrevPage(m)})),!this.options.datasource){this.store.update(m=>({...m,loaded:!0}));return}}get subscribe(){return this.derivedStore.subscribe}getDefaultSortColumn(p,m){return p!=null&&p.primaryDisplay&&m[p.primaryDisplay]?p.primaryDisplay:Object.keys(m)[0]}async getInitialData(){const{filter:p,paginate:m}=this.options,y=await this.getDefinition(),w=await this.determineFeatureFlags();this.features={supportsSearch:!!(w!=null&&w.supportsSearch),supportsSort:!!(w!=null&&w.supportsSort),supportsPagination:m&&!!(w!=null&&w.supportsPagination)};let S=this.getSchema(y);if(!S)return;if(S=this.enrichSchema(S),this.options.sortColumn&&!S[this.options.sortColumn]&&(this.options.sortColumn=null),this.options.sortColumn||(this.options.sortColumn=this.getDefaultSortColumn(y,S)),!this.options.sortColumn)this.options.sortOrder=SortOrder.ASCENDING,this.options.sortType=null;else{this.options.sortType=SortType.STRING;const O=S==null?void 0:S[this.options.sortColumn];((O==null?void 0:O.type)===FieldType.NUMBER||(O==null?void 0:O.type)===FieldType.BIGINT||"calculationType"in O&&(O!=null&&O.calculationType))&&(this.options.sortType=SortType.NUMBER),this.options.sortOrder?this.options.sortOrder=this.options.sortOrder.toLowerCase():this.options.sortOrder=SortOrder.ASCENDING}let k=this.options.query;k||(k=buildQuery(p??void 0)),this.store.update(O=>({...O,definition:y,schema:S,query:k,loading:!0,cursors:[],cursor:null}));const M=await this.getPage();this.store.update(O=>({...O,loading:!1,loaded:!0,pageNumber:0,rows:M.rows,info:M.info,cursors:m&&M.hasNextPage?[null,M.cursor]:[null],error:M.error,resetKey:Math.random().toString()}))}async getPage(){const{sortColumn:p,sortOrder:m,sortType:y,limit:w,clientSideSearching:S,clientSideSorting:k,clientSideLimiting:M}=this.options,{query:O}=get_store_value(this.store);let{rows:R,info:D,hasNextPage:H,cursor:N,error:W}=await this.getData();return!this.features.supportsSearch&&S&&(R=runQuery(R,O)),!this.features.supportsSort&&k&&y&&(R=sort(R,p,m,y)),!this.features.supportsPagination&&M&&(R=queryLimit(R,w)),{rows:R,info:D,hasNextPage:H,cursor:N,error:W}}getSchema(p){return(p==null?void 0:p.schema)??void 0}enrichSchema(p){let m={};for(const w of Object.keys(p)){const S=p[w];if(S.type===FieldType.JSON){const k=convertJSONSchemaToTableSchema(S,{squashObjects:!0});if(k)for(const M of Object.keys(k))m[`${w}.${M}`]={type:k[M].type,nestedJSON:!0}}}let y={};return Object.entries({...p,...m}).forEach(([w,S])=>{typeof S=="string"?y[w]={type:S,name:w}:y[w]={...S,type:S.type,name:w}}),y}async determineFeatureFlags(){return{supportsSearch:!1,supportsSort:!1,supportsPagination:!1}}async update(p){let m=!1;for(const[y,w]of Object.entries(p||{})){const S=this.options[y]??null;if(JSON.stringify(w??null)!==JSON.stringify(S)){m=!0;break}}m&&(this.options={...this.options,...fp$1.cloneDeep(p)},await this.getInitialData())}async refresh(){if(get_store_value(this.store).loading)return;this.store.update(O=>({...O,loading:!0}));const{rows:p,info:m,error:y,cursor:w}=await this.getPage();let{cursors:S}=get_store_value(this.store);const{pageNumber:k}=get_store_value(this.store);if(!p.length&&k>0)return this.store.update(O=>({...O,loading:!1,cursors:S.slice(0,k)})),await this.prevPage();S[k+1]!=w&&(S=S.slice(0,k+1),S[k+1]=w),this.store.update(O=>({...O,rows:p,info:m,loading:!1,error:y,cursors:S}))}hasNextPage(p){return p.cursors[p.pageNumber+1]!=null}hasPrevPage(p){return p.pageNumber>0}async nextPage(){const p=get_store_value(this.derivedStore);if(p.loading||!this.options.paginate||!p.hasNextPage)return;const m=p.cursors[p.pageNumber+1];this.store.update(O=>({...O,loading:!0,cursor:m,pageNumber:O.pageNumber+1}));const{rows:y,info:w,hasNextPage:S,cursor:k,error:M}=await this.getPage();this.store.update(O=>{let{cursors:R,pageNumber:D}=O;return S&&(R[D+1]=k),{...O,rows:y,info:w,cursors:R,loading:!1,error:M}})}async prevPage(){const p=get_store_value(this.derivedStore);if(p.loading||!this.options.paginate||!p.hasPrevPage)return;const m=p.cursors[p.pageNumber-1];this.store.update(k=>({...k,loading:!0,cursor:m,pageNumber:k.pageNumber-1}));const{rows:y,info:w,error:S}=await this.getPage();this.store.update(k=>({...k,rows:y,info:w,loading:!1,error:S}))}}class TableFetch extends BaseDataFetch{async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!0,supportsPagination:!0}}async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p.tableId))return null;try{return await this.API.fetchTableDefinition(p.tableId)}catch(m){return this.store.update(y=>({...y,error:m})),null}}async getData(){const{datasource:p,limit:m,sortColumn:y,sortOrder:w,sortType:S,paginate:k}=this.options,{tableId:M}=p,{cursor:O,query:R}=get_store_value(this.store);try{const D=await this.API.searchTable(M,{query:R,limit:m,sort:y,sortOrder:w??SortOrder.ASCENDING,sortType:S,paginate:k,bookmark:O});return{rows:(D==null?void 0:D.rows)||[],hasNextPage:(D==null?void 0:D.hasNextPage)||!1,cursor:(D==null?void 0:D.bookmark)||null}}catch(D){return{rows:[],hasNextPage:!1,error:D}}}}class ViewFetch extends BaseDataFetch{async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p.tableId))return null;try{return await this.API.fetchTableDefinition(p.tableId)}catch(m){return this.store.update(y=>({...y,error:m})),null}}getSchema(p){var y,w;const{datasource:m}=this.options;return(w=(y=p==null?void 0:p.views)==null?void 0:y[m==null?void 0:m.name])==null?void 0:w.schema}async getData(){const{datasource:p}=this.options;try{return{rows:await this.API.fetchViewData(p.name,{calculation:p.calculation,field:p.field,groupBy:p.groupBy,tableId:p.tableId})||[]}}catch(m){return console.error(m,{datasource:p}),{rows:[]}}}}class ViewV2Fetch extends BaseDataFetch{async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!0,supportsPagination:!0}}async getDefinition(){const{datasource:p}=this.options;try{const m=await this.API.viewV2.fetchDefinition(p.id);return m==null?void 0:m.data}catch(m){return this.store.update(y=>({...y,error:m})),null}}getDefaultSortColumn(){return null}async getData(){var D;const{datasource:p,limit:m,sortColumn:y,sortOrder:w,sortType:S,paginate:k}=this.options,{cursor:M,query:O,definition:R}=get_store_value(this.store);if((R==null?void 0:R.type)===ViewV2Type.CALCULATION&&!Object.values(R.schema||{}).some(isCalculationField))return{rows:[],hasNextPage:!1,cursor:null,error:null};!y&&((D=R==null?void 0:R.sort)!=null&&D.field)&&(this.options.sortColumn=R.sort.field,this.options.sortOrder=R.sort.order||SortOrder.ASCENDING);try{const H={query:O,paginate:k,limit:m,bookmark:M,sort:y,sortOrder:w,sortType:S};if(k){const N=await this.API.viewV2.fetch(p.id,{...H,paginate:k});return{rows:(N==null?void 0:N.rows)||[],hasNextPage:(N==null?void 0:N.hasNextPage)||!1,cursor:(N==null?void 0:N.bookmark)||null}}else{const N=await this.API.viewV2.fetch(p.id,{...H,paginate:k});return{rows:(N==null?void 0:N.rows)||[],hasNextPage:!1,cursor:null}}}catch(H){return{rows:[],hasNextPage:!1,cursor:null,error:H}}}}class QueryFetch extends BaseDataFetch{async determineFeatureFlags(){var y,w,S,k,M,O;const p=await this.getDefinition();return{supportsPagination:!!((w=(y=p==null?void 0:p.fields)==null?void 0:y.pagination)!=null&&w.type)&&!!((k=(S=p==null?void 0:p.fields)==null?void 0:S.pagination)!=null&&k.location)&&!!((O=(M=p==null?void 0:p.fields)==null?void 0:M.pagination)!=null&&O.pageParam)}}async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p._id))return null;try{const m=await this.API.fetchQueryDefinition(p._id);return m.fields||(m.fields=p.fields),m}catch{return null}}getDefaultSortColumn(){return null}async getData(){var D,H;const{datasource:p,limit:m,paginate:y}=this.options,{supportsPagination:w}=this.features,{cursor:S,definition:k}=get_store_value(this.store),M=(H=(D=k==null?void 0:k.fields)==null?void 0:D.pagination)==null?void 0:H.type,O=cloneDeep$1(p.queryParams||{});for(const N of(p==null?void 0:p.parameters)||[])O[N.name]||(O[N.name]=N.default);const R={parameters:O};if(y&&w){const N=M==="page"?parseInt(S||"1"):S;R.pagination={page:N,limit:m}}try{const N=await this.API.executeQuery(p==null?void 0:p._id,R),{data:W,pagination:J,...ee}=N;let le=null,ce=!1;return y&&w&&(M==="page"?(le=R.pagination.page+1,ce=(W==null?void 0:W.length)===m&&m>0):(le=J==null?void 0:J.cursor,ce=le!=null)),{rows:W||[],info:ee,cursor:le,hasNextPage:ce}}catch{return{rows:[],hasNextPage:!1}}}}class RelationshipFetch extends BaseDataFetch{async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p.tableId))return null;try{return await this.API.fetchTableDefinition(p.tableId)}catch(m){return this.store.update(y=>({...y,error:m})),null}}async getData(){const{datasource:p}=this.options;if(!(p!=null&&p.rowId)||!(p!=null&&p.rowTableId))return{rows:[]};try{return{rows:await this.API.fetchRelationshipData(p.rowTableId,p.rowId,p.fieldName)}}catch{return{rows:[]}}}}class NestedProviderFetch extends BaseDataFetch{async getDefinition(){var m,y;const{datasource:p}=this.options;return{schema:(m=p==null?void 0:p.value)==null?void 0:m.schema,primaryDisplay:(y=p==null?void 0:p.value)==null?void 0:y.primaryDisplay}}async getData(){var m;const{datasource:p}=this.options;return{rows:((m=p==null?void 0:p.value)==null?void 0:m.rows)||[],hasNextPage:!1,cursor:null}}}function isArrayOfStrings(v){return Array.isArray(v)&&!!v[0]&&typeof v[0]!="object"}class FieldFetch extends BaseDataFetch{async getDefinition(){const{datasource:p}=this.options;let m;return p.fieldType==="attachment"?m={url:{type:"string"},name:{type:"string"}}:p.fieldType==="array"&&(m={value:{type:"string"}}),{schema:m}}async getData(){const{datasource:p}=this.options,m=(p==null?void 0:p.value)||[];let y;return isArrayOfStrings(m)?y=m.map(w=>({value:w})):y=m,{rows:y||[],hasNextPage:!1,cursor:null}}}class JSONArrayFetch extends FieldFetch{async getDefinition(){const{datasource:p}=this.options;try{const m=await this.API.fetchTableDefinition(p.tableId);return{schema:getJSONArrayDatasourceSchema(m==null?void 0:m.schema,p)}}catch{return null}}}class UserFetch extends BaseDataFetch{constructor(p){super({...p,datasource:{type:"user",tableId:InternalTable.USER_METADATA}})}async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!1,supportsPagination:!0}}async getDefinition(){return{schema:{}}}async getData(){const{limit:p,paginate:m}=this.options,{cursor:y,query:w}=get_store_value(this.store),{appId:S,paginated:k,...M}=w,O=isSupportedUserSearch(M)?M:{};try{const R={bookmark:y??void 0,query:O??void 0,appId:S,paginate:k||m,limit:p},D=await this.API.searchUsers(R);return{rows:(D==null?void 0:D.data)||[],hasNextPage:(D==null?void 0:D.hasNextPage)||!1,cursor:(D==null?void 0:D.nextPage)||null}}catch(R){return{rows:[],hasNextPage:!1,error:R}}}}class GroupUserFetch extends BaseDataFetch{constructor(p){super({...p,datasource:{type:"groupUser",tableId:InternalTable.USER_METADATA}})}async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!1,supportsPagination:!0}}async getDefinition(){return{schema:{}}}async getData(){const{query:p,cursor:m}=get_store_value(this.store);try{const y=await this.API.getGroupUsers({id:p.groupId,emailSearch:p.emailSearch,bookmark:m??void 0});return{rows:(y==null?void 0:y.users)||[],hasNextPage:(y==null?void 0:y.hasNextPage)||!1,cursor:(y==null?void 0:y.bookmark)||null}}catch(y){return{rows:[],hasNextPage:!1,error:y}}}}class CustomFetch extends BaseDataFetch{getType(p){return p==null?"string":typeof p==="object"?Array.isArray(p)?"array":"json":isNaN(p)?"string":"number"}parseCustomData(p){if(!p)return[];if(Array.isArray(p))return p;if(typeof p=="string"){try{const m=JSON.parse(p);return Array.isArray(m)?m:[m]}catch{}return p.includes(`
441
+ `;var HTTPMethod=(v=>(v.POST="POST",v.PATCH="PATCH",v.GET="GET",v.PUT="PUT",v.DELETE="DELETE",v))(HTTPMethod||{});const BannedSearchTypes=[FieldType.LINK,FieldType.ATTACHMENT_SINGLE,FieldType.ATTACHMENTS,FieldType.FORMULA,FieldType.JSON,FieldType.ATTACHMENT_SINGLE,FieldType.SIGNATURE_SINGLE,"jsonarray","queryarray"],Cookies={Auth:"budibase:auth",CurrentApp:"budibase:currentapp",ReturnUrl:"budibase:returnurl",AccountReturnUrl:"budibase:account:returnurl",OnboardingProcessCorrelationKey:BpmCorrelationKey.ONBOARDING};var TableNames=(v=>(v.USERS="ta_users",v))(TableNames||{});const BudibaseRoles={AppUser:"appUser",Developer:"developer",Creator:"creator",Admin:"admin",Owner:"owner"},BudibaseRoleOptionsOld=[{label:"Developer",value:BudibaseRoles.Developer,sortOrder:2}],BudibaseRoleOptions=[{label:"Tenant admin",value:BudibaseRoles.Admin,subtitle:"Has full access to all workspaces in your tenant",sortOrder:1},{label:"Creator",value:BudibaseRoles.Creator,subtitle:"Can create and edit apps they have access to",sortOrder:2},{label:"App user",value:BudibaseRoles.AppUser,subtitle:"Can only use published apps they have access to",sortOrder:3}],ExtendedBudibaseRoleOptions=[{label:"Account holder",value:BudibaseRoles.Owner,sortOrder:0},...BudibaseRoleOptions,...BudibaseRoleOptionsOld],PlanType={FREE:"free",TEAM:"team",PRO:"pro",BUSINESS:"business",PREMIUM:"premium",PREMIUM_PLUS:"premium_plus",ENTERPRISE:"enterprise",ENTERPRISE_BASIC_TRIAL:"enterprise_basic_trial"},ApiVersion="1",Roles={ADMIN:"ADMIN",POWER:"POWER",BASIC:"BASIC",PUBLIC:"PUBLIC",BUILDER:"BUILDER",CREATOR:"CREATOR",GROUP:"GROUP"},EventPublishType={ENV_VAR_UPGRADE_PANEL_OPENED:"environment_variable_upgrade_panel_opened"},TypeIconMap={[FieldType.STRING]:"Text",[FieldType.OPTIONS]:"Dropdown",[FieldType.DATETIME]:"Calendar",[FieldType.BARCODEQR]:"Camera",[FieldType.SIGNATURE_SINGLE]:"AnnotatePen",[FieldType.LONGFORM]:"TextAlignLeft",[FieldType.ARRAY]:"Duplicate",[FieldType.NUMBER]:"123",[FieldType.BOOLEAN]:"Boolean",[FieldType.ATTACHMENTS]:"DocumentFragmentGroup",[FieldType.ATTACHMENT_SINGLE]:"DocumentFragment",[FieldType.LINK]:"DataCorrelated",[FieldType.FORMULA]:"Calculator",[FieldType.AI]:"MagicWand",[FieldType.JSON]:"Brackets",[FieldType.BIGINT]:"TagBold",[FieldType.AUTO]:"Shapes",[FieldType.BB_REFERENCE]:{[BBReferenceFieldSubType.USER]:"UserGroup",[BBReferenceFieldSubType.USERS]:"UserGroup"},[FieldType.BB_REFERENCE_SINGLE]:{[BBReferenceFieldSubType.USER]:"User"}},OptionColours=[...new Array(12).keys()].map(v=>`hsla(${(v+1)*222%360}, 90%, 75%, 0.3)`),FilterOperator={ANY:"any",ALL:"all"},OnEmptyFilter={RETURN_ALL:"all",RETURN_NONE:"none"},FilterValueType={BINDING:"Binding",VALUE:"Value"},FieldPermissions={WRITABLE:"writable",READONLY:"readonly",HIDDEN:"hidden"},APP_NAME_REGEX=/^[\w\s]+$/,APP_URL_REGEX=/^[0-9a-zA-Z-_]+$/,Constants$2=Object.freeze(Object.defineProperty({__proto__:null,APP_NAME_REGEX,APP_URL_REGEX,ApiVersion,BannedSearchTypes,BudibaseRoleOptions,BudibaseRoleOptionsOld,BudibaseRoles,ContextScopes:ComponentContextScopes,Cookies,DEFAULT_BB_DATASOURCE_ID,EventPublishType,ExtendedBudibaseRoleOptions,Features:Feature,FieldPermissions,FilterOperator,FilterValueType,OnEmptyFilter,OperatorOptions,OptionColours,PlanType,Roles,SqlNumberTypeRangeMap,TableNames,TypeIconMap},Symbol.toStringTag,{value:"Module"})),buildAnalyticsEndpoints=v=>({getAnalyticsStatus:async()=>await v.get({url:"/api/bbtel"}),analyticsPing:async p=>await v.post({url:"/api/bbtel/ping",body:{...p,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}})}),buildAIEndpoints=v=>({generateCronExpression:async p=>await v.post({url:"/api/ai/cron",body:{prompt:p}}),generateJs:async p=>await v.post({url:"/api/ai/js",body:p}),generateTables:async p=>await v.post({url:"/api/ai/tables",body:p})}),buildAppEndpoints=v=>({fetchAppPackage:async p=>await v.get({url:`/api/applications/${p}/appPackage`}),saveAppMetadata:async(p,m)=>await v.put({url:`/api/applications/${p}`,body:m}),publishAppChanges:async p=>await v.post({url:`/api/applications/${p}/publish`}),revertAppChanges:async p=>await v.post({url:`/api/dev/${p}/revert`}),updateAppClientVersion:async p=>await v.post({url:`/api/applications/${p}/client/update`}),revertAppClientVersion:async p=>await v.post({url:`/api/applications/${p}/client/revert`}),getAppDeployments:async()=>await v.get({url:"/api/deployments"}),createApp:async p=>p instanceof FormData?await v.post({url:"/api/applications",body:p,json:!1}):await v.post({url:"/api/applications",body:p}),duplicateApp:async(p,m)=>await v.post({url:`/api/applications/${p}/duplicate`,body:m}),updateAppFromExport:async(p,m)=>{const y=getDevAppID(p);return await v.post({url:`/api/applications/${y}/import`,body:m,json:!1})},importApps:async p=>await v.post({url:"/api/cloud/import",body:p,json:!1}),unpublishApp:async p=>await v.post({url:`/api/applications/${p}/unpublish`}),deleteApp:async p=>await v.delete({url:`/api/applications/${p}`}),releaseAppLock:async p=>await v.delete({url:`/api/dev/${p}/lock`}),fetchSystemDebugInfo:async()=>await v.get({url:"/api/debug/diagnostics"}),syncApp:async p=>await v.post({url:`/api/applications/${p}/sync`}),getApps:async()=>await v.get({url:"/api/applications?status=all"}),fetchComponentLibDefinitions:async p=>await v.get({url:`/api/${p}/components/definitions`}),addSampleData:async p=>await v.post({url:`/api/applications/${p}/sample`})}),buildAttachmentEndpoints=v=>{const p={getSignedDatasourceURL:async(m,y,w)=>await v.post({url:`/api/attachments/${m}/url`,body:{bucket:y,key:w}})};return{...p,uploadAttachment:async(m,y)=>await v.post({url:`/api/attachments/${m}/upload`,body:y,json:!1}),uploadBuilderAttachment:async m=>await v.post({url:"/api/attachments/process",body:m,json:!1}),uploadPWAZip:async m=>await v.post({url:"/api/pwa/process-zip",body:m,json:!1}),externalUpload:async(m,y,w,S)=>{const{signedUrl:k,publicUrl:M}=await p.getSignedDatasourceURL(m,y,w);return k?(await v.put({url:k,body:S,json:!1,external:!0,parseResponse:O=>O}),{publicUrl:M}):{publicUrl:void 0}},downloadAttachment:async(m,y,w)=>await v.get({url:`/api/${m}/rows/${y}/attachment/${w}`,parseResponse:S=>S,suppressErrors:!0})}},buildAuthEndpoints=v=>({logIn:async(p,m,y)=>await v.post({url:`/api/global/auth/${p}/login`,body:{username:m,password:y}}),logOut:async()=>await v.post({url:"/api/global/auth/logout"}),setInitInfo:async p=>await v.post({url:"/api/global/auth/init",body:p}),getInitInfo:async()=>await v.get({url:"/api/global/auth/init"}),requestForgotPassword:async(p,m)=>await v.post({url:`/api/global/auth/${p}/reset`,body:{email:m}}),resetPassword:async(p,m,y)=>await v.post({url:`/api/global/auth/${p}/reset/update`,body:{password:m,resetCode:y}})}),buildAutomationEndpoints=v=>({triggerAutomation:async(p,m,y)=>await v.post({url:`/api/automations/${p}/trigger`,body:{fields:m,timeout:y}}),testAutomation:async(p,m)=>await v.post({url:`/api/automations/${p}/test`,body:m}),getAutomations:async()=>await v.get({url:"/api/automations"}),getAutomationDefinitions:async()=>await v.get({url:"/api/automations/definitions/list"}),createAutomation:async p=>await v.post({url:"/api/automations",body:p}),updateAutomation:async p=>await v.put({url:"/api/automations",body:p}),deleteAutomation:async(p,m)=>await v.delete({url:`/api/automations/${p}/${m}`}),getAutomationLogs:async p=>await v.post({url:"/api/automations/logs/search",body:p}),clearAutomationLogErrors:async(p,m)=>await v.delete({url:"/api/automations/logs",body:{appId:m,automationId:p}})}),buildConfigEndpoints=v=>({saveConfig:async p=>await v.post({url:"/api/global/configs",body:p}),getConfig:async p=>await v.get({url:`/api/global/configs/${p}`}),deleteConfig:async(p,m)=>await v.delete({url:`/api/global/configs/${p}/${m}`}),getTenantConfig:async p=>await v.get({url:`/api/global/configs/public?tenantId=${p}`}),getOIDCConfigs:async p=>await v.get({url:`/api/global/configs/public/oidc?tenantId=${p}`}),getChecklist:async p=>await v.get({url:`/api/global/configs/checklist?tenantId=${p}`}),uploadLogo:async p=>await v.post({url:"/api/global/configs/upload/settings/logoUrl",body:p,json:!1}),uploadFavicon:async p=>await v.post({url:"/api/global/configs/upload/settings/faviconUrl",body:p,json:!1}),uploadOIDCLogo:async(p,m)=>await v.post({url:`/api/global/configs/upload/logos_oidc/${p}`,body:m,json:!1}),getOIDCLogos:async()=>await v.get({url:"/api/global/configs/logos_oidc"})}),buildDatasourceEndpoints=v=>({getDatasources:async()=>await v.get({url:"/api/datasources"}),buildDatasourceSchema:async(p,m)=>await v.post({url:`/api/datasources/${p}/schema`,body:{tablesFilter:m}}),createDatasource:async p=>await v.post({url:"/api/datasources",body:p}),updateDatasource:async p=>await v.put({url:`/api/datasources/${p._id}`,body:p}),deleteDatasource:async(p,m)=>await v.delete({url:`/api/datasources/${p}/${m}`}),validateDatasource:async p=>await v.post({url:"/api/datasources/verify",body:{datasource:p}}),fetchInfoForDatasource:async p=>await v.post({url:"/api/datasources/info",body:{datasource:p}}),fetchExternalSchema:async p=>await v.get({url:`/api/datasources/${p}/schema/external`})}),buildFlagEndpoints=v=>({getFlags:async()=>await v.get({url:"/api/users/flags"}),updateFlag:async(p,m)=>await v.post({url:"/api/users/flags",body:{flag:p,value:m}}),toggleUiFeature:async p=>await v.post({url:`/api/beta/${p}`})}),buildLayoutEndpoints=v=>({saveLayout:async p=>await v.post({url:"/api/layouts",body:p}),deleteLayout:async(p,m)=>await v.delete({url:`/api/layouts/${p}/${m}`})}),buildOtherEndpoints=v=>({getEnvironment:async()=>await v.get({url:"/api/system/environment"}),getSystemStatus:async()=>await v.get({url:"/api/system/status"}),getIntegrations:async()=>await v.get({url:"/api/integrations"}),getBudibaseVersion:async()=>(await v.get({url:"/api/dev/version"})).version,getBasePermissions:async()=>await v.get({url:"/api/permission/builtin"})}),buildPermissionsEndpoints=v=>({getPermissionForResource:async p=>await v.get({url:`/api/permission/${p}`}),updatePermissionForResource:async(p,m,y)=>await v.post({url:`/api/permission/${m}/${p}/${y}`}),removePermissionFromResource:async(p,m,y)=>await v.delete({url:`/api/permission/${m}/${p}/${y}`}),getDependants:async p=>await v.get({url:`/api/permission/${p}/dependants`})}),buildQueryEndpoints=v=>({executeQuery:async(p,{pagination:m,parameters:y}={})=>await v.post({url:`/api/v2/queries/${p}`,body:{parameters:y,pagination:m}}),fetchQueryDefinition:async p=>await v.get({url:`/api/queries/${p}`,cache:!0}),getQueries:async()=>await v.get({url:"/api/queries"}),saveQuery:async p=>await v.post({url:"/api/queries",body:p}),deleteQuery:async(p,m)=>await v.delete({url:`/api/queries/${p}/${m}`}),importQueries:async p=>await v.post({url:"/api/queries/import",body:p}),previewQuery:async p=>await v.post({url:"/api/queries/preview",body:p})}),buildRelationshipEndpoints=v=>({fetchRelationshipData:async(p,m,y)=>{const w=await v.get({url:`/api/${p}/${m}/enrich?field=${y}`});return y?w[y]||[]:[w]}}),buildRoleEndpoints=v=>({deleteRole:async(p,m)=>await v.delete({url:`/api/roles/${p}/${m}`}),saveRole:async p=>await v.post({url:"/api/roles",body:p}),getRoles:async()=>await v.get({url:"/api/roles"}),getRolesForApp:async p=>await v.get({url:`/api/global/roles/${p}`}),getAccessibleRoles:async()=>await v.get({url:"/api/roles/accessible"})}),buildRouteEndpoints=v=>({fetchClientAppRoutes:async()=>await v.get({url:"/api/routing/client"}),fetchAppRoutes:async()=>await v.get({url:"/api/routing"})}),buildRowEndpoints=v=>({fetchRow:async(p,m)=>await v.get({url:`/api/${p}/rows/${m}`}),saveRow:async(p,m=!1)=>{const y=p._viewId||p.tableId;return await v.post({url:`/api/${y}/rows`,body:p,suppressErrors:m})},patchRow:async(p,m=!1)=>{const y=p._viewId||p.tableId;return await v.patch({url:`/api/${y}/rows`,body:p,suppressErrors:m})},deleteRow:async(p,m)=>await v.delete({url:`/api/${p}/rows`,body:{_id:m}}),deleteRows:async(p,m)=>(m.forEach(y=>{typeof y=="object"&&(y==null||delete y._viewId)}),await v.delete({url:`/api/${p}/rows`,body:{rows:m}})),exportRows:async(p,m,y)=>await v.post({url:`/api/${p}/rows/exportRows?format=${m}`,body:y,parseResponse:async w=>await w.text()})}),buildScreenEndpoints=v=>({saveScreen:async p=>await v.post({url:"/api/screens",body:p}),deleteScreen:async(p,m)=>await v.delete({url:`/api/screens/${p}/${m}`}),usageInScreens:async p=>await v.post({url:`/api/screens/usage/${p}`})}),buildTableEndpoints=v=>({fetchTableDefinition:async p=>await v.get({url:`/api/tables/${p}`,cache:!0}),fetchTableData:async p=>await v.get({url:`/api/${p}/rows`}),searchTable:async(p,m)=>await v.post({url:`/api/${p}/search`,body:m}),importTableData:async(p,m,y)=>await v.post({url:`/api/tables/${p}/import`,body:{rows:m,identifierFields:y}}),csvToJson:async p=>await v.post({url:"/api/convert/csvToJson",body:{csvString:p}}),getTables:async()=>await v.get({url:"/api/tables"}),getTable:async p=>await v.get({url:`/api/tables/${p}`}),saveTable:async p=>await v.post({url:"/api/tables",body:p}),deleteTable:async(p,m)=>await v.delete({url:`/api/tables/${p}/${m}`}),validateNewTableImport:async(p,m)=>await v.post({url:"/api/tables/validateNewTableImport",body:{rows:p,schema:m}}),validateExistingTableImport:async(p,m)=>await v.post({url:"/api/tables/validateExistingTableImport",body:{rows:p,tableId:m}}),migrateColumn:async(p,m,y)=>await v.post({url:`/api/tables/${p}/migrate`,body:{oldColumn:m,newColumn:y}})}),buildTemplateEndpoints=v=>({getEmailTemplateDefinitions:async()=>await v.get({url:"/api/global/template/definitions"}),getEmailTemplates:async()=>await v.get({url:"/api/global/template/email"}),saveEmailTemplate:async p=>await v.post({url:"/api/global/template",body:p}),getAppTemplates:async()=>await v.get({url:"/api/templates"})}),buildUserEndpoints=v=>({getUsers:async()=>await v.get({url:"/api/global/users"}),searchUsers:async p=>await v.post({url:"/api/global/users/search",body:p}),getUser:async p=>await v.get({url:`/api/global/users/${p}`}),updateOwnMetadata:async p=>await v.post({url:"/api/users/metadata/self",body:p}),createAdminUser:async p=>await v.post({url:"/api/global/users/init",body:p}),saveUser:async p=>await v.post({url:"/api/global/users",body:p}),createUsers:async(p,m)=>(await v.post({url:"/api/global/users/bulk",body:{create:{users:p,groups:m}}})).created,deleteUser:async p=>await v.delete({url:`/api/global/users/${p}`}),deleteUsers:async p=>(await v.post({url:"/api/global/users/bulk",body:{delete:{users:p}}})).deleted,onboardUsers:async p=>await v.post({url:"/api/global/users/onboard",body:p}),updateUserInvite:async(p,m)=>await v.post({url:`/api/global/users/invite/update/${p}`,body:m}),getUserInvite:async p=>await v.get({url:`/api/global/users/invite/${p}`}),getUserInvites:async()=>await v.get({url:"/api/global/users/invites"}),inviteUsers:async p=>await v.post({url:"/api/global/users/multi/invite",body:p}),removeUserInvites:async p=>await v.post({url:"/api/global/users/multi/invite/delete",body:p}),acceptInvite:async p=>await v.post({url:"/api/global/users/invite/accept",body:p}),getUserCountByApp:async p=>(await v.get({url:`/api/global/users/count/${p}`})).userCount,addAppBuilder:async(p,m)=>await v.post({url:`/api/global/users/${p}/app/${m}/builder`}),removeAppBuilder:async(p,m)=>await v.delete({url:`/api/global/users/${p}/app/${m}/builder`}),getAccountHolder:async()=>await v.get({url:"/api/global/users/accountholder"})}),buildSelfEndpoints=v=>({generateAPIKey:async()=>{const p=await v.post({url:"/api/global/self/api_key"});return p==null?void 0:p.apiKey},fetchDeveloperInfo:async()=>v.get({url:"/api/global/self/api_key"}),fetchSelf:async()=>await v.get({url:"/api/self"}),fetchBuilderSelf:async()=>await v.get({url:"/api/global/self"}),updateSelf:async p=>await v.post({url:"/api/global/self",body:p})}),buildViewEndpoints=v=>({fetchViewData:async(p,{field:m,groupBy:y,calculation:w})=>{const S=new URLSearchParams;w&&(m&&S.set("field",m),S.set("calculation",w)),y&&S.set("group",y);const k=m?`/api/views/${encodeURIComponent(p)}?${S}`:`/api/views/${encodeURIComponent(p)}`;return await v.get({url:k})},exportView:async(p,m)=>{const y=encodeURIComponent(p);return await v.get({url:`/api/views/export?view=${y}&format=${m}`,parseResponse:async w=>await w.text()})},saveView:async p=>await v.post({url:"/api/views",body:p}),deleteView:async p=>await v.delete({url:`/api/views/${encodeURIComponent(p)}`})}),buildViewV2Endpoints=v=>({fetchDefinition:async p=>await v.get({url:`/api/v2/views/${encodeURIComponent(p)}`,cache:!0}),create:async p=>await v.post({url:"/api/v2/views",body:p}),update:async p=>await v.put({url:`/api/v2/views/${encodeURIComponent(p.id)}`,body:p}),fetch:async(p,m)=>await v.post({url:`/api/v2/views/${encodeURIComponent(p)}/search`,body:m}),delete:async p=>await v.delete({url:`/api/v2/views/${encodeURIComponent(p)}`})}),buildLicensingEndpoints=v=>({activateLicenseKey:async p=>v.post({url:"/api/global/license/key",body:{licenseKey:p}}),deleteLicenseKey:async()=>v.delete({url:"/api/global/license/key"}),getLicenseKey:async()=>{try{return await v.get({url:"/api/global/license/key"})}catch(p){if(p.status!==404)throw p}},activateOfflineLicense:async p=>v.post({url:"/api/global/license/offline",body:{offlineLicenseToken:p}}),deleteOfflineLicense:async()=>v.delete({url:"/api/global/license/offline"}),getOfflineLicense:async()=>{try{return await v.get({url:"/api/global/license/offline"})}catch(p){if(p.status!==404)throw p}},getOfflineLicenseIdentifier:async()=>await v.get({url:"/api/global/license/offline/identifier"}),refreshLicense:async()=>v.post({url:"/api/global/license/refresh"}),getQuotaUsage:async()=>v.get({url:"/api/global/license/usage"})}),buildGroupsEndpoints=v=>{async function p(m,y,w,S){return await v.post({url:`/api/global/groups/${m}/${y}`,body:{[w]:S}})}return{saveGroup:async m=>await v.post({url:"/api/global/groups",body:m}),getGroups:async()=>(await v.get({url:"/api/global/groups"})).data,getGroup:async m=>await v.get({url:`/api/global/groups/${m}`}),deleteGroup:async(m,y)=>await v.delete({url:`/api/global/groups/${m}/${y}`}),getGroupUsers:async({id:m,bookmark:y,emailSearch:w})=>{let S=`/api/global/groups/${m}/users?`;return y&&(S+=`bookmark=${y}&`),w&&(S+=`emailSearch=${w}`),await v.get({url:S})},addUsersToGroup:async(m,y)=>p(m,"users","add",y),removeUsersFromGroup:async(m,y)=>p(m,"users","remove",y),addAppsToGroup:async(m,y)=>p(m,"apps","add",y),removeAppsFromGroup:async(m,y)=>p(m,"apps","remove",y),addGroupAppBuilder:async(m,y)=>await v.post({url:`/api/global/groups/${m}/app/${y}/builder`}),removeGroupAppBuilder:async(m,y)=>await v.delete({url:`/api/global/groups/${m}/app/${y}/builder`})}},buildPluginEndpoints=v=>({uploadPlugin:async p=>await v.post({url:"/api/plugin/upload",body:p,json:!1}),createPlugin:async p=>await v.post({url:"/api/plugin",body:p}),getPlugins:async()=>await v.get({url:"/api/plugin"}),deletePlugin:async p=>await v.delete({url:`/api/plugin/${p}`})}),buildBackupEndpoints=v=>({createManualBackup:async p=>await v.post({url:`/api/apps/${p}/backups`}),searchBackups:async(p,m)=>await v.post({url:`/api/apps/${p}/backups/search`,body:m}),deleteBackup:async(p,m)=>await v.delete({url:`/api/apps/${p}/backups/${m}`}),restoreBackup:async(p,m,y)=>await v.post({url:`/api/apps/${p}/backups/${m}/import`,body:{name:y}})}),buildEnvironmentVariableEndpoints=v=>({checkEnvironmentVariableStatus:async()=>await v.get({url:"/api/env/variables/status"}),fetchEnvironmentVariables:async()=>await v.get({url:"/api/env/variables",json:!1}),createEnvironmentVariable:async p=>await v.post({url:"/api/env/variables",body:p}),deleteEnvironmentVariable:async p=>await v.delete({url:`/api/env/variables/${p}`}),updateEnvironmentVariable:async(p,m)=>await v.patch({url:`/api/env/variables/${p}`,body:m})}),buildEventEndpoints=v=>({publishEvent:async p=>await v.post({url:"/api/global/event/publish",body:{type:p}})}),buildAuditLogEndpoints=v=>({searchAuditLogs:async p=>await v.post({url:"/api/global/auditlogs/search",body:p}),getEventDefinitions:async()=>await v.get({url:"/api/global/auditlogs/definitions"}),getDownloadUrl:p=>`/api/global/auditlogs/download?query=${encodeURIComponent(JSON.stringify(p))}`}),buildLogsEndpoints=v=>({getSystemLogs:async()=>await v.get({url:"/api/system/logs",json:!1,parseResponse:async p=>p})}),buildMigrationEndpoints=v=>({getMigrationStatus:async()=>await v.get({url:"/api/migrations/status"})}),buildRowActionEndpoints=v=>({fetch:async p=>(await v.get({url:`/api/tables/${p}/actions`})).actions,create:async(p,m)=>await v.post({url:`/api/tables/${p}/actions`,body:{name:m}}),delete:async(p,m)=>await v.delete({url:`/api/tables/${p}/actions/${m}`}),enableView:async(p,m,y)=>await v.post({url:`/api/tables/${p}/actions/${m}/permissions/${y}`}),disableView:async(p,m,y)=>await v.delete({url:`/api/tables/${p}/actions/${m}/permissions/${y}`}),trigger:async(p,m,y)=>await v.post({url:`/api/tables/${p}/actions/${m}/trigger`,body:{rowId:y}})}),buildOAuth2Endpoints=v=>({fetch:async()=>(await v.get({url:"/api/oauth2"})).configs,create:async p=>await v.post({url:"/api/oauth2",body:{...p}}),update:async p=>await v.put({url:`/api/oauth2/${p._id}`,body:{...p}}),delete:async(p,m)=>await v.delete({url:`/api/oauth2/${p}/${m}`}),validate:async function(p){return await v.post({url:"/api/oauth2/validate",body:{...p}})}}),buildAgentEndpoints=v=>({agentChat:async p=>{const m=p;return await v.post({url:"/api/agent/chat",body:m})},removeChat:async p=>await v.delete({url:`/api/agent/history/${p}`}),fetchChats:async()=>await v.get({url:"/api/agent/history"}),fetchToolSources:async()=>await v.get({url:"/api/agent/toolsource"}),createToolSource:async p=>await v.post({url:"/api/agent/toolsource",body:p}),updateToolSource:async p=>await v.put({url:"/api/agent/toolsource",body:p}),deleteToolSource:async p=>await v.delete({url:`/api/agent/toolsource/${p}`})}),buildFeatureFlagEndpoints=v=>({overrideFeatureFlags:async p=>{const m={flags:p};return await v.patch({url:"/api/features",body:m,parseResponse:()=>{}})}}),buildNavigationEndpoints=v=>({updateNavigation:async(p,m)=>await v.put({url:`/api/navigation/${p}`,body:{navigation:m}})}),buildWorkspaceAppEndpoints=v=>({fetch:async()=>await v.get({url:"/api/workspaceApp"}),create:async p=>await v.post({url:"/api/workspaceApp",body:p}),update:async p=>await v.put({url:`/api/workspaceApp/${p._id}`,body:p}),delete:async(p,m)=>await v.delete({url:`/api/workspaceApp/${p}/${m}`})}),APISessionID=uuid(),createAPIClient=(v={})=>{let p={};const m=async(R,D,H=!1)=>{let N=R.statusText,W=null;try{W=await R.json(),W!=null&&W.message?N=W.message:W!=null&&W.error&&(N=JSON.stringify(W.error))}catch{}return{message:N,json:W,status:R.status,url:R.url,method:D,handled:!0,suppressErrors:H}},y=(R,D,H)=>({message:R,json:null,status:400,url:D,method:H,handled:!0,suppressErrors:!1}),w=async R=>{let{json:D,method:H,external:N,body:W,url:J,parseResponse:ee,suppressErrors:le}=R;D=D&&H!==HTTPMethod.GET;let ce={Accept:"application/json"};ce[Header.SESSION_ID]=APISessionID,N||(ce[Header.API_VER]=ApiVersion),D&&(ce["Content-Type"]="application/json"),v!=null&&v.attachHeaders&&v.attachHeaders(ce);let ue=W;if(D)try{ue=JSON.stringify(W)}catch{throw y("Invalid JSON body",J,H)}let me;try{me=await fetch(J,{method:H,headers:ce,body:ue,credentials:"same-origin"})}catch{throw delete p[J],y("Failed to send request",J,H)}if(me.status>=200&&me.status<400){S(me);try{return me.status===204?void 0:ee?await ee(me):await me.json()}catch(ge){throw delete p[J],`Failed to parse response: ${ge}`}}else throw delete p[J],await m(me,H,le)},S=R=>{if(!v.onMigrationDetected)return;const D=R.headers.get(Header.MIGRATING_APP);D&&v.onMigrationDetected(D)},k=async R=>{const D=R.url;return p[D]||(p[D]=w(R),p[D]=await p[D]),await p[D]},M=R=>async D=>{try{let H={json:!0,external:!1,suppressErrors:!1,cache:!1,method:R,...D},{url:N,cache:W,external:J}=H;return J||(H.url=`/${N}`.replace("//","/")),await(W&&(v==null?void 0:v.enableCaching)?k:w)(H)}catch(H){throw v!=null&&v.onError&&v.onError(H),H}};let O={post:M(HTTPMethod.POST),get:M(HTTPMethod.GET),patch:M(HTTPMethod.PATCH),delete:M(HTTPMethod.DELETE),put:M(HTTPMethod.PUT),invalidateCache:()=>{p={}},getAppID:()=>{var D;let R={};return(D=v==null?void 0:v.attachHeaders)==null||D.call(v,R),R==null?void 0:R[Header.APP_ID]}};return{...O,...buildAIEndpoints(O),...buildAnalyticsEndpoints(O),...buildAppEndpoints(O),...buildAttachmentEndpoints(O),...buildAuthEndpoints(O),...buildAutomationEndpoints(O),...buildConfigEndpoints(O),...buildDatasourceEndpoints(O),...buildFlagEndpoints(O),...buildLayoutEndpoints(O),...buildOtherEndpoints(O),...buildPermissionsEndpoints(O),...buildQueryEndpoints(O),...buildRelationshipEndpoints(O),...buildRoleEndpoints(O),...buildRouteEndpoints(O),...buildRowEndpoints(O),...buildScreenEndpoints(O),...buildTableEndpoints(O),...buildTemplateEndpoints(O),...buildUserEndpoints(O),...buildViewEndpoints(O),...buildSelfEndpoints(O),...buildLicensingEndpoints(O),...buildGroupsEndpoints(O),...buildPluginEndpoints(O),...buildBackupEndpoints(O),...buildEnvironmentVariableEndpoints(O),...buildEventEndpoints(O),...buildAuditLogEndpoints(O),...buildLogsEndpoints(O),...buildMigrationEndpoints(O),...buildAgentEndpoints(O),...buildFeatureFlagEndpoints(O),viewV2:buildViewV2Endpoints(O),rowActions:buildRowActionEndpoints(O),oauth2:buildOAuth2Endpoints(O),navigation:buildNavigationEndpoints(O),workspaceApp:buildWorkspaceAppEndpoints(O)}},getJSONArrayDatasourceSchema=(v,p)=>{let m=v,y=[];p.prefixKeys&&(y=p.prefixKeys.concat(["schema"])),y=y.concat(p.label.split(".").slice(2));for(let w=0;w<y.length;w++)m=m==null?void 0:m[y[w]],m!=null&&m.schema&&(m=m.schema);return convertJSONSchemaToTableSchema(m,{squashObjects:!0,prefixKeys:y})},convertJSONSchemaToTableSchema=(v,p)=>{if(!v)return null;p={squashObjects:!1,prefixKeys:null,...p},v.schema?v=v.schema:v={value:v};const m=extractJSONSchemaKeys(v,p.squashObjects);let y={};return m.forEach(({key:w,type:S})=>{y[w]={type:S,name:w,prefixKeys:p.prefixKeys}}),y},extractJSONSchemaKeys=(v,p=!1)=>{if(!v||!Object.keys(v).length)return[];let m=[];return Object.keys(v).forEach(y=>{const w=v[y].type;if(w==="json"&&p){const S=extractJSONSchemaKeys(v[y].schema,p);m=m.concat(S.map(k=>({key:`${y}.${k.key}`,type:k.type})))}else m.push({key:y,type:w==="array"?"jsonarray":w})}),m},generateQueryArraySchemas=(v,p)=>{var m,y;for(let w in v)((m=v[w])==null?void 0:m.type)==="json"&&((y=v[w])==null?void 0:y.subtype)==="array"&&hasSchema(p[w])&&(v[w]={schema:{schema:Object.entries(p[w]||{}).reduce((S,[k,M])=>(S[k]={name:k,type:M.type,subtype:M.subtype},S),{}),type:"json"},type:"json",subtype:"array"});return v};function setCookie(v,p,m){getCookie(v)&&removeCookie(v);let y=`${v}=${p}; Path=/;`;m&&(y+=` Domain=${m};`),window.document.cookie=y}function getCookie(v){const m=`; ${document.cookie}`.split(`; ${v}=`);if(m.length===2)return m[1].split(";").shift()}function removeCookie(v){getCookie(v)&&(document.cookie=`${v}=; Max-Age=-99999999; Path=/;`)}const RolePriorities={[Roles.ADMIN]:5,[Roles.CREATOR]:4,[Roles.POWER]:3,[Roles.BASIC]:2,[Roles.PUBLIC]:1},getRolePriority=v=>RolePriorities[v]??0,sleep=v=>new Promise(p=>setTimeout(p,v)),debounce=(v,p=1e3)=>{let m;return async(...y)=>new Promise(w=>{m&&clearTimeout(m),m=setTimeout(async()=>{const S=await v(...y);w(S)},p)})},throttle=(v,p=1e3)=>{let m,y=!1,w=!1;const S=(...k)=>{if(m=k,y){w=!0;return}v(...m),y=!0,setTimeout(()=>{y=!1,w&&(w=!1,S(...m))},p)};return S},domDebounce=v=>{let p=!1,m;return(...y)=>{m=y,p||(p=!0,requestAnimationFrame(()=>{v(...m),p=!1}))}},buildFormBlockButtonConfig=v=>{const{_id:p,actionType:m,dataSource:y,notificationOverride:w,actionUrl:S,showDeleteButton:k,deleteButtonLabel:M,showSaveButton:O,saveButtonLabel:R}=v||{};if(!p)return;const D=`${p}-form`,H=`${p}-repeater`,N=y==null?void 0:y.resourceId,W=k===!1?"":M==null?void 0:M.trim(),J=O===!1?"":R==null?void 0:R.trim(),ee=[{"##eventHandlerType":"Validate Form",parameters:{componentId:D}},{"##eventHandlerType":"Save Row",parameters:{providerId:D,tableId:N,notificationOverride:w,confirm:null}},{"##eventHandlerType":"Close Screen Modal"},{"##eventHandlerType":"Close Side Panel"},{"##eventHandlerType":"Close Modal"},...m!=="Create"?[]:[{"##eventHandlerType":"Clear Form",parameters:{componentId:D}}],...S?[{"##eventHandlerType":"Navigate To",parameters:{url:S}}]:[]],le=[{"##eventHandlerType":"Delete Row",parameters:{confirm:!0,tableId:N,rowId:`{{ ${makePropSafe(H)}.${makePropSafe("_id")} }}`,revId:`{{ ${makePropSafe(H)}.${makePropSafe("_rev")} }}`,notificationOverride:w}},{"##eventHandlerType":"Close Screen Modal"},{"##eventHandlerType":"Close Side Panel"},{"##eventHandlerType":"Close Modal"},...S?[{"##eventHandlerType":"Navigate To",parameters:{url:S}}]:[]],ce=[];return m&&["Update","Create"].includes(m)&&O!==!1&&ce.push({text:J||"Save",_id:uuid(),_component:"@budibase/standard-components/button",onClick:ee,type:"cta"}),m==="Update"&&k!==!1&&ce.push({text:W||"Delete",_id:uuid(),_component:"@budibase/standard-components/button",onClick:le,quiet:!0,type:"warning"}),ce},buildMultiStepFormBlockDefaultProps=v=>{const{_id:p,stepCount:m,currentStep:y,actionType:w,dataSource:S}=v||{};if(!p||!m)return;const k=`Step {{ [${p}-form].[__currentStep] }}`,M=S==null?void 0:S.resourceId,O=`${p}-form`;let R=[];return y!==0&&R.push({_id:uuid(),_component:"@budibase/standard-components/button",_instanceName:uuid(),text:"Back",type:"secondary",size:"M",onClick:[{parameters:{type:"prev",componentId:O},"##eventHandlerType":"Change Form Step"}]}),y!==m-1&&R.push({_id:uuid(),_component:"@budibase/standard-components/button",_instanceName:uuid(),text:"Next",type:"cta",size:"M",onClick:[{"##eventHandlerType":"Validate Form",parameters:{componentId:O}},{parameters:{type:"next",componentId:O},"##eventHandlerType":"Change Form Step"}]}),w!=="View"&&y===m-1&&R.push({_id:uuid(),_component:"@budibase/standard-components/button",_instanceName:uuid(),text:"Save",type:"cta",size:"M",onClick:[{"##eventHandlerType":"Validate Form",parameters:{componentId:O}},{"##eventHandlerType":"Save Row",parameters:{tableId:M,providerId:O}},...w!=="Create"?[]:[{"##eventHandlerType":"Clear Form",parameters:{componentId:O}}]]}),{buttons:R,title:k}};function parseFilter(v){if(!(v!=null&&v.groups))return v;const p=lodashExports.cloneDeep(v);return p.groups&&(p.groups=p.groups.map(m=>{var y;return m.filters?(m.filters=m.filters.filter(w=>w.field&&w.operator),(y=m.filters)!=null&&y.length?m:null):m}).filter(m=>!!m)),p}const isBetterSample=(v,p)=>{if(p==null&&v!=null)return!0;if(p!=null&&v==null)return!1;const m=typeof p,y=typeof v;return m!==y?!1:y==="string"&&v.length>p.length||y==="object"&&Object.keys(v).length>Object.keys(p).length},generateGoldenSample=v=>{let p={};return v==null||v.slice(0,100).forEach(m=>{Object.keys(m).forEach(y=>{isBetterSample(m[y],p[y])&&(p[y]=m[y])})}),p},getColumnIcon=v=>{if(v.schema.icon&&!v.schema.icon.startsWith("ri-"))return v.schema.icon;if(v.calculationType)return"Calculator";if(v.schema.autocolumn)return"Shapes";if(isDeprecatedSingleUserColumn(v.schema))return"User";const{type:p,subtype:m}=v.schema;return(typeof TypeIconMap[p]=="object"&&m?TypeIconMap[p][m]:TypeIconMap[p])||"Text"},memo=v=>{const p=writable(v);let m=JSON.stringify(v);const y=w=>{const S=JSON.stringify(w);S!==m&&(p.set(w),m=S)};return{subscribe:p.subscribe,set:y,update:w=>{let S=JSON.parse(m);const k=w(S);y(k)}}},derivedMemo=(v,p)=>{const m=derived(v,p),y=memo(get_store_value(m));return m.subscribe(y.set),y},PACKET_TYPES=Object.create(null);PACKET_TYPES.open="0",PACKET_TYPES.close="1",PACKET_TYPES.ping="2",PACKET_TYPES.pong="3",PACKET_TYPES.message="4",PACKET_TYPES.upgrade="5",PACKET_TYPES.noop="6";const PACKET_TYPES_REVERSE=Object.create(null);Object.keys(PACKET_TYPES).forEach(v=>{PACKET_TYPES_REVERSE[PACKET_TYPES[v]]=v});const ERROR_PACKET={type:"error",data:"parser error"},withNativeBlob$1=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",withNativeArrayBuffer$2=typeof ArrayBuffer=="function",isView$1=v=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(v):v&&v.buffer instanceof ArrayBuffer,encodePacket=({type:v,data:p},m,y)=>withNativeBlob$1&&p instanceof Blob?m?y(p):encodeBlobAsBase64(p,y):withNativeArrayBuffer$2&&(p instanceof ArrayBuffer||isView$1(p))?m?y(p):encodeBlobAsBase64(new Blob([p]),y):y(PACKET_TYPES[v]+(p||"")),encodeBlobAsBase64=(v,p)=>{const m=new FileReader;return m.onload=function(){const y=m.result.split(",")[1];p("b"+(y||""))},m.readAsDataURL(v)};function toArray(v){return v instanceof Uint8Array?v:v instanceof ArrayBuffer?new Uint8Array(v):new Uint8Array(v.buffer,v.byteOffset,v.byteLength)}let TEXT_ENCODER;function encodePacketToBinary(v,p){if(withNativeBlob$1&&v.data instanceof Blob)return v.data.arrayBuffer().then(toArray).then(p);if(withNativeArrayBuffer$2&&(v.data instanceof ArrayBuffer||isView$1(v.data)))return p(toArray(v.data));encodePacket(v,!1,m=>{TEXT_ENCODER||(TEXT_ENCODER=new TextEncoder),p(TEXT_ENCODER.encode(m))})}const chars$4="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",lookup$6=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let v=0;v<chars$4.length;v++)lookup$6[chars$4.charCodeAt(v)]=v;const decode$4=v=>{let p=v.length*.75,m=v.length,y,w=0,S,k,M,O;v[v.length-1]==="="&&(p--,v[v.length-2]==="="&&p--);const R=new ArrayBuffer(p),D=new Uint8Array(R);for(y=0;y<m;y+=4)S=lookup$6[v.charCodeAt(y)],k=lookup$6[v.charCodeAt(y+1)],M=lookup$6[v.charCodeAt(y+2)],O=lookup$6[v.charCodeAt(y+3)],D[w++]=S<<2|k>>4,D[w++]=(k&15)<<4|M>>2,D[w++]=(M&3)<<6|O&63;return R},withNativeArrayBuffer$1=typeof ArrayBuffer=="function",decodePacket=(v,p)=>{if(typeof v!="string")return{type:"message",data:mapBinary(v,p)};const m=v.charAt(0);return m==="b"?{type:"message",data:decodeBase64Packet(v.substring(1),p)}:PACKET_TYPES_REVERSE[m]?v.length>1?{type:PACKET_TYPES_REVERSE[m],data:v.substring(1)}:{type:PACKET_TYPES_REVERSE[m]}:ERROR_PACKET},decodeBase64Packet=(v,p)=>{if(withNativeArrayBuffer$1){const m=decode$4(v);return mapBinary(m,p)}else return{base64:!0,data:v}},mapBinary=(v,p)=>{switch(p){case"blob":return v instanceof Blob?v:new Blob([v]);case"arraybuffer":default:return v instanceof ArrayBuffer?v:v.buffer}},SEPARATOR=String.fromCharCode(30),encodePayload=(v,p)=>{const m=v.length,y=new Array(m);let w=0;v.forEach((S,k)=>{encodePacket(S,!1,M=>{y[k]=M,++w===m&&p(y.join(SEPARATOR))})})},decodePayload=(v,p)=>{const m=v.split(SEPARATOR),y=[];for(let w=0;w<m.length;w++){const S=decodePacket(m[w],p);if(y.push(S),S.type==="error")break}return y};function createPacketEncoderStream(){return new TransformStream({transform(v,p){encodePacketToBinary(v,m=>{const y=m.length;let w;if(y<126)w=new Uint8Array(1),new DataView(w.buffer).setUint8(0,y);else if(y<65536){w=new Uint8Array(3);const S=new DataView(w.buffer);S.setUint8(0,126),S.setUint16(1,y)}else{w=new Uint8Array(9);const S=new DataView(w.buffer);S.setUint8(0,127),S.setBigUint64(1,BigInt(y))}v.data&&typeof v.data!="string"&&(w[0]|=128),p.enqueue(w),p.enqueue(m)})}})}let TEXT_DECODER;function totalLength(v){return v.reduce((p,m)=>p+m.length,0)}function concatChunks(v,p){if(v[0].length===p)return v.shift();const m=new Uint8Array(p);let y=0;for(let w=0;w<p;w++)m[w]=v[0][y++],y===v[0].length&&(v.shift(),y=0);return v.length&&y<v[0].length&&(v[0]=v[0].slice(y)),m}function createPacketDecoderStream(v,p){TEXT_DECODER||(TEXT_DECODER=new TextDecoder);const m=[];let y=0,w=-1,S=!1;return new TransformStream({transform(k,M){for(m.push(k);;){if(y===0){if(totalLength(m)<1)break;const O=concatChunks(m,1);S=(O[0]&128)===128,w=O[0]&127,w<126?y=3:w===126?y=1:y=2}else if(y===1){if(totalLength(m)<2)break;const O=concatChunks(m,2);w=new DataView(O.buffer,O.byteOffset,O.length).getUint16(0),y=3}else if(y===2){if(totalLength(m)<8)break;const O=concatChunks(m,8),R=new DataView(O.buffer,O.byteOffset,O.length),D=R.getUint32(0);if(D>Math.pow(2,53-32)-1){M.enqueue(ERROR_PACKET);break}w=D*Math.pow(2,32)+R.getUint32(4),y=3}else{if(totalLength(m)<w)break;const O=concatChunks(m,w);M.enqueue(decodePacket(S?O:TEXT_DECODER.decode(O),p)),y=0}if(w===0||w>v){M.enqueue(ERROR_PACKET);break}}}})}const protocol$1=4;function Emitter(v){if(v)return mixin(v)}function mixin(v){for(var p in Emitter.prototype)v[p]=Emitter.prototype[p];return v}Emitter.prototype.on=Emitter.prototype.addEventListener=function(v,p){return this._callbacks=this._callbacks||{},(this._callbacks["$"+v]=this._callbacks["$"+v]||[]).push(p),this},Emitter.prototype.once=function(v,p){function m(){this.off(v,m),p.apply(this,arguments)}return m.fn=p,this.on(v,m),this},Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(v,p){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var m=this._callbacks["$"+v];if(!m)return this;if(arguments.length==1)return delete this._callbacks["$"+v],this;for(var y,w=0;w<m.length;w++)if(y=m[w],y===p||y.fn===p){m.splice(w,1);break}return m.length===0&&delete this._callbacks["$"+v],this},Emitter.prototype.emit=function(v){this._callbacks=this._callbacks||{};for(var p=new Array(arguments.length-1),m=this._callbacks["$"+v],y=1;y<arguments.length;y++)p[y-1]=arguments[y];if(m){m=m.slice(0);for(var y=0,w=m.length;y<w;++y)m[y].apply(this,p)}return this},Emitter.prototype.emitReserved=Emitter.prototype.emit,Emitter.prototype.listeners=function(v){return this._callbacks=this._callbacks||{},this._callbacks["$"+v]||[]},Emitter.prototype.hasListeners=function(v){return!!this.listeners(v).length};const globalThisShim=(()=>typeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function pick(v,...p){return p.reduce((m,y)=>(v.hasOwnProperty(y)&&(m[y]=v[y]),m),{})}const NATIVE_SET_TIMEOUT=globalThisShim.setTimeout,NATIVE_CLEAR_TIMEOUT=globalThisShim.clearTimeout;function installTimerFunctions(v,p){p.useNativeTimers?(v.setTimeoutFn=NATIVE_SET_TIMEOUT.bind(globalThisShim),v.clearTimeoutFn=NATIVE_CLEAR_TIMEOUT.bind(globalThisShim)):(v.setTimeoutFn=globalThisShim.setTimeout.bind(globalThisShim),v.clearTimeoutFn=globalThisShim.clearTimeout.bind(globalThisShim))}const BASE64_OVERHEAD=1.33;function byteLength(v){return typeof v=="string"?utf8Length(v):Math.ceil((v.byteLength||v.size)*BASE64_OVERHEAD)}function utf8Length(v){let p=0,m=0;for(let y=0,w=v.length;y<w;y++)p=v.charCodeAt(y),p<128?m+=1:p<2048?m+=2:p<55296||p>=57344?m+=3:(y++,m+=4);return m}function encode$4(v){let p="";for(let m in v)v.hasOwnProperty(m)&&(p.length&&(p+="&"),p+=encodeURIComponent(m)+"="+encodeURIComponent(v[m]));return p}function decode$3(v){let p={},m=v.split("&");for(let y=0,w=m.length;y<w;y++){let S=m[y].split("=");p[decodeURIComponent(S[0])]=decodeURIComponent(S[1])}return p}class TransportError extends Error{constructor(p,m,y){super(p),this.description=m,this.context=y,this.type="TransportError"}}class Transport extends Emitter{constructor(p){super(),this.writable=!1,installTimerFunctions(this,p),this.opts=p,this.query=p.query,this.socket=p.socket}onError(p,m,y){return super.emitReserved("error",new TransportError(p,m,y)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(p){this.readyState==="open"&&this.write(p)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(p){const m=decodePacket(p,this.socket.binaryType);this.onPacket(m)}onPacket(p){super.emitReserved("packet",p)}onClose(p){this.readyState="closed",super.emitReserved("close",p)}pause(p){}createUri(p,m={}){return p+"://"+this._hostname()+this._port()+this.opts.path+this._query(m)}_hostname(){const p=this.opts.hostname;return p.indexOf(":")===-1?p:"["+p+"]"}_port(){return this.opts.port&&(this.opts.secure&&+(this.opts.port!==443)||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(p){const m=encode$4(p);return m.length?"?"+m:""}}const alphabet$3="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),length=64,map={};let seed$1=0,i$4=0,prev;function encode$3(v){let p="";do p=alphabet$3[v%length]+p,v=Math.floor(v/length);while(v>0);return p}function yeast(){const v=encode$3(+new Date);return v!==prev?(seed$1=0,prev=v):v+"."+encode$3(seed$1++)}for(;i$4<length;i$4++)map[alphabet$3[i$4]]=i$4;let value$1=!1;try{value$1=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch(v){}const hasCORS=value$1;function XHR(v){const p=v.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!p||hasCORS))return new XMLHttpRequest}catch{}if(!p)try{return new globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}function createCookieJar(){}function empty(){}const hasXHR2=function(){return new XHR({xdomain:!1}).responseType!=null}();class Polling extends Transport{constructor(p){if(super(p),this.polling=!1,typeof location<"u"){const y=location.protocol==="https:";let w=location.port;w||(w=y?"443":"80"),this.xd=typeof location<"u"&&p.hostname!==location.hostname||w!==p.port}const m=p&&p.forceBase64;this.supportsBinary=hasXHR2&&!m,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(p){this.readyState="pausing";const m=()=>{this.readyState="paused",p()};if(this.polling||!this.writable){let y=0;this.polling&&(y++,this.once("pollComplete",function(){--y||m()})),this.writable||(y++,this.once("drain",function(){--y||m()}))}else m()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(p){const m=y=>{if(this.readyState==="opening"&&y.type==="open"&&this.onOpen(),y.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(y)};decodePayload(p,this.socket.binaryType).forEach(m),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const p=()=>{this.write([{type:"close"}])};this.readyState==="open"?p():this.once("open",p)}write(p){this.writable=!1,encodePayload(p,m=>{this.doWrite(m,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const p=this.opts.secure?"https":"http",m=this.query||{};return this.opts.timestampRequests!==!1&&(m[this.opts.timestampParam]=yeast()),!this.supportsBinary&&!m.sid&&(m.b64=1),this.createUri(p,m)}request(p={}){return Object.assign(p,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Request(this.uri(),p)}doWrite(p,m){const y=this.request({method:"POST",data:p});y.on("success",m),y.on("error",(w,S)=>{this.onError("xhr post error",w,S)})}doPoll(){const p=this.request();p.on("data",this.onData.bind(this)),p.on("error",(m,y)=>{this.onError("xhr poll error",m,y)}),this.pollXhr=p}}class Request extends Emitter{constructor(p,m){super(),installTimerFunctions(this,m),this.opts=m,this.method=m.method||"GET",this.uri=p,this.data=m.data!==void 0?m.data:null,this.create()}create(){var p;const m=pick(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");m.xdomain=!!this.opts.xd;const y=this.xhr=new XHR(m);try{y.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){y.setDisableHeaderCheck&&y.setDisableHeaderCheck(!0);for(let w in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(w)&&y.setRequestHeader(w,this.opts.extraHeaders[w])}}catch{}if(this.method==="POST")try{y.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{y.setRequestHeader("Accept","*/*")}catch{}(p=this.opts.cookieJar)===null||p===void 0||p.addCookies(y),"withCredentials"in y&&(y.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(y.timeout=this.opts.requestTimeout),y.onreadystatechange=()=>{var w;y.readyState===3&&((w=this.opts.cookieJar)===null||w===void 0||w.parseCookies(y)),y.readyState===4&&(y.status===200||y.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof y.status=="number"?y.status:0)},0))},y.send(this.data)}catch(w){this.setTimeoutFn(()=>{this.onError(w)},0);return}typeof document<"u"&&(this.index=Request.requestsCount++,Request.requests[this.index]=this)}onError(p){this.emitReserved("error",p,this.xhr),this.cleanup(!0)}cleanup(p){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=empty,p)try{this.xhr.abort()}catch{}typeof document<"u"&&delete Request.requests[this.index],this.xhr=null}}onLoad(){const p=this.xhr.responseText;p!==null&&(this.emitReserved("data",p),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(Request.requestsCount=0,Request.requests={},typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",unloadHandler);else if(typeof addEventListener=="function"){const v="onpagehide"in globalThisShim?"pagehide":"unload";addEventListener(v,unloadHandler,!1)}}function unloadHandler(){for(let v in Request.requests)Request.requests.hasOwnProperty(v)&&Request.requests[v].abort()}const nextTick=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?p=>Promise.resolve().then(p):(p,m)=>m(p,0))(),WebSocket=globalThisShim.WebSocket||globalThisShim.MozWebSocket,usingBrowserWebSocket=!0,defaultBinaryType="arraybuffer",isReactNative=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class WS extends Transport{constructor(p){super(p),this.supportsBinary=!p.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const p=this.uri(),m=this.opts.protocols,y=isReactNative?{}:pick(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(y.headers=this.opts.extraHeaders);try{this.ws=usingBrowserWebSocket&&!isReactNative?m?new WebSocket(p,m):new WebSocket(p):new WebSocket(p,m,y)}catch(w){return this.emitReserved("error",w)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=p=>this.onClose({description:"websocket connection closed",context:p}),this.ws.onmessage=p=>this.onData(p.data),this.ws.onerror=p=>this.onError("websocket error",p)}write(p){this.writable=!1;for(let m=0;m<p.length;m++){const y=p[m],w=m===p.length-1;encodePacket(y,this.supportsBinary,S=>{const k={};try{usingBrowserWebSocket&&this.ws.send(S)}catch{}w&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const p=this.opts.secure?"wss":"ws",m=this.query||{};return this.opts.timestampRequests&&(m[this.opts.timestampParam]=yeast()),this.supportsBinary||(m.b64=1),this.createUri(p,m)}check(){return!!WebSocket}}class WT extends Transport{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(p=>{this.onError("webtransport error",p)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(p=>{const m=createPacketDecoderStream(Number.MAX_SAFE_INTEGER,this.socket.binaryType),y=p.readable.pipeThrough(m).getReader(),w=createPacketEncoderStream();w.readable.pipeTo(p.writable),this.writer=w.writable.getWriter();const S=()=>{y.read().then(({done:M,value:O})=>{M||(this.onPacket(O),S())}).catch(M=>{})};S();const k={type:"open"};this.query.sid&&(k.data=`{"sid":"${this.query.sid}"}`),this.writer.write(k).then(()=>this.onOpen())})}))}write(p){this.writable=!1;for(let m=0;m<p.length;m++){const y=p[m],w=m===p.length-1;this.writer.write(y).then(()=>{w&&nextTick(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var p;(p=this.transport)===null||p===void 0||p.close()}}const transports={websocket:WS,webtransport:WT,polling:Polling},re=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,parts=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function parse$7(v){if(v.length>2e3)throw"URI too long";const p=v,m=v.indexOf("["),y=v.indexOf("]");m!=-1&&y!=-1&&(v=v.substring(0,m)+v.substring(m,y).replace(/:/g,";")+v.substring(y,v.length));let w=re.exec(v||""),S={},k=14;for(;k--;)S[parts[k]]=w[k]||"";return m!=-1&&y!=-1&&(S.source=p,S.host=S.host.substring(1,S.host.length-1).replace(/;/g,":"),S.authority=S.authority.replace("[","").replace("]","").replace(/;/g,":"),S.ipv6uri=!0),S.pathNames=pathNames(S,S.path),S.queryKey=queryKey(S,S.query),S}function pathNames(v,p){const m=/\/{2,9}/g,y=p.replace(m,"/").split("/");return(p.slice(0,1)=="/"||p.length===0)&&y.splice(0,1),p.slice(-1)=="/"&&y.splice(y.length-1,1),y}function queryKey(v,p){const m={};return p.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(y,w,S){w&&(m[w]=S)}),m}let Socket$1=class Pc extends Emitter{constructor(p,m={}){super(),this.binaryType=defaultBinaryType,this.writeBuffer=[],p&&typeof p=="object"&&(m=p,p=null),p?(p=parse$7(p),m.hostname=p.host,m.secure=p.protocol==="https"||p.protocol==="wss",m.port=p.port,p.query&&(m.query=p.query)):m.host&&(m.hostname=parse$7(m.host).host),installTimerFunctions(this,m),this.secure=m.secure!=null?m.secure:typeof location<"u"&&location.protocol==="https:",m.hostname&&!m.port&&(m.port=this.secure?"443":"80"),this.hostname=m.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=m.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=m.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},m),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=decode$3(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(p){const m=Object.assign({},this.opts.query);m.EIO=protocol$1,m.transport=p,this.id&&(m.sid=this.id);const y=Object.assign({},this.opts,{query:m,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[p]);return new transports[p](y)}open(){let p;if(this.opts.rememberUpgrade&&Pc.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)p="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else p=this.transports[0];this.readyState="opening";try{p=this.createTransport(p)}catch{this.transports.shift(),this.open();return}p.open(),this.setTransport(p)}setTransport(p){this.transport&&this.transport.removeAllListeners(),this.transport=p,p.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",m=>this.onClose("transport close",m))}probe(p){let m=this.createTransport(p),y=!1;Pc.priorWebsocketSuccess=!1;const w=()=>{y||(m.send([{type:"ping",data:"probe"}]),m.once("packet",H=>{if(!y)if(H.type==="pong"&&H.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",m),!m)return;Pc.priorWebsocketSuccess=m.name==="websocket",this.transport.pause(()=>{y||this.readyState!=="closed"&&(D(),this.setTransport(m),m.send([{type:"upgrade"}]),this.emitReserved("upgrade",m),m=null,this.upgrading=!1,this.flush())})}else{const N=new Error("probe error");N.transport=m.name,this.emitReserved("upgradeError",N)}}))};function S(){y||(y=!0,D(),m.close(),m=null)}const k=H=>{const N=new Error("probe error: "+H);N.transport=m.name,S(),this.emitReserved("upgradeError",N)};function M(){k("transport closed")}function O(){k("socket closed")}function R(H){m&&H.name!==m.name&&S()}const D=()=>{m.removeListener("open",w),m.removeListener("error",k),m.removeListener("close",M),this.off("close",O),this.off("upgrading",R)};m.once("open",w),m.once("error",k),m.once("close",M),this.once("close",O),this.once("upgrading",R),this.upgrades.indexOf("webtransport")!==-1&&p!=="webtransport"?this.setTimeoutFn(()=>{y||m.open()},200):m.open()}onOpen(){if(this.readyState="open",Pc.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){let p=0;const m=this.upgrades.length;for(;p<m;p++)this.probe(this.upgrades[p])}}onPacket(p){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",p),this.emitReserved("heartbeat"),this.resetPingTimeout(),p.type){case"open":this.onHandshake(JSON.parse(p.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const m=new Error("server error");m.code=p.data,this.onError(m);break;case"message":this.emitReserved("data",p.data),this.emitReserved("message",p.data);break}}onHandshake(p){this.emitReserved("handshake",p),this.id=p.sid,this.transport.query.sid=p.sid,this.upgrades=this.filterUpgrades(p.upgrades),this.pingInterval=p.pingInterval,this.pingTimeout=p.pingTimeout,this.maxPayload=p.maxPayload,this.onOpen(),this.readyState!=="closed"&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn(()=>{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const p=this.getWritablePackets();this.transport.send(p),this.prevBufferLen=p.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let m=1;for(let y=0;y<this.writeBuffer.length;y++){const w=this.writeBuffer[y].data;if(w&&(m+=byteLength(w)),y>0&&m>this.maxPayload)return this.writeBuffer.slice(0,y);m+=2}return this.writeBuffer}write(p,m,y){return this.sendPacket("message",p,m,y),this}send(p,m,y){return this.sendPacket("message",p,m,y),this}sendPacket(p,m,y,w){if(typeof m=="function"&&(w=m,m=void 0),typeof y=="function"&&(w=y,y=null),this.readyState==="closing"||this.readyState==="closed")return;y=y||{},y.compress=y.compress!==!1;const S={type:p,data:m,options:y};this.emitReserved("packetCreate",S),this.writeBuffer.push(S),w&&this.once("flush",w),this.flush()}close(){const p=()=>{this.onClose("forced close"),this.transport.close()},m=()=>{this.off("upgrade",m),this.off("upgradeError",m),p()},y=()=>{this.once("upgrade",m),this.once("upgradeError",m)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?y():p()}):this.upgrading?y():p()),this}onError(p){Pc.priorWebsocketSuccess=!1,this.emitReserved("error",p),this.onClose("transport error",p)}onClose(p,m){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",p,m),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(p){const m=[];let y=0;const w=p.length;for(;y<w;y++)~this.transports.indexOf(p[y])&&m.push(p[y]);return m}};Socket$1.protocol=protocol$1;function url(v,p="",m){let y=v;m=m||typeof location<"u"&&location,v==null&&(v=m.protocol+"//"+m.host),typeof v=="string"&&(v.charAt(0)==="/"&&(v.charAt(1)==="/"?v=m.protocol+v:v=m.host+v),/^(https?|wss?):\/\//.test(v)||(typeof m<"u"?v=m.protocol+"//"+v:v="https://"+v),y=parse$7(v)),y.port||(/^(http|ws)$/.test(y.protocol)?y.port="80":/^(http|ws)s$/.test(y.protocol)&&(y.port="443")),y.path=y.path||"/";const S=y.host.indexOf(":")!==-1?"["+y.host+"]":y.host;return y.id=y.protocol+"://"+S+":"+y.port+p,y.href=y.protocol+"://"+S+(m&&m.port===y.port?"":":"+y.port),y}const withNativeArrayBuffer=typeof ArrayBuffer=="function",isView=v=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(v):v.buffer instanceof ArrayBuffer,toString=Object.prototype.toString,withNativeBlob=typeof Blob=="function"||typeof Blob<"u"&&toString.call(Blob)==="[object BlobConstructor]",withNativeFile=typeof File=="function"||typeof File<"u"&&toString.call(File)==="[object FileConstructor]";function isBinary(v){return withNativeArrayBuffer&&(v instanceof ArrayBuffer||isView(v))||withNativeBlob&&v instanceof Blob||withNativeFile&&v instanceof File}function hasBinary(v,p){if(!v||typeof v!="object")return!1;if(Array.isArray(v)){for(let m=0,y=v.length;m<y;m++)if(hasBinary(v[m]))return!0;return!1}if(isBinary(v))return!0;if(v.toJSON&&typeof v.toJSON=="function"&&arguments.length===1)return hasBinary(v.toJSON(),!0);for(const m in v)if(Object.prototype.hasOwnProperty.call(v,m)&&hasBinary(v[m]))return!0;return!1}function deconstructPacket(v){const p=[],m=v.data,y=v;return y.data=_deconstructPacket(m,p),y.attachments=p.length,{packet:y,buffers:p}}function _deconstructPacket(v,p){if(!v)return v;if(isBinary(v)){const m={_placeholder:!0,num:p.length};return p.push(v),m}else if(Array.isArray(v)){const m=new Array(v.length);for(let y=0;y<v.length;y++)m[y]=_deconstructPacket(v[y],p);return m}else if(typeof v=="object"&&!(v instanceof Date)){const m={};for(const y in v)Object.prototype.hasOwnProperty.call(v,y)&&(m[y]=_deconstructPacket(v[y],p));return m}return v}function reconstructPacket(v,p){return v.data=_reconstructPacket(v.data,p),delete v.attachments,v}function _reconstructPacket(v,p){if(!v)return v;if(v&&v._placeholder===!0){if(typeof v.num=="number"&&v.num>=0&&v.num<p.length)return p[v.num];throw new Error("illegal attachments")}else if(Array.isArray(v))for(let m=0;m<v.length;m++)v[m]=_reconstructPacket(v[m],p);else if(typeof v=="object")for(const m in v)Object.prototype.hasOwnProperty.call(v,m)&&(v[m]=_reconstructPacket(v[m],p));return v}const RESERVED_EVENTS$1=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],protocol=5;var PacketType;(function(v){v[v.CONNECT=0]="CONNECT",v[v.DISCONNECT=1]="DISCONNECT",v[v.EVENT=2]="EVENT",v[v.ACK=3]="ACK",v[v.CONNECT_ERROR=4]="CONNECT_ERROR",v[v.BINARY_EVENT=5]="BINARY_EVENT",v[v.BINARY_ACK=6]="BINARY_ACK"})(PacketType||(PacketType={}));class Encoder{constructor(p){this.replacer=p}encode(p){return(p.type===PacketType.EVENT||p.type===PacketType.ACK)&&hasBinary(p)?this.encodeAsBinary({type:p.type===PacketType.EVENT?PacketType.BINARY_EVENT:PacketType.BINARY_ACK,nsp:p.nsp,data:p.data,id:p.id}):[this.encodeAsString(p)]}encodeAsString(p){let m=""+p.type;return(p.type===PacketType.BINARY_EVENT||p.type===PacketType.BINARY_ACK)&&(m+=p.attachments+"-"),p.nsp&&p.nsp!=="/"&&(m+=p.nsp+","),p.id!=null&&(m+=p.id),p.data!=null&&(m+=JSON.stringify(p.data,this.replacer)),m}encodeAsBinary(p){const m=deconstructPacket(p),y=this.encodeAsString(m.packet),w=m.buffers;return w.unshift(y),w}}function isObject$1(v){return Object.prototype.toString.call(v)==="[object Object]"}class Decoder extends Emitter{constructor(p){super(),this.reviver=p}add(p){let m;if(typeof p=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");m=this.decodeString(p);const y=m.type===PacketType.BINARY_EVENT;y||m.type===PacketType.BINARY_ACK?(m.type=y?PacketType.EVENT:PacketType.ACK,this.reconstructor=new BinaryReconstructor(m),m.attachments===0&&super.emitReserved("decoded",m)):super.emitReserved("decoded",m)}else if(isBinary(p)||p.base64)if(this.reconstructor)m=this.reconstructor.takeBinaryData(p),m&&(this.reconstructor=null,super.emitReserved("decoded",m));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+p)}decodeString(p){let m=0;const y={type:Number(p.charAt(0))};if(PacketType[y.type]===void 0)throw new Error("unknown packet type "+y.type);if(y.type===PacketType.BINARY_EVENT||y.type===PacketType.BINARY_ACK){const S=m+1;for(;p.charAt(++m)!=="-"&&m!=p.length;);const k=p.substring(S,m);if(k!=Number(k)||p.charAt(m)!=="-")throw new Error("Illegal attachments");y.attachments=Number(k)}if(p.charAt(m+1)==="/"){const S=m+1;for(;++m&&!(p.charAt(m)===","||m===p.length););y.nsp=p.substring(S,m)}else y.nsp="/";const w=p.charAt(m+1);if(w!==""&&Number(w)==w){const S=m+1;for(;++m;){const k=p.charAt(m);if(k==null||Number(k)!=k){--m;break}if(m===p.length)break}y.id=Number(p.substring(S,m+1))}if(p.charAt(++m)){const S=this.tryParse(p.substr(m));if(Decoder.isPayloadValid(y.type,S))y.data=S;else throw new Error("invalid payload")}return y}tryParse(p){try{return JSON.parse(p,this.reviver)}catch{return!1}}static isPayloadValid(p,m){switch(p){case PacketType.CONNECT:return isObject$1(m);case PacketType.DISCONNECT:return m===void 0;case PacketType.CONNECT_ERROR:return typeof m=="string"||isObject$1(m);case PacketType.EVENT:case PacketType.BINARY_EVENT:return Array.isArray(m)&&(typeof m[0]=="number"||typeof m[0]=="string"&&RESERVED_EVENTS$1.indexOf(m[0])===-1);case PacketType.ACK:case PacketType.BINARY_ACK:return Array.isArray(m)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class BinaryReconstructor{constructor(p){this.packet=p,this.buffers=[],this.reconPack=p}takeBinaryData(p){if(this.buffers.push(p),this.buffers.length===this.reconPack.attachments){const m=reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),m}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const parser$1=Object.freeze(Object.defineProperty({__proto__:null,Decoder,Encoder,get PacketType(){return PacketType},protocol},Symbol.toStringTag,{value:"Module"}));function on(v,p,m){return v.on(p,m),function(){v.off(p,m)}}const RESERVED_EVENTS=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Socket extends Emitter{constructor(p,m,y){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=p,this.nsp=m,y&&y.auth&&(this.auth=y.auth),this._opts=Object.assign({},y),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const p=this.io;this.subs=[on(p,"open",this.onopen.bind(this)),on(p,"packet",this.onpacket.bind(this)),on(p,"error",this.onerror.bind(this)),on(p,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...p){return p.unshift("message"),this.emit.apply(this,p),this}emit(p,...m){if(RESERVED_EVENTS.hasOwnProperty(p))throw new Error('"'+p.toString()+'" is a reserved event name');if(m.unshift(p),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(m),this;const y={type:PacketType.EVENT,data:m};if(y.options={},y.options.compress=this.flags.compress!==!1,typeof m[m.length-1]=="function"){const k=this.ids++,M=m.pop();this._registerAckCallback(k,M),y.id=k}const w=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!w||!this.connected)||(this.connected?(this.notifyOutgoingListeners(y),this.packet(y)):this.sendBuffer.push(y)),this.flags={},this}_registerAckCallback(p,m){var y;const w=(y=this.flags.timeout)!==null&&y!==void 0?y:this._opts.ackTimeout;if(w===void 0){this.acks[p]=m;return}const S=this.io.setTimeoutFn(()=>{delete this.acks[p];for(let M=0;M<this.sendBuffer.length;M++)this.sendBuffer[M].id===p&&this.sendBuffer.splice(M,1);m.call(this,new Error("operation has timed out"))},w),k=(...M)=>{this.io.clearTimeoutFn(S),m.apply(this,M)};k.withError=!0,this.acks[p]=k}emitWithAck(p,...m){return new Promise((y,w)=>{const S=(k,M)=>k?w(k):y(M);S.withError=!0,m.push(S),this.emit(p,...m)})}_addToQueue(p){let m;typeof p[p.length-1]=="function"&&(m=p.pop());const y={id:this._queueSeq++,tryCount:0,pending:!1,args:p,flags:Object.assign({fromQueue:!0},this.flags)};p.push((w,...S)=>y!==this._queue[0]?void 0:(w!==null?y.tryCount>this._opts.retries&&(this._queue.shift(),m&&m(w)):(this._queue.shift(),m&&m(null,...S)),y.pending=!1,this._drainQueue())),this._queue.push(y),this._drainQueue()}_drainQueue(p=!1){if(!this.connected||this._queue.length===0)return;const m=this._queue[0];m.pending&&!p||(m.pending=!0,m.tryCount++,this.flags=m.flags,this.emit.apply(this,m.args))}packet(p){p.nsp=this.nsp,this.io._packet(p)}onopen(){typeof this.auth=="function"?this.auth(p=>{this._sendConnectPacket(p)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(p){this.packet({type:PacketType.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},p):p})}onerror(p){this.connected||this.emitReserved("connect_error",p)}onclose(p,m){this.connected=!1,delete this.id,this.emitReserved("disconnect",p,m),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(p=>{if(!this.sendBuffer.some(y=>String(y.id)===p)){const y=this.acks[p];delete this.acks[p],y.withError&&y.call(this,new Error("socket has been disconnected"))}})}onpacket(p){if(p.nsp===this.nsp)switch(p.type){case PacketType.CONNECT:p.data&&p.data.sid?this.onconnect(p.data.sid,p.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case PacketType.EVENT:case PacketType.BINARY_EVENT:this.onevent(p);break;case PacketType.ACK:case PacketType.BINARY_ACK:this.onack(p);break;case PacketType.DISCONNECT:this.ondisconnect();break;case PacketType.CONNECT_ERROR:this.destroy();const y=new Error(p.data.message);y.data=p.data.data,this.emitReserved("connect_error",y);break}}onevent(p){const m=p.data||[];p.id!=null&&m.push(this.ack(p.id)),this.connected?this.emitEvent(m):this.receiveBuffer.push(Object.freeze(m))}emitEvent(p){if(this._anyListeners&&this._anyListeners.length){const m=this._anyListeners.slice();for(const y of m)y.apply(this,p)}super.emit.apply(this,p),this._pid&&p.length&&typeof p[p.length-1]=="string"&&(this._lastOffset=p[p.length-1])}ack(p){const m=this;let y=!1;return function(...w){y||(y=!0,m.packet({type:PacketType.ACK,id:p,data:w}))}}onack(p){const m=this.acks[p.id];typeof m=="function"&&(delete this.acks[p.id],m.withError&&p.data.unshift(null),m.apply(this,p.data))}onconnect(p,m){this.id=p,this.recovered=m&&this._pid===m,this._pid=m,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(p=>this.emitEvent(p)),this.receiveBuffer=[],this.sendBuffer.forEach(p=>{this.notifyOutgoingListeners(p),this.packet(p)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(p=>p()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:PacketType.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(p){return this.flags.compress=p,this}get volatile(){return this.flags.volatile=!0,this}timeout(p){return this.flags.timeout=p,this}onAny(p){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(p),this}prependAny(p){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(p),this}offAny(p){if(!this._anyListeners)return this;if(p){const m=this._anyListeners;for(let y=0;y<m.length;y++)if(p===m[y])return m.splice(y,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(p){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(p),this}prependAnyOutgoing(p){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(p),this}offAnyOutgoing(p){if(!this._anyOutgoingListeners)return this;if(p){const m=this._anyOutgoingListeners;for(let y=0;y<m.length;y++)if(p===m[y])return m.splice(y,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(p){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const m=this._anyOutgoingListeners.slice();for(const y of m)y.apply(this,p.data)}}}function Backoff(v){v=v||{},this.ms=v.min||100,this.max=v.max||1e4,this.factor=v.factor||2,this.jitter=v.jitter>0&&v.jitter<=1?v.jitter:0,this.attempts=0}Backoff.prototype.duration=function(){var v=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var p=Math.random(),m=Math.floor(p*this.jitter*v);v=Math.floor(p*10)&1?v+m:v-m}return Math.min(v,this.max)|0},Backoff.prototype.reset=function(){this.attempts=0},Backoff.prototype.setMin=function(v){this.ms=v},Backoff.prototype.setMax=function(v){this.max=v},Backoff.prototype.setJitter=function(v){this.jitter=v};class Manager extends Emitter{constructor(p,m){var y;super(),this.nsps={},this.subs=[],p&&typeof p=="object"&&(m=p,p=void 0),m=m||{},m.path=m.path||"/socket.io",this.opts=m,installTimerFunctions(this,m),this.reconnection(m.reconnection!==!1),this.reconnectionAttempts(m.reconnectionAttempts||1/0),this.reconnectionDelay(m.reconnectionDelay||1e3),this.reconnectionDelayMax(m.reconnectionDelayMax||5e3),this.randomizationFactor((y=m.randomizationFactor)!==null&&y!==void 0?y:.5),this.backoff=new Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(m.timeout==null?2e4:m.timeout),this._readyState="closed",this.uri=p;const w=m.parser||parser$1;this.encoder=new w.Encoder,this.decoder=new w.Decoder,this._autoConnect=m.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(p){return arguments.length?(this._reconnection=!!p,this):this._reconnection}reconnectionAttempts(p){return p===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=p,this)}reconnectionDelay(p){var m;return p===void 0?this._reconnectionDelay:(this._reconnectionDelay=p,(m=this.backoff)===null||m===void 0||m.setMin(p),this)}randomizationFactor(p){var m;return p===void 0?this._randomizationFactor:(this._randomizationFactor=p,(m=this.backoff)===null||m===void 0||m.setJitter(p),this)}reconnectionDelayMax(p){var m;return p===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=p,(m=this.backoff)===null||m===void 0||m.setMax(p),this)}timeout(p){return arguments.length?(this._timeout=p,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(p){if(~this._readyState.indexOf("open"))return this;this.engine=new Socket$1(this.uri,this.opts);const m=this.engine,y=this;this._readyState="opening",this.skipReconnect=!1;const w=on(m,"open",function(){y.onopen(),p&&p()}),S=M=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",M),p?p(M):this.maybeReconnectOnOpen()},k=on(m,"error",S);if(this._timeout!==!1){const M=this._timeout,O=this.setTimeoutFn(()=>{w(),S(new Error("timeout")),m.close()},M);this.opts.autoUnref&&O.unref(),this.subs.push(()=>{this.clearTimeoutFn(O)})}return this.subs.push(w),this.subs.push(k),this}connect(p){return this.open(p)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const p=this.engine;this.subs.push(on(p,"ping",this.onping.bind(this)),on(p,"data",this.ondata.bind(this)),on(p,"error",this.onerror.bind(this)),on(p,"close",this.onclose.bind(this)),on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(p){try{this.decoder.add(p)}catch(m){this.onclose("parse error",m)}}ondecoded(p){nextTick(()=>{this.emitReserved("packet",p)},this.setTimeoutFn)}onerror(p){this.emitReserved("error",p)}socket(p,m){let y=this.nsps[p];return y?this._autoConnect&&!y.active&&y.connect():(y=new Socket(this,p,m),this.nsps[p]=y),y}_destroy(p){const m=Object.keys(this.nsps);for(const y of m)if(this.nsps[y].active)return;this._close()}_packet(p){const m=this.encoder.encode(p);for(let y=0;y<m.length;y++)this.engine.write(m[y],p.options)}cleanup(){this.subs.forEach(p=>p()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(p,m){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",p,m),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const p=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const m=this.backoff.duration();this._reconnecting=!0;const y=this.setTimeoutFn(()=>{p.skipReconnect||(this.emitReserved("reconnect_attempt",p.backoff.attempts),!p.skipReconnect&&p.open(w=>{w?(p._reconnecting=!1,p.reconnect(),this.emitReserved("reconnect_error",w)):p.onreconnect()}))},m);this.opts.autoUnref&&y.unref(),this.subs.push(()=>{this.clearTimeoutFn(y)})}}onreconnect(){const p=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",p)}}const cache={};function lookup$5(v,p){typeof v=="object"&&(p=v,v=void 0),p=p||{};const m=url(v,p.path||"/socket.io"),y=m.source,w=m.id,S=m.path,k=cache[w]&&S in cache[w].nsps,M=p.forceNew||p["force new connection"]||p.multiplex===!1||k;let O;return M?O=new Manager(y,p):(cache[w]||(cache[w]=new Manager(y,p)),O=cache[w]),m.query&&!p.query&&(p.query=m.queryKey),O.socket(m.path,p)}Object.assign(lookup$5,{Manager,Socket,io:lookup$5,connect:lookup$5});const DefaultOptions={heartbeat:!0},createWebsocket=(v,p=DefaultOptions)=>{if(!v)throw"A websocket path must be provided";const{heartbeat:m}={...DefaultOptions,...p},y=location.protocol==="https:",w=y?"wss:":"ws:",S=location.hostname,k=location.port||(y?443:80);let M=lookup$5(`${w}//${S}:${k}`,{path:v,reconnectionAttempts:3,reconnectionDelay:5e3,reconnectionDelayMax:5e3,timeout:4e3,transports:["websocket"]}),O;return m&&(O=setInterval(()=>{M.emit(SocketEvent.Heartbeat)},SocketSessionTTL*500)),M.on("disconnect",()=>{clearInterval(O)}),M.onOther=(R,D)=>{M.on(R,H=>{(H==null?void 0:H.apiSessionId)!==APISessionID&&D(H)})},M},extractFileNameRegex=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;async function downloadStream(v){const p=await v.blob(),m=v.headers.get("Content-Disposition"),w=extractFileNameRegex.exec(m)[1].replace(/['"]/g,""),S=new Blob([p]),k=URL.createObjectURL(S),M=document.createElement("a");M.href=k,M.download=w,M.click(),URL.revokeObjectURL(k)}const shouldDisplaySetting=(v,p)=>{let m=p.dependsOn;return m&&!Array.isArray(m)&&(m=[m]),m!=null&&m.length?m.every(y=>{let w=y,S=null,k=!!y.invert;if(typeof y=="object"&&(w=y.setting,S=y.value),!w)return!1;Array.isArray(S)||(S=[S]);const M=deepGet$1(v,w);return S.some(R=>R==null?M!=null&&M!==!1&&M!=="":R===M)!==k}):!0},columnTypeManyTypeOverrides={[FieldType.DATETIME]:FieldType.STRING,[FieldType.BOOLEAN]:FieldType.STRING,[FieldType.SIGNATURE_SINGLE]:FieldType.ATTACHMENTS},columnTypeManyParser={[FieldType.DATETIME]:(v,p)=>{function m(y){const{timeOnly:w,dateOnly:S}=p||{},k=!S,M=parseDate(y,{enableTime:k});return getDateDisplayValue(M,{enableTime:k,timeOnly:w})}return v.map(y=>m(y))},[FieldType.BOOLEAN]:v=>v.map(p=>!!p),[FieldType.BB_REFERENCE_SINGLE]:v=>[...new Map(v.map(p=>[p._id,p])).values()],[FieldType.BB_REFERENCE]:v=>[...new Map(v.map(p=>[p._id,p])).values()],[FieldType.ARRAY]:v=>Array.from(new Set(v))};function enrichSchemaWithRelColumns(v){return Object.keys(v).reduce((m,y)=>{const w=v[y];if(m[y]=w,w.visible!==!1&&isRelationshipField(w)&&w.columns){const S=(w==null?void 0:w.relationshipType)===RelationshipType.ONE_TO_MANY;for(const k of Object.keys(w.columns)){const M=w.columns[k];if(!M.visible)continue;const O=`${w.name}.${k}`;m[O]={...M,type:M.type,name:O,related:{field:y,subField:k},cellRenderType:!S&&columnTypeManyTypeOverrides[M.type]||M.type}}}return m},{})}function getRelatedTableValues(v,p,m){var S,k,M,O;const y=isRelationshipField(m)&&(m==null?void 0:m.relationshipType)===RelationshipType.ONE_TO_MANY;let w="";if(y)w=(k=(S=v[p.related.field])==null?void 0:S[0])==null?void 0:k[p.related.subField];else{const R=columnTypeManyParser[p.type]||(N=>N),D=(O=(M=v[p.related.field])==null?void 0:M.flatMap(N=>N[p.related.subField]))==null?void 0:O.filter(N=>N!=null),H=R(D||[],p);w=H,[FieldType.STRING,FieldType.NUMBER,FieldType.BIGINT,FieldType.BOOLEAN,FieldType.DATETIME,FieldType.LONGFORM,FieldType.BARCODEQR].includes(p.type)&&(w=H==null?void 0:H.join(", "))}return w}function canBeDisplayColumn(v){return!(!canBeDisplayColumn$1(v.type)||v.related)}function canBeSortColumn(v){return v.calculationType?!0:!(!canBeSortColumn$1(v.type)||v.related)}const getSettingsDefinition=v=>{var m;if(!v)return[];let p=[];return(m=v.settings)==null||m.forEach(y=>{var w;y.section?p=p.concat((w=y.settings||[])==null?void 0:w.map(S=>({...S,sectionDependsOn:y.dependsOn}))):p.push(y)}),p};function requiredValidator(v){return v!=null&&v!==""||"This field is required"}function createValidationStore(v,...p){let m=!1;const y=writable(v||""),w=derived(y,()=>m||(m=!0,!1)),S=derived([y,w],([k,M])=>M&&validate(k,p));return[y,S,w]}function validate(v,p){const m=p.find(y=>y(v)!==!0);return m&&m(v)}const NumberFormatter=Intl.NumberFormat(),formatNumber=v=>{const p=typeof v;if(p!=="string"&&p!=="number"||p==="string"&&!v.trim().length)return"";const m=NumberFormatter.format(v);return m==="NaN"?stringifyValue(v):m},stringifyValue=v=>{if(v==null)return"";if(typeof v=="string")return v;if(typeof v.toString=="function")return stringifyValue(v.toString());try{return JSON.stringify(v)}catch{return""}},stringifyField=(v,p)=>{switch(p.type){case FieldType.AUTO:return"";case FieldType.SIGNATURE_SINGLE:return v?"Yes":"No";case FieldType.ATTACHMENT_SINGLE:case FieldType.ATTACHMENTS:return v?(Array.isArray(v)?v:[v]).map(y=>y.name).filter(y=>!!y).join(", "):"";case FieldType.LINK:return v?(Array.isArray(v)?v:[v]).map(y=>y.primaryDisplay).filter(y=>!!y).join(", "):"";case FieldType.JSON:return v?JSON.stringify(v):"";case FieldType.BB_REFERENCE:case FieldType.BB_REFERENCE_SINGLE:{if(p.subtype!==BBReferenceFieldSubType.USERS&&p.subtype!==BBReferenceFieldSubType.USER||!v)return"";const m=Array.isArray(v)?v:[v];return(m==null?void 0:m.map(y=>y.primaryDisplay).join(", "))||""}case FieldType.ARRAY:return(v==null?void 0:v.join(", "))||"";case FieldType.BOOLEAN:return capitalise((v==null?void 0:v.toString())||"false");case FieldType.DATETIME:return getDateDisplayValue(v,{enableTime:!p.dateOnly,timeOnly:p.timeOnly});case FieldType.NUMBER:return formatNumber(v);case FieldType.STRING:case FieldType.LONGFORM:case FieldType.BIGINT:case FieldType.OPTIONS:case FieldType.AI:case FieldType.BARCODEQR:return v||"";case FieldType.FORMULA:default:return stringifyValue(v)}},stringifyRow=(v,p)=>{let m={};return Object.entries(p).forEach(([y,w])=>{m[y]=stringifyField(deepGet(v,y),w)}),m},{buildQuery,limit:queryLimit,runQuery,sort}=QueryUtils;class BaseDataFetch{constructor(p){Fi(this,"API");Fi(this,"features");Fi(this,"options");Fi(this,"store");Fi(this,"derivedStore");if(this.features={supportsSearch:!1,supportsSort:!1,supportsPagination:!1},this.options={datasource:p.datasource,limit:10,filter:null,query:p.query,sortColumn:null,sortOrder:SortOrder.ASCENDING,sortType:null,paginate:!0,clientSideSearching:!0,clientSideSorting:!0,clientSideLimiting:!0},this.store=writable({rows:[],info:null,schema:null,loading:!1,loaded:!1,query:p.query,pageNumber:0,cursor:null,cursors:[],resetKey:Math.random().toString(),error:null}),this.API=p==null?void 0:p.API,this.options={...this.options,...p},!this.API)throw"An API client is required for fetching data";if(this.getData=this.getData.bind(this),this.getPage=this.getPage.bind(this),this.getInitialData=this.getInitialData.bind(this),this.determineFeatureFlags=this.determineFeatureFlags.bind(this),this.refresh=this.refresh.bind(this),this.update=this.update.bind(this),this.hasNextPage=this.hasNextPage.bind(this),this.hasPrevPage=this.hasPrevPage.bind(this),this.nextPage=this.nextPage.bind(this),this.prevPage=this.prevPage.bind(this),this.derivedStore=derived(this.store,m=>({...m,...this.features,hasNextPage:this.hasNextPage(m),hasPrevPage:this.hasPrevPage(m)})),!this.options.datasource){this.store.update(m=>({...m,loaded:!0}));return}}get subscribe(){return this.derivedStore.subscribe}getDefaultSortColumn(p,m){return p!=null&&p.primaryDisplay&&m[p.primaryDisplay]?p.primaryDisplay:Object.keys(m)[0]}async getInitialData(){const{filter:p,paginate:m}=this.options,y=await this.getDefinition(),w=await this.determineFeatureFlags();this.features={supportsSearch:!!(w!=null&&w.supportsSearch),supportsSort:!!(w!=null&&w.supportsSort),supportsPagination:m&&!!(w!=null&&w.supportsPagination)};let S=this.getSchema(y);if(!S)return;if(S=this.enrichSchema(S),this.options.sortColumn&&!S[this.options.sortColumn]&&(this.options.sortColumn=null),this.options.sortColumn||(this.options.sortColumn=this.getDefaultSortColumn(y,S)),!this.options.sortColumn)this.options.sortOrder=SortOrder.ASCENDING,this.options.sortType=null;else{this.options.sortType=SortType.STRING;const O=S==null?void 0:S[this.options.sortColumn];((O==null?void 0:O.type)===FieldType.NUMBER||(O==null?void 0:O.type)===FieldType.BIGINT||"calculationType"in O&&(O!=null&&O.calculationType))&&(this.options.sortType=SortType.NUMBER),this.options.sortOrder?this.options.sortOrder=this.options.sortOrder.toLowerCase():this.options.sortOrder=SortOrder.ASCENDING}let k=this.options.query;k||(k=buildQuery(p??void 0)),this.store.update(O=>({...O,definition:y,schema:S,query:k,loading:!0,cursors:[],cursor:null}));const M=await this.getPage();this.store.update(O=>({...O,loading:!1,loaded:!0,pageNumber:0,rows:M.rows,info:M.info,cursors:m&&M.hasNextPage?[null,M.cursor]:[null],error:M.error,resetKey:Math.random().toString()}))}async getPage(){const{sortColumn:p,sortOrder:m,sortType:y,limit:w,clientSideSearching:S,clientSideSorting:k,clientSideLimiting:M}=this.options,{query:O}=get_store_value(this.store);let{rows:R,info:D,hasNextPage:H,cursor:N,error:W}=await this.getData();return!this.features.supportsSearch&&S&&(R=runQuery(R,O)),!this.features.supportsSort&&k&&y&&(R=sort(R,p,m,y)),!this.features.supportsPagination&&M&&(R=queryLimit(R,w)),{rows:R,info:D,hasNextPage:H,cursor:N,error:W}}getSchema(p){return(p==null?void 0:p.schema)??void 0}enrichSchema(p){let m={};for(const w of Object.keys(p)){const S=p[w];if(S.type===FieldType.JSON){const k=convertJSONSchemaToTableSchema(S,{squashObjects:!0});if(k)for(const M of Object.keys(k))m[`${w}.${M}`]={type:k[M].type,nestedJSON:!0}}}let y={};return Object.entries({...p,...m}).forEach(([w,S])=>{typeof S=="string"?y[w]={type:S,name:w}:y[w]={...S,type:S.type,name:w}}),y}async determineFeatureFlags(){return{supportsSearch:!1,supportsSort:!1,supportsPagination:!1}}async update(p){let m=!1;for(const[y,w]of Object.entries(p||{})){const S=this.options[y]??null;if(JSON.stringify(w??null)!==JSON.stringify(S)){m=!0;break}}m&&(this.options={...this.options,...fp$1.cloneDeep(p)},await this.getInitialData())}async refresh(){if(get_store_value(this.store).loading)return;this.store.update(O=>({...O,loading:!0}));const{rows:p,info:m,error:y,cursor:w}=await this.getPage();let{cursors:S}=get_store_value(this.store);const{pageNumber:k}=get_store_value(this.store);if(!p.length&&k>0)return this.store.update(O=>({...O,loading:!1,cursors:S.slice(0,k)})),await this.prevPage();S[k+1]!=w&&(S=S.slice(0,k+1),S[k+1]=w),this.store.update(O=>({...O,rows:p,info:m,loading:!1,error:y,cursors:S}))}hasNextPage(p){return p.cursors[p.pageNumber+1]!=null}hasPrevPage(p){return p.pageNumber>0}async nextPage(){const p=get_store_value(this.derivedStore);if(p.loading||!this.options.paginate||!p.hasNextPage)return;const m=p.cursors[p.pageNumber+1];this.store.update(O=>({...O,loading:!0,cursor:m,pageNumber:O.pageNumber+1}));const{rows:y,info:w,hasNextPage:S,cursor:k,error:M}=await this.getPage();this.store.update(O=>{let{cursors:R,pageNumber:D}=O;return S&&(R[D+1]=k),{...O,rows:y,info:w,cursors:R,loading:!1,error:M}})}async prevPage(){const p=get_store_value(this.derivedStore);if(p.loading||!this.options.paginate||!p.hasPrevPage)return;const m=p.cursors[p.pageNumber-1];this.store.update(k=>({...k,loading:!0,cursor:m,pageNumber:k.pageNumber-1}));const{rows:y,info:w,error:S}=await this.getPage();this.store.update(k=>({...k,rows:y,info:w,loading:!1,error:S}))}}class TableFetch extends BaseDataFetch{async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!0,supportsPagination:!0}}async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p.tableId))return null;try{return await this.API.fetchTableDefinition(p.tableId)}catch(m){return this.store.update(y=>({...y,error:m})),null}}async getData(){const{datasource:p,limit:m,sortColumn:y,sortOrder:w,sortType:S,paginate:k}=this.options,{tableId:M}=p,{cursor:O,query:R}=get_store_value(this.store);try{const D=await this.API.searchTable(M,{query:R,limit:m,sort:y,sortOrder:w??SortOrder.ASCENDING,sortType:S,paginate:k,bookmark:O});return{rows:(D==null?void 0:D.rows)||[],hasNextPage:(D==null?void 0:D.hasNextPage)||!1,cursor:(D==null?void 0:D.bookmark)||null}}catch(D){return{rows:[],hasNextPage:!1,error:D}}}}class ViewFetch extends BaseDataFetch{async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p.tableId))return null;try{return await this.API.fetchTableDefinition(p.tableId)}catch(m){return this.store.update(y=>({...y,error:m})),null}}getSchema(p){var y,w;const{datasource:m}=this.options;return(w=(y=p==null?void 0:p.views)==null?void 0:y[m==null?void 0:m.name])==null?void 0:w.schema}async getData(){const{datasource:p}=this.options;try{return{rows:await this.API.fetchViewData(p.name,{calculation:p.calculation,field:p.field,groupBy:p.groupBy,tableId:p.tableId})||[]}}catch(m){return console.error(m,{datasource:p}),{rows:[]}}}}class ViewV2Fetch extends BaseDataFetch{async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!0,supportsPagination:!0}}async getDefinition(){const{datasource:p}=this.options;try{const m=await this.API.viewV2.fetchDefinition(p.id);return m==null?void 0:m.data}catch(m){return this.store.update(y=>({...y,error:m})),null}}getDefaultSortColumn(){return null}async getData(){var D;const{datasource:p,limit:m,sortColumn:y,sortOrder:w,sortType:S,paginate:k}=this.options,{cursor:M,query:O,definition:R}=get_store_value(this.store);if((R==null?void 0:R.type)===ViewV2Type.CALCULATION&&!Object.values(R.schema||{}).some(isCalculationField))return{rows:[],hasNextPage:!1,cursor:null,error:null};!y&&((D=R==null?void 0:R.sort)!=null&&D.field)&&(this.options.sortColumn=R.sort.field,this.options.sortOrder=R.sort.order||SortOrder.ASCENDING);try{const H={query:O,paginate:k,limit:m,bookmark:M,sort:y,sortOrder:w,sortType:S};if(k){const N=await this.API.viewV2.fetch(p.id,{...H,paginate:k});return{rows:(N==null?void 0:N.rows)||[],hasNextPage:(N==null?void 0:N.hasNextPage)||!1,cursor:(N==null?void 0:N.bookmark)||null}}else{const N=await this.API.viewV2.fetch(p.id,{...H,paginate:k});return{rows:(N==null?void 0:N.rows)||[],hasNextPage:!1,cursor:null}}}catch(H){return{rows:[],hasNextPage:!1,cursor:null,error:H}}}}class QueryFetch extends BaseDataFetch{async determineFeatureFlags(){var y,w,S,k,M,O;const p=await this.getDefinition();return{supportsPagination:!!((w=(y=p==null?void 0:p.fields)==null?void 0:y.pagination)!=null&&w.type)&&!!((k=(S=p==null?void 0:p.fields)==null?void 0:S.pagination)!=null&&k.location)&&!!((O=(M=p==null?void 0:p.fields)==null?void 0:M.pagination)!=null&&O.pageParam)}}async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p._id))return null;try{const m=await this.API.fetchQueryDefinition(p._id);return m.fields||(m.fields=p.fields),m}catch{return null}}getDefaultSortColumn(){return null}async getData(){var D,H;const{datasource:p,limit:m,paginate:y}=this.options,{supportsPagination:w}=this.features,{cursor:S,definition:k}=get_store_value(this.store),M=(H=(D=k==null?void 0:k.fields)==null?void 0:D.pagination)==null?void 0:H.type,O=cloneDeep$1(p.queryParams||{});for(const N of(p==null?void 0:p.parameters)||[])O[N.name]||(O[N.name]=N.default);const R={parameters:O};if(y&&w){const N=M==="page"?parseInt(S||"1"):S;R.pagination={page:N,limit:m}}try{const N=await this.API.executeQuery(p==null?void 0:p._id,R),{data:W,pagination:J,...ee}=N;let le=null,ce=!1;return y&&w&&(M==="page"?(le=R.pagination.page+1,ce=(W==null?void 0:W.length)===m&&m>0):(le=J==null?void 0:J.cursor,ce=le!=null)),{rows:W||[],info:ee,cursor:le,hasNextPage:ce}}catch{return{rows:[],hasNextPage:!1}}}}class RelationshipFetch extends BaseDataFetch{async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p.tableId))return null;try{return await this.API.fetchTableDefinition(p.tableId)}catch(m){return this.store.update(y=>({...y,error:m})),null}}async getData(){const{datasource:p}=this.options;if(!(p!=null&&p.rowId)||!(p!=null&&p.rowTableId))return{rows:[]};try{return{rows:await this.API.fetchRelationshipData(p.rowTableId,p.rowId,p.fieldName)}}catch{return{rows:[]}}}}class NestedProviderFetch extends BaseDataFetch{async getDefinition(){var m,y;const{datasource:p}=this.options;return{schema:(m=p==null?void 0:p.value)==null?void 0:m.schema,primaryDisplay:(y=p==null?void 0:p.value)==null?void 0:y.primaryDisplay}}async getData(){var m;const{datasource:p}=this.options;return{rows:((m=p==null?void 0:p.value)==null?void 0:m.rows)||[],hasNextPage:!1,cursor:null}}}function isArrayOfStrings(v){return Array.isArray(v)&&!!v[0]&&typeof v[0]!="object"}class FieldFetch extends BaseDataFetch{async getDefinition(){const{datasource:p}=this.options;let m;return p.fieldType==="attachment"?m={url:{type:"string"},name:{type:"string"}}:p.fieldType==="array"&&(m={value:{type:"string"}}),{schema:m}}async getData(){const{datasource:p}=this.options,m=(p==null?void 0:p.value)||[];let y;return isArrayOfStrings(m)?y=m.map(w=>({value:w})):y=m,{rows:y||[],hasNextPage:!1,cursor:null}}}class JSONArrayFetch extends FieldFetch{async getDefinition(){const{datasource:p}=this.options;try{const m=await this.API.fetchTableDefinition(p.tableId);return{schema:getJSONArrayDatasourceSchema(m==null?void 0:m.schema,p)}}catch{return null}}}class UserFetch extends BaseDataFetch{constructor(p){super({...p,datasource:{type:"user",tableId:InternalTable.USER_METADATA}})}async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!1,supportsPagination:!0}}async getDefinition(){return{schema:{}}}async getData(){const{limit:p,paginate:m}=this.options,{cursor:y,query:w}=get_store_value(this.store),{appId:S,paginated:k,...M}=w,O=isSupportedUserSearch(M)?M:{};try{const R={bookmark:y??void 0,query:O??void 0,appId:S,paginate:k||m,limit:p},D=await this.API.searchUsers(R);return{rows:(D==null?void 0:D.data)||[],hasNextPage:(D==null?void 0:D.hasNextPage)||!1,cursor:(D==null?void 0:D.nextPage)||null}}catch(R){return{rows:[],hasNextPage:!1,error:R}}}}class GroupUserFetch extends BaseDataFetch{constructor(p){super({...p,datasource:{type:"groupUser",tableId:InternalTable.USER_METADATA}})}async determineFeatureFlags(){return{supportsSearch:!0,supportsSort:!1,supportsPagination:!0}}async getDefinition(){return{schema:{}}}async getData(){const{query:p,cursor:m}=get_store_value(this.store);try{const y=await this.API.getGroupUsers({id:p.groupId,emailSearch:p.emailSearch,bookmark:m??void 0});return{rows:(y==null?void 0:y.users)||[],hasNextPage:(y==null?void 0:y.hasNextPage)||!1,cursor:(y==null?void 0:y.bookmark)||null}}catch(y){return{rows:[],hasNextPage:!1,error:y}}}}class CustomFetch extends BaseDataFetch{getType(p){return p==null?"string":typeof p==="object"?Array.isArray(p)?"array":"json":isNaN(p)?"string":"number"}parseCustomData(p){if(!p)return[];if(Array.isArray(p))return p;if(typeof p=="string"){try{const m=JSON.parse(p);return Array.isArray(m)?m:[m]}catch{}return p.includes(`
442
442
  `)?p.split(`
443
443
  `).map(m=>m.trim()):p.split(",").map(m=>m.trim())}return[p]}enrichCustomData(p){return p!=null&&p.length?(p=p.filter(m=>m!=null&&m!==""&&!Array.isArray(m)),p.map(m=>{if(typeof m=="object")return m;if(typeof m=="string"){const y=m.split(",").map(S=>S.trim()),w={};for(let S=0;S<y.length;S++){const M=`Value${S===0?"":` ${S+1}`}`;w[M]=y[S]}return w}return{Value:m}})):[]}getCustomData(p){return this.enrichCustomData(this.parseCustomData(p==null?void 0:p.data))}async getDefinition(){const{datasource:p}=this.options,m={},y=this.getCustomData(p);if(!(y!=null&&y.length))return{schema:m};for(const w of y)for(const S of Object.keys(w))if(S!=="_id"&&!m[S]){let k=this.getType(w[S]);const M={};if(k==="string"){const O=[...new Set(y.map(D=>D[S]))];O.length/y.length<=.8&&O.length>1&&(k="options",M.inclusion=O)}else k==="array"&&(M.inclusion=[...new Set(y.map(O=>O[S]).flat())]);m[S]={type:k,constraints:M}}return{schema:m}}async getData(){const{datasource:p}=this.options;return{rows:this.getCustomData(p),hasNextPage:!1,cursor:null}}}class QueryArrayFetch extends FieldFetch{async getDefinition(){const{datasource:p}=this.options;if(!(p!=null&&p.tableId))return null;try{const m=await this.API.fetchQueryDefinition(p.tableId),y=generateQueryArraySchemas(m.schema,m.nestedSchemaFields);return{schema:getJSONArrayDatasourceSchema(y,p)}}catch{return null}}}const DataFetchMap={table:TableFetch,view:ViewFetch,viewV2:ViewV2Fetch,query:QueryFetch,link:RelationshipFetch,user:UserFetch,groupUser:GroupUserFetch,custom:CustomFetch,provider:NestedProviderFetch,field:FieldFetch,jsonarray:JSONArrayFetch,queryarray:QueryArrayFetch},fetchData=({API:v,datasource:p,options:m})=>{const y=DataFetchMap[p==null?void 0:p.type]||TableFetch,w=new y({API:v,datasource:p,...m});return w.getInitialData(),w},createEmptyFetchInstance=({API:v,datasource:p})=>{const m=DataFetchMap[p==null?void 0:p.type];return m?new m({API:v,datasource:p,query:null}):null},getDatasourceDefinition=async({API:v,datasource:p})=>{const m=createEmptyFetchInstance({API:v,datasource:p});return await(m==null?void 0:m.getDefinition())},getDatasourceSchema=({API:v,datasource:p,definition:m})=>{const y=createEmptyFetchInstance({API:v,datasource:p});return y==null?void 0:y.getSchema(m)},createLocalStorageStore=(v,p)=>{const m=writable(p,()=>{S();const k=({key:M})=>M===v&&S();return window.addEventListener("storage",k),()=>window.removeEventListener("storage",k)}),y=k=>{m.set(k),localStorage.setItem(v,JSON.stringify(k))},w=k=>y(k(get_store_value(m))),S=()=>{const k=localStorage.getItem(v);if(k==null)y(p);else try{m.set(JSON.parse(k))}catch{y(p)}};return{...m,set:y,update:w}},SplitPage_svelte_svelte_type_style_lang="",Testimonial_svelte_svelte_type_style_lang="",TestimonialPage_svelte_svelte_type_style_lang="",SignatureModal_svelte_svelte_type_style_lang="";function create_default_slot_2$r(v){let p,m,y,w={darkMode:v[3],value:v[1],saveIcon:!1};return m=new Signature({props:w}),v[8](m),m.$on("update",v[9]),{c(){p=element("div"),create_component(m.$$.fragment),attr(p,"class","signature-wrap modal svelte-1jbgrys")},m(S,k){insert(S,p,k),mount_component(m,p,null),y=!0},p(S,k){const M={};k&8&&(M.darkMode=S[3]),k&2&&(M.value=S[1]),m.$set(M)},i(S){y||(transition_in(m.$$.fragment,S),y=!0)},o(S){transition_out(m.$$.fragment,S),y=!1},d(S){S&&detach(p),v[8](null),destroy_component(m)}}}function create_default_slot_1$H(v){let p;return{c(){p=text$1(v[2])},m(m,y){insert(m,p,y)},p(m,y){y&4&&set_data(p,m[2])},d(m){m&&detach(p)}}}function create_header_slot(v){let p,m,y;return m=new Body({props:{$$slots:{default:[create_default_slot_1$H]},$$scope:{ctx:v}}}),{c(){p=element("div"),create_component(m.$$.fragment),attr(p,"slot","header")},m(w,S){insert(w,p,S),mount_component(m,p,null),y=!0},p(w,S){const k={};S&4100&&(k.$$scope={dirty:S,ctx:w}),m.$set(k)},i(w){y||(transition_in(m.$$.fragment,w),y=!0)},o(w){transition_out(m.$$.fragment,w),y=!1},d(w){w&&detach(p),destroy_component(m)}}}function create_default_slot$1y(v){let p,m;return p=new ModalContent({props:{showConfirmButton:!0,showCancelButton:!1,showCloseIcon:!1,custom:!0,disabled:!v[6],showDivider:!1,onConfirm:v[10],$$slots:{header:[create_header_slot],default:[create_default_slot_2$r]},$$scope:{ctx:v}}}),{c(){create_component(p.$$.fragment)},m(y,w){mount_component(p,y,w),m=!0},p(y,w){const S={};w&64&&(S.disabled=!y[6]),w&33&&(S.onConfirm=y[10]),w&4206&&(S.$$scope={dirty:w,ctx:y}),p.$set(S)},i(y){m||(transition_in(p.$$.fragment,y),m=!0)},o(y){transition_out(p.$$.fragment,y),m=!1},d(y){destroy_component(p,y)}}}function create_fragment$2W(v){let p,m,y={$$slots:{default:[create_default_slot$1y]},$$scope:{ctx:v}};return p=new Modal({props:y}),v[11](p),{c(){create_component(p.$$.fragment)},m(w,S){mount_component(p,w,S),m=!0},p(w,[S]){const k={};S&4207&&(k.$$scope={dirty:S,ctx:w}),p.$set(k)},i(w){m||(transition_in(p.$$.fragment,w),m=!0)},o(w){transition_out(p.$$.fragment,w),m=!1},d(w){v[11](null),destroy_component(p,w)}}}function instance$2U(v,p,m){let{onConfirm:y=()=>{}}=p,{value:w}=p,{title:S}=p,{darkMode:k}=p;const M=()=>{m(6,D=!1),O.show()};let O,R,D=!1;function H(ee){binding_callbacks[ee?"unshift":"push"](()=>{R=ee,m(5,R)})}const N=()=>{m(6,D=!0)},W=()=>{y(R)};function J(ee){binding_callbacks[ee?"unshift":"push"](()=>{O=ee,m(4,O)})}return v.$$set=ee=>{"onConfirm"in ee&&m(0,y=ee.onConfirm),"value"in ee&&m(1,w=ee.value),"title"in ee&&m(2,S=ee.title),"darkMode"in ee&&m(3,k=ee.darkMode)},[y,w,S,k,O,R,D,M,H,N,W,J]}class SignatureModal extends SvelteComponent{constructor(p){super(),init$1(this,p,instance$2U,create_fragment$2W,safe_not_equal,{onConfirm:0,value:1,title:2,darkMode:3,show:7})}get show(){return this.$$.ctx[7]}}function create_if_block$1M(v){let p,m;return p=new AbsTooltip({props:{text:v[3]?getUserLabel(v[0]):"",position:v[2],color:getUserColor(v[0]),$$slots:{default:[create_default_slot$1x]},$$scope:{ctx:v}}}),{c(){create_component(p.$$.fragment)},m(y,w){mount_component(p,y,w),m=!0},p(y,w){const S={};w&9&&(S.text=y[3]?getUserLabel(y[0]):""),w&4&&(S.position=y[2]),w&1&&(S.color=getUserColor(y[0])),w&19&&(S.$$scope={dirty:w,ctx:y}),p.$set(S)},i(y){m||(transition_in(p.$$.fragment,y),m=!0)},o(y){transition_out(p.$$.fragment,y),m=!1},d(y){destroy_component(p,y)}}}function create_default_slot$1x(v){let p,m;return p=new Avatar({props:{size:v[1],initials:getUserInitials(v[0]),color:getUserColor(v[0])}}),{c(){create_component(p.$$.fragment)},m(y,w){mount_component(p,y,w),m=!0},p(y,w){const S={};w&2&&(S.size=y[1]),w&1&&(S.initials=getUserInitials(y[0])),w&1&&(S.color=getUserColor(y[0])),p.$set(S)},i(y){m||(transition_in(p.$$.fragment,y),m=!0)},o(y){transition_out(p.$$.fragment,y),m=!1},d(y){destroy_component(p,y)}}}function create_fragment$2V(v){let p,m,y=v[0]&&create_if_block$1M(v);return{c(){y&&y.c(),p=empty$1()},m(w,S){y&&y.m(w,S),insert(w,p,S),m=!0},p(w,[S]){w[0]?y?(y.p(w,S),S&1&&transition_in(y,1)):(y=create_if_block$1M(w),y.c(),transition_in(y,1),y.m(p.parentNode,p)):y&&(group_outros(),transition_out(y,1,1,()=>{y=null}),check_outros())},i(w){m||(transition_in(y),m=!0)},o(w){transition_out(y),m=!1},d(w){w&&detach(p),y&&y.d(w)}}}function instance$2T(v,p,m){let{user:y}=p,{size:w="S"}=p,{tooltipPosition:S=TooltipPosition.Top}=p,{showTooltip:k=!0}=p;return v.$$set=M=>{"user"in M&&m(0,y=M.user),"size"in M&&m(1,w=M.size),"tooltipPosition"in M&&m(2,S=M.tooltipPosition),"showTooltip"in M&&m(3,k=M.showTooltip)},[y,w,S,k]}class UserAvatar extends SvelteComponent{constructor(p){super(),init$1(this,p,instance$2T,create_fragment$2V,safe_not_equal,{user:0,size:1,tooltipPosition:2,showTooltip:3})}}const UserAvatars_svelte_svelte_type_style_lang$1="",Updating_svelte_svelte_type_style_lang="";function create_else_block_1$a(v){let p;return{c(){p=text$1("Something went wrong!")},m(m,y){insert(m,p,y)},d(m){m&&detach(p)}}}function create_if_block_1$V(v){let p;return{c(){p=text$1("System update")},m(m,y){insert(m,p,y)},d(m){m&&detach(p)}}}function create_else_block$w(v){let p,m,y,w,S;return{c(){p=text$1(`An error occurred, please try again later.
444
444
  `),m=element("br"),y=text$1(`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "3.12.11",
4
+ "version": "3.12.12",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -216,5 +216,5 @@
216
216
  }
217
217
  }
218
218
  },
219
- "gitHead": "b5eea4bb446eb6d79440b12dfdb5c492c7ec21dc"
219
+ "gitHead": "77b10df86f5e46825b5e894f9eec9b8f401e4a45"
220
220
  }