@squidcloud/client 1.0.502 → 1.0.503

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var e={273(e,t){Object.defineProperty(t,"__esModule",{value:!0})},150(e,t,i){var n=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,s)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||n(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0});const r=i(642);t.default=r.PromisePool,s(i(273),t),s(i(642),t),s(i(837),t),s(i(426),t),s(i(858),t),s(i(172),t)},837(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class i extends Error{constructor(e,t){super(),this.raw=e,this.item=t,this.name=this.constructor.name,this.message=this.messageFrom(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e,t){return new this(e,t)}messageFrom(e){return e instanceof Error||"object"==typeof e?e.message:"string"==typeof e||"number"==typeof e?e.toString():""}}t.PromisePoolError=i},234(e,t,i){t.PromisePoolExecutor=void 0;const n=i(642),s=i(172),r=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],processedItemsCounter:0,taskTimeout:0,shouldStoreProcessedItems:!0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw s.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}storeProcessedItems(e=!0){return this.meta.shouldStoreProcessedItems=e,this}shouldStoreProcessedItems(){return this.meta.shouldStoreProcessedItems}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}flushProcessedItems(){this.meta.processedItems=[]}incrementProcessedItemsCounter(){this.meta.processedItemsCounter+=1}processedCount(){return this.meta.processedItemsCounter}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw s.ValidationError.createFrom("The first parameter for the .process(fn) method must be a function");const e=this.taskTimeout();if(!(null==e||"number"==typeof e&&e>=0))throw s.ValidationError.createFrom(`"timeout" must be undefined or a number. A number must be 0 or up. Received "${String(e)}" (${typeof e})`);if(!this.areItemsValid())throw s.ValidationError.createFrom(`"items" must be an array, an iterable or an async iterable. Received "${typeof this.items()}"`);if(this.errorHandler&&"function"!=typeof this.errorHandler)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof e}"`)}),this}areItemsValid(){const e=this.items();return Array.isArray(e)||"function"==typeof e[Symbol.iterator]||"function"==typeof e[Symbol.asyncIterator]}prepareResultsArray(){const e=this.items();return Array.isArray(e)&&this.shouldUseCorrespondingResults()&&(this.meta.results=Array(e.length).fill(n.PromisePool.notRun)),this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=n.PromisePool.notRun),this.startProcessing(t,e),e+=1,await this.waitForProcessingSlot()}return await this.drained()}async waitForProcessingSlot(){for(;this.hasReachedConcurrencyLimit();)await this.waitForActiveTaskToFinish()}async waitForActiveTaskToFinish(){await Promise.race(this.tasks())}startProcessing(e,t){const i=this.createTaskFor(e,t).then(e=>{this.save(e,t).removeActive(i)}).catch(async n=>{await this.handleErrorFor(n,e,t),this.removeActive(i)}).finally(()=>{this.shouldStoreProcessedItems()&&this.processedItems().push(e),this.incrementProcessedItemsCounter(),this.runOnTaskFinishedHandlers(e)});this.tasks().push(i),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[i,n]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),i()]).finally(n)}createTaskTimeout(e){let t;return[async()=>new Promise((i,n)=>{t=setTimeout(()=>{n(new r.PromisePoolError(`Task in promise pool timed out after ${this.taskTimeout()}ms`,e))},this.taskTimeout())}),()=>clearTimeout(t)]}save(e,t){return this.shouldUseCorrespondingResults()?this.results()[t]=e:this.results().push(e),this}removeActive(e){return this.tasks().splice(this.tasks().indexOf(e),1),this}async handleErrorFor(e,t,i){if(this.shouldUseCorrespondingResults()&&(this.results()[i]=n.PromisePool.failed),!this.isStoppingThePoolError(e)){if(this.isValidationError(e))throw this.markAsStopped(),e;this.hasErrorHandler()?await this.runErrorHandlerFor(e,t):this.saveErrorFor(e,t)}}isStoppingThePoolError(e){return e instanceof o.StopThePromisePoolError}isValidationError(e){return e instanceof s.ValidationError}async runErrorHandlerFor(e,t){try{await(this.errorHandler?.(e,t,this))}catch(e){this.rethrowIfNotStoppingThePool(e)}}runOnTaskStartedHandlers(e){this.onTaskStartedHandlers.forEach(t=>{t(e,this)})}runOnTaskFinishedHandlers(e){this.onTaskFinishedHandlers.forEach(t=>{t(e,this)})}rethrowIfNotStoppingThePool(e){if(!this.isStoppingThePoolError(e))throw e}saveErrorFor(e,t){this.errors().push(r.PromisePoolError.createFrom(e,t))}async drained(){return await this.drainActiveTasks(),{errors:this.errors(),results:this.results()}}async drainActiveTasks(){await Promise.all(this.tasks())}}},642(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const n=i(234);class s{constructor(e){this.shouldStoreProcessedItems=!0,this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new s(e).withConcurrency(this.concurrency);return"function"==typeof this.errorHandler&&t.handleError(this.errorHandler),"number"==typeof this.timeout?t.withTaskTimeout(this.timeout):t}static for(e){return(new this).for(e)}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers.push(e),this}dontStoreProcessedItems(){return this.shouldStoreProcessedItems=!1,this}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new n.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).storeProcessedItems(this.shouldStoreProcessedItems).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=s,s.notRun=Symbol("notRun"),s.failed=Symbol("failed")},426(e,t){Object.defineProperty(t,"__esModule",{value:!0})},858(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i},172(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class i extends Error{constructor(e){super(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e){return new this(e)}}t.ValidationError=i},86(e){e.exports=require("ws")}};const t={};function i(n){const s=t[n];if(void 0!==s)return s.exports;const r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,i),r.exports}i.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var s=t[n++],r=t[n++];i.o(e,s)?0===r&&n++:0===r?Object.defineProperty(e,s,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,s,{enumerable:!0,get:r})}else for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.hasOwn(e,t),i.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};let n={};i.r(n),i.d(n,{AGENT_STATUS_TITLE_ACCESSING_KB:()=>l,AGENT_STATUS_TITLE_AGENT_RESPONSE:()=>u,AGENT_STATUS_TITLE_AI_FUNCTION_RESULT:()=>h,AGENT_STATUS_TITLE_CALLING_AI_FUNCTION:()=>d,AGENT_STATUS_TITLE_GREPPING_KB:()=>f,AGENT_STATUS_TITLE_INSPECTING_KB_METADATA:()=>p,AGENT_STATUS_TITLE_QUERYING_KB_GRAPH:()=>g,AGENT_STATUS_TITLE_QUERYING_SPREADSHEET:()=>y,AI_AGENTS_INTEGRATION_ID:()=>me,AI_AGENT_CONNECTION_EVENT_TYPE:()=>w,AI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>K,AI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>V,AI_CHAT_MESSAGE_SOURCE:()=>I,AI_CODE_INTERPRETER_PROVIDER_TYPES:()=>T,AI_EMBEDDINGS_MODEL_NAMES:()=>j,AI_FILE_PROVIDER_TYPES:()=>M,AI_IMAGE_MODEL_NAMES:()=>H,AI_KB_ACCESS_CONTROL_MODES:()=>ee,AI_MODEL_SOURCES:()=>z,AI_PROVIDER_ERROR_TYPE:()=>m,AI_PROVIDER_TYPES:()=>_,AI_VOICE_GREETING_MODES:()=>ue,AI_VOICE_RELAY_PROVIDERS:()=>ce,AI_VOICE_SESSION_EVENT_TYPE:()=>le,ALL_OPERATORS:()=>Be,ANTHROPIC_CHAT_MODEL_NAMES:()=>C,API_INJECTION_FIELD_TYPES:()=>de,ARRAY_OPERATORS:()=>Pe,AUTH_INTEGRATION_TYPES:()=>Se,AdminClient:()=>ct,AiAgentClient:()=>Zt,AiAgentReference:()=>Yt,AiAudioClient:()=>ti,AiClient:()=>hi,AiFilesClient:()=>ii,AiImageClient:()=>ni,AiKnowledgeBaseClient:()=>ai,AiKnowledgeBaseReference:()=>oi,AiMatchMakingClient:()=>ci,AiVoiceClient:()=>di,AiWebVoiceCall:()=>li,ApiClient:()=>gi,ApiKeysSecretClient:()=>at,AuthManager:()=>fi,BEDROCK_EMBEDDING_MODEL_NAMES:()=>F,BUILT_IN_AGENT_ID:()=>ge,BUILT_IN_DB_INTEGRATION_ID:()=>Ee,BUILT_IN_QUEUE_INTEGRATION_ID:()=>Te,BUILT_IN_STORAGE_INTEGRATION_ID:()=>ke,BULK_INGESTION_MAX_MULTIPART_FILE_BYTES:()=>se,BULK_INGESTION_SPEEDS:()=>ae,BackendFunctionManager:()=>Bi,BaseQueryBuilder:()=>on,CLIENT_CONNECTION_STATES:()=>Le,CLIENT_ID_GENERATOR_KEY:()=>$i,CLIENT_REQUEST_ID_GENERATOR_KEY:()=>Gi,CONNECTOR_IDS:()=>fe,Changes:()=>un,ClientIdService:()=>Qi,CollectionReference:()=>gn,CollectionReferenceFactory:()=>yn,ConnectionDetails:()=>mn,ConnectorClient:()=>a,DATA_INTEGRATION_TYPES:()=>be,DEFAULT_PII_CLASSIFIER_MODEL:()=>S,DEFAULT_PII_ENTITY_TYPES:()=>b,DEFAULT_SHORT_ID_LENGTH:()=>18,DOC_ID_FIELD:()=>je,DataManager:()=>Yn,DereferencedJoin:()=>dn,DestructManager:()=>Zn,DistributedLockImpl:()=>ts,DistributedLockManager:()=>es,DocumentReference:()=>nn,DocumentReferenceFactory:()=>ss,DocumentStore:()=>rs,EMPTY_CHAT_ID:()=>ei,ENVIRONMENT_IDS:()=>pe,EventsClient:()=>os,ExternalAuthClient:()=>as,ExtractionClient:()=>cs,FETCH_BEYOND_LIMIT:()=>100,FILE_NAME_METADATA_FIELD_NAME:()=>ie,FLUX_MODEL_NAMES:()=>G,FOLDER_PATH_METADATA_FIELD:()=>ne,FOLDER_PATH_METADATA_FIELD_NAME:()=>te,FUNCTION_AFFINITY_SCOPES:()=>X,GEMINI_CHAT_MODEL_NAMES:()=>A,GRAPHQL_INTEGRATION_TYPES:()=>ve,GREP_KNOWLEDGE_BASE_DEFAULT_MAX_MATCHES:()=>50,GREP_KNOWLEDGE_BASE_MAX_MATCHES:()=>200,GREP_KNOWLEDGE_BASE_MAX_MATCH_LINE_CHARS:()=>500,GREP_KNOWLEDGE_BASE_MAX_PATTERN_CHARS:()=>500,GROK_CHAT_MODEL_NAMES:()=>O,GroupedJoin:()=>pn,HTTP_INTEGRATION_TYPES:()=>_e,HttpStatus:()=>ye,INTEGRATION_SCHEMA_TYPES:()=>Me,INTEGRATION_TYPES:()=>Ie,IntegrationClient:()=>rt,JobClient:()=>us,JoinQueryBuilder:()=>ln,KNOWLEDGE_BASE_GRAPH_EXPLORE_MAX_NODES:()=>1e3,KNOWLEDGE_BASE_GRAPH_SEARCH_MAX_LENGTH:()=>200,LangGraphClient:()=>ds,LangGraphReference:()=>ls,LastUsedValueExecuteFunctionCache:()=>Fi,LimitUnderflowState:()=>Jn,LocalQueryManager:()=>Ps,MAX_UPLOAD_FILE_BYTES:()=>re,MCP_OAUTH_INTEGRATION_TYPES:()=>we,METRIC_DOMAIN:()=>Ne,METRIC_FUNCTIONS:()=>Re,METRIC_INTERVAL_ALIGNMENT:()=>qe,METRIC_NO_DATA_BEHAVIOR:()=>Fe,ManagementClient:()=>Ms,MatchMaker:()=>ui,MutationSender:()=>Es,NOOP_FN:()=>gs,NativeQueryManager:()=>Ts,NotificationClient:()=>ks,OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>U,OPENAI_AUDIO_MODEL_NAMES:()=>Q,OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>L,OPENAI_CHAT_MODEL_NAMES:()=>k,OPENAI_EMBEDDINGS_MODEL_NAMES:()=>N,OPENAI_IMAGE_MODEL_NAMES:()=>x,OPEN_AI_CREATE_SPEECH_FORMATS:()=>W,ObservabilityClient:()=>Os,Pagination:()=>sn,QueryBuilder:()=>cn,QueryBuilderFactory:()=>rn,QuerySender:()=>xs,QuerySubscriptionManager:()=>ar,QueueManagerFactory:()=>dr,QueueManagerImpl:()=>pr,RAG_TYPES:()=>oe,RERANK_PROVIDERS:()=>v,RUN_IN_TRANSACTION_MUTEX:()=>zn,RateLimiter:()=>gr,RpcManager:()=>fr,SOURCE_CODE_ANALYZER_MODELS:()=>ze,SOURCE_CODE_ANALYZE_FUNCTION_ID:()=>Ke,SOURCE_CODE_CACHE_STRATEGIES:()=>Je,SOURCE_CODE_EXECUTION_MODES:()=>Ye,SOURCE_CODE_INTEGRATION_TYPES:()=>Ze,SOURCE_CODE_MAX_REPOSITORIES:()=>20,SOURCE_CODE_MAX_SUPPLEMENTAL_INSTRUCTIONS_LENGTH:()=>2e4,SOURCE_CONTROL_PROVIDERS:()=>Xe,SQUID_BUILT_IN_INTEGRATION_IDS:()=>Oe,SQUID_METRIC_NAMES:()=>De,SQUID_REGIONS:()=>xe,STABLE_DIFFUSION_MODEL_NAMES:()=>$,SchedulerClient:()=>Ir,SecretClient:()=>ot,SocketManager:()=>wr,Squid:()=>Or,SquidClientError:()=>fs,StorageClient:()=>Tr,VECTOR_DB_TYPES:()=>Z,VENDOR_AI_CHAT_MODEL_NAMES:()=>D,VOYAGE_EMBEDDING_MODEL_NAMES:()=>q,WebClient:()=>kr,WebhookManager:()=>Ar,assertNotPassiveMode:()=>mr,compareArgsByReference:()=>Ni,compareArgsBySerializedValue:()=>qi,deserializeQuery:()=>qs,embeddingModelSelectionOf:()=>J,generateId:()=>Pt,generateShortId:()=>Ut,generateShortIds:()=>Qt,generateUUID:()=>Ft,generateUUIDPolyfill:()=>jt,getConsoleUrl:()=>o,getCustomizationFlag:()=>xi,isAiEmbeddingsModelName:()=>P,isBuiltInIntegrationId:()=>Ce,isFileCapableProviderType:()=>E,isIntegrationDisabled:()=>Ae,isIntegrationEmbeddingModelSpec:()=>B,isIntegrationModelSpec:()=>Y,isPlaceholderParam:()=>he,isVendorAiChatModelName:()=>R,loadQueryResultDocIds:()=>Ns,normalizeBitbucketRepositorySelection:()=>tt,normalizeGitHubRepositorySelection:()=>et,observeAiStatusUpdates:()=>Jt,rawSquidHttpDelete:()=>ws,rawSquidHttpGet:()=>Is,rawSquidHttpPatch:()=>Ss,rawSquidHttpPost:()=>ms,rawSquidHttpPut:()=>bs,transformFileArgs:()=>ji,tryDeserializing:()=>_s,visitQueryResults:()=>Rs});const s="8000";function r(e,t,i,n,r){let o="https",a=`${n||t}.${r||e}.${new URL("https://squid.cloud").host}`,c="";/^local/.test(e)&&(o="http",c=s,/android$/.test(e)?a="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(a="localhost"));const u=o+"://"+a+(c?`:${c}`:""),l=i.replace(/^\/+/,"");return l?`${u}/${l}`:u}function o(e,t,i=""){return r(function(e,t){return t||(e.includes("sandbox")?"squidai.westus3.azure.sandbox":e.includes("local")?"local":e.includes("staging")?"squidai.westus3.azure.staging":"us-east-1.aws")}(e,t),"console",i)}class a{constructor(e,t,i,n){this.rpcManager=e,this.iacBaseUrl=o(t,n,`openapi/iac/applications/${i}/connectors`)}async list(){return await this.rpcManager.get(this.iacBaseUrl)??[]}async connect(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e}`,{})}async disconnect(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}}const c={sharepoint:{functionName:"getSharePointPathStatus",buildArgs:(e,t)=>[{integrationId:e,path:t}]}},u="Agent Response",l="Accessing Knowledge Base",d="Calling AI Function",h="AI Function Result",p="Inspecting Knowledge Base Metadata",g="Querying Knowledge Base Graph",f="Searching Knowledge Base Text",y="Querying Spreadsheet",m="AI_PROVIDER_ERROR",I=["user","ai"],b=["email","phoneNumber","creditCard","ssn","iban","passport"],S="gpt-6-luna",w="ai-agent-connection-event",v=["cohere","voyage","none"],_=["anthropic","bedrock","claude-code","codex","cohere","flux","gemini","openai","openai-compatible","grok","stability","voyage","mistral","textract","azure_document_intelligence","vertex","external"],M=["openai","gemini","anthropic","grok"];function E(e){return M.includes(e)}const T=["openai","anthropic","gemini"],k=["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-luna","gpt-6.1-sol"],A=["gemini-3.1-pro","gemini-3.8-flash","gemini-3.5-flash-lite"],O=["grok-4.6","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],C=["claude-fable-5","claude-fable-5-1","claude-haiku-4-5-20251001","claude-opus-5-5","claude-sonnet-5-5"],D=[...k,...C,...A,...O];function R(e){return D.includes(e)}const N=["text-embedding-3-small"],q=["voyage-3-large","voyage-4-large","voyage-4"],F=["titan-embed-text-v2"],j=[...N,...q,...F];function P(e){return j.includes(e)}function B(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e&&"dimensions"in e}const x=["gpt-image-1","gpt-image-1-mini","gpt-image-1.5","gpt-image-2","gpt-image-2-2026-04-21","chatgpt-image-latest"],L=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],U=["tts-1","tts-1-hd","gpt-4o-mini-tts"],Q=[...L,...U],$=["stable-diffusion-core"],G=["flux-pro-1.1","flux-kontext-pro"],H=[...x,...$,...G],V=[...L],K=[...U],W=["mp3","opus","aac","flac","wav","pcm"],z=["vendor","connector","custom"];function J(e){return void 0!==e.integrationId&&void 0!==e.dimensions?{integrationId:e.integrationId,model:e.modelId,dimensions:e.dimensions}:e.modelId}function Y(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const X=["pod","worker"],Z=["postgres","mongoAtlas"],ee=["none","enforced"],te="folderPath",ie="filename",ne={name:te,dataType:"string",required:!1,llmExtraction:!1},se=104857600,re=524288e3,oe=["contextual","basic"],ae=["economy","auto","fast"],ce=["twilio","openai"],ue=["phrase","agent"],le="ai-voice-session-event",de=["secret","regular"];function he(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const pe=["dev","prod"],ge="built_in_agent",fe=["bitbucket","confluence","connect_companion","cotomi","elevenlabs","openai_voice","essentials","freshdesk","generic_site_ingester","github","google_calendar","google_drive","hubspot","sharepoint","jira","jira_jsm","linear","mail","onedrive","outlook","salesforce","servicenow_csm","slack","teams","ticketmind_companion","twilio","zendesk"],ye={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,MOVED_TEMPORARILY:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,REQUEST_TOO_LONG:413,REQUEST_URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,REQUESTED_RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,INSUFFICIENT_SPACE_ON_RESOURCE:419,METHOD_FAILURE:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,INSUFFICIENT_STORAGE:507,NETWORK_AUTHENTICATION_REQUIRED:511},me="ai_agents",Ie=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_blob","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","bitbucket","built_in_azure_blob","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","azure-entra-external-id","azure-entra-id","dynamodb","elasticsearch","firebase_auth","firestore","gcs","generic_site_ingester","github","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jira_jsm","jwt_hmac","jwt_rsa","kafka","keycloak","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","outlook","oracledb","pinecone","postgres","redis","s3","salesforce","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","twilio","elevenlabs","openai_voice","mcp","a2a","legend","teams","openai_compatible","openai_compatible_embedding","sharepoint","vertex"],be=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","snowflake","elasticsearch","legend"],Se=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth","azure-entra-external-id","azure-entra-id"],we=["auth0","azure-entra-id","azure-entra-external-id"],ve=["graphql"],_e=["api"],Me=["data","api","graphql"],Ee="built_in_db",Te="built_in_queue",ke="built_in_storage";function Ae(e){return!1===e.enabled}const Oe=[Ee,Te,ke];function Ce(e){return Oe.includes(e)}const De=["squid_functionExecution_count","squid_functionExecution_time"],Re=["sum","max","min","average","median","p95","p99","count"],Ne=["user","squid"],qe=["align-by-start-time","align-by-end-time"],Fe=["return-no-result-groups","return-result-group-with-default-values"],je="__docId__",Pe=["in","not in","array_includes_some","array_includes_all","array_not_includes"],Be=[...Pe,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],xe=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],Le=["CONNECTED","DISCONNECTED","REMOVED"];function Ue(e){return null!=e}let Qe=e=>new Error(e);function $e(e,t,...i){e||function(e,...t){const i=He(e);if("object"==typeof i)throw i;throw Qe(i||"Assertion error",...t)}(t,...i)}function Ge(e,t,...i){return $e(e,t,...i),e}function He(e){return void 0===e?"":"string"==typeof e?e:e()}function Ve(e,t,i){const n=He(e);if("object"==typeof n)throw n;return`${n?`${n}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(i)}`}const Ke="analyzeCode",We=20,ze=["claude-code","codex"],Je=["reuse","recreate"],Ye=["read-only","write"],Xe=["github","bitbucket"],Ze=["github","bitbucket"];function et(e){const t=function(e){const t=new Set,i=new Set;for(const n of e){$e(Number.isSafeInteger(n.id)&&n.id>0,"GITHUB_REPOSITORY_ID_INVALID"),$e(!t.has(n.id),"GITHUB_REPOSITORY_IDS_MUST_BE_UNIQUE"),t.add(n.id),$e(it(n.fullName),"GITHUB_REPOSITORY_NAME_INVALID");const e=n.fullName.toLowerCase();$e(!i.has(e),"GITHUB_REPOSITORIES_MUST_BE_UNIQUE"),i.add(e),$e(n.defaultBranch.trim(),"GITHUB_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),nt(n.cloneUrl,n.fullName,!0),nt(n.htmlUrl,n.fullName,!1)}return e}(e.repositories??[]),i=0===t.length?e.repository:void 0,n=t.map(e=>e.fullName);$e(t.length>0||i,"GITHUB_REPOSITORIES_REQUIRED"),$e(t.length<=We,"GITHUB_REPOSITORY_LIMIT_EXCEEDED");const s=e.defaultRepository??n[0]??i;return $e(s,"GITHUB_DEFAULT_REPOSITORY_REQUIRED"),$e(n.some(e=>e.toLowerCase()===s.toLowerCase())||i?.toLowerCase()===s.toLowerCase(),"GITHUB_DEFAULT_REPOSITORY_NOT_ALLOWED"),{...i?{legacyRepository:i}:{},repositories:t,defaultRepository:s}}function tt(e){const t=e.workspace;$e(t.trim()===t&&/^[A-Za-z0-9_-]+$/.test(t),"BITBUCKET_WORKSPACE_INVALID");const i=e.repositories;$e(i.length>0,"BITBUCKET_REPOSITORIES_REQUIRED"),$e(i.length<=We,"BITBUCKET_REPOSITORY_LIMIT_EXCEEDED");const n=new Set,s=new Set;for(const e of i){const i=e.uuid.trim();$e(i===e.uuid&&i.length>0,"BITBUCKET_REPOSITORY_ID_INVALID");const r=i.toLowerCase();$e(!n.has(r),"BITBUCKET_REPOSITORY_IDS_MUST_BE_UNIQUE"),n.add(r);const o=`${t}/`;$e(e.fullName.toLowerCase().startsWith(o.toLowerCase())&&e.fullName.length>o.length&&!e.fullName.slice(o.length).includes("/")&&!/\s/.test(e.fullName),"BITBUCKET_REPOSITORY_WORKSPACE_MISMATCH");const a=e.fullName.toLowerCase();$e(!s.has(a),"BITBUCKET_REPOSITORIES_MUST_BE_UNIQUE"),s.add(a),$e(e.defaultBranch.trim(),"BITBUCKET_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),st(e.cloneUrl,e.fullName,!0),st(e.webUrl,e.fullName,!1)}const r=e.defaultRepository;return $e(r&&i.some(e=>e.fullName.toLowerCase()===r.toLowerCase()),"BITBUCKET_DEFAULT_REPOSITORY_NOT_ALLOWED"),{repositories:i,defaultRepository:r}}function it(e){return/^[^/\s]+\/[^/\s]+$/.test(e)}function nt(e,t,i){let n;try{n=new URL(e)}catch{throw new Error("GITHUB_REPOSITORY_URL_INVALID")}const s=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?github\.com:\d+(?:\/|$)/i.test(e);$e(!("https:"!==n.protocol||"github.com"!==n.hostname||r||n.username||n.password||n.search||n.hash||n.pathname!==s),"GITHUB_REPOSITORY_URL_INVALID")}function st(e,t,i){let n;try{n=new URL(e)}catch{throw new Error("BITBUCKET_REPOSITORY_URL_INVALID")}const s=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?bitbucket\.org:\d+(?:\/|$)/i.test(e);$e(!("https:"!==n.protocol||"bitbucket.org"!==n.hostname||r||n.username||n.password||n.search||n.hash||n.pathname!==s),"BITBUCKET_REPOSITORY_URL_INVALID")}class rt{constructor(e,t,i,n,s){this.rpcManager=e,this.backendFunctionManager=s,this.iacBaseUrl=o(t,n,`openapi/iac/applications/${i}/integrations`)}async list(e,t){return(await this.rpcManager.get(this.iacBaseUrl)).filter(i=>(!e||i.type===e)&&(t?.includeDisabled||!Ae(i)))}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async getPathStatus(e,t){const i=await this.get(e);if(!i)throw new Error(`Integration not found: ${e}`);return async function(e,t,i,n){const s=c[t];if(!s)return{supported:!1};const r=await e.executeFunction(s.functionName,...s.buildArgs(i,n));return{supported:!0,knowledgeBaseId:r.knowledgeBaseId,entries:r.entries,truncated:r.truncated}}(this.backendFunctionManager,i.type,e,t)}async enable(e){await this.setEnabled(e,!0)}async disable(e){await this.setEnabled(e,!1)}async setEnabled(e,t){const i=await this.get(e);if(!i)throw new Error(`Integration not found: ${e}`);await this.upsertIntegration({...i,enabled:t})}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}async discoverSourceRepositories(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-source-repositories`,{})}async discoverSourceRepositoriesFromDraft(e){return await this.rpcManager.post(`${this.iacBaseUrl}/discover-source-repositories`,e)}async generateAiDescriptionsForDataSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions`,t)}async generateAiDescriptionsForAssociations(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-associations`,t)}async generateAiDescriptionsForStoredProcedures(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-stored-procedures`,t)}async generateAiDescriptionsForEndpoints(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-endpoints`,t)}async discoverDataConnectionSchema(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-schema`,{})}async startRelationshipInference(e,t){const{jobId:i}=await this.rpcManager.post(`${this.iacBaseUrl}/${e}/infer-relationships`,t??{});return i}async getRelationshipInference(e){const{run:t}=await this.rpcManager.get(`${this.iacBaseUrl}/${e}/infer-relationships`);return t}async cancelRelationshipInference(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}/infer-relationships`)}async testDataConnection(e){return await this.rpcManager.post(`${this.iacBaseUrl}/test-connection`,e)}async discoverGraphQLConnectionSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-graphql-schema`,t)}async discoverOpenApiSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema`,t)}async discoverOpenApiSchemaFromFile(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema-from-file`,{})}}class ot{constructor(e){this.rpcManager=e}get apiKeys(){return new at(this.rpcManager)}async get(e){const t={key:e};return await this.rpcManager.post("secret/get",t)||void 0}getAll(){return this.rpcManager.post("secret/getAll",{})}async upsert(e,t){return this.upsertMany([{key:e,value:t}]).then(e=>e[0])}async upsertMany(e){if(0===e.length)return[];const t={entries:e};return this.rpcManager.post("secret/upsert",t)}delete(e,t=!1){const i={keys:[e],force:t};return this.rpcManager.post("secret/delete",i)}async deleteMany(e,t=!1){if(0===e.length)return;const i={keys:e,force:t};return this.rpcManager.post("secret/delete",i)}}class at{constructor(e){this.rpcManager=e}get(e){const t={key:e};return this.rpcManager.post("secret/api-key/get",t)}getAll(){return this.rpcManager.post("secret/api-key/getAll",{})}upsert(e){const t={key:e};return this.rpcManager.post("secret/api-key/upsert",t)}delete(e){const t={key:e};return this.rpcManager.post("secret/api-key/delete",t)}}class ct{constructor(e,t,i,n,s){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=n,this.backendFunctionManager=s,this.integrationClient=new rt(this.rpcManager,this.region,this.appId,this.consoleRegion,this.backendFunctionManager),this.connectorClient=new a(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new ot(this.rpcManager)}integrations(){return this.integrationClient}connectors(){return this.connectorClient}secrets(){return this.secretClient}}const ut=require("rxjs");function lt(e){return"function"==typeof e}function dt(e){return function(t){if(function(e){return lt(null==e?void 0:e.lift)}(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw new TypeError("Unable to lift unknown Observable type")}}var ht=function(e,t){return ht=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},ht(e,t)};function pt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}ht(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function gt(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function ft(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,s,r=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(e){s={error:e}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return o}function yt(e,t,i){if(i||2===arguments.length)for(var n,s=0,r=t.length;s<r;s++)!n&&s in t||(n||(n=Array.prototype.slice.call(t,0,s)),n[s]=t[s]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var mt,It=((mt=function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(e,t){return t+1+") "+e.toString()}).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}(function(e){Error.call(e),e.stack=(new Error).stack})).prototype=Object.create(Error.prototype),mt.prototype.constructor=mt,mt);function bt(e,t){if(e){var i=e.indexOf(t);0<=i&&e.splice(i,1)}}var St=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,i,n,s;if(!this.closed){this.closed=!0;var r=this._parentage;if(r)if(this._parentage=null,Array.isArray(r))try{for(var o=gt(r),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else r.remove(this);var c=this.initialTeardown;if(lt(c))try{c()}catch(e){s=e instanceof It?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=gt(u),d=l.next();!d.done;d=l.next()){var h=d.value;try{wt(h)}catch(e){s=null!=s?s:[],e instanceof It?s=yt(yt([],ft(s)),ft(e.errors)):s.push(e)}}}catch(e){i={error:e}}finally{try{d&&!d.done&&(n=l.return)&&n.call(l)}finally{if(i)throw i.error}}}if(s)throw new It(s)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)wt(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&bt(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&bt(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function wt(e){lt(e)?e():e.unsubscribe()}St.EMPTY;var vt={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];var s=vt.delegate;return(null==s?void 0:s.setTimeout)?s.setTimeout.apply(s,yt([e,t],ft(i))):setTimeout.apply(void 0,yt([e,t],ft(i)))},clearTimeout:function(e){var t=vt.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function _t(){}var Mt=Et("C",void 0,void 0);function Et(e,t,i){return{kind:e,value:t,error:i}}var Tt=function(e){function t(t){var i,n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,((i=t)instanceof St||i&&"closed"in i&&lt(i.remove)&&lt(i.add)&&lt(i.unsubscribe))&&t.add(n)):n.destination=Dt,n}return pt(t,e),t.create=function(e,t,i){return new At(e,t,i)},t.prototype.next=function(e){this.isStopped?Ct(function(e){return Et("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Ct(Et("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Ct(Mt,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(St);Function.prototype.bind;var kt=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Ot(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Ot(e)}else Ot(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Ot(e)}},e}(),At=function(e){function t(t,i,n){var s,r=e.call(this)||this;return s=lt(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=n?n:void 0}:t,r.destination=new kt(s),r}return pt(t,e),t}(Tt);function Ot(e){!function(e){vt.setTimeout(function(){throw e})}(e)}function Ct(e,t){var i=null;i&&vt.setTimeout(function(){return i(e,t)})}var Dt={closed:!0,next:_t,error:function(e){throw e},complete:_t};function Rt(e,t,i,n,s){return new Nt(e,t,i,n,s)}var Nt=function(e){function t(t,i,n,s,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=s?function(e){try{s(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=n?function(){try{n()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return pt(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var i=this.closed;e.prototype.unsubscribe.call(this),!i&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(Tt);function qt(e,t){return dt(function(i,n){var s=0;i.subscribe(Rt(n,function(i){n.next(e.call(t,i,s++))}))})}function Ft(){return"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():jt()}function jt(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function Pt(){return Ft()}const Bt=18,xt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function Lt(){return xt.charAt(Math.floor(Math.random()*xt.length))}function Ut(e=Bt,t="",i=""){$e(t.length<e,"ID prefix is too long"),$e(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let n="";for(let t=0;t<e;t++)n+=Lt();if(t.length>0&&(n=t+n.substring(t.length)),i)for(;n.charAt(t.length)===i[t.length];)n=n.substring(0,t.length)+Lt()+n.substring(t.length+1);return n}function Qt({count:e,length:t,prefix:i}){$e(e>=0,`Invalid IDs count: ${e}`);const n=new Set;for(;n.size<e;)n.add(Ut(t||Bt,i||""));return[...n]}const $t=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Gt(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Gt(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Gt(t);else for(const t in e){if(!/^[a-zA-Z0-9_]+$/.test(t))throw new Error(`Invalid metadata filter key ${t} - can only contain letters, numbers, and underscores`);if($t.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${$t.join(", ")}`);const i=e[t];if("object"!=typeof i&&"string"!=typeof i&&"number"!=typeof i&&"boolean"!=typeof i)throw new Error(`Invalid metadata filter value for key ${t} - cannot be of type ${typeof i}`)}}function Ht(e,t,i){const n=atob(e),s=new Uint8Array(n.length);for(let e=0;e<n.length;e++)s[e]=n.charCodeAt(e);return new File([s],t,{type:i||"application/octet-stream"})}const Vt={TRACE_ID:"x-squid-traceid",SECRET:"x-squid-secret",APP_API_KEY:"x-app-api-key",APP_ID:"x-squid-appid",CLIENT_ID:"x-squid-clientid",CLIENT_VERSION:"x-squid-client-version",INTEGRATION_ACCESS_TOKENS:"x-squid-integration-access-tokens",POD_IP:"x-squid-pod-ip",INSTANCE_ID:"x-squid-instance-id",EXPECTED_INSTANCE_ID:"x-squid-expected-instance-id",WORKER_KEY:"x-squid-worker-key"};function Kt(e){return JSON.stringify(e)}function Wt(e){return e&&Object.keys(e).length?{[Vt.INTEGRATION_ACCESS_TOKENS]:Kt(e)}:{}}function zt(e){if(!e)return{headers:{},options:void 0};const{integrationAccessTokens:t,...i}=e;return{headers:Wt(t),options:i}}function Jt(e,t){const{agentId:i,jobId:n}=t;return e.notifyWebSocketIsNeeded(),e.observeNotifications().pipe((0,ut.filter)(e=>"aiStatus"===e.type&&(void 0===i||e.agentId===i)),(0,ut.filter)(e=>!n||e.jobId===n),(0,ut.map)(e=>({agentId:e.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.payload.statusUpdateId??e.messageId})))}Error;class Yt{constructor(e,t,i,n,s,r,o,a=()=>{}){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=n,this.socketManager=s,this.jobClient=r,this.backendFunctionManager=o,this.getMetricAnnotations=a}async get(){const e=await this.post("ai/agent/getAgent",{agentId:this.agentId});return e?.agent}async upsert(e){await this.post("ai/agent/upsertAgent",{...e,id:this.agentId})}async delete(){await this.post("ai/agent/deleteAgent",{agentId:this.agentId})}async updateInstructions(e){await this.setAgentOptionInPath("instructions",e)}async updateModel(e){await this.setAgentOptionInPath("model",e)}async updateConnectedAgents(e){await this.setAgentOptionInPath("connectedAgents",e)}async updateGuardrails(e){const t=await this.get();$e(t,"Agent not found");const i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}async updatePii(e){const t=await this.get();$e(t,"Agent not found");const i={onDetect:"off",...t.options?.pii,...e};await this.setAgentOptionInPath("pii",i)}async updateMcpServer(e){await this.post("ai/agent/setMcpServer",{agentId:this.agentId,mcpServer:e})}async generateMcpDescriptions(){return await this.post("ai/agent/generateMcpDescriptions",{agentId:this.agentId})}async updateCustomGuardrails(e){await this.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}async regenerateApiKey(){return await this.post("ai/agent/regenerateApiKey",{agentId:this.agentId})}async getApiKey(){return await this.post("ai/agent/getApiKey",{agentId:this.agentId})}async listRevisions(){return await this.post("ai/agent/listRevisions",{agentId:this.agentId})}async restoreRevision(e){await this.post("ai/agent/restoreRevision",{agentId:this.agentId,revisionNumber:e})}async deleteRevision(e){await this.post("ai/agent/deleteRevision",{agentId:this.agentId,revisionNumber:e})}chat(e,t,i){return this.chatInternal(e,t,i).responseStream}async transcribeAndChat(e,t,i){const n=this.chatInternal(e,t,i),s=await Ge(n.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:n.responseStream,transcribedPrompt:s.transcribedPrompt}}async ask(e,t,i){const n=await this.askInternal(e,!1,t,i);return this.replaceFileTags(n.responseString,n.annotations)}async askWithResult(e,t,i){return this.askInternal(e,!1,t,i)}async askWithAnnotations(e,t,i){const n=await this.askInternal(e,!1,t,i);return{responseString:n.responseString,annotations:n.annotations,routing:n.routing,validation:n.validation}}async askAsync(e,t,i){const{headers:n,options:s}=zt(i),r={agentId:this.agentId,prompt:e,options:this.withMetricAnnotations(s),jobId:t};await this.post("ai/chatbot/askAsync",r,[],"files",n)}observeStatusUpdates(e){return Jt(this.socketManager,{agentId:this.agentId,jobId:e})}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,i){return await this.askInternal(e,!1,t,i)}async transcribeAndAskWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,transcribedPrompt:n.transcribedPrompt,voiceResponseFile:Ht(s.base64File,`voice.${s.extension}`,s.mimeType)}}async askWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,voiceResponseFile:Ht(s.base64File,`voice.${s.extension}`,s.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}async addConnectedIntegration(e){await this.post("ai/agent/addConnectedIntegration",{agentId:this.agentId,integrationId:e.integrationId,integrationType:e.integrationType,description:e.description??""})}async addConnectedAgent(e){await this.post("ai/agent/addConnectedAgent",{agentId:this.agentId,connectedAgentId:e.agentId,description:e.description})}async addConnectedKnowledgeBase(e){await this.post("ai/agent/addConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e.knowledgeBaseId,description:e.description,includeMetadata:e.includeMetadata})}async addFunction(e){await this.post("ai/agent/addFunction",{agentId:this.agentId,functionId:e})}async removeConnectedAgent(e){await this.post("ai/agent/removeConnectedAgent",{agentId:this.agentId,connectedAgentId:e})}async removeConnectedIntegration(e){await this.post("ai/agent/removeConnectedIntegration",{agentId:this.agentId,integrationId:e})}async removeConnectedKnowledgeBase(e){await this.post("ai/agent/removeConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e})}async removeFunction(e){await this.post("ai/agent/removeFunction",{agentId:this.agentId,functionId:e})}async setAgentDescription(e){await this.post("ai/agent/setAgentDescription",{agentId:this.agentId,description:e})}async provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}async build(e,t,i){const n={agentId:this.agentId,request:e,memoryId:t,options:i};return await this.backendFunctionManager.executeFunction("buildAgent",n)}replaceFileTags(e,t={}){let i=e;for(const[e,n]of Object.entries(t)){let t="";const s=n.aiFileUrl.fileName?n.aiFileUrl.fileName:n.aiFileUrl.url;switch(n.aiFileUrl.type){case"image":t=`![${s}](${n.aiFileUrl.url})`;break;case"document":t=`[${s}](${n.aiFileUrl.url})`}const r=`\${id:${e}}`;i=i.replaceAll("`"+r+"`",t).replaceAll(r,t)}return i}async askInternal(e,t,i,n){if(i?.contextMetadataFilter&&Gt(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)Gt(i.contextMetadataFilterForKnowledgeBase[e]);n=n||Ft();const{headers:s,options:r}=zt(i);i=this.withMetricAnnotations({...Xt,...r||{}});const o="string"==typeof e;let a="ai/chatbot/";a+=o||t?!o&&t?"transcribeAndAskWithVoiceResponse":o&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const c={agentId:this.agentId,prompt:o?e:void 0,options:i,jobId:n},u=o?void 0:[e];return await this.post(a,c,u,"file",s),await this.jobClient.awaitJob(n)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Gt(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Gt(t.contextMetadataFilterForKnowledgeBase[e]);const n=Ft(),{headers:s,options:r}=zt(t),o=void 0===(t=this.withMetricAnnotations({...Xt,...r||{}})).smoothTyping||t.smoothTyping;let a="";const c=new ut.Subject,u=new ut.Subject;this.ongoingChatSequences[n]=u;let l=-1;u.pipe((0,ut.tap)(({tokenIndex:e})=>{void 0!==e&&e<l&&console.warn("Received token index out of order",e,l),void 0!==e&&(l=e)}),(0,ut.concatMap)(({value:e,complete:t,annotations:i})=>t?(0,ut.of)({value:e,complete:t,annotations:i}):(0,ut.of)(e).pipe((()=>{const e=globalThis.document,t="object"==typeof e&&null!==e&&!0===e.hidden;return o&&!t})()?(0,ut.delay)(0):(0,ut.tap)(),qt(e=>({value:e,complete:!1,annotations:void 0})))),(0,ut.takeWhile)(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{a+=e,t&&i&&(a=this.replaceFileTags(a,i)),c.next(a)},error:e=>{console.error(e)},complete:()=>{c.complete()}});const d="string"==typeof e;i=i||Ft();const h={agentId:this.agentId,jobId:i,prompt:d?e:void 0,options:t,clientRequestId:n},p={responseStream:c.pipe((0,ut.finalize)(()=>{delete this.ongoingChatSequences[n]}),(0,ut.share)())};let g;return g=d?this.post("ai/chatbot/chat",h,[],"files",s).catch(e=>{c.error(e),c.complete()}):this.post("ai/chatbot/transcribeAndChat",h,[e],"file",s).catch(e=>{throw c.error(e),c.complete(),e}),p.serverResponse=g.then(()=>this.jobClient.awaitJob(i)).catch(e=>{c.error(e),c.complete()}),p}withMetricAnnotations(e){const t=this.getMetricAnnotations();return t?{...e||{},metricAnnotations:{...t,...e?.metricAnnotations}}:e}async post(e,t,i=[],n="files",s={}){const r={...s};return this.agentApiKey&&(r["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,n,r)}}const Xt={smoothTyping:!0,responseFormat:"text"};class Zt{constructor(e,t,i,n,s=()=>{}){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=n,this.getMetricAnnotations=s,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"aiChatbot"===e.type),qt(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new Yt(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:i,complete:n,tokenIndex:s,annotations:r}=e.payload;if(n&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:n,tokenIndex:void 0===s?void 0:s,annotations:r});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:n&&e===i.length-1,tokenIndex:void 0===s?void 0:s,annotations:r})}}const ei="__squid_empty_chat_id";class ti{constructor(e){this.rpcManager=e}async transcribe(e,t={modelName:"whisper-1"}){return this.rpcManager.post("ai/audio/transcribe",t,[e])}async createSpeech(e,t){const i={input:e,options:t},n=await this.rpcManager.post("ai/audio/createSpeech",i);return Ht(n.base64File,`audio.${n.extension}`,n.mimeType)}}class ii{constructor(e,t){this.provider=e,this.rpcManager=t}async uploadFile(e){const t={provider:this.provider,expirationInSeconds:e.expirationInSeconds};return(await this.rpcManager.post("ai/files/uploadFile",t,[e.file],"file")).fileId}async deleteFile(e){const t={fileId:e,provider:this.provider};return(await this.rpcManager.post("ai/files/deleteFile",t)).deleted}}class ni{constructor(e){this.rpcManager=e}async generate(e,t){const i={prompt:e,options:t};return await this.rpcManager.post("ai/image/generate",i)}async removeBackground(e){return await this.rpcManager.post("ai/image/removeBackground",{},[e])}}function si(e){for(const t in e){const i=e[t];$e("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),$e(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}const ri=new Set(["completed","failed","cancelled"]);class oi{constructor(e,t,i,n,s){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i,this.socketManager=n,this.clientIdService=s}async getKnowledgeBase(){return(await this.rpcManager.post("ai/knowledge-base/getKnowledgeBase",{knowledgeBaseId:this.knowledgeBaseId})).knowledgeBase}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async upsertKnowledgeBase(e){await this.rpcManager.post("ai/knowledge-base/upsertKnowledgeBase",{knowledgeBase:{id:this.knowledgeBaseId,...e}})}async generateMetadataFieldDescriptions(e){return this.rpcManager.post("ai/knowledge-base/generateMetadataFieldDescriptions",{knowledgeBaseId:this.knowledgeBaseId,fieldNames:e?.fieldNames,overwriteExisting:e?.overwriteExisting})}async delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextsPage(e){return this.rpcManager.post("ai/knowledge-base/listContextsPage",{id:this.knowledgeBaseId,truncateTextAfter:e?.truncateTextAfter,offset:e?.offset,limit:e?.limit,search:e?.search})}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e,t){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e,truncateTextAfter:t?.truncateTextAfter})).context}async deleteContext(e){await this.deleteContexts([e])}async deleteContexts(e){await this.rpcManager.post("ai/knowledge-base/deleteContexts",{knowledgeBaseId:this.knowledgeBaseId,contextIds:e})}async setContextScopes(e,t){const{updatedChunkCount:i}=await this.rpcManager.post("ai/knowledge-base/setContextScopes",{knowledgeBaseId:this.knowledgeBaseId,contextId:e,scopes:t});return i}async setContextVersionStates(e){return(await this.rpcManager.post("ai/knowledge-base/setContextVersionStates",{knowledgeBaseId:this.knowledgeBaseId,items:e})).results}async upsertContext(e,t){const{failures:i,contextIds:n,graphIndexingSkippedContextIds:s,imageFailures:r}=await this.upsertContexts([e],t?[t]:void 0);if(i.length>0)return{failure:i[0]};const o=n?.[0],a=void 0!==o&&(s?.includes(o)??!1),c=r?.find(e=>e.contextId===o);return{...a?{graphIndexingSkipped:a}:{},...c?{imageFailures:c.imageFailures,imageFailureCount:c.imageFailureCount}:{}}}async upsertContexts(e,t,i){for(const t of e)t.metadata&&si(t.metadata);const n=Ft();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:n},t),i?.onUploaded?.(),await this.jobClient.awaitJob(n)}async bulkUpsertContexts(e,t,i){return this.rpcManager.post("ai/knowledge-base/bulk/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contexts:e,speed:i?.speed},t)}async createBulkUploadUrls(e){return this.rpcManager.post("ai/knowledge-base/bulk/createUploadUrls",{files:e.map(e=>({fileName:e}))})}async getBulkIngestionJob(e){return this.rpcManager.post("ai/knowledge-base/bulk/getJob",{jobId:e})}async cancelBulkIngestionJob(e){await this.rpcManager.post("ai/knowledge-base/bulk/cancelJob",{jobId:e})}observeBulkIngestionJob(e){return new ut.Observable(t=>{const i=()=>{this.rpcManager.post("ai/knowledge-base/bulk/subscribeToJob",{jobId:e}).catch(e=>t.error(e))};t.add(this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"bulkIngestionStatus"===e.type),(0,ut.filter)(t=>t.payload.jobId===e)).subscribe(e=>{t.next(e.payload),ri.has(e.payload.state)&&t.complete()})),t.add(this.clientIdService.observeClientId().pipe((0,ut.distinctUntilChanged)(),(0,ut.skip)(1)).subscribe(()=>i())),this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.awaitConnectionReady().then(i).catch(e=>t.error(e))})}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchWithGraphContext(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return this.rpcManager.post("ai/knowledge-base/search",t)}async grep(e,t){return this.rpcManager.post("ai/knowledge-base/grep",{knowledgeBaseId:this.knowledgeBaseId,pattern:e,options:t})}async queryGraph(e){return this.rpcManager.post("ai/knowledge-base/queryGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async getGraphStatus(e){return this.rpcManager.post("ai/knowledge-base/getGraphStatus",{...e,knowledgeBaseId:this.knowledgeBaseId})}async getFileStatus(e){return this.rpcManager.post("ai/knowledge-base/getFileStatus",{knowledgeBaseId:this.knowledgeBaseId,path:e})}async getFolderStatus(e,t){return this.rpcManager.post("ai/knowledge-base/getFolderStatus",{knowledgeBaseId:this.knowledgeBaseId,folderPath:e,fileLimit:t})}async rebuildGraph(e){await this.rpcManager.post("ai/knowledge-base/rebuildGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async exploreGraph(e){return this.rpcManager.post("ai/knowledge-base/exploreGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class ai{constructor(e,t,i,n){this.rpcManager=e,this.jobClient=t,this.socketManager=i,this.clientIdService=n}knowledgeBase(e){return new oi(e,this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async delete(e){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:e})}}class ci{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new ui(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new ui(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class ui{constructor(e,t){this.matchMaker=e,this.rpcManager=t,this.id=e.id}async insertEntity(e){await this.rpcManager.post("matchMaking/insertEntity",{matchMakerId:this.id,entity:e})}async insertManyEntities(e){await this.rpcManager.post("matchMaking/insertEntities",{matchMakerId:this.id,entities:e})}async delete(){await this.rpcManager.post("matchMaking/deleteMatchMaker",{matchMakerId:this.id})}async deleteEntity(e){await this.rpcManager.post("matchMaking/deleteEntity",{entityId:e,matchMakerId:this.id})}async findMatches(e,t={}){return(await this.rpcManager.post("matchMaking/findMatches",{matchMakerId:this.id,entityId:e,options:t})).matches}async findMatchesForEntity(e,t={}){return(await this.rpcManager.post("matchMaking/findMatchesForEntity",{matchMakerId:this.id,entity:e,options:t})).matches}async listEntities(e,t={}){return await this.rpcManager.post("matchMaking/listEntities",{categoryId:e,options:t,matchMakerId:this.id})}async getEntity(e){return(await this.rpcManager.post("matchMaking/getEntity",{matchMakerId:this.id,entityId:e})).entity}getMatchMakerDetails(){return this.matchMaker}}class li{constructor(e,t,i,n){this.sessionId=e,this.callId=t,this.peer=i,this.microphone=n,this.eventListeners=new Set,this.endListeners=new Set,this.ended=!1}static async start(e,t){const i=globalThis,n=i.RTCPeerConnection,s=i.navigator?.mediaDevices;if(!n||!s)throw new Error("A web voice call needs a browser with WebRTC support");const{sink:r,...o}=t,a=await s.getUserMedia({audio:!0}),c=new n,u=r??i.document?.createElement("audio");u&&(u.autoplay=!0),c.ontrack=e=>{u&&(u.srcObject=e.streams[0],u.play().catch(()=>{}))};for(const e of a.getAudioTracks())c.addTrack(e,a);const l=c.createDataChannel("oai-events"),d=await c.createOffer();let h;await c.setLocalDescription(d),l.onmessage=e=>{try{h?.dispatch(JSON.parse(e.data))}catch{}},c.onconnectionstatechange=()=>{["failed","closed","disconnected"].includes(c.connectionState)&&h?.finish()};const p=await e.startOpenAiWebCall({...o,sdp:d.sdp??""});return await c.setRemoteDescription({type:"answer",sdp:p.sdp}),h=new li(p.sessionId,p.callId,c,a),h}onEvent(e){return this.eventListeners.add(e),()=>this.eventListeners.delete(e)}onTurn(e){return this.onEvent(t=>{const i="string"==typeof t.transcript?t.transcript.trim():"";i&&("conversation.item.input_audio_transcription.completed"===t.type?e({role:"user",text:i,at:(new Date).toISOString()}):"response.output_audio_transcript.done"===t.type&&e({role:"agent",text:i,at:(new Date).toISOString()}))})}onEnd(e){return this.endListeners.add(e),()=>this.endListeners.delete(e)}setMuted(e){for(const t of this.microphone.getAudioTracks())t.enabled=!e}stop(){this.finish()}dispatch(e){for(const t of this.eventListeners)t(e)}finish(){if(!this.ended){this.ended=!0;for(const e of this.microphone.getTracks())e.stop();this.peer.close();for(const e of this.endListeners)e()}}}class di{constructor(e){this.rpcManager=e}async createSession(e){return this.rpcManager.post("ai/voice/createSession",e)}async answerOpenAiCall(e){return this.rpcManager.post("ai/voice/openai/answer",e)}async startOpenAiWebCall(e){return this.rpcManager.post("ai/voice/openai/webCall",e)}async startWebCall(e){return li.start(this,e)}}class hi{constructor(e,t,i,n,s,r=()=>{}){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.clientIdService=n,this.backendFunctionManager=s,this.getMetricAnnotations=r}agent(e=ge,t=void 0){return this.getAiAgentClient().agent(e,t)}knowledgeBase(e){return this.getAiKnowledgeBaseClient().knowledgeBase(e)}async listAgents(){return this.getAiAgentClient().listAgents()}async listKnowledgeBases(){return this.getAiKnowledgeBaseClient().listKnowledgeBases()}async listFunctions(){const e=await this.rpcManager.post("/application/getBundleMetadata",{});return Object.values(e.aiFunctions||{})}async listChatModels(e){return(await this.rpcManager.post("ai/settings/listChatModels",e??{})).models}async listEmbeddingModels(e){return(await this.rpcManager.post("ai/settings/listEmbeddingModels",e??{})).models}image(){return new ni(this.rpcManager)}audio(){return new ti(this.rpcManager)}voice(){return new di(this.rpcManager)}matchMaking(){return new ci(this.rpcManager)}files(e){return new ii(e,this.rpcManager)}executeAiQuery(e,t,i,n){const{accessToken:s,...r}=i??{},o={integrationId:e,prompt:t,options:r},a=Wt(s?{[e]:s}:void 0);return this.rpcManager.post("ai/query/executeDataQuery",o,[],"files",a,n)}executeAiApiCall(e,t,i,n){const s={integrationId:e,prompt:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeApiQuery",s)}executeAiSpreadsheetQuery(e,t,i,n){const s={prompt:e,files:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeSpreadsheetQuery",s)}async getApplicationAiSettings(){return(await this.rpcManager.post("ai/settings/getApplicationAiSettings",{})).settings}async setApplicationAiSettings(e){const t={settings:e};await this.rpcManager.post("ai/settings/setApplicationAiSettings",t)}async setAiProviderApiKeySecret(e,t){const i={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",i)).settings}observeStatusUpdates(e){return Jt(this.socketManager,{jobId:e})}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new Zt(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new ai(this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)),this.aiKnowledgeBaseClient}}const pi={headers:{},queryParams:{},pathParams:{}};class gi{constructor(e){this.rpcManager=e}async get(e,t,i){return this.request(e,t,void 0,i,"get")}async post(e,t,i,n){return this.request(e,t,i,n,"post")}async delete(e,t,i,n){return this.request(e,t,i,n,"delete")}async patch(e,t,i,n){return this.request(e,t,i,n,"patch")}async put(e,t,i,n){return this.request(e,t,i,n,"put")}async request(e,t,i,n,s){const r={integrationId:e,endpointId:t,body:i,options:{...pi,...this.convertOptionsToStrings(n||{})},overrideMethod:s};return await this.rpcManager.rawPost("api/callApi",r,void 0,void 0,!1)}convertOptionsToStrings(e){return{headers:this.convertToStrings(e.headers),queryParams:this.convertToStrings(e.queryParams),pathParams:this.convertToStrings(e.pathParams)}}convertToStrings(e){if(!e)return{};const t=Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,String(t)]);return Object.fromEntries(t)}}class fi{constructor(e,t){this.apiKey=e,this.authProvider=t}setAuthProvider(e){this.authProvider=e}async getAuthData(){return{token:await this.getTokenFromAuthProvider(),integrationId:this.authProvider?.integrationId}}getApiKey(){return this.apiKey}async getToken(){if(this.apiKey)return{type:"ApiKey",token:this.apiKey};const e=await this.getTokenFromAuthProvider();return e?{type:"Bearer",token:e,integrationId:this.authProvider?.integrationId}:void 0}async getTokenFromAuthProvider(){const e=this.authProvider?.getToken();return"object"==typeof e?await e:e}}const yi=/[.\[\]]/;function mi(e,t){if(!e)return;const i=t.split(yi);let n,s=e;for(;s&&i.length;){const e=i.shift();if(e){if("object"!=typeof s||!(e in s))return;n=s[e],s=n}}return n}function Ii(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function bi(e,t,i,n="."){const s=t.split(n);let r=e;for(;s.length;){const e=Ge(s.shift());if(s.length){const t=r[e],i=Ii(t)?Ei(t)??{}:{};r[e]=i,r=i}else r[e]=i}}function Si(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function wi(e){return null==e}function vi(e,t){if(e===t)return!0;if(null===e||null===t)return!1;const i=typeof e;if(i!==typeof t)return!1;if("object"!==i)return e===t;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(const i of n)if(!s.includes(i)||!vi(e[i],t[i]))return!1;return!0}function _i(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=Mi(e[n],t);return i}function Mi(e,t){const i=t?t(e):void 0;if(void 0!==i)return i;if("object"!=typeof e||null===e)return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return _i(e,t);if(e instanceof Map)return new Map(_i(Array.from(e),t));if(e instanceof Set)return new Set(_i(Array.from(e),t));if(ArrayBuffer.isView(e))return n=e,"undefined"!=typeof Buffer&&n instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length);var n;const s={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(s[i]=Mi(e[i],t));return s}function Ei(e){return"object"!=typeof e||null===e?e:e instanceof Date?new Date(e):Array.isArray(e)?[...e]:e instanceof Map?new Map(Array.from(e)):e instanceof Set?new Set(Array.from(e)):{...e}}function Ti(e,t){if(e===t||wi(e)&&wi(t))return 0;if(wi(e))return-1;if(wi(t))return 1;const i=typeof e,n=typeof t;return i!==n?i<n?-1:1:"number"==typeof e?($e("number"==typeof t),isNaN(e)&&isNaN(t)?0:isNaN(e)?-1:isNaN(t)?1:e<t?-1:1):"boolean"==typeof e?($e("boolean"==typeof t),e<t?-1:1):"bigint"==typeof e?($e("bigint"==typeof t),e<t?-1:1):"string"==typeof e?($e("string"==typeof t),e<t?-1:1):e instanceof Date&&t instanceof Date?Math.sign(e.getTime()-t.getTime()):0}function ki(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function Ai(e){if(Array.isArray(e))return e.map(e=>Ai(e));if("object"!=typeof e||null===e||e instanceof Date)return e;const t=Object.keys(e),i={};return t.sort().forEach(t=>{i[t]=Ai(e[t])}),i}function Oi(e){return Ci(Ai(e))}function Ci(e){if(void 0===e)return null;const t=Mi(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function Di(e){return Mi(JSON.parse(e),e=>{if(null===e||"object"!=typeof e)return;const t=e,i=t.$date;return i&&1===Object.keys(t).length?new Date(i):void 0})}function Ri(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=Ci(e);if("undefined"!=typeof Buffer)return Buffer.from(t,"utf8").toString("base64");{const e=(new TextEncoder).encode(t);let i="";for(let t=0;t<e.length;t++)i+=String.fromCharCode(e[t]);return btoa(i)}}const Ni=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0},qi=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(Ci(e[i])!==Ci(t[i]))return!1;return!0};class Fi{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||Ni,n=this.options.valueExpirationMillis||1/0;return t&&Date.now()<t.cacheTimeMillis+n&&i(t.args,e)?{found:!0,value:t.result}:{found:!1}}set(e,t){this.cachedEntry={args:e,result:t,cacheTimeMillis:Date.now()}}}function ji(e){const t=[],i=[];let n=0;for(const s of e)if("undefined"!=typeof File)if(s instanceof File){i.push(s);const e={type:"file",__squid_placeholder__:!0,fileIndex:n++};t.push(e)}else if(Pi(s)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:s.map((e,t)=>(i.push(s[t]),n++))};t.push(e)}else t.push(s);else t.push(s);return{argsArray:t,fileArray:i}}function Pi(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class Bi{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:n,fileArray:s}=ji(i),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(n);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?Ni:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,n));if(t)return t.promise}const u=this.createExecuteCallPromise(r,n,s,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:n,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,n,s={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:Ci(t)},a=Di((await this.rpcManager.post(r,o,i.length>0?i:[],"files",s)).payload);if(a?.__isSquidBase64File__){const e=a;return Ht(e.base64,e.filename,e.mimetype)}return n&&n.set(t,a),a}}function xi(e){if("undefined"!=typeof globalThis)return globalThis[e]}function Li(){if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}void 0===Li()?.SQUID_LOG_DEBUG_ENABLED&&function(e=!0){Li().SQUID_LOG_DEBUG_ENABLED=e}(function(){let e="";return"undefined"!=typeof window&&window.location?e=new URLSearchParams(window.location.search).get("SQUID_DEBUG")||"":"undefined"!=typeof process&&process.env&&(e=process.env.SQUID_DEBUG||""),"1"===e||"true"===e}());class Ui{static debug(...e){(function(){const e=Li();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=Li();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Qi{constructor(e){this.destructManager=e,this.clientTooOldSubject=new ut.BehaviorSubject(!1),this.isTenant=!0===Li().squidTenant,this.clientIdSubject=new ut.BehaviorSubject(this.generateClientId()),this.destructManager.onDestruct(()=>{this.clientTooOldSubject.complete(),this.clientIdSubject.complete()})}observeClientId(){return this.clientIdSubject}observeClientTooOld(){return this.clientTooOldSubject.pipe((0,ut.filter)(e=>e),(0,ut.map)(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe((0,ut.skip)(1),(0,ut.filter)(e=>!e),(0,ut.map)(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=Li()[Gi];return e?e():Ft()}generateClientId(){const e=Li()[$i];if(e)return e();let t=`${this.isTenant?"tenant-":""}${Ft()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const $i="SQUID_CLIENT_ID_GENERATOR",Gi="SQUID_CLIENT_REQUEST_ID_GENERATOR",Hi="__squidId";function Vi(e){return Di(e)}function Ki(...e){const[t,i,n]=e,s="object"==typeof t?t:{docId:t,collectionName:i,integrationId:n};return s.integrationId||(s.integrationId=void 0),Oi(s)}function Wi(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return vi(e,t);if("!="===i)return!vi(e,t);switch(i){case"<":return!wi(e)&&(!!wi(t)||t<e);case"<=":return!!wi(t)||!wi(e)&&t<=e;case">":return!wi(t)&&(!!wi(e)||t>e);case">=":return!!wi(e)||!wi(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&zi(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&zi(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&zi(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&zi(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>Ge(i,"VALUE_CANNOT_BE_NULL").some(t=>vi(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>Ge(i,"VALUE_CANNOT_BE_NULL").some(t=>vi(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!Ge(i,"VALUE_CANNOT_BE_NULL").some(t=>vi(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function zi(e,t,i){i||(e=e.toLowerCase(),t=t.toLowerCase());const n=function(e){let t="";for(let i=0;i<e.length;++i)"\\"===e[i]?i+1<e.length&&["%","_"].includes(e[i+1])?(t+=e[i+1],i++):i+1<e.length&&"\\"===e[i+1]?(t+="\\\\",i++):t+="\\":"%"===e[i]?t+="[\\s\\S]*":"_"===e[i]?t+="[\\s\\S]":("/-\\^$*+?.()[]{}|".includes(e[i])&&(t+="\\"),t+=e[i]);return t}(t);return new RegExp(`^${n}$`).test(e)}function Ji(e){for(let t=0;t<e.length;t++)if("\\"===e[t]){if(!["%","_","\\"].includes(e[t+1]))return!0;t++}return!1}function Yi(e,t){return`${e}_${t}`}function Xi(e){return"fieldName"in e}function Zi(e){return"docIds"in e}function en(e,t,i){const n=e.docIds.some(e=>Object.entries(e).every(([e,n])=>Wi(n,i(t,e)??null,"==")));switch(e.operator){case"==":case"in":return n;case"!=":case"not in":return!n}}function tn(e,t,i,n){const s=e,r=n(t,je);if("string"!=typeof r)return Wi(s,r??null,i);let o;try{o=Di(r)}catch{return Wi(s,r,i)}if(!o||"object"!=typeof o||Array.isArray(o))return Wi(s,r,i);const a=Object.keys(o);if(1===a.length&&"__id"===a[0]){const e=o.__id,t=function(e){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const t=Object.keys(e);return 1===t.length&&"__id"===t[0]?e.__id:Oi(e)}if("string"==typeof e)try{const t=Di(e);if(t&&"object"==typeof t&&!Array.isArray(t)){const e=Object.keys(t);if(1===e.length&&"__id"===e[0])return t.__id}}catch{}return e}(s);return Wi(t,e,i)}if(1===a.length){const e=function(e,t){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const i=Object.keys(e);if(1===i.length&&i[0]===t)return e[t]}if("string"==typeof e)try{const i=Di(e);if(i&&"object"==typeof i&&!Array.isArray(i)){const e=Object.keys(i);if(1===e.length&&e[0]===t)return i[t]}}catch{}return e}(s,a[0]);return Wi(e,o[a[0]],i)}return"object"!=typeof s||null===s||Array.isArray(s)?Wi(s,r,i):Wi(Oi(s),r,i)}class nn{constructor(e,t,i,n,s){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.projectFields=n,this.identityReference=s,this.refId=Ft()}setInMemoryData(e){this.inMemoryData=e}get squidDocId(){return this.identityReference?.squidDocId??this._squidDocId}get data(){return Mi(this.dataRef)}get dataRef(){if(void 0!==this.inMemoryData)return this.inMemoryData;const e=Ge(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=Vi(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`});return this.projectFields?this.applyProjection(e):e}get hasData(){return this.dataManager.hasSufficientData(this.squidDocId,this.projectFields)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return Ge(e.length<=1,"Got more than one doc for the same id:"+this.squidDocId),e.length?e[0]:void 0}snapshots(){return this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshots().pipe((0,ut.map)(e=>(Ge(e.length<=1,"Got more than one doc for the same id:"+this.squidDocId),e.length?e[0]:void 0)))}peek(){return this.isTracked()&&this.hasData?this.data:void 0}isDirty(){return this.dataManager.isDirty(this.squidDocId)}async update(e,t){const i={};Object.entries(e).forEach(([e,t])=>{const n=void 0!==t?{type:"update",value:t}:{type:"removeProperty"};i[e]=[n]});const n={type:"update",squidDocIdObj:Vi(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:Mi(t)},i)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,i){const n={type:"applyNumericFn",fn:"increment",value:t},s={type:"update",squidDocIdObj:Vi(this.squidDocId),properties:{[e]:[n]}};return this.dataManager.applyOutgoingMutation(s,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async upsert(e,t){const i=Vi(this.squidDocId),n=i.integrationId;let s=Di(i.docId);if(s[Hi]&&(s={}),n===Ee&&s.__id)try{const e=Di(s.__id);s={...s,...e}}catch{}const r={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...s}};return this.dataManager.applyOutgoingMutation(r,t)}async insert(e,t){return this.upsert(e,t)}async delete(e){const t={type:"delete",squidDocIdObj:Vi(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}applyProjection(e){const t={},i=Ge(this.projectFields,"applyProjection called without projectFields"),{integrationId:n}=Vi(this.squidDocId);"__id"in e&&(t.__id=e.__id),"__docId__"in e&&(t.__docId__=e.__docId__);const s=n===Ee?"__id":"__docId__";if(s in e){const i=e[s];if("string"==typeof i&&i.startsWith("{"))try{const e=Di(i);if("object"==typeof e&&null!==e)for(const[i,n]of Object.entries(e))i in t||(t[i]=n)}catch{}}for(const n of i)if(n.includes(".")){const i=mi(e,n);void 0!==i&&bi(t,n,i)}else n in e&&(t[n]=e[n]);return t}hasSquidPlaceholderId(){const e=Di(this.squidDocId);if("object"==typeof e&&e.docId){const t=Di(e.docId);if("object"==typeof t&&Object.keys(t).includes(Hi))return!0}return!1}}class sn{constructor(e,t={}){this.internalStateObserver=new ut.BehaviorSubject(null),this.firstElement=null,this.isDestroyed=new ut.BehaviorSubject(!1),this.snapshotSubject=new ut.Subject,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,$e(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe((0,ut.switchAll)()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...t},this.goToFirstPage()}unsubscribe(){this.isDestroyed.next(!0),this.isDestroyed.complete(),this.internalStateObserver.complete(),this.snapshotSubject.complete()}async prev(){return this.prevInternal(await this.waitForInternalState()),await this.waitForData()}async next(){const{numBefore:e,extractedData:t}=await this.waitForInternalState();return e+this.paginateOptions.pageSize<t.length&&(this.firstElement=t[e+this.paginateOptions.pageSize]),this.internalStateObserver.next(null),this.doNewQuery(t[e],!1),await this.waitForData()}async waitForData(){return this.internalStateToState(await this.waitForInternalState())}observeState(){return this.internalStateObserver.pipe((0,ut.filter)(e=>null!==e),(0,ut.map)(e=>this.internalStateToState(e)))}async first(){return await this.waitForInternalState(),this.internalStateObserver.next(null),this.firstElement=null,this.lastElement=null,this.goToFirstPage(),await this.waitForData()}async refreshPage(){const{extractedData:e}=await this.waitForInternalState();return this.internalStateObserver.next(null),this.onFirstPage?this.goToFirstPage():this.doNewQuery(e[0],!1),await this.waitForData()}async last(){await this.waitForInternalState(),this.internalStateObserver.next(null),this.firstElement=null,this.lastElement=null,this.navigatingToLastPage=!0;const e=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).flipSortOrder().snapshots(this.paginateOptions.subscribe).pipe((0,ut.map)(e=>e.reverse()));return this.snapshotSubject.next(e),await this.waitForData()}goToFirstPage(){this.onFirstPage=!0;const e=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).snapshots(this.paginateOptions.subscribe);this.snapshotSubject.next(e)}compareObjects(e,t){if(e===t||wi(e)&&wi(t))return 0;if(wi(e))return-1;if(wi(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:s}of i){const i=Ti(mi(e,n),mi(t,n));if(0!==i)return s?i:-i}return 0}async dataReceived(e){const t=e.map(e=>this.templateSnapshotEmitter.extractData(e));if(0===e.length)return void(this.onFirstPage?this.internalStateObserver.next({numBefore:0,numAfter:0,data:e,extractedData:t}):this.goToFirstPage());if(null===this.firstElement)if(null!==this.lastElement){const i=t.filter(e=>1===this.compareObjects(e,this.lastElement)).length;this.firstElement=t[e.length-i-this.paginateOptions.pageSize],this.lastElement=null}else this.navigatingToLastPage&&(this.firstElement=t[e.length-this.paginateOptions.pageSize],this.navigatingToLastPage=!1);const i=t.filter(e=>-1===this.compareObjects(e,this.firstElement)).length,n=Math.max(0,e.length-i-this.paginateOptions.pageSize);i!==e.length?this.internalStateObserver.next({numBefore:i,numAfter:n,data:e,extractedData:t}):this.prevInternal({numBefore:i,numAfter:n,data:e,extractedData:t})}doNewQuery(e,t){if(this.onFirstPage=!1,t){const t=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).flipSortOrder();e&&t.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(t=>({fieldName:t.fieldName,operator:t.asc?"<=":">=",value:mi(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe((0,ut.map)(e=>e.reverse())))}else{const t=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize);e&&t.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(t=>({fieldName:t.fieldName,operator:t.asc?">=":"<=",value:mi(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe))}}async waitForInternalState(){const e=this.internalStateObserver.value;return null!==e?e:await(0,ut.firstValueFrom)((0,ut.race)(this.isDestroyed.pipe((0,ut.filter)(Boolean),(0,ut.map)(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe((0,ut.filter)(e=>null!==e),(0,ut.take)(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:n,extractedData:s}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(s[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:n>0,hasPrev:i>0}}prevInternal(e){const{numBefore:t,numAfter:i,extractedData:n}=e;this.firstElement=null,this.lastElement=n[t-1],this.internalStateObserver.next(null),this.doNewQuery(n[n.length-i-1],!0)}}class rn{constructor(e,t,i,n,s){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=n,this.mutationSender=s}getForDocument(e){const{collectionName:t,integrationId:i,docId:n}=Vi(e),s=Di(n),r=this.get(t,i);for(const[e,t]of Object.entries(s))r.where(e,"==",t);return r}get(e,t){return new cn(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService,this.mutationSender)}}class on{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}docId(e){return this.eq(je,e)}docIds(e){return this.in(je,e)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"like_cs":"like",t)}notLike(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"not like_cs":"not like",t)}arrayIncludesSome(e,t){return this.where(e,"array_includes_some",t)}arrayIncludesAll(e,t){return this.where(e,"array_includes_all",t)}arrayNotIncludes(e,t){return this.where(e,"array_not_includes",t)}throwIfInvalidLikePattern(e){if(Ji(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class an{constructor(e){this.queryBuilder=e}peek(){return this.queryBuilder.peek().map(e=>e.data)}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1).pipe((0,ut.defaultIfEmpty)([])))}snapshots(e){return this.queryBuilder.snapshots(e).pipe(qt(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new an(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}projectFields(e){const t=this.queryBuilder.projectFields(e);return new an(t)}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new sn(this,e)}}class cn extends on{constructor(e,t,i,n,s,r,o,a){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=n,this.documentReferenceFactory=s,this.queryBuilderFactory=r,this.documentIdentityService=o,this.mutationSender=a,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return Ri(this.build())}where(e,t,i){if($e(Be.includes(t),`Invalid operator: ${t}`),this.query.projectFields&&e!==je&&!this.query.projectFields.includes(e))throw new Error(`Cannot filter by field '${e}' that is not included in projectFields.`);if("in"===t||"not in"===t){const n=Array.isArray(i)?[...i]:[i];"in"===t&&0===n.length&&(this.containsEmptyInCondition=!0);for(const i of n)this.query.conditions.push({fieldName:e,operator:"in"===t?"==":"!=",value:i});return this}return this.query.conditions.push({fieldName:e,operator:t,value:i}),this}limit(e){return function(e){var t;$e(function(e){return"number"==typeof e}(t=e),()=>Ve("Limit needs to be a number","Not a number",t)),-1!==e&&($e(e>0,"query limit has to be greater than 0"),$e(Math.floor(e)===e,"query limit has to be an integer"),$e(e<=2e4,"Limit can be maximum 20000"))}(e),this.query.limit=e,this}getLimit(){return this.query.limit}limitBy(e,...t){const i=this.query.sortOrder.map(e=>e.fieldName);return $e(vi(t.sort(),i.slice(0,t.length).sort()),"All fields in limitBy must be appear in the first fields in the sortBy list."),this.query.limitBy={limit:e,fields:t,reverseSort:!1},this}sortBy(e,t=!0){const i={asc:t,fieldName:e};if(function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,n,s,r;$e((i=t,n=["fieldName","asc"],!Array.isArray(i)&&[...Object.keys(i)].every(e=>n.includes(e))),"Field sort should only contain a fieldName and asc"),$e((s=t.asc,r="boolean",Array.isArray(s)?s.every(e=>typeof e===r):typeof s===r),"Asc needs to be boolean")}(i),$e(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.projectFields&&e!==je&&!this.query.projectFields.includes(e))throw new Error(`Cannot sort by field '${e}' that is not included in projectFields.`);return this.query.sortOrder.push(i),this}projectFields(e){if(0===e.length&&"built_in_db"!==this.integrationId)throw new Error(`Empty projectFields is only allowed for built_in_db integration. For '${this.integrationId}', you must specify at least one field to project.`);if(this.query.projectFields)for(const t of e)if(!this.query.projectFields.includes(t))throw new Error(`Cannot project field '${t}' that is not in the existing projection. Subsequent projectFields calls must be subsets of the previous projection.`);const t=e;for(const e of this.query.sortOrder)if(e.fieldName!==je&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including sort field '${e.fieldName}'.`);for(const e of this.query.conditions)if(Xi(e)){if(e.fieldName!==je&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including filter field '${e.fieldName}'.`)}else if(Zi(e));else for(const i of e.fields)if(i.fieldName!==je&&!t.includes(i.fieldName))throw new Error(`Cannot set projectFields without including filter field '${i.fieldName}'.`);const i=this.clone();return i.query.projectFields=[...e],i}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1).pipe((0,ut.defaultIfEmpty)([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new ut.BehaviorSubject([]);const t=this.build(),i=t.projectFields;return this.querySubscriptionManager.processQuery(t,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(qt(e=>e.map(e=>{$e(1===Object.keys(e).length);const t=e[this.collectionName],n=Ki(Ge(t).__docId__,this.collectionName,this.integrationId),s=this.querySubscriptionManager.detachedRecords.delete(e),r=this.documentReferenceFactory.create(n,this.queryBuilderFactory,i,s);return s&&r.setInMemoryData(t),r})))}changes(){let e,t=new Set;return this.snapshots().pipe((0,ut.combineLatestWith)(this.documentIdentityService.observeChanges().pipe((0,ut.switchMap)(t=>(Object.entries(t).forEach(([t,i])=>{!function(e,t,i){const n=e[t];void 0!==n&&(e[i]=n,delete e[t])}(e||{},t,i)}),ut.NEVER)),(0,ut.startWith)({}))),qt(([i])=>{let n=[];const s=[],r=[];if(e){for(const r of i){const i=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){s.push(r);const n=e[i];delete e[i],t.delete(n)}else n.push(r)}for(const e of t)r.push(e)}else n=i;e={},t=new Set;for(const n of i){const i=n.dataRef;e[n.squidDocId]=i,t.add(i)}return new un(n,s,r)}))}async delete(){return this.validateQueryDeleteModifiers(),this.containsEmptyInCondition?{deletedCount:0}:($e(this.mutationSender,"Query delete is not available on this query builder."),this.mutationSender.deleteQuery(this.build()))}dereference(){return new an(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new cn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService,this.mutationSender);return e.query=Mi(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){if(!e.length)return this;if(this.query.projectFields)for(const t of e)if(t.fieldName!==je&&!this.query.projectFields.includes(t.fieldName))throw new Error(`Cannot filter by field '${t.fieldName}' that is not included in projectFields.`);return this.query.conditions.push({fields:e}),this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new sn(this,e)}validateQueryDeleteModifiers(){$e(0===this.query.sortOrder.length&&-1===this.query.limit&&!this.query.limitBy,"query.delete() does not currently support sortBy, limit, or limitBy.")}mergeConditions(){const e=[],t=ki(this.query.conditions.filter(Xi)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=ki(i,e=>e.operator);for(const[i,n]of Object.entries(t)){if("=="===i||"!="===i){e.push(...n);continue}const t=[...n];t.sort((e,t)=>Ti(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!Xi(e)),...e]}}class un{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class ln extends on{constructor(e,t,i,n,s,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=n,this.queryBuilderFactory=s,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,i){return this.queryBuilder.where(e,t,i),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}projectFields(e){throw new Error("projectFields is not yet supported for join queries")}join(e,t,i,n){const s=n?.leftAlias??this.latestAlias,r={...i,leftAlias:s,isInner:n?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[s].push(t),new ln(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:r},this.queryBuilder)}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new ut.BehaviorSubject([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,Mi(this.joins),Mi(this.joinConditions),e,!1).pipe(qt(e=>e.map(e=>{const t={};for(const[i,n]of Object.entries(e)){const e=i===this.rootAlias?this.collectionName:this.joins[i].collectionName,s=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,r=n?Ki(n.__docId__,e,s):void 0;t[i]=r?this.documentReferenceFactory.create(r,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new pn(this)}dereference(){return new dn(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ln(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,Mi(this.leftToRight),Mi(this.joins),Mi(this.joinConditions),this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}extractData(e){return e[this.rootAlias].dataRef}serialize(){return{type:"join",grouped:!1,dereference:!1,root:{alias:this.rootAlias,query:this.build()},leftToRight:this.leftToRight,joins:this.joins,joinConditions:this.joinConditions}}paginate(e){if(this.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class dn{constructor(e){this.joinQueryBuilder=e}grouped(){return this.joinQueryBuilder.grouped().dereference()}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(qt(e=>e.map(e=>function(e,t){const i={},n=Object.keys(e);for(const s of n){const n=e[s];i[s]=t(n)}return i}(e,e=>e?.data))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new dn(this.joinQueryBuilder.clone())}addCompositeCondition(e){return this.joinQueryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.joinQueryBuilder.flipSortOrder(),this}limit(e){return this.joinQueryBuilder.limit(e),this}extractData(e){return e[this.joinQueryBuilder.rootAlias]}paginate(e){if(this.joinQueryBuilder.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class hn{constructor(e){this.groupedJoin=e}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(qt(e=>e.map(e=>this.dereference(e,this.groupedJoin.joinQueryBuilder.rootAlias))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.groupedJoin.getSortOrders()}clone(){return new hn(this.groupedJoin.clone())}addCompositeCondition(e){return this.groupedJoin.addCompositeCondition(e),this}flipSortOrder(){return this.groupedJoin.flipSortOrder(),this}limit(e){return this.groupedJoin.limit(e),this}getLimit(){return this.groupedJoin.getLimit()}extractData(e){return e[this.groupedJoin.joinQueryBuilder.rootAlias]}serialize(){return{...this.groupedJoin.joinQueryBuilder.serialize(),dereference:!0,grouped:!0}}paginate(e){if(this.groupedJoin.joinQueryBuilder.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}dereference(e,t){const i=this.groupedJoin.joinQueryBuilder.leftToRight[t];if(i.length){const n={[t]:e[t].data};for(const t of i)n[t]=e[t].map(e=>this.dereference(e,t));return n}return e.data}}class pn{constructor(e){this.joinQueryBuilder=e}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(qt(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new hn(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new pn(this.joinQueryBuilder.clone())}addCompositeCondition(e){return this.joinQueryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.joinQueryBuilder.flipSortOrder(),this}limit(e){return this.joinQueryBuilder.limit(e),this}getLimit(){return this.joinQueryBuilder.getLimit()}extractData(e){return Object.keys(this.joinQueryBuilder.leftToRight).length>1?e[this.joinQueryBuilder.rootAlias].dataRef:e.dataRef}serialize(){return{...this.joinQueryBuilder.serialize(),grouped:!0}}paginate(e){if(this.joinQueryBuilder.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}groupData(e,t){const i=ki(e,e=>e[t]?.squidDocId);return Object.values(i).filter(e=>void 0!==e[0][t]).map(e=>{const i=this.joinQueryBuilder.leftToRight[t],n=e[0][t];if(0===i.length)return n;const s={[t]:n};for(const t of i)s[t]=this.groupData(e,t);return s})}}class gn{constructor(e,t,i,n,s,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=n,this.querySubscriptionManager=s,this.dataManager=r,this.refId=Ft()}doc(e){if(e&&"string"!=typeof e&&"object"!=typeof e&&!Array.isArray(e))throw new Error("Invalid doc id. Can be only object or string.");if(this.integrationId!==Ee)if(e){if("object"!=typeof e)throw new Error("Invalid doc id. String doc ids are only supported for the built_in_db integration. For all other integrations, the doc id must be an object.")}else e={[Hi]:Ft()};else e=e&&"string"!=typeof e?{__id:Oi(e)}:{__id:e||Ft()};const t=Ki(Oi(e),this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)}async insertMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)await this.doc(i.id).upsert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof nn?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new ln(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new fn(...e)}}class fn{constructor(...e){if(0===e.length)throw new Error("At least one query builder must be provided");this.snapshotEmitters=e.map(e=>e.clone());const t=Math.max(...this.snapshotEmitters.map(e=>{const t=e.getLimit();return-1===t?1e3:t}));this.snapshotEmitters.forEach(e=>e.limit(t));const i=this.snapshotEmitters[0].getSortOrders();for(const e of this.snapshotEmitters){const t=e.getSortOrders();if(t.length!==i.length)throw new Error("All the queries must have the same sort order");for(let e=0;e<i.length;e++)if(t[e].fieldName!==i[e].fieldName||t[e].asc!==i[e].asc)throw new Error("All the queries must have the same sort order")}}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e=!0){const t=this.snapshotEmitters.map(t=>t.snapshots(e));return this.or(this.snapshotEmitters[0].getSortOrders(),...t)}peek(){throw new Error("peek is not currently supported for merged queries")}clone(){return new fn(...this.snapshotEmitters.map(e=>e.clone()))}getSortOrders(){return this.snapshotEmitters[0].getSortOrders()}addCompositeCondition(e){for(const t of this.snapshotEmitters)t.addCompositeCondition(e);return this}limit(e){return this.snapshotEmitters.forEach(t=>t.limit(e)),this}getLimit(){return this.snapshotEmitters[0].getLimit()}flipSortOrder(){return this.snapshotEmitters.forEach(e=>e.flipSortOrder()),this}serialize(){return{type:"merged",queries:this.snapshotEmitters.map(e=>e.serialize())}}extractData(e){return this.snapshotEmitters[0].extractData(e)}paginate(e){return new sn(this,e)}or(e,...t){return(0,ut.combineLatest)([...t]).pipe((0,ut.map)(t=>{const i=new Set,n=t.flat(),s=[];for(const e of n)i.has(this.extractData(e))||(i.add(this.extractData(e)),s.push(e));return s.sort((t,i)=>{for(const{fieldName:n,asc:s}of e){const e=mi(this.extractData(t),n),r=mi(this.extractData(i),n);if(!Wi(e,r,"=="))return Wi(r,e,"<")?s?-1:1:s?1:-1}return 0}).slice(0,this.getLimit())}))}}class yn{constructor(e,t,i,n){this.documentReferenceFactory=e,this.queryBuilderFactory=t,this.querySubscriptionManager=i,this.dataManager=n,this.collections=new Map}get(e,t){let i=this.collections.get(t);i||(i=new Map,this.collections.set(t,i));let n=i.get(e);return n||(n=new gn(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class mn{constructor(e,t,i){this.clientIdService=e,this.socketManager=t,this.runtimeOptions=i,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var In=i(150);const bn={"in:in":(e,t)=>e.every(e=>t.includes(e)),"in:not in":(e,t)=>e.every(e=>t.every(t=>function(e,t){return wi(e)||wi(t)?wi(e)!==wi(t):vn(e,t)&&!vi(e,t)&&!(Number.isNaN(e)&&Number.isNaN(t))}(e,t))),"not in:not in":(e,t)=>t.every(t=>e.includes(t)),">:not in":(e,t)=>t.every(t=>En(e,t)),">=:not in":(e,t)=>t.every(t=>Mn(e,t)),"<:not in":(e,t)=>t.every(t=>wn(e,t)),"<=:not in":(e,t)=>t.every(t=>Sn(e,t)),">:>":(e,t)=>En(e,t),">=:>":(e,t)=>Mn(e,t),"in:>":(e,t)=>e.every(e=>Mn(e,t)),">:>=":(e,t)=>En(e,t),">=:>=":(e,t)=>En(e,t),"in:>=":(e,t)=>e.every(e=>En(e,t)),"<:<":(e,t)=>wn(e,t),"<=:<":(e,t)=>Sn(e,t),"in:<":(e,t)=>e.every(e=>Sn(e,t)),"<:<=":(e,t)=>wn(e,t),"<=:<=":(e,t)=>wn(e,t),"in:<=":(e,t)=>e.every(e=>wn(e,t)),"like:like":(e,t)=>kn(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>kn(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>kn(e,t)&&Dn(t),"like_cs:like_cs":(e,t)=>kn(e,t),"like:not like":(e,t)=>!On(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!On(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!On(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!On(e,t),"not like:not like":(e,t)=>kn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>kn(t,e)&&Dn(e),"not like:not like_cs":(e,t)=>kn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>kn(t,e),"in:like":(e,t)=>e.every(e=>Wi(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Wi(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>_n(e)&&Wi(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>_n(e)&&Wi(t,e,"not like_cs")),"like:in":(e,t)=>Rn(e)&&Dn(e)&&t.includes(e),"like_cs:in":(e,t)=>Rn(e)&&t.includes(e),"not in:not like":(e,t)=>Rn(t)&&Dn(t)&&e.includes(t),"not in:not like_cs":(e,t)=>Rn(t)&&e.includes(t),"like:not in":(e,t)=>t.every(t=>Wi(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Wi(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Wi(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Wi(e,t,"like_cs")),"array_includes_some:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_all:array_includes_all":(e,t)=>t.every(t=>e.includes(t)),"array_not_includes:array_not_includes":(e,t)=>t.every(t=>e.includes(t)),"array_includes_all:array_includes_some":(e,t)=>e.some(e=>t.includes(e)),"array_includes_some:array_includes_all":(e,t)=>e.every(e=>t.every(t=>e===t))};function Sn(e,t){return wi(e)?!wi(t):!wi(t)&&vn(e,t)&&e<t}function wn(e,t){return!!wi(e)||!wi(t)&&vn(e,t)&&e<=t}function vn(e,t){return typeof e==typeof t&&e instanceof Date==t instanceof Date}function _n(e){return wi(e)||"string"==typeof e}function Mn(e,t){return Sn(t,e)}function En(e,t){return wn(t,e)}function Tn(e){const t=[];for(let i=0;i<e.length;i++){const n=e[i],s=e[i+1];"\\"!==n||"%"!==s&&"_"!==s?"\\"===n&&"\\"===s?(t.push(n),i++):t.push(n):(t.push(n+s),i++)}return t}function kn(e,t){return An(Tn(e),Tn(t))}function An(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return qn(t.slice(n));const s=e[i],r=t[n];return"%"===s&&"%"===r?An(e,t,i+1,n+1)||An(e,t,i+1,n):"%"!==s&&("%"===r?An(e,t,i,n+1)||An(e,t,i+1,n):(s===r||"_"===r)&&An(e,t,i+1,n+1))}function On(e,t){return Cn(Tn(e),Tn(t))}function Cn(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return qn(t.slice(n));if(n>=t.length)return qn(e.slice(i));const s=e[i],r=t[n];return"%"===s&&"%"===r?Cn(e,t,i+1,n+1)||Cn(e,t,i,n+1)||Cn(e,t,i+1,n):"%"===s||"%"===r?Cn(e,t,i,n+1)||Cn(e,t,i+1,n):(s===r||"_"===s||"_"===r)&&Cn(e,t,i+1,n+1)}function Dn(e){return e===e.toLowerCase()&&e===e.toUpperCase()}function Rn(e){return!/[%_\\]/.test(e)}function Nn(e,t){return e.includes("like")&&"string"==typeof t&&Ji(t)}function qn(e){return e.every(e=>"%"===e)}function Fn(e,t){const i=Object.keys(e),n=Object.keys(t);if(i.length!==n.length)return!1;for(const n of i){if(!Object.prototype.hasOwnProperty.call(t,n))return!1;if(!vi(e[n],t[n]))return!1}return!0}function jn(e,t){return t.every(t=>{const i=Object.keys(t).sort();if(i.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(i[t]!==e[t])return!1;return!0})}class Pn{constructor(e){this.query=e,this.query=e;const t=this.query.conditions.filter(Xi),i=this.query.conditions.filter(Zi),n=i.flatMap(e=>function(e){if("=="!==e.operator&&"in"!==e.operator)return[];if(0===e.docIds.length)return[];const t=[],i=e.docIds[0];for(const n of Object.keys(i)){const s=i[n];e.docIds.every(e=>Object.prototype.hasOwnProperty.call(e,n)&&vi(e[n],s))&&t.push({fieldName:n,operator:"==",value:s})}return t}(e));this.exactSimpleConditions=this.parseConditions(t),this.exactDocIdConditions=i,this.subqueryConditions=this.parseConditions([...t,...n])}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}get projectFields(){return this.query.projectFields}sortedBy(e){return!e.find((e,t)=>!vi(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,i){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:i})}isSubqueryOfCondition(e){return!!this.subqueryConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;for(const t of e.conditions.filter(Zi))if(!this.childImpliesParentDocIdCondition(t))return!1;const t=e.conditions.filter(Xi),i=this.isSubqueryOfConditions(t),n=this.sortedBy(e.sortOrder),s=-1===e.limit||this.limit>-1&&this.limit<e.limit,r=this.isProjectFieldsSubset(this.query.projectFields,e.projectFields);return i&&n&&s&&r}childImpliesParentDocIdCondition(e){const t=e.docIds;if(0===t.length)return!1;const i="=="===e.operator||"in"===e.operator,n=Object.keys(t[0]).sort(),s=[];for(const e of this.query.conditions)Zi(e)&&s.push(...e.docIds);if(!jn(n,t)||!jn(n,s))return!1;const r=this.buildChildEffectiveTupleSet();return i?void 0!==r.allowed&&r.allowed.every(e=>t.some(t=>Fn(e,t))):void 0!==r.allowed?r.allowed.every(e=>!t.some(t=>Fn(e,t))):t.every(e=>r.excluded.some(t=>Fn(e,t)))}buildChildEffectiveTupleSet(){let e;const t=[];for(const i of this.query.conditions)if(Zi(i))if("=="===i.operator||"in"===i.operator)e=void 0===e?[...i.docIds]:e.filter(e=>i.docIds.some(t=>Fn(e,t)));else for(const e of i.docIds)t.some(t=>Fn(t,e))||t.push(e);return void 0!==e&&t.length>0&&(e=e.filter(e=>!t.some(t=>Fn(e,t)))),{allowed:e,excluded:t}}isProjectFieldsSubset(e,t){if(!t)return!0;if(!e)return!1;const i=new Set(t);return e.every(e=>i.has(e))}getConditionsFor(...e){return this.subqueryConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.subqueryConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.exactSimpleConditions){const i=t.fieldName,n=t.operator;if(i===je){const i=t.value;if("in"===n||"not in"===n){const t=(Array.isArray(i)?i:[i]).some(t=>tn(t,e,"==",mi));if(!("in"===n?t:!t))return!1;continue}if(!tn(i,e,n,mi))return!1;continue}const s=mi(e,i);if("in"===n){if(t.value.includes(s))continue;return!1}if("not in"!==n){if(!Wi(t.value,s,n))return!1}else if(t.value.includes(s))return!1}for(const t of this.exactDocIdConditions)if(!en(t,e,mi))return!1;return!0}evaluateSubset(e,t){const{operator:i,value:n}=e,{operator:s,value:r}=this.parseConditions([t])[0],o=bn[`${i}:${s}`];return!!o&&!Nn(i,n)&&!Nn(s,r)&&o(n,r)}parseConditions(e){const t=[],i=new Map,n=new Map;return e.forEach(e=>{switch(e.operator){case"==":case"in":i.set(e.fieldName,(i.get(e.fieldName)||[]).concat(e.value));break;case"!=":case"not in":n.set(e.fieldName,(n.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),i.forEach((e,i)=>{t.push({fieldName:i,operator:"in",value:e})}),n.forEach((e,i)=>{t.push({fieldName:i,operator:"not in",value:e})}),t}}function Bn(e){if(null===e||"object"!=typeof e||Array.isArray(e))return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function xn(e,t){let i=e;for(const e of t.split(".")){if(!Bn(i))return;i=i[e]}return i}function Ln(e,t,i){const n=t.split(".");let s=e;for(const[e,r]of n.entries()){if(e===n.length-1)return void(s[r]=i);const o=s[r];if(null!=o&&!Bn(o))throw new Error(`Cannot set path ${t}, ${r} is not an object`);const a=Bn(o)?{...o}:{};s[r]=a,s=a}}function Un(e,t){const i=t.split(".");let n=e;for(const[e,t]of i.entries()){if(e===i.length-1)return void delete n[t];const s=n[t];if(!Bn(s))return;const r={...s};n[t]=r,n=r}}function Qn(e,t){switch(t.type){case"applyNumericFn":return function(e,t){if("increment"===t.fn)return"number"==typeof e?e+t.value:t.value;throw new Error("Unknown numeric function: "+JSON.stringify(t))}(e,t);case"applyStringFn":return function(e,t){const i="string"==typeof e?e:null;switch(t.fn){case"trim":return null===i?null:i.trim();case"extendString":return null===i?t.value:i+t.value;default:throw new Error("Unknown string function: "+JSON.stringify(t))}}(e,t);case"update":return"object"==typeof t.value?Mi(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function $n(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function Gn(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if($e("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=Mi(e);t=Mi(t);for(const[e]of $n(i)){const n=e.split(".").length;Object.entries(t.properties).some(([t])=>e.startsWith(t+".")&&n>t.split(".").length)&&delete i.properties[e]}for(const[e,n]of $n(t))i.properties[e]=Hn([...i.properties[e]||[],...n]);return i}(e,t);const i=Mi(e);for(const[e,n]of $n(t)){const t=n;for(const n of t){const t=i.properties,s=Qn(xn(t,e),n);void 0===s?Un(t,e):Ln(t,e,s)}}return i}function Hn(e){let t=0;for(;t+1<e.length;){const i=Vn(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function Vn(e,t){if("removeProperty"===t.type||"update"===t.type)return t;if("applyNumericFn"===t.type){if($e("increment"===t.fn,"Unrecognized applyNumericFn"),"applyNumericFn"===e.type)return $e("increment"===e.fn,"Unrecognized applyNumericFn"),{type:"applyNumericFn",fn:"increment",value:e.value+t.value};if("update"===e.type){if("number"!=typeof e.value)throw new Error("Cannot increment a value that is not a number");return{type:"update",value:e.value+t.value}}return t}if("extendString"===t.fn){if("update"===e.type){if("string"!=typeof e.value)throw new Error("Cannot extend a value that is not a string");return{type:"update",value:e.value+t.value}}return"applyStringFn"===e.type&&"extendString"===e.fn?{type:"applyStringFn",fn:"extendString",value:e.value+t.value}:t}return null}function Kn(e,t){if(!e)return;const i={...e},n=$n(t);for(const[e,t]of n){const n=t;for(const t of n){const n=Qn(xn(i,e),t);void 0===n?Un(i,e):Ln(i,e,n)}}return i}function Wn(e){const t={};for(const i of e){const e=`${i.squidDocIdObj.integrationId}/${i.squidDocIdObj.collectionName}/${i.squidDocIdObj.docId}`;t[e]||(t[e]=[]),t[e].push(i)}const i=[];for(const e in t){const n=t[e].reduce((e,t)=>Ge(Gn(e,t),"Merge result cannot be null"));i.push(n)}return i}const zn="dataManager_runInTransaction";var Jn;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(Jn||(Jn={}));class Yn{constructor(e,t,i,n,s,r,o,a,c){this.documentStore=e,this.mutationSender=t,this.socketManager=i,this.querySubscriptionManager=n,this.queryBuilderFactory=s,this.lockManager=r,this.destructManager=o,this.documentIdentityService=a,this.querySender=c,this.docIdToLocalTimestamp=new Map,this.batchClientRequestIds=new Set,this.docIdToServerTimestamp=new Map,this.pendingIncomingUpdates=new Map,this.pendingOutgoingMutations=new Map,this.pendingOutgoingMutationsChanged=new ut.Subject,this.outgoingMutationsEmpty=new ut.BehaviorSubject(!0),this.knownDirtyDocs=new Set,this.failedDocsToResync=[],this.refreshDocIdToTimestamp=new Map,this.handleIncomingMessagesForTests=!0,this.destructManager.onDestruct(()=>{this.destruct()}),this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.handleNotifications(),this.startDeleteExpiredTimestampsJob(),this.handleOrphanDocs(),this.outgoingMutationsEmpty.subscribe(e=>{this.querySender.safeToSendQueriesToServer.next(e)})}getProperties(e){return this.documentStore.getDocumentOrUndefined(e)}hasSufficientData(e,t){return this.documentStore.hasSufficientData(e,t)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),i=t&&!t.expireTimestamp?t.timestamp:void 0,n=this.docIdToLocalTimestamp.get(e);return!((!n||i)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&n===i)}async executeDetachedQuery(e){const t=this.currentTransactionId,i={query:e,clientRequestId:Ft(),subscribe:!1},n=await this.querySender.sendQueryDirect(i);return this.currentTransactionId!==t?this.reRunQueryThroughNormalPipeline(e):this.applyPendingMutationsToQueryResult(n.docs,e)}async reRunQueryThroughNormalPipeline(e){await(0,ut.firstValueFrom)(this.outgoingMutationsEmpty.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)));const t={query:e,clientRequestId:Ft(),subscribe:!1};return(await this.querySender.sendQueryDirect(t)).docs}predictUpdate(e,t){try{return Kn(e,t)}catch{return e}}applyPendingMutationsToQueryResult(e,t){const i=new Pn(t),n=new Map;for(const i of e){const e=Ki(i.__docId__,t.collectionName,t.integrationId);n.set(e,i)}for(const[e,s]of this.pendingOutgoingMutations){const r=Vi(e);if(r.collectionName===t.collectionName&&r.integrationId===t.integrationId)for(const{mutation:t}of s){const s=n.get(e);if("delete"===t.type)n.delete(e);else if("update"===t.type){if(s){const r=this.predictUpdate(s,t);r&&i.documentMatchesQuery(r)?n.set(e,r):n.delete(e)}}else if("insert"===t.type){const s={...t.properties,__docId__:r.docId};i.documentMatchesQuery(s)&&n.set(e,s)}}}const s=Array.from(n.values()),{sortOrder:r}=t;s.sort((e,t)=>{for(const{fieldName:i,asc:n}of r){const s=Ti(mi(e,i),mi(t,i));if(0!==s)return n?s:-s}return 0});const o=t.limit<0?2e3:t.limit;return s.slice(0,o)}async runInTransaction(e,t){if(t)return $e(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(zn)?this.lockManager.lockSync(zn):await this.lockManager.lock(zn);let i=Xn;const n=()=>i!==Xn;return new Promise(async(t,s)=>{try{let r;this.currentTransactionId=Ft();try{r=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(n()?void 0:{resolve:()=>t(r),reject:s})}}catch(e){i=n()?i:e}finally{try{this.lockManager.release(zn)}catch(e){i=n()?i:e}}n()&&s(i)})}async applyOutgoingMutation(e,t){const i=Ki(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(zn)||(await this.lockManager.lock(zn),this.lockManager.release(zn)),this.knownDirtyDocs.delete(i);const n=this.removeInternalProperties(e),s=this.pendingOutgoingMutations.get(i)?.slice(-1)[0],r=s&&!s.sentToServer?Ge(Wn([s.mutation,n])[0],"Failed to reduce mutations"):void 0;if("update"===e.type&&Kn(this.documentStore.getDocumentOrUndefined(i),e),s&&r)s.mutation=r,this.outgoingMutationsEmpty.next(!1);else{const e={mutation:n,sentToServer:!1},t=this.pendingOutgoingMutations.get(i)||[];t.push(e),this.pendingOutgoingMutations.set(i,t),this.outgoingMutationsEmpty.next(!1),this.pendingOutgoingMutationsChanged.next()}return this.runInTransaction(async()=>{const t=this.documentStore.getDocumentOrUndefined(i),n="delete"===e.type?void 0:"update"===e.type?t&&this.predictUpdate(t,e):{...e.properties};this.updateDocumentFromSnapshot(i,n)&&("insert"===e.type&&this.docIdToLocalTimestamp.set(i,(new Date).getTime()),this.querySubscriptionManager.setClientRequestIdsForLocalDoc(i,n).forEach(e=>this.batchClientRequestIds.add(e)))},t)}isTracked(e){if(this.pendingIncomingUpdates.get(e))return!0;const t=this.pendingOutgoingMutations.get(e);return!(!t||!t.length)||this.querySubscriptionManager.hasOngoingQueryForDocId(e)}isForgotten(e){return this.documentStore.hasData(e)&&!this.isTracked(e)}isLocalOnly(e){return!this.hasBeenAcknowledged(e)&&this.documentStore.hasData(e)}hasBeenAcknowledged(e){return this.docIdToServerTimestamp.has(e)}async runInTransactionSync(e,t){if(t)return $e(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(zn);try{this.currentTransactionId=Ft();try{return e(this.currentTransactionId)}catch(e){console.error("error while executing callback function in transaction",e)}finally{this.finishTransaction()}}catch(e){console.error("error while executing transaction",e)}finally{this.lockManager.release(zn)}}removeInternalProperties(e){if("delete"===e.type)return e;const t={...e,properties:{...e.properties}};return delete t.properties.__docId__,delete t.properties.__ts__,t}handleNotifications(){this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"mutations"===e.type),qt(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t={},i=[];for(const n of e){if(!this.querySubscriptionManager.hasOngoingQuery(n.clientRequestId))continue;const e=this.querySubscriptionManager.getQuery(n.clientRequestId),s=null!==e.projectFields&&void 0!==e.projectFields,r=this.querySubscriptionManager.hasSubscription(n.clientRequestId);s&&r?i.push({squidDocId:n.squidDocId,item:{properties:n.doc,timestamp:n.mutationTimestamp,clientRequestId:n.clientRequestId,projectFields:e.projectFields}}):t[n.squidDocId]={properties:n.doc,timestamp:n.mutationTimestamp}}Object.keys(t).length>0&&this.applyIncomingUpdates(t),i.length>0&&this.runInTransactionSync(()=>{this.applyProjectedUpdates(i)})}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId);if(null!==t.projectFields&&void 0!==t.projectFields){const i=[];for(const n of e.docs){const s=Ki(n.__docId__,t.collectionName,t.integrationId);i.push({squidDocId:s,item:{properties:n,timestamp:n.__ts__,clientRequestId:e.clientRequestId,projectFields:t.projectFields}})}this.runInTransactionSync(()=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId,e.docs),this.batchClientRequestIds.add(e.clientRequestId),this.applyProjectedUpdates(i)})}else{const i={};for(const n of e.docs){const e=Ki(n.__docId__,t.collectionName,t.integrationId);i[e]={properties:n,timestamp:n.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId,e.docs),this.batchClientRequestIds.add(e.clientRequestId),this.applyIncomingUpdates(i,t)&&this.querySubscriptionManager.hasSubscription(e.clientRequestId)&&this.batchClientRequestIds.delete(e.clientRequestId)})}}applyIncomingUpdates(e,t){let i=!1;const n=new Set,s=new Set;for(const[t,r]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>r.timestamp?i=!0:o&&o.timestamp>r.timestamp?(r.properties&&this.documentStore.adoptMissingFields(t,r.properties),s.add(t)):(this.pendingIncomingUpdates.set(t,r),n.add(t))}return this.runInTransactionSync(()=>{for(const e of n)this.maybeApplyIncomingUpdate(e);for(const e of s)this.refreshQueryMapping(e)},t),i}applyProjectedUpdates(e){for(const{squidDocId:t,item:i}of e){const e=Ge(i.clientRequestId,"clientRequestId required for projected updates"),n=this.pendingOutgoingMutations.get(t);if(n&&n.length)continue;const s=this.docIdToServerTimestamp.get(t);s&&s.timestamp>i.timestamp?(this.querySubscriptionManager.addDocToQuery(t,e),this.batchClientRequestIds.add(e)):(this.acknowledgeDocument(t,i.timestamp,!i.properties),this.docIdToLocalTimestamp.set(t,i.timestamp),i.properties?(this.documentStore.saveProjectedDocument(t,i.properties,i.projectFields),this.querySubscriptionManager.addDocToQuery(t,e)):this.querySubscriptionManager.removeDocFromQuery(t,e),this.batchClientRequestIds.add(e))}}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const i=this.pendingOutgoingMutations.get(e);i&&i.length||(this.updateDocumentFromSnapshot(e,t.properties),this.acknowledgeDocument(e,t.timestamp,!t.properties),this.docIdToLocalTimestamp.set(e,t.timestamp),this.pendingIncomingUpdates.delete(e),this.refreshQueryMapping(e))}refreshQueryMapping(e){const t=this.documentStore.getDocumentOrUndefined(e);this.querySubscriptionManager.setClientRequestIdsForLocalDoc(e,t).forEach(e=>{this.batchClientRequestIds.add(e)}),t&&(this.querySubscriptionManager.findQueriesForDocument(t,e).length||this.forgetDocument(e,!1))}destruct(){this.stopDeleteExpiredTimestampsJob()}stopDeleteExpiredTimestampsJob(){void 0!==this.deleteExpiredTimestampsInterval&&(clearInterval(this.deleteExpiredTimestampsInterval),this.deleteExpiredTimestampsInterval=void 0)}startDeleteExpiredTimestampsJob(){this.deleteExpiredTimestampsInterval=setInterval(()=>{const e=[...this.docIdToServerTimestamp.entries()].filter(([e,t])=>!(!t.expireTimestamp||t.expireTimestamp>Date.now()||this.isTracked(e)));for(const[t]of e)this.docIdToServerTimestamp.delete(t),this.forgetDocument(t,!0)},1e4)}updateDocumentFromSnapshot(e,t){const i=this.documentStore.getDocumentOrUndefined(e);return!(!i&&!t||i===t)&&((!i||!t||Oi({...t,__ts__:void 0})!==Oi(i))&&(this.documentStore.saveDocument(e,t),!0))}finishTransaction(e){this.currentTransactionId=void 0;const t=[...this.batchClientRequestIds.values()];this.batchClientRequestIds.clear(),this.querySubscriptionManager.notifyAllSubscriptions(t),this.sendAllUnsentOutgoingMutations(e)}async sendAllUnsentOutgoingMutations(e){const t=this.groupOutgoingMutationsByIntegrationId();try{await In.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:i,idResolutionMap:n={},refreshList:s=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(n),s.forEach(e=>{this.refreshDocIdToTimestamp.set(n[e]||e,i)});for(const t of e){let e=this.removeOutgoingMutation(t);n[e]&&(e=n[e]),this.acknowledgeDocument(e,i),this.isTracked(e)||(this.setExpiration(e,!0),this.forgetDocument(e,!1))}}catch(t){for(const t of e){const e=this.removeOutgoingMutation(t);this.forgetDocument(e,!1),(this.hasBeenAcknowledged(e)||"insert"===t.mutation.type)&&this.failedDocsToResync.push(e)}throw t}}removeOutgoingMutation(e){const t=Ki(e.mutation.squidDocIdObj),i=Ge(this.pendingOutgoingMutations.get(t));return i.splice(i.indexOf(e),1),i.length||this.pendingOutgoingMutations.delete(t),this.pendingOutgoingMutationsChanged.next(),t}async resyncFailedUpdates(){const e=[...this.failedDocsToResync];this.failedDocsToResync.splice(0);for(const t of e){const{docId:e}=Vi(t);this.setExpiration(t,!0);try{const i=e.includes(Hi)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(Ge(i.length<=1,"Got more than one doc for the same id:"+t),!i.length){this.forgetDocument(t,!1);const e=this.querySubscriptionManager.setClientRequestIdsForLocalDoc(t,void 0);this.querySubscriptionManager.notifyAllSubscriptions(e)}}catch(e){this.querySubscriptionManager.errorOutAllQueries(t,e)}}}async refreshUpdatedDocuments(){const e=[];for(const[t,i]of this.refreshDocIdToTimestamp.entries()){const n=this.docIdToServerTimestamp.get(t)?.timestamp;n&&n>i||e.push(t)}this.refreshDocIdToTimestamp.clear(),await Promise.allSettled(e.map(e=>this.queryBuilderFactory.getForDocument(e).snapshot()))}groupOutgoingMutationsByIntegrationId(){const e={};for(const[,t]of[...this.pendingOutgoingMutations.entries()]){const i=t[t.length-1];if(i&&!i.sentToServer){const t=i.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(i),i.sentToServer=!0}}return Object.entries(e)}handleOrphanDocs(){this.querySubscriptionManager.onOrphanDocuments.subscribe(e=>{for(const t of e)this.isTracked(t)||this.forgetDocument(t,!1)})}acknowledgeDocument(e,t,i=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,i)}setExpiration(e,t){const i=this.docIdToServerTimestamp.get(e);i&&(i.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),this.pendingIncomingUpdates.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=Ki(t.mutation.squidDocIdObj),n=e[i];n&&(t.mutation.squidDocIdObj=Vi(n))})}),Object.entries(e).forEach(([e,t])=>{Si(this.pendingOutgoingMutations,e,t),Si(this.docIdToLocalTimestamp,e,t),Si(this.docIdToServerTimestamp,e,t)})}hasPendingSentMutations(){for(const e of this.pendingOutgoingMutations.values())for(const t of e)if(t.sentToServer)return!0;return!1}}const Xn=Symbol("undefined");class Zn{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new ut.BehaviorSubject(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe((0,ut.filter)(Boolean),qt(()=>{}))}onPreDestruct(e){this.preDestructors.push(e)}onDestruct(e){this.destructors.push(e)}async destruct(){this.reportDestructed();const e=this.preDestructors.concat(this.destructors);let t=e.shift();for(;t;){try{await t()}catch(e){console.error("Error while destructing Squid",e)}t=e.shift()}}reportDestructed(){this.isDestructing||this.isDestructedSubject.next(!0)}}class es{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{if(e)return;const t=Object.keys(this.ongoingLocks);t.length>0&&(console.warn(`DistributedLockManager: WebSocket disconnected, releasing ${t.length} lock(s)`),Ui.debug(`DistributedLockManager: released lock(s): [${t.join(", ")}]`)),this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.lockId];t?.release()})}async lock(e,t){"number"==typeof t&&(t={acquisitionTimeoutMillis:t});const i=t?.acquisitionTimeoutMillis??2e3,n=t?.maxHoldTimeMillis;this.socketManager.notifyWebSocketIsNeeded(),$e(await(0,ut.firstValueFrom)((0,ut.race)((0,ut.timer)(this.lockWaitForConnectionThreshold).pipe(qt(()=>!1)),this.socketManager.observeConnectionReady().pipe((0,ut.filter)(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const s=Ft(),r={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:n,clientRequestId:s}};this.socketManager.postMessage(r);const o=await(0,ut.firstValueFrom)((0,ut.race)((0,ut.timer)(i+4e3).pipe((0,ut.take)(1),qt(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:s}}))),this.acquireLockMessagesFromServer.pipe((0,ut.filter)(e=>e.payload.clientRequestId===s)))),a=o.payload.lockId;$e(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),$e(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new ts(a,e,s,this.ongoingLocks,this.socketManager);return this.ongoingLocks[a]=c,c}releaseAllLocks(){for(const[e,t]of Object.entries(this.ongoingLocks))t.release(),delete this.ongoingLocks[e]}}class ts{constructor(e,t,i,n,s){this.lockId=e,this.resourceId=t,this.clientRequestId=i,this.ongoingLocks=n,this.socketManager=s,this.released=!1,this.onReleaseSubject=new ut.ReplaySubject(1)}async release(){if(this.released)return;this.released=!0,delete this.ongoingLocks[this.lockId];const e={type:"releaseLock",payload:{lockId:this.lockId,clientRequestId:this.clientRequestId}},t=this.socketManager.sendMessage(e),i=await(0,ut.firstValueFrom)((0,ut.race)((0,ut.from)(t.then(is,is)),this.socketManager.observeConnectionReady().pipe((0,ut.filter)(e=>!e),qt(()=>!1))));if(this.onReleaseSubject.next(),!i)return t.catch(()=>{}),void this.onReleaseSubject.complete();try{await t}finally{this.onReleaseSubject.complete()}}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}function is(){return!0}class ns{constructor(e,t){this.documentStore=e,this.destructManager=t,this.changeNotifier=new ut.BehaviorSubject({}),this.destructManager.onDestruct(()=>{this.changeNotifier.complete()})}migrate(e){Object.entries(e).forEach(([e,t])=>{this.documentStore.migrateDocId(e,t)}),this.changeNotifier.next(e)}observeChanges(){return this.changeNotifier.asObservable()}}class ss{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t,i,n=!1){if(i||n)return new nn(e,Ge(this.dataManager,"dataManager not found"),t,i,n?this.create(e,t):void 0);let s=this.documents.get(e);if(s)return s;s=new nn(e,Ge(this.dataManager,"dataManager not found"),t);const{integrationId:r,collectionName:o}=Vi(e);this.documents.set(e,s);const a=this.getCollectionKey(r,o),c=this.documentsForCollection.get(a)||[];return this.documentsForCollection.set(a,c.concat(s)),s}setDataManager(e){this.dataManager=e}getDocumentsForCollection(e,t){const i=this.getCollectionKey(e,t);return(this.documentsForCollection.get(i)||[]).filter(e=>e.hasData)}migrateDocIds(e){for(const[,t]of this.documents)t.migrateDocIds(e);Object.entries(e).forEach(([e,t])=>{const i=Vi(e),n=Vi(t);Si(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class rs{constructor(){this.squidDocIdToDoc=new Map,this.squidDocIdToProjectedFields=new Map}saveProjectedDocument(e,t,i){const n=this.squidDocIdToDoc.get(e);if(n){const i=this.mergeDocuments(n,t),s=this.removeInternalProperties(i);this.squidDocIdToDoc.set(e,s)}else{const i=this.removeInternalProperties(t);this.squidDocIdToDoc.set(e,i)}if(i?.length){const t=this.squidDocIdToProjectedFields.get(e);if(void 0!==t)for(const e of i)t.add(e);else n||this.squidDocIdToProjectedFields.set(e,new Set(i))}return this.squidDocIdToDoc.get(e)}mergeDocuments(e,t){const i=Mi(e);for(const e of Object.keys(t)){const n=t[e],s=i[e];null===n||"object"!=typeof n||Array.isArray(n)||null===s||"object"!=typeof s||Array.isArray(s)?i[e]=n:i[e]=this.mergeDocuments(s,n)}return i}adoptMissingFields(e,t){const i=this.squidDocIdToDoc.get(e);if(!i)return;const n=Object.keys(t).filter(e=>"__ts__"!==e&&!(e in i));if(!n.length)return;const s=Mi(i);for(const e of n)s[e]=t[e];this.squidDocIdToDoc.set(e,s);const r=this.squidDocIdToProjectedFields.get(e);if(r)for(const e of n)r.add(e)}deleteDocument(e){this.squidDocIdToDoc.delete(e),this.squidDocIdToProjectedFields.delete(e)}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=Mi(t),n=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}return this.squidDocIdToDoc.delete(e),void this.squidDocIdToProjectedFields.delete(e)}const n=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}hasSufficientData(e,t){if(!this.squidDocIdToDoc.has(e))return!1;const i=this.squidDocIdToProjectedFields.get(e);return void 0===i||!!t?.length&&t.every(e=>i.has(e))}group(e,t){return Object.values(ki(e,e=>Oi(t.map(t=>mi(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=Array.from(e).map(e=>this.squidDocIdToDoc.get(e)).filter(Ue),{sortOrder:n,limitBy:s}=t,r=i.sort((e,t)=>this.compareSquidDocs(e,t,n)),o=t.limit<0?2e3:t.limit;let a;if(s){const{limit:e,fields:t,reverseSort:i}=s,n=this.group(r,t);let c;c=i?n.map(t=>t.slice(-e)):n.map(t=>t.slice(0,e)),a=c.flat().slice(0,o)}else a=r.slice(0,o);return null!==t.projectFields&&void 0!==t.projectFields&&(a=a.map(e=>this.projectDocument(e,t.projectFields))),a}projectDocument(e,t){const i={};"__id"in e&&(i.__id=e.__id),"__docId__"in e&&(i.__docId__=e.__docId__);for(const n of t)if(n.includes(".")){const t=mi(e,n);void 0!==t&&bi(i,n,t)}else n in e&&(i[n]=e[n]);return i}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;Si(this.squidDocIdToDoc,e,t),Si(this.squidDocIdToProjectedFields,e,t);const n=Vi(t),s=Di(n.docId);this.saveDocument(t,{...i,...s,__docId__:n.docId})}countDocsUpTo(e,t,i){let n=0;for(const s of e){const e=this.squidDocIdToDoc.get(s);e&&this.compareSquidDocs(e,t,i)<=0&&n++}return n}findLastDoc(e,t){let i;for(const n of e)(!i||this.compareSquidDocs(n,i,t)>0)&&(i=n);return i}compareSquidDocs(e,t,i){for(const{fieldName:n,asc:s}of i){const i=Ti(mi(e,n),mi(t,n));if(0!==i)return s?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class os{constructor(e){this.rpcManager=e}async emit(e){const t={event:e};await this.rpcManager.post("events/emit",t)}}class as{constructor(e,t){this.integrationId=e,this.rpcManager=t}async saveAuthCode(e,t){const i={authCode:e,externalAuthConfig:{identifier:t,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/saveAuthCode",i)}async getAccessToken(e){const t={externalAuthConfig:{identifier:e,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/getAccessToken",t)}}class cs{constructor(e){this.rpcManager=e}async extractDataFromDocumentFile(e,t){t||(t={});const i={options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentFile",i,[e],"file")}async extractDataFromDocumentUrl(e,t){t||(t={});const i={url:e,options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentUrl",i)}async createPdf(e){return await this.rpcManager.post("extraction/createPdf",e)}}class us{constructor(e,t,i,n,s){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.ownedJobs=new Set,n.onDestruct(async()=>{this.stopKeepAlive();const e=[...this.ownedJobs];this.ownedJobs.clear(),await Promise.all(e.map(e=>this.resolveJob(e,"failed",void 0,"Client shut down").catch(()=>{})))}),s.isPassiveMode||this.clientIdService.observeClientId().pipe((0,ut.distinctUntilChanged)(),(0,ut.skip)(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))Ui.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(t=>{const i=this.listeners[e];i&&(i.error(t),delete this.listeners[e])})})}async startJob(e){await this.rpcManager.post("job/startJob",{jobId:e}),this.ownedJobs.add(e),this.ensureKeepAlive()}async completeJob(e,t){await this.resolveJob(e,"completed",t)}async failJob(e,t){await this.resolveJob(e,"failed",void 0,t)}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new ut.ReplaySubject(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(i=>{t.error(i),delete this.listeners[e]}),(0,ut.firstValueFrom)(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"jobStatus"===e.type)).subscribe(e=>{const t=e.payload,i=t.id,n=this.listeners[i];if(n){if("completed"===t.status)n.next(t.result);else if("failed"===t.status){const e=Object.assign(new Error(t.error||"Job failed"),{errorType:t.errorType});n.error(e)}else console.error("Unexpected job status:",t.status,"for jobId:",i);delete this.listeners[i]}}))}async resolveJob(e,t,i,n){try{await this.rpcManager.post("job/resolveJob",{jobId:e,status:t,result:i,error:n})}finally{this.ownedJobs.delete(e),this.ownedJobs.size||this.stopKeepAlive()}}ensureKeepAlive(){void 0===this.keepAliveHandle&&(this.keepAliveHandle=setInterval(()=>{if(!this.ownedJobs.size)return void this.stopKeepAlive();const e={jobIds:[...this.ownedJobs]};this.rpcManager.post("job/keepAlive",e).catch(e=>Ui.debug("Job keep-alive failed:",e))},15e3))}stopKeepAlive(){void 0!==this.keepAliveHandle&&(clearInterval(this.keepAliveHandle),this.keepAliveHandle=void 0)}}class ls{constructor(e,t,i){this.graphId=e,this.rpcManager=t,this.jobClient=i}async invoke(e={}){const t=Ft();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,timeoutMs:e.timeoutMs,graphContext:e.context,jobId:t}),await this.jobClient.awaitJob(t)}async invokeAsync(e={}){const t=Ft();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,timeoutMs:e.timeoutMs,graphContext:e.context,jobId:t}),t}async resume(e,t,i={}){const n=Ft();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,timeoutMs:i.timeoutMs,graphContext:i.context,jobId:n}),await this.jobClient.awaitJob(n)}async resumeAsync(e,t,i={}){const n=Ft();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,timeoutMs:i.timeoutMs,graphContext:i.context,jobId:n}),n}async getState(e){return this.rpcManager.post("langgraph/getState",{graphId:this.graphId,threadId:e})}async deleteThread(e){await this.rpcManager.post("langgraph/deleteThread",{graphId:this.graphId,threadId:e})}}class ds{constructor(e,t){this.rpcManager=e,this.jobClient=t}graph(e){return new ls(e,this.rpcManager,this.jobClient)}}const hs="squid_mgmt_";function ps(e="n_"){return`${e}${Ut(10).toLowerCase()}`}const gs=e=>e();class fs extends Error{constructor(e,t,i,n,s){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=s}}const ys="1.0.502";async function ms(e){return vs({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage,abortSignal:e.abortSignal})}async function Is(e){return vs({...e,method:"GET",files:[],filesFieldName:""})}async function bs(e){return vs({...e,method:"PUT"})}async function Ss(e){return vs({...e,method:"PATCH"})}async function ws(e){return vs({...e,method:"DELETE",files:[],filesFieldName:""})}async function vs(e){const t=await async function({headers:e,files:t,filesFieldName:i,message:n,url:s,extractErrorMessage:r,method:o,abortSignal:a}){const c=new Headers(e);c.append(Vt.TRACE_ID,ps("c_")),c.append(Vt.CLIENT_VERSION,ys);const u={method:o,headers:c,body:void 0,signal:a};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const n of t)e.append(i||"files",n,n.name);e.append("body",Ci(n)),u.body=e}else void 0!==n&&(c.append("Content-Type","application/json"),u.body=Ci(n));else"DELETE"===o&&void 0!==n&&(c.append("Content-Type","application/json"),u.body=Ci(n));try{const e=await fetch(s,u),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),n=_s(i);if(!r)throw new fs(i,e.status,s,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new fs(o,e.status,s,t,n)}const i=await e.text();return Ui.debug(`received response from url ${s}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw Ui.debug(`Unable to perform fetch request to url: ${s}`,e),e}}(e);return t.body=_s(t.body),t}function _s(e){if(e){try{return Di(e)}catch{}return e}}class Ms{constructor(e){$e(e.apiKey.startsWith(hs),`Invalid management API key format. Key must start with '${hs}'`),this.apiKey=e.apiKey,this.consoleRegion=e.consoleRegion}async createOrganization(e){return this.callApi("POST","organizations",e)}async createApplication(e){return this.callApi("POST","applications",e)}async deleteApplication(e){await this.callApi("DELETE",`applications/${e}`)}async renameOrganization(e){await this.callApi("PATCH",`organizations/${e.organizationId}`,{name:e.name})}async renameApplication(e){await this.callApi("PATCH",`applications/${e.appId}`,{name:e.name})}async callApi(e,t,i){const n=r(this.consoleRegion,"console",`openapi/iac/management/${t}`),s={Authorization:`ManagementKey ${this.apiKey}`};return"POST"===e?(await ms({url:n,headers:s,message:i,files:[],filesFieldName:"",extractErrorMessage:!0})).body:"PATCH"===e?(await Ss({url:n,headers:s,message:i,extractErrorMessage:!0})).body:(await ws({url:n,headers:s,message:i,extractErrorMessage:!0})).body}}class Es{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=Wn(e),n=i.map(e=>`sendMutation_${Ki(e.squidDocIdObj)}`);await this.lockManager.lock(...n),await this.querySender.waitForAllQueriesToFinish();try{const e={mutations:i,integrationId:t};return await this.rpcManager.post("mutation/mutate",e)}catch(e){throw Ui.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}async deleteQuery(e){const t=`deleteQuery_${e.integrationId}_${e.collectionName}`;await this.lockManager.lock(t),await this.querySender.waitForAllQueriesToFinish();try{const t={query:e};return await this.rpcManager.post("mutation/deleteQuery",t)}catch(t){throw Ui.debug("Error while deleting query results",{error:t,query:JSON.stringify(e,null,2)}),t}finally{this.lockManager.release(t)}}}class Ts{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class ks{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"userNotification"===e.type),(0,ut.map)(e=>e.payload))}async publishNotification(e,t){return await this.rpcManager.post("/notification/publishNotification",{clientIds:t,payload:e})}async publishSystemNotification(e,t){return await this.rpcManager.post("/notification/publishSystemNotification",{clientIds:t,payload:e})}}const As={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class Os{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!Cs.test(e)||e.length>=Ds);$e(0===i.length,()=>`Tag name is not allowed: ${i.join(",")}`),this.isReporting=!0;const n={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},s=this.rpcManager.post("/observability/metrics",{metrics:[n]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==s),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(s)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...As,...e,fn:Array.isArray(e.fn)?e.fn:[e.fn]};t.pointIntervalSeconds||(t.pointIntervalSeconds=t.periodEndSeconds-t.periodStartSeconds);const i=await this.rpcManager.post("/observability/metrics/query",t);return function(e,t){const{pointIntervalSeconds:i,noDataBehavior:n}=e,s=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-start-time"===n)return e;const s=t-e;let r=t-Math.floor(s/i)*i;return r>e&&(r-=i),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-end-time"===n)return t-i;const s=t-e;let r=e+Math.floor(s/i)*i;return r>=t&&(r-=i),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const i=[];for(let t=0;t<e.groupByTags.length;t++){const n=e.groupByTags[t],s=a[n]?.[0]||"";i.push(s)}t.push({tagValues:i,points:[]})}else"return-result-group-with-default-values"===n&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[i,n]of Object.entries(a)){const s=e.groupByTags.indexOf(i);if(!(s<0))for(let e=0;e<t.length;e++){const i=t[e],r=new Set(n);for(let e=0;e<t.length;e++){const n=t[e];i.tagValues.every((e,t)=>t===s||e===n.tagValues[t])&&r.delete(n.tagValues[s])}if(0!==r.size)for(const e of r){const n={tagValues:[...i.tagValues],points:[]};n.tagValues[s]=e,t.push(n)}}}for(const n of t){if(0!==n.points.length){const e=n.points[0][0],t=n.points[n.points.length-1][0];$e(e>=r,()=>`Invalid first point time: ${e}`),$e(t<=o,()=>`Invalid last point time: ${t}`)}const t=[];let a=0;const c=e=>"count"===e?0:s,u=Array.isArray(e.fn)?e.fn.map(c):[s];for(let e=r;e<=o;e+=i){const i=n.points[a];i?i[0]===e?(t.push(i),a++):($e(i[0]>e,()=>`Result point has invalid time: ${i[0]}`),t.push([e,...u])):t.push([e,...u])}n.points=t}}(t,i.resultGroups),i}}const Cs=/^[a-zA-Z0-9_-]+$/,Ds=1e3;async function Rs(e,t,i=500,n){const s=Date.now(),r=e.paginate({pageSize:i,subscribe:!1});let o=0,a=0,c=await r.waitForData();for(n?.({pageIndex:a,documentCount:c.data.length,totalLoaded:o+c.data.length});;){for(const e of c.data)o++,await t(e.data);if(!c.hasNext)break;c=await r.next(),a++,n?.({pageIndex:a,documentCount:c.data.length,totalLoaded:o+c.data.length})}return{count:o,time:Date.now()-s}}async function Ns(e,t=500,i){const n=[],s=e.paginate({pageSize:t,subscribe:!1});let r=0,o=await s.waitForData();for(i?.({pageIndex:r,documentCount:o.data.length,totalLoaded:n.length+o.data.length});;){for(const e of o.data){const t=Vi(e.squidDocId),i=Di(t.docId),s=t.integrationId===Ee?i.__id:i;n.push(s)}if(!o.hasNext)break;o=await s.next(),r++,i?.({pageIndex:r,documentCount:o.data.length,totalLoaded:n.length+o.data.length})}return n}function qs(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:n}=t,{collectionName:s,integrationId:r}=i;let o=e.collection(s,r).query();return o=Fs(o,i),n?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:n,joinConditions:s,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=Fs(u,i.query),Object.entries(n).map(([t,i])=>{const{collectionName:n,integrationId:r}=i,{left:o,right:a,leftAlias:c}=s[t];let l=e.collection(n,r).query();l=Fs(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),r&&o?u.grouped().dereference():r?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:n,integrationId:s}=js(i[0]),r=i.map(t=>qs(e,t));return e.collection(n,s).or(...r)}(e,t)}}function Fs(e,t){const{conditions:i,limit:n,sortOrder:s}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");if("docIds"in t)throw new Error("DocId conditions are not supported in query serialization.");const{fieldName:i,operator:n,value:s}=t;e.where(i,n,s)}e.limit(n);for(const{fieldName:t,asc:i}of s)e.sortBy(t,i);return e}function js(e){switch(e.type){case"simple":{const{collectionName:t,integrationId:i}=e.query;return{collectionName:t,integrationId:i}}case"join":{const{collectionName:t,integrationId:i}=e.root.query;return{collectionName:t,integrationId:i}}case"merged":return js(e.queries[0])}}class Ps{constructor(e,t,i){this.documentStore=e,this.documentReferenceFactory=t,this.querySubscriptionManager=i}peek(e){if(!this.querySubscriptionManager.findValidParentOfQuery(e))return[];const{integrationId:t,collectionName:i}=e,n=new Pn(e),s=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>n.documentMatchesQuery(e.data)),r={};return s.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[Ki(e.__docId__,i,t)])}}function Bs(e,t){return dt(function(i,n){var s=0;i.subscribe(Rt(n,function(i){return e.call(t,i,s++)&&n.next(i)}))})}class xs{constructor(e,t,i){this.rpcManager=e,this.destructManager=t,this.webSocketConnectionReady$=i,this.safeToSendQueriesToServer=new ut.BehaviorSubject(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new ut.BehaviorSubject(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new ut.Subject,i=(0,ut.firstValueFrom)(t);return this.pendingQueryRequests.push({queryRequest:e,responseSubject:t}),this.pendingQueryBatchTimeout&&(clearTimeout(this.pendingQueryBatchTimeout),this.pendingQueryBatchTimeout=void 0),this.pendingQueryRequests.length>=10?(this.processQueryBatch(),i):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.gateForCurrentBatch().subscribe(()=>{this.processQueryBatch()})},0),i)}gateForCurrentBatch(){return this.pendingQueryRequests.some(({queryRequest:e})=>e.subscribe)&&this.webSocketConnectionReady$?(0,ut.combineLatest)([this.safeToSendQueriesToServer,this.webSocketConnectionReady$]).pipe(Bs(([e,t])=>e&&t),(0,ut.take)(1),qt(()=>!0)):this.safeToSendQueriesToServer.pipe(Bs(Boolean),(0,ut.take)(1))}async sendQueryDirect(e){const t=await this.rpcManager.post("query/batchQueries",[e]),i=t.errors[e.clientRequestId];if(i)throw i;return t.results[e.clientRequestId]}async waitForAllQueriesToFinish(){return(0,ut.firstValueFrom)(this.inflightQueriesCount.pipe(Bs(e=>0===e))).then(()=>{})}async processQueryBatch(){const e=this.pendingQueryRequests.splice(0);if(!e.length)return;const t=Array.from(e.map(({queryRequest:e})=>e).reduce((e,t)=>(e.set(t.clientRequestId,t),e),new Map).values()),i=e.map(({responseSubject:e})=>e);this.inflightQueriesCount.next(this.inflightQueriesCount.value+t.length);try{const i=await this.rpcManager.post("query/batchQueries",t);for(const{queryRequest:t,responseSubject:n}of e){const e=t.clientRequestId,s=i.errors[e],r=i.results[e];s?n.error(s):n.next(r)}}catch(e){i.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var Ls={d:(e,t)=>{for(var i in t)Ls.o(t,i)&&!Ls.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function Us(e,t,...i){e||function(e,...t){const i=function(e){return void 0===e?"":"string"==typeof e?e:e()}(e);if("object"==typeof i)throw i;throw(e=>new Error(e))(i||"Assertion error",...t)}(t,...i)}function Qs(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return $s(e,t);if(0===t.length)return Us("object"==typeof i&&null!==i&&!Array.isArray(i),()=>`Root state must be a record. Trying to set '${i}', type: ${typeof i}`),i;function n(e){const t=Number(e);return!isNaN(t)&&t>=0&&t!==1/0}let s=e;for(let e=0;e<t.length-1&&void 0!==s;e++){const i=t[e];Us(!Array.isArray(s)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),s=s[i],Us(void 0===s||"object"==typeof s&&null!==s,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===s?"<null>":typeof s}'`)}const r=t[t.length-1];return Us(!Array.isArray(s)||n(r),()=>`Invalid array index Path: '${t}`),(null==s?void 0:s[r])===i?e:Gs(e,t,i)}(e,t.path,t.value);case"delete":return $s(e,t.path);case"batch":return t.actions.reduce((e,t)=>Qs(e,t),e)}}function $s(e,t){Us(0!==t.length,"Can't delete an empty path");let i=e;for(let n=0;n<t.length-1;n++){const s=t[n];if(i=i[s],void 0===i)return e;Us("object"==typeof i&&null!==i,()=>`Cannot delete a property from a non-record parent. Path: '${t.slice(0,n+1)}', type: ${null===i?"<null>":typeof i}`)}const n=t[t.length-1];return void 0===i[n]?e:Gs(e,t,void 0)}function Gs(e,t,i){function n(e,i){Us(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const s=Object.assign({},e);let r=s;for(let e=0;e<t.length-1;e++){const s=t[e],o=r[s];Us(void 0===o||"object"==typeof o&&null!==o,()=>`Internal error: sub-path has an invalid type and can't be patched: '${t.slice(0,e+1)}', type: '${null===o?null:typeof o}'`);const a=void 0===o?void 0===i?void 0:{}:Array.isArray(o)?[...o]:Object.assign({},o);if(void 0===a)return n(r,s),r;r[s]=a,r=a}const o=t[t.length-1];return void 0===i?n(r,o):r[o]=i,s}function Hs(e,t){const i=[];if("set"===e.type||"delete"===e.type)i.push(e.path);else if("batch"===e.type)for(const t of e.actions)i.push(...Hs(t,"as-is"));return"unique-and-sorted"===t?Ws(i):i}function Vs(e,t){if(e.length<t.length)return!1;for(let i=0;i<t.length;i++)if(e[i]!==t[i])return!1;return!0}function Ks(e){const t=[...e];return t.sort((e,t)=>{for(let i=0;i<e.length;i++){if(i===t.length)return 1;const n=e[i].localeCompare(t[i]);if(0!==n)return n}return e.length-t.length}),t}function Ws(e){const t=Ks(e),i=t;for(let e=0;e<t.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++){const r=t[s];n.length===r.length&&Vs(n,r)&&(i[s]=void 0,e++)}}return i.filter(e=>void 0!==e)}const zs=(Js={Observable:()=>ut.Observable,Subject:()=>ut.Subject},Ys={},Ls.d(Ys,Js),Ys);var Js,Ys;const Xs=(Zs={filter:()=>Bs,map:()=>qt},er={},Ls.d(er,Zs),er);var Zs,er;class tr{constructor(){this.root={children:new Map,childrenWithValue:0}}get(e){var t;return null===(t=this.getNode(e))||void 0===t?void 0:t.value}getOrSet(e,t){const i=this._buildPath(e);if(void 0!==i.value)return i.value;const n=t(e);return this._setNodeValue(i,n,void 0===n),n}set(e,t){const i=void 0===t?this._findNode(e):this._buildPath(e);i&&this._setNodeValue(i,t,!0)}delete(e){const t=this._findNode(e);if(void 0===t)return;if(void 0===t.parent){if(t!==this.root)throw new Error("Only root node can have no parent.");return this.root.value=void 0,this.root.children.clear(),void(this.root.childrenWithValue=0)}const i=(void 0===t.value?0:1)+t.childrenWithValue;i>0&&this._updateChildrenWithValue(t,-i),t.parent.children.delete(e[e.length-1]),this._runGc(t.parent)}clear(){this.delete([])}count(e=[],t="node-and-children"){const i=this.getNode(e);return void 0===i?0:i.childrenWithValue+("node-and-children"===t&&void 0!==i.value?1:0)}get isEmpty(){return 0===this.count()}fillPath(e,t){const i=[];let n=this.root,s=t(n.value,i);if(s!==tr.StopFillToken){this._setNodeValue(n,s,!1);for(let r=0;r<e.length;r++){const o=e[r];i.push(o);let a=n.children.get(o);if(s=t(null==a?void 0:a.value,i),s===tr.StopFillToken)break;a||(a={children:new Map,parent:n,childrenWithValue:0},n.children.set(o,a)),this._setNodeValue(a,s,!1),n=a}this._runGc(n)}}visitDfs(e,t,i=[]){const n=this.getNode(i);void 0!==n&&this._visitDfs(e,n,t,[...i])}_visitDfs(e,t,i,n){if("pre-order"===e&&!1===i(t.value,n))return!1;for(const[s,r]of t.children){if(n.push(s),!this._visitDfs(e,r,i,n))return!1;n.pop()}return"in-order"!==e||!1!==i(t.value,n)}getNode(e){return this._getNode(e)}_getNode(e){let t=this.root;for(const i of e)if(t=t.children.get(i),!t)return;return t}_findNode(e){let t=this.root;for(let i=0;i<e.length&&t;i++)t=t.children.get(e[i]);return t}_buildPath(e){let t=this.root;for(let i=0;i<e.length;i++){const n=e[i];let s=t.children.get(n);s||(s={children:new Map,parent:t,childrenWithValue:0},t.children.set(n,s)),t=s}return t}_setNodeValue(e,t,i){if(e.value!==t){const i=void 0===t?-1:void 0===e.value?1:0;e.value=t,this._updateChildrenWithValue(e,i)}i&&this._runGc(e)}_updateChildrenWithValue(e,t){if(0!==t)for(let i=e.parent;i;i=i.parent)if(i.childrenWithValue+=t,i.childrenWithValue<0)throw new Error("Internal error: negative counter value!")}_runGc(e){void 0===e.value&&(0===e.childrenWithValue&&e.children.clear(),e.parent&&this._runGc(e.parent))}}tr.StopFillToken=Symbol("Trie.StopFillToken");class ir extends zs.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class nr{constructor(e){this.rootState=e,this.observersTrie=new tr,this.batchDepth=0,this.appliedBatchActions=[],this.rootStateBeforeBatchStart=this.rootState,this.stubForUnusedPaths=[]}get state(){return this.rootState}get state$(){return this.observe([])}get(e){return this._get(this.rootState,e)}observe(e,t=[]){return this._observeChanges(e,t,"new-value-only").pipe((0,Xs.map)(e=>e.value))}observeChanges(e,t=[]){return this._observeChanges(e,t,"all-details")}set(e,t,i){(null==i?void 0:i(this.get(e),t,e))||this._apply({type:"set",path:e,value:t})}delete(e){this._apply({type:"delete",path:e})}reset(e){this.observersTrie.visitDfs("pre-order",e=>null==e?void 0:e.complete()),this.observersTrie.delete([]),this.rootState=e}runInBatch(e){this.batchDepth++;try{e()}finally{if(this.batchDepth--,0===this.batchDepth&&this.appliedBatchActions.length>0){const e={type:"batch",actions:this.appliedBatchActions};this.appliedBatchActions=[],this._notify(e)}}}_apply(e){0===this.batchDepth&&(this.rootStateBeforeBatchStart=this.rootState),this.rootState=Qs(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=Hs(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=Ws([...t,...i]),s=new tr;for(const e of n)s.fillPath(e,()=>!0);s.visitDfs("pre-order",(t,i)=>{const n=this.observersTrie.get(i);if(n){const t=this.get(i),s=n.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;n.next({action:e,value:t,oldValue:s})}})}_observeChanges(e,t=[],i){const n=0===t.length?void 0:new tr;for(const e of t)null==n||n.set(e,!0);return new zs.Observable(t=>{const s=this.observersTrie.getOrSet(e,()=>new ir);s.isAllDetailsMode=s.isAllDetailsMode||"all-details"===i;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=s.pipe((0,Xs.filter)(({action:e})=>void 0===n||Hs(e,"as-is").some(e=>!n.get(e))),(0,Xs.map)(({action:t,value:i,oldValue:n})=>{let r=this.stubForUnusedPaths;if(s.isAllDetailsMode){const i=Hs(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=Ks(e),i=t;for(let e=0;e<i.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++)Vs(t[s],n)&&(i[s]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>Vs(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:n,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),s.observed||this.observersTrie.delete(e)}})}_get(e,t){let i=e;for(let e=0;e<t.length&&void 0!==i;e++){const n=t[e];i=null==i?void 0:i[n]}return i}selectChildPathsWithObservers(e){const t=[];for(const i of e)this.observersTrie.count(i,"children-only")>0&&this.observersTrie.visitDfs("pre-order",(e,i)=>{e&&t.push([...i])},i);return t}}function sr(e,t,i=(e,t)=>e>t?1:e<t?-1:0,n=0,s=e.length-1){if(s<n)return-1;const r=Math.trunc((n+s)/2);return 0===i(t,e[r])?r:i(t,e[r])>0?sr(e,t,i,r+1,s):sr(e,t,i,n,r-1)}function rr(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==sr(e,t,i))return;let n;for(n=e.length-1;n>=0&&i(e[n],t)>0;n--)e[n+1]=e[n];e[n+1]=t}function or(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=sr(e,t,i);n>-1&&e.splice(n,1)}class ar{setDetachedQueryExecutor(e){this.detachedQueryExecutor=e}constructor(e,t,i,n,s,r,o,a){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=n,this.documentIdentityService=s,this.querySender=r,this.socketManager=o,this.lockManager=a,this.onOrphanDocuments=new ut.Subject,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new ur,this.queryResultsSubject=new ut.Subject,this.detachedRecords=new Set,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.clientIdService.observeClientTooOld().subscribe(()=>{this.invalidateOngoingQueryRegistrations()}),this.clientIdService.observeClientReadyToBeRegenerated().subscribe(()=>{this.refreshOngoingQueries()}),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}dumpSubscriptionInfo(){console.log("Ongoing queries:",this.ongoingQueries),console.log("ClientRequestId to local documents:",this.clientRequestIdToLocalDocuments),console.log("Local documents to clientRequestId:",this.localDocumentToClientRequestIds)}observeQueryResults(){return this.queryResultsSubject.asObservable()}hasOngoingQuery(e){return this.ongoingQueries.has(e)}getQuery(e){return Ge(this.ongoingQueries.get(e),"UNKNOWN_QUERY").query}setGotInitialResult(e,t){const i=this.ongoingQueries.get(e);i?.gotInitialResponse&&this.removeClientRequestIdMapping(e),i&&(i.gotInitialResponse=!0,i.isInFlight=!1,t&&i.subscribe&&i.query.limit>0&&this.setLimitWindow(i,t))}findQueriesForDocument(e,t){const{collectionName:i,integrationId:n}=Vi(t),s=this.queryMappingManager.getMapping(i,n);return s?function(e,t){const i=[...e.unconditional||[]],n=new Map;for(const[i,s]of Object.entries(e.conditional||{})){const e=Di(i);let r;if(Xi(e))if(e.fieldName===je)r=tn(e.value,t,e.operator,mi);else{const i=mi(t,e.fieldName)??null;r=Wi(e.value,i,e.operator)}else r=Zi(e)?en(e,t,mi):cr(e,t);if(r)for(const e of s)n.set(e,(n.get(e)||0)+1)}for(const[t,s]of n.entries())s>=e.queriesMetadata[t].condCount&&i.push(t);return i}(s,e):[]}setClientRequestIdsForLocalDoc(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set,n=new Set(t?this.findQueriesForDocument(t,e).map(e=>function(e){const t=e.split("_");return{clientId:t[0],clientRequestId:t[1]}}(e).clientRequestId):[]),s=new Set([...i,...n]);for(const t of[...i]){if(n.has(t))continue;i.delete(t);const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),i.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of n){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}return[...s]}addDocToQuery(e,t){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}removeDocFromQuery(e,t){const i=this.localDocumentToClientRequestIds.get(e);let n=!i;i&&(i.delete(t),i.size||(this.localDocumentToClientRequestIds.delete(e),n=!0));const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),n&&this.documentStore.deleteDocument(e)}errorOutAllQueries(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of i){const i=this.ongoingQueries.get(e);i&&(this.destructManager.isDestructing?i.dataSubject.complete():i.dataSubject.error(t),i.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const i of e){const e=this.ongoingQueries.get(i);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const n=this.clientRequestIdToLocalDocuments.get(i)||new Set,s=this.documentStore.sortAndLimitDocs(n,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(s,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=Ge(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case Jn.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+100?Jn.ENABLED:Jn.DISABLED;break;case Jn.DISABLED:break;case Jn.ENABLED:{const{limitWindowEnd:t,query:i}=e;if((t?this.documentStore.countDocsUpTo(n,t,i.sortOrder):n.size)<i.limit+20){e.limitUnderflowState=Jn.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}}e.dataSubject.next(s)}for(const e of t){const t=this.collectAllObservables(e);Ge(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new Pn(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,n,s,r,o){s&&this.socketManager.notifyWebSocketIsNeeded();const a=Object.keys(i).length>0;return s||a||!this.detachedQueryExecutor||this.lockManager.canGetLock(zn)?(0,ut.defer)(()=>{const a=this.createOngoingQueryGraph(e,t,i,n,s,!0,{},o);r&&(a.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(a),a.allObservables=new ut.ReplaySubject(1);const c=a.allObservables.pipe((0,ut.switchMap)(e=>(0,ut.combineLatest)(e).pipe(qt(e=>this.joinResults(e,n,a)))),Bs(()=>this.allOngoingQueriesGotInitialResult(a)),(0,ut.startWith)(void 0),(0,ut.pairwise)(),Bs(([e,t])=>!vi(e,t)),qt(([,e])=>e),s?(0,ut.tap)():(0,ut.take)(1),(0,ut.finalize)(()=>{a.dataSubject.complete(),a.done=!0,this.completeAllSupportedQueries(a),a.allObservables?.complete()})),u=this.collectAllObservables(a);return a.allObservables.next(u),c}).pipe((0,ut.share)()):(0,ut.from)(this.detachedQueryExecutor(e)).pipe(qt(e=>e.map(e=>{const i={[t]:e};return this.detachedRecords.add(i),i})))}hasOngoingQueryForDocId(e){const t=this.localDocumentToClientRequestIds.get(e);return!!t&&!!t.size}unsubscribe(){const e=[...this.ongoingQueries.values()];for(const t of e)t.dataSubject.complete(),t.allObservables?.complete()}hasSubscription(e){return!!this.ongoingQueries.get(e)?.subscribe}isValidParent(e){if(!e.activated||e.isInFlight||e.isEmptyForJoin||e.done||!e.subscribe||!e.gotInitialResponse||!e.dataSubject.value)return!1;const t=-1===e.query.limit?1e3:e.query.limit;return e.dataSubject.value.length<t}findValidParentOfOngoingQuery(e){if(e.forceFetchFromServer)return;const t=new Pn(e.query);for(const i of this.ongoingQueries.values()){if(e===i)return;if(this.isValidParent(i)&&t.isSubqueryOfQuery(i.query))return i}}setLimitWindow(e,t){const{limit:i,sortOrder:n}=e.query,s=this.documentStore.findLastDoc(t,n),r=void 0!==s&&n.length>0&&n.every(({fieldName:e})=>void 0!==mi(s,e));e.limitWindowEnd=r?s:void 0,e.limitUnderflowState=t.length===i+100?Jn.ENABLED:Jn.DISABLED}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const i=[];for(const n of t){const t=Ge(this.localDocumentToClientRequestIds.get(n));t.delete(e),t.size||(this.localDocumentToClientRequestIds.delete(n),i.push(n))}i.length&&this.onOrphanDocuments.next(i)}registerQueryFinalizer(e){const t=e.clientRequestId,i=Yi(this.clientIdService.getClientId(),t);e.dataSubject.pipe((0,ut.finalize)(async()=>{if(e.unsubscribeBlockerCount.value>0&&await(0,ut.firstValueFrom)((0,ut.race)(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(Bs(e=>0===e)))),this.queryMappingManager.removeQuery(i),this.ongoingQueries.delete(t),e.subscribe&&!e.isEmptyForJoin&&e.activated){const i={clientRequestId:t};this.rpcManager.post("query/unsubscribe",i).catch(t=>{this.destructManager.isDestructing||console.error("Got error while unsubscribing from query",e.query,t)})}this.removeClientRequestIdMapping(t)}),Bs(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,t,i,n,s,r,o={},a){if(o[t])return o[t];const c=r&&a?a:this.clientIdService.generateClientRequestId(),u=[],l={clientRequestId:c,activated:r,alias:t,query:e,subscribe:s,dataSubject:new ut.BehaviorSubject(null),supportedQueries:u,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new ut.BehaviorSubject(0),queryRegistered:new ut.BehaviorSubject(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:s?Jn.UNKNOWN:Jn.DISABLED};this.registerQueryFinalizer(l),this.ongoingQueries.set(c,l),o[t]=l;for(const[e,r]of Object.entries(n)){const a=r.leftAlias;if(a!==t&&e!==t)continue;const c=a===t?e:a;if(a===t){const e=this.createOngoingQueryGraph(i[c],c,i,n,s,!1,o);e.joinCondition=r,u.push(e)}else l.supportingOngoingQuery=this.createOngoingQueryGraph(i[c],c,i,n,s,!1,o)}return l}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(Bs(Boolean),qt(e=>({docs:e,alias:i}))));for(const i of e.supportedQueries)this.collectAllObservables(i,t);return t}joinResults(e,t,i){const n=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let s=n[i.alias].map(e=>({[i.alias]:e}));const r=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<r.length;e++){const i=r[e].alias;o.has(i)||(o.add(i),s=this.join(s,i,n[i],t[i]))}return s}join(e,t,i,n){if(!e.length)return e;const s=Object.keys(e[0]);if(!n||!s.includes(n.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[n.right]);r.has(t)||r.set(t,[]),Ge(r.get(t)).push(e)}),e.flatMap(e=>{const i=r.get(this.transformKey(e[n.leftAlias]?.[n.left]))||[];return i.length?i.map(i=>({...e,[t]:i})):n.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],i=[e];for(;i.length;){const e=Ge(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,t){const i=Ge(t.joinCondition),n=t.query;if(t.activated){if(!t.canExpandForJoin)return!1;const s=Ge(t.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===t.alias),r=new Set(e.map(e=>e[i.left]??null));for(const e of s)e.query.conditions.filter(Xi).filter(e=>e.fieldName===i.right).forEach(e=>{r.delete(e.value)});if(0===r.size)return!1;const o=Mi(n);o.conditions=o.conditions.filter(e=>!Xi(e)||e.fieldName!==i.right),[...r].forEach(e=>{o.conditions.push({fieldName:i.right,operator:"==",value:e})});const a={...t,query:o,activated:!0,gotInitialResponse:!1,dataSubject:new ut.BehaviorSubject(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(a),this.ongoingQueries.set(a.clientRequestId,a),Ge(t.supportingOngoingQuery).supportedQueries.push(a),this.sendQueryToServerOrUseParentQuery(a),!0}{if(t.activated=!0,n.conditions.filter(Xi).filter(e=>e.fieldName===i.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(t),t.canExpandForJoin=!1,!0;const s=e.map(e=>e[i.left]??null).map(e=>({fieldName:i.right,operator:"==",value:e}));return s.length?(n.conditions.push(...s),this.sendQueryToServerOrUseParentQuery(t)):t.isEmptyForJoin=!0,!0}}allOngoingQueriesGotInitialResult(e){return!!e.isEmptyForJoin||!!e.gotInitialResponse&&(!e.supportedQueries.length||e.supportedQueries.every(e=>this.allOngoingQueriesGotInitialResult(e)))}async completeAllSupportedQueries(e){const t=[...e.supportedQueries||[]];for(;t.length;){const e=Ge(t.shift());t.push(...e.supportedQueries||[]),await(0,ut.firstValueFrom)(e.unsubscribeBlockerCount.pipe(Bs(e=>0===e))),e.dataSubject.complete()}}transformKey(e){return e instanceof Date?`DATE AS string KEY: ${e.toISOString()}`:e}preDestruct(){this.unsubscribe()}sendQueryToServerOrUseParentQuery(e,t=!1){if(this.destructManager.isDestructing)return;const i=e.query,n=e.clientRequestId,s=Yi(this.clientIdService.getClientId(),n);this.queryMappingManager.addQuery(i,s),this.ongoingQueries.set(n,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},n=new Pn(e.query);e.limitWindowEnd=void 0,t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await(0,ut.firstValueFrom)(t.queryRegistered.pipe(Bs(Boolean)))}catch(t){return this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(e.dataSubject.error(t),e.queryRegistered.error(t)),void(e.done=!0)}if(this.destructManager.isDestructing)return;if(e.done)return;this.rpcManager.post("query/register",i).then(()=>{e.isInFlight=!1,e.queryRegistered.next(!0)}).catch(i=>{e.isInFlight=!1,this.destructManager.isDestructing?e.dataSubject.complete():(console.error("Query error",e.query,t.query,i),e.dataSubject.error(i)),e.done=!0}).finally(()=>{t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value-1)});const s=(0,ut.race)(e.queryRegistered.pipe(Bs(Boolean),(0,ut.delay)(2e3),(0,ut.take)(1)),this.destructManager.observeIsDestructing().pipe((0,ut.take)(1)));t.dataSubject.pipe((0,ut.takeWhile)(()=>!e.done),(0,ut.takeUntil)(s),Bs(Boolean),(0,ut.tap)(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),qt(e=>e.filter(e=>n.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(Ki(i.__docId__,e.query.collectionName,e.query.integrationId),i);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,i=t>0&&e.subscribe?t+100:t,n={query:{...e.query,limit:i},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(n).then(t=>{e.isInFlight=!1,e.queryRegistered.next(!0),this.queryResultsSubject.next(t)}).catch(t=>{e.isInFlight=!1,this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(Ui.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}invalidateOngoingQueryRegistrations(){for(const e of this.ongoingQueries.values())e.queryRegistered.next(!1)}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const i of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{i.has(t)&&(i.delete(t),i.add(e[t]))});t.forEach(t=>{Si(this.localDocumentToClientRequestIds,t,e[t])})}}function cr(e,t){for(const i of e.fields){const e=mi(t,i.fieldName)??null;if(Wi(i.value,e,i.operator))return!0;if(Wi(i.value,e,"!="))return!1}return!1}class ur{constructor(){this.stateService=new nr({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const s of e.conditions){if(Xi(s)&&["=="].includes(s.operator)){const e=Ri(s.fieldName);n.has(e)||(i++,n.add(e))}else i++;const r=this.getConditionStatePath(e,s),o=[...this.stateService.get(r)||[]];rr(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];rr(n,t),this.stateService.set(i,n)}this.stateService.set([...this.getQueryMetadataStatePath(e,t),"condCount"],i)}),this.querySubscriptionIdToQuery[t]=e}async removeQuery(e){const t=this.querySubscriptionIdToQuery[e];if(t)return this.stateService.runInBatch(()=>{for(const i of t.conditions){const n=this.getConditionStatePath(t,i),s=[...this.stateService.get(n)||[]];or(s,e),s.length?this.stateService.set(n,s):this.stateService.delete(n)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];or(n,e),this.stateService.set(i,n)}this.stateService.delete(this.getQueryMetadataStatePath(t,e))}),t}getMapping(e,t){return this.stateService.get(["queryMapping",e,t,"mapping"])}getQueryMetadataStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","queriesMetadata",`${t}`]}getConditionStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","conditional",(i=t,Oi(i))];var i}}class lr{constructor(){this.locks={}}async lock(...e){if(this.canGetLock(...e))return void this.lockSync(...e);const t=Object.entries(this.locks).filter(([t])=>e.includes(t)).map(([,e])=>e);await(0,ut.lastValueFrom)((0,ut.combineLatest)(t).pipe((0,ut.filter)(e=>!e.includes(!0)),(0,ut.take)(1))),await this.lock(...e)}release(...e){for(const t of e){const e=Ge(this.locks[t]);e.next(!1),e.complete(),delete this.locks[t]}}canGetLock(...e){return!e.some(e=>this.locks[e]?.value)}lockSync(...e){$e(this.canGetLock(...e),"Cannot acquire lock sync");for(const t of e)this.locks[t]=new ut.BehaviorSubject(!0)}}class dr{constructor(e,t,i){this.rpcManager=e,this.socketManager=t,this.queueManagers=new Map,this.socketManager.observeNotifications().subscribe(e=>{const t=this.getOrUndefined(e.integrationId,e.topicName);t&&t.onMessages(e.payload)}),i.onPreDestruct(()=>{for(const e of this.queueManagers.values())for(const t of e.values())t.destruct()})}get(e,t){let i=this.queueManagers.get(e);i||(i=new Map,this.queueManagers.set(e,i));let n=i.get(t);return n||(n=new pr(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const hr="subscriptionMutex";class pr{constructor(e,t,i,n){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=n,this.messagesSubject=new ut.Subject,this.subscriberCount=0,this.lockManager=new lr}async produce(e){await this.lockManager.lock(hr);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(hr)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),(0,ut.defer)(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe((0,ut.finalize)(()=>{this.subscriberCount--,0===this.subscriberCount&&this.performUnsubscribe()}))))}onMessages(e){for(const t of e)this.messagesSubject.next(t)}destruct(){this.messagesSubject.complete()}async performSubscribe(){await this.lockManager.lock(hr);try{await this.rpcManager.post("queue/subscribe",{integrationId:this.integrationId,topicName:this.topicName})}catch(e){this.messagesSubject.error(e),this.messagesSubject.complete(),this.subscriberCount=0,this.messagesSubject=new ut.Subject}finally{this.lockManager.release(hr)}}async performUnsubscribe(){await this.lockManager.lock(hr);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(hr)}}}class gr{constructor(e,t){this.capacity=e,this.seconds=t,this.tokens=e,this.refillRatePerMs=e/(1e3*t),this.lastRefillTimestamp=Date.now()}async consume(){this.attemptConsume()||await(0,ut.firstValueFrom)((0,ut.interval)(10).pipe((0,ut.filter)(()=>this.attemptConsume()),(0,ut.first)()))}attemptConsume(){return this.refill(),this.tokens>=1&&(this.tokens-=1,!0)}refill(){const e=Date.now(),t=(e-this.lastRefillTimestamp)*this.refillRatePerMs;this.tokens=Math.min(this.tokens+t,this.capacity),this.lastRefillTimestamp=e}}class fr{constructor(e,t,i,n,s,r){this.region=e,this.appId=t,this.authManager=s,this.clientIdService=r,this.staticHeaders={},this.onGoingRpcCounter=new ut.BehaviorSubject(0);for(const[e,t]of Object.entries(n))this.setStaticHeader(e,t);this.clientIdService.observeClientId().subscribe(e=>{e?this.setStaticHeader("x-squid-clientid",e):this.deleteStaticHeader("x-squid-clientid")}),i.onDestruct(async()=>{await this.awaitAllSettled()});const o=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new gr(60*o,5),ai:new gr(20*o,5),secret:new gr(20*o,5)}}async getAuthHeaders(){const e=this.authManager.getApiKey();if(e)return{Authorization:`ApiKey ${e}`};const{token:t,integrationId:i}=await this.authManager.getAuthData();if(!t)return{};let n=`Bearer ${t}`;return i&&(n+=`; IntegrationId ${i}`),{Authorization:n}}async awaitAllSettled(){await(0,ut.firstValueFrom)(this.onGoingRpcCounter.pipe((0,ut.filter)(e=>0===e)))}setStaticHeader(e,t){this.staticHeaders[e]=t}deleteStaticHeader(e){delete this.staticHeaders[e]}getStaticHeaders(){return this.staticHeaders}async post(e,t,i=[],n="files",s={},r){return(await this.rawPost(e,t,i,n,!0,s,r)).body}async rawPost(e,t,i=[],n="files",s=!0,r={},o){return this.runRawRequest(e,r,async r=>{Ui.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const a=this.resolveUrl(e);return await ms({url:a,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s,abortSignal:o})})}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){return this.runRawRequest(e,{},async n=>{let s=this.resolveUrl(e);if(t&&Object.keys(t).length>0){const e=new URLSearchParams;Object.entries(t).forEach(([t,i])=>{e.append(t,String(i))}),s+=`?${e.toString()}`}return Ui.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await Is({url:s,headers:n,extractErrorMessage:i})})}async put(e,t,i=[],n="files"){return(await this.rawPut(e,t,i,n)).body}async rawPut(e,t,i=[],n="files",s=!0){return this.runRawRequest(e,{},async r=>{Ui.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const o=this.resolveUrl(e);return await bs({url:o,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s})})}async patch(e,t,i=[],n="files"){return(await this.rawPatch(e,t,i,n)).body}async rawPatch(e,t,i=[],n="files",s=!0){return this.runRawRequest(e,{},async r=>{Ui.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const o=this.resolveUrl(e);return await Ss({url:o,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s})})}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){return this.runRawRequest(e,{},async n=>{Ui.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const s=this.resolveUrl(e);return await ws({url:s,headers:n,message:t,extractErrorMessage:i})})}async runRawRequest(e,t,i){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),s={...this.staticHeaders,...n,...t};return await i(s)}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}resolveUrl(e){return e.startsWith("http://")||e.startsWith("https://")?e:r(this.region,this.appId,e)}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?Ge(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?Ge(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):Ge(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}const yr="This operation is not available in passive mode. Use active mode for real-time features.";function mr(e){$e(!e.isPassiveMode,yr)}class Ir{constructor(e){this.rpcManager=e}async list(){return(await this.rpcManager.post("/scheduler/listSchedulers",{})).schedulers}async enable(e){await this.update(this.createUpdateSchedulerOptions(e,!0))}async disable(e){await this.update(this.createUpdateSchedulerOptions(e,!1))}async update(e){const t={schedulers:e};await this.rpcManager.post("scheduler/updateSchedulers",t)}createUpdateSchedulerOptions(e,t){return Array.isArray(e)?e.map(e=>({schedulerId:e,enabled:t})):[{schedulerId:e,enabled:t}]}}function br(){}const Sr="undefined"!=typeof process&&process.versions?.node?i(86):Li().WebSocket;class wr{constructor(e,t,i,n=gs,s,r,o){this.clientIdService=e,this.region=t,this.appId=i,this.messageNotificationWrapper=n,this.destructManager=s,this.authManager=r,this.runtimeOptions=o,this.webSocketObserver=new ut.Subject,this.allMessagesObserver=new ut.Subject,this.connectionReady=new ut.BehaviorSubject(!1),this.seenMessageIds=new Set,this.destructSubject=new ut.Subject,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new ut.BehaviorSubject(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe((0,ut.skip)(1),(0,ut.filter)(e=>!e),(0,ut.switchMap)(()=>(0,ut.race)((0,ut.timer)(this.clientTooOldThreshold),this.connectionReady.pipe((0,ut.filter)(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?Ui.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(Ui.debug(this.clientIdService.getClientId(),"Client disconnected for a long period - refreshing"),this.refreshClient())}),this.observeConnectionReady().pipe((0,ut.filter)(Boolean)).subscribe(()=>{this.clientIdService.isClientTooOld()&&this.clientIdService.notifyClientNotTooOld()}),this.observeNotifications().pipe((0,ut.filter)(e=>"clientInfo"===e.type)).subscribe(e=>{console.log("Client info message received",e)})}refreshClient(){this.destructManager.isDestructing?Ui.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?Ui.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(Ui.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),Ui.debug(this.clientIdService.getClientId(),"Client too old. Reconnecting..."),this.connect())}getClientInfo(){this.postMessage({type:"getClientInfo"})}observeNotifications(){return this.webSocketObserver.asObservable()}observeConnectionReady(){return this.connectionReady.asObservable().pipe((0,ut.distinctUntilChanged)())}async awaitConnectionReady(){mr(this.runtimeOptions),await(0,ut.firstValueFrom)(this.observeConnectionReady().pipe((0,ut.filter)(Boolean)))}notifyWebSocketIsNeeded(){mr(this.runtimeOptions),this.webSocketNeededSubject.next(!0)}postMessage(e){this.sendMessageImpl(e)}sendMessage(e){return this.sendMessageImpl(e)}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(Ui.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded();try{await(0,ut.firstValueFrom)((0,ut.race)(this.connectionReady.pipe((0,ut.filter)(Boolean)),(0,ut.timer)(12e4).pipe((0,ut.tap)(()=>{throw new Error("WebSocket connection not ready within 2 minutes")}))).pipe((0,ut.takeUntil)(this.destructSubject)))}catch(e){if(this.destructManager.isDestructing)return;throw e}const t=await this.authManager.getToken();if(this.connectionReady.value)try{$e(this.socket,"Socket is undefined in sendMessageAsync");const i=Ci({message:e,authToken:t});Ui.debug(this.clientIdService.getClientId(),"Sending message to socket: ",i),this.socket.send(i)}catch(t){this.socket?.connected?console.error("Websocket message is ignored due to a non-recoverable error",t):(this.connectionReady.next(!1),await this.sendMessageImpl(e))}else await this.sendMessageImpl(e)}sendKillMessage(){this.socket?.connected&&this.socket.send(Ci({message:{type:"kill"}}))}closeCurrentSocketSilently(){if(this.socket)try{this.socket.close()}catch(e){}}connect(){this.closeCurrentSocketSilently(),this.connectionReady.value&&this.connectionReady.next(!1);const e=r(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();Ui.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,n=0,s=1;const r={connected:!1,closeCalled:!1,open(){i=new(Sr?.WebSocket??Sr)(e,t.protocols||[]),i.onmessage=t.onmessage?e=>{e.data&&t.onmessage?t.onmessage(e):console.log("No data received from websockets, please contact support@getsquid.ai with this message.")}:br,i.onopen=function(e){r.connected=!0,(t.onopen||br)(e),n=0},i.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return Ui.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||br)(e),void r.reconnect(e);(t.onclose||br)(e)},i.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||br)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;s&&n++<i?s=setTimeout(function(){(t.onreconnect||br)(e),Ui.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||br)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(s),s=void 0,i.close(e,t)}catch(e){}}};return r.open(),r}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{Ui.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{Ui.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Ui.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{Ui.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Ui.debug(t,`WebSocket onclose event triggered - ignored because the client id changed. new: ${this.clientIdService.getClientId()}`)},onerror:e=>console.error("WebSocket error:",e)})}onConnectionReady(){this.connectionReady.next(!0),this.connectedAtLeastOnce?this.postMessage({type:"catchup"}):this.connectedAtLeastOnce=!0}onMessage(e){if("connectionReady"===e)return Ui.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=Di(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),Ui.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new ut.Subject;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe((0,ut.tap)(e=>t.push(e)),(0,ut.auditTime)(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await(0,ut.firstValueFrom)((0,ut.timer)(0)),this.connectionReady.next(!1),await(0,ut.firstValueFrom)((0,ut.timer)(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function vr(e){var t,i;i="Invalid application ID",$e(function(e){return"string"==typeof e}(t=e),()=>Ve(i,"Not a string",t));const n=e.split("-");$e(n.length<4,`Invalid application ID: ${e}`);const[s,r,o]=n;return{appId:s,environmentId:r??"prod",squidDeveloperId:o}}function _r(e,t){return`${vr(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Mr(e,t,i){return`${_r(e,t)}${i?`-${i}`:""}`}function Er(e){const t=vr(e);return _r(t.appId,t.environmentId)}class Tr{constructor(e="built_in_storage",t){this.integrationId=e,this.rpcManager=t}async uploadFile(e,t,i){const n={integrationId:this.integrationId,dirPathInBucket:e,expirationInSeconds:i};await this.rpcManager.post("storage/uploadFile",n,[t])}async getFileMetadata(e){const t={integrationId:this.integrationId,filePathInBucket:e};return await this.rpcManager.post("storage/getFileMetadata",t)}async getDownloadUrl(e,t){const i={integrationId:this.integrationId,filePathInBucket:e,urlExpirationInSeconds:t};return await this.rpcManager.post("storage/getDownloadUrl",i)}async listDirectoryContents(e){const t={integrationId:this.integrationId,dirPathInBucket:e};return await this.rpcManager.post("storage/listDirectoryContents",t)}async deleteFile(e){await this.deleteFiles([e])}async deleteFiles(e){const t={integrationId:this.integrationId,filePathsInBucket:e};await this.rpcManager.post("storage/deleteFiles",t)}}class kr{constructor(e,t,i,n,s){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=n,this.consoleRegion=s}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e,t,i){return await this.rpcManager.post("web/aiSearch",{query:e,allowedDomains:i},[],"files",{},t)}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e){$e(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shorten",i,"create short URL","json")}async createShortUrls(e){$e(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shortenMany",i,"create short URLs","json")}async deleteShortUrl(e){$e(this.apiKey,"API key is required to delete a short URL");const t={id:e,appId:this.appId};await this.postShortUrlApi("delete",t,"delete short URL","ignore")}async deleteShortUrls(e){$e(this.apiKey,"API key is required to delete a short URL");const t={ids:e,appId:this.appId};await this.postShortUrlApi("deleteMany",t,"delete short URLs","ignore")}async postShortUrlApi(e,t,i,n){const s=o(this.region,this.consoleRegion,`openapi/sqd/${e}`),r=await fetch(s,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(t)});if("ignore"===n)return void $e(r.ok,`Failed to ${i} (${r.status}): ${r.statusText}`);const a=await r.text();return $e(r.ok,`Failed to ${i} (${r.status}): ${a}`),JSON.parse(a)}}class Ar{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:n={},body:s,files:o=[]}=t,a=await this.rpcManager.getAuthHeaders(),c={...this.rpcManager.getStaticHeaders(),...a,...i};let u=r(this.region,this.appId,`webhooks/${encodeURIComponent(e)}`);if(n&&Object.keys(n).length>0){const e=new URLSearchParams;Object.entries(n).forEach(([t,i])=>{e.append(t,String(i))}),u+=`?${e.toString()}`}const l=new Headers(c);let d;if(l.append(Vt.TRACE_ID,ps("c_")),l.append(Vt.CLIENT_VERSION,ys),o&&o.length>0){const e=new FormData;for(const t of o)e.append("file",t,t.name);s&&"object"==typeof s&&Object.entries(s).forEach(([t,i])=>{e.append(t,String(i))}),d=e}else l.append("Content-Type","application/json"),d=Ci(s||{});const h=await fetch(u,{method:"POST",headers:l,body:d}),p={};if(h.headers.forEach((e,t)=>{p[t]=e}),!h.ok){const e=await h.text();let t;try{t=JSON.parse(e)}catch{t=e}const i="string"==typeof t?t:t?.message||h.statusText;throw new fs(i,h.status,u,p,t)}const g=await h.text();let f;try{f=JSON.parse(g)}catch{f=g}return f}getWebhookUrl(e){return r(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class Or{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Zn,$e(e.appId,"APP_ID_MUST_BE_PROVIDED"),this.runtimeOptions={isPassiveMode:e.isPassiveMode??!1};for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,i=Mr(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Qi(this.destructManager),Ui.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new fi(e.apiKey,e.authProvider),this.socketManager=new wr(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new fr(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new ks(this.socketManager,this.rpcManager),this.jobClient=new us(this.socketManager,this.rpcManager,this.clientIdService,this.destructManager,this.runtimeOptions),this.langGraphClient=new ds(this.rpcManager,this.jobClient),this.backendFunctionManager=new Bi(this.rpcManager),this.aiClient=new hi(this.socketManager,this.rpcManager,this.jobClient,this.clientIdService,this.backendFunctionManager,()=>this.metricAnnotations),this.apiClient=new gi(this.rpcManager),this.eventsClient=new os(this.rpcManager),this.documentStore=new rs,this.lockManager=new lr,this.distributedLockManager=new es(this.socketManager,this.destructManager),this.documentIdentityService=new ns(this.documentStore,this.destructManager),this.documentReferenceFactory=new ss(this.documentIdentityService),this.querySender=new xs(this.rpcManager,this.destructManager,this.socketManager.observeConnectionReady()),this.observabilityClient=new Os(this.rpcManager),this.schedulerClient=new Ir(this.rpcManager),this._appId=i,this.querySubscriptionManager=new ar(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager,this.lockManager),this.localQueryManager=new Ps(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new Es(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new rn(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService,n),this.dataManager=new Yn(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new yn(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.querySubscriptionManager.setDetachedQueryExecutor(e=>this.dataManager.executeDetachedQuery(e)),this.webhookManager=new Ar(this.rpcManager,e.region,i),this.nativeQueryManager=new Ts(this.rpcManager),this._connectionDetails=new mn(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new dr(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new ct(this.rpcManager,this.options.region,Er(i),this.options.consoleRegion,this.backendFunctionManager),this.webClient=new kr(this.rpcManager,this.options.region,Er(i),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}get isDestructed(){return this.destructManager.isDestructing}static getInstance(e){const t=Oi(e);let i=Or.squidInstancesMap[t];return i||(i=new Or(e),Or.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(Or.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Ee){return this._validateNotDestructed(),this.collectionReferenceFactory.get(e,t)}runInTransaction(e){return this._validateNotDestructed(),this.dataManager.runInTransaction(e)}executeFunction(e,...t){return this._validateNotDestructed(),this.backendFunctionManager.executeFunction(e,...t)}executeFunctionWithHeaders(e,t,...i){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...i)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}getWebhookUrl(e){return this._validateNotDestructed(),this.webhookManager.getWebhookUrl(e)}executeNativeRelationalQuery(e,t,i={}){const n={type:"relational",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativePureQuery(e,t,i={}){const n={type:"pure",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeMongoQuery(e,t,i){const n={type:"mongo",collectionName:t,aggregationPipeline:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeElasticQuery(e,t,i,n="_search",s="GET"){const r={type:"elasticsearch",index:t,endpoint:n,method:s,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}setMetricAnnotations(e){this.metricAnnotations=e?{...e}:void 0}job(){return this._validateNotDestructed(),this.jobClient}langGraph(e){return this._validateNotDestructed(),this.langGraphClient.graph(e)}api(){return this._validateNotDestructed(),this.apiClient}admin(){return this._validateNotDestructed(),this.adminClient}web(){return this._validateNotDestructed(),this.webClient}storage(e="built_in_storage"){return this._validateNotDestructed(),new Tr(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new as(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new cs(this.rpcManager)}events(){return this._validateNotDestructed(),this.eventsClient}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t,i){const n=await this.acquireLock(e,i);try{return await t(n)}finally{n.release()}}queue(e,t=Te){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(Or.squidInstancesMap).find(([,e])=>e===this);e&&delete Or.squidInstancesMap[e[0]]})}connectionDetails(){return this._validateNotDestructed(),this._connectionDetails}getNotificationClient(){return this._validateNotDestructed(),this.notificationClient}async _unsubscribe(){this.querySubscriptionManager.unsubscribe(),await this.rpcManager.awaitAllSettled()}internal(){const{rpcManager:e}=this;return{getApplicationUrl:(e,t,i)=>r(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>Mr(e,t,i)}}_validateNotDestructed(){$e(!this.destructManager.isDestructing,"The client was already destructed.")}}const Cr=exports;for(var Dr in n)Cr[Dr]=n[Dr];n.__esModule&&Object.defineProperty(Cr,"__esModule",{value:!0})})();
1
+ (()=>{"use strict";var e={273(e,t){Object.defineProperty(t,"__esModule",{value:!0})},150(e,t,i){var n=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,s)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||n(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0});const r=i(642);t.default=r.PromisePool,s(i(273),t),s(i(642),t),s(i(837),t),s(i(426),t),s(i(858),t),s(i(172),t)},837(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class i extends Error{constructor(e,t){super(),this.raw=e,this.item=t,this.name=this.constructor.name,this.message=this.messageFrom(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e,t){return new this(e,t)}messageFrom(e){return e instanceof Error||"object"==typeof e?e.message:"string"==typeof e||"number"==typeof e?e.toString():""}}t.PromisePoolError=i},234(e,t,i){t.PromisePoolExecutor=void 0;const n=i(642),s=i(172),r=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],processedItemsCounter:0,taskTimeout:0,shouldStoreProcessedItems:!0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw s.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}storeProcessedItems(e=!0){return this.meta.shouldStoreProcessedItems=e,this}shouldStoreProcessedItems(){return this.meta.shouldStoreProcessedItems}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}flushProcessedItems(){this.meta.processedItems=[]}incrementProcessedItemsCounter(){this.meta.processedItemsCounter+=1}processedCount(){return this.meta.processedItemsCounter}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw s.ValidationError.createFrom("The first parameter for the .process(fn) method must be a function");const e=this.taskTimeout();if(!(null==e||"number"==typeof e&&e>=0))throw s.ValidationError.createFrom(`"timeout" must be undefined or a number. A number must be 0 or up. Received "${String(e)}" (${typeof e})`);if(!this.areItemsValid())throw s.ValidationError.createFrom(`"items" must be an array, an iterable or an async iterable. Received "${typeof this.items()}"`);if(this.errorHandler&&"function"!=typeof this.errorHandler)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof e}"`)}),this}areItemsValid(){const e=this.items();return Array.isArray(e)||"function"==typeof e[Symbol.iterator]||"function"==typeof e[Symbol.asyncIterator]}prepareResultsArray(){const e=this.items();return Array.isArray(e)&&this.shouldUseCorrespondingResults()&&(this.meta.results=Array(e.length).fill(n.PromisePool.notRun)),this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=n.PromisePool.notRun),this.startProcessing(t,e),e+=1,await this.waitForProcessingSlot()}return await this.drained()}async waitForProcessingSlot(){for(;this.hasReachedConcurrencyLimit();)await this.waitForActiveTaskToFinish()}async waitForActiveTaskToFinish(){await Promise.race(this.tasks())}startProcessing(e,t){const i=this.createTaskFor(e,t).then(e=>{this.save(e,t).removeActive(i)}).catch(async n=>{await this.handleErrorFor(n,e,t),this.removeActive(i)}).finally(()=>{this.shouldStoreProcessedItems()&&this.processedItems().push(e),this.incrementProcessedItemsCounter(),this.runOnTaskFinishedHandlers(e)});this.tasks().push(i),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[i,n]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),i()]).finally(n)}createTaskTimeout(e){let t;return[async()=>new Promise((i,n)=>{t=setTimeout(()=>{n(new r.PromisePoolError(`Task in promise pool timed out after ${this.taskTimeout()}ms`,e))},this.taskTimeout())}),()=>clearTimeout(t)]}save(e,t){return this.shouldUseCorrespondingResults()?this.results()[t]=e:this.results().push(e),this}removeActive(e){return this.tasks().splice(this.tasks().indexOf(e),1),this}async handleErrorFor(e,t,i){if(this.shouldUseCorrespondingResults()&&(this.results()[i]=n.PromisePool.failed),!this.isStoppingThePoolError(e)){if(this.isValidationError(e))throw this.markAsStopped(),e;this.hasErrorHandler()?await this.runErrorHandlerFor(e,t):this.saveErrorFor(e,t)}}isStoppingThePoolError(e){return e instanceof o.StopThePromisePoolError}isValidationError(e){return e instanceof s.ValidationError}async runErrorHandlerFor(e,t){try{await(this.errorHandler?.(e,t,this))}catch(e){this.rethrowIfNotStoppingThePool(e)}}runOnTaskStartedHandlers(e){this.onTaskStartedHandlers.forEach(t=>{t(e,this)})}runOnTaskFinishedHandlers(e){this.onTaskFinishedHandlers.forEach(t=>{t(e,this)})}rethrowIfNotStoppingThePool(e){if(!this.isStoppingThePoolError(e))throw e}saveErrorFor(e,t){this.errors().push(r.PromisePoolError.createFrom(e,t))}async drained(){return await this.drainActiveTasks(),{errors:this.errors(),results:this.results()}}async drainActiveTasks(){await Promise.all(this.tasks())}}},642(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const n=i(234);class s{constructor(e){this.shouldStoreProcessedItems=!0,this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new s(e).withConcurrency(this.concurrency);return"function"==typeof this.errorHandler&&t.handleError(this.errorHandler),"number"==typeof this.timeout?t.withTaskTimeout(this.timeout):t}static for(e){return(new this).for(e)}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers.push(e),this}dontStoreProcessedItems(){return this.shouldStoreProcessedItems=!1,this}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new n.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).storeProcessedItems(this.shouldStoreProcessedItems).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=s,s.notRun=Symbol("notRun"),s.failed=Symbol("failed")},426(e,t){Object.defineProperty(t,"__esModule",{value:!0})},858(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i},172(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class i extends Error{constructor(e){super(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e){return new this(e)}}t.ValidationError=i},86(e){e.exports=require("ws")}};const t={};function i(n){const s=t[n];if(void 0!==s)return s.exports;const r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,i),r.exports}i.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var s=t[n++],r=t[n++];i.o(e,s)?0===r&&n++:0===r?Object.defineProperty(e,s,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,s,{enumerable:!0,get:r})}else for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.hasOwn(e,t),i.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};let n={};i.r(n),i.d(n,{AGENT_STATUS_TITLE_ACCESSING_KB:()=>l,AGENT_STATUS_TITLE_AGENT_RESPONSE:()=>u,AGENT_STATUS_TITLE_AI_FUNCTION_RESULT:()=>h,AGENT_STATUS_TITLE_CALLING_AI_FUNCTION:()=>d,AGENT_STATUS_TITLE_GREPPING_KB:()=>f,AGENT_STATUS_TITLE_INSPECTING_KB_METADATA:()=>p,AGENT_STATUS_TITLE_QUERYING_KB_GRAPH:()=>g,AGENT_STATUS_TITLE_QUERYING_SPREADSHEET:()=>y,AI_AGENTS_INTEGRATION_ID:()=>me,AI_AGENT_CONNECTION_EVENT_TYPE:()=>w,AI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>K,AI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>V,AI_CHAT_MESSAGE_SOURCE:()=>I,AI_CODE_INTERPRETER_PROVIDER_TYPES:()=>T,AI_EMBEDDINGS_MODEL_NAMES:()=>j,AI_FILE_PROVIDER_TYPES:()=>M,AI_IMAGE_MODEL_NAMES:()=>H,AI_KB_ACCESS_CONTROL_MODES:()=>ee,AI_MODEL_SOURCES:()=>z,AI_PROVIDER_ERROR_TYPE:()=>m,AI_PROVIDER_TYPES:()=>_,AI_VOICE_GREETING_MODES:()=>ue,AI_VOICE_RELAY_PROVIDERS:()=>ce,AI_VOICE_SESSION_EVENT_TYPE:()=>le,ALL_OPERATORS:()=>Be,ANTHROPIC_CHAT_MODEL_NAMES:()=>C,API_INJECTION_FIELD_TYPES:()=>de,ARRAY_OPERATORS:()=>Pe,AUTH_INTEGRATION_TYPES:()=>Se,AdminClient:()=>ct,AiAgentClient:()=>Zt,AiAgentReference:()=>Yt,AiAudioClient:()=>ti,AiClient:()=>hi,AiFilesClient:()=>ii,AiImageClient:()=>ni,AiKnowledgeBaseClient:()=>ai,AiKnowledgeBaseReference:()=>oi,AiMatchMakingClient:()=>ci,AiVoiceClient:()=>di,AiWebVoiceCall:()=>li,ApiClient:()=>gi,ApiKeysSecretClient:()=>at,AuthManager:()=>fi,BEDROCK_EMBEDDING_MODEL_NAMES:()=>F,BUILT_IN_AGENT_ID:()=>ge,BUILT_IN_DB_INTEGRATION_ID:()=>Ee,BUILT_IN_QUEUE_INTEGRATION_ID:()=>Te,BUILT_IN_STORAGE_INTEGRATION_ID:()=>ke,BULK_INGESTION_MAX_MULTIPART_FILE_BYTES:()=>se,BULK_INGESTION_SPEEDS:()=>ae,BackendFunctionManager:()=>Bi,BaseQueryBuilder:()=>on,CLIENT_CONNECTION_STATES:()=>Le,CLIENT_ID_GENERATOR_KEY:()=>$i,CLIENT_REQUEST_ID_GENERATOR_KEY:()=>Gi,CONNECTOR_IDS:()=>fe,Changes:()=>un,ClientIdService:()=>Qi,CollectionReference:()=>gn,CollectionReferenceFactory:()=>yn,ConnectionDetails:()=>mn,ConnectorClient:()=>a,DATA_INTEGRATION_TYPES:()=>be,DEFAULT_PII_CLASSIFIER_MODEL:()=>S,DEFAULT_PII_ENTITY_TYPES:()=>b,DEFAULT_SHORT_ID_LENGTH:()=>18,DOC_ID_FIELD:()=>je,DataManager:()=>Yn,DereferencedJoin:()=>dn,DestructManager:()=>Zn,DistributedLockImpl:()=>ts,DistributedLockManager:()=>es,DocumentReference:()=>nn,DocumentReferenceFactory:()=>ss,DocumentStore:()=>rs,EMPTY_CHAT_ID:()=>ei,ENVIRONMENT_IDS:()=>pe,EventsClient:()=>os,ExternalAuthClient:()=>as,ExtractionClient:()=>cs,FETCH_BEYOND_LIMIT:()=>100,FILE_NAME_METADATA_FIELD_NAME:()=>ie,FLUX_MODEL_NAMES:()=>G,FOLDER_PATH_METADATA_FIELD:()=>ne,FOLDER_PATH_METADATA_FIELD_NAME:()=>te,FUNCTION_AFFINITY_SCOPES:()=>X,GEMINI_CHAT_MODEL_NAMES:()=>A,GRAPHQL_INTEGRATION_TYPES:()=>ve,GREP_KNOWLEDGE_BASE_DEFAULT_MAX_MATCHES:()=>50,GREP_KNOWLEDGE_BASE_MAX_MATCHES:()=>200,GREP_KNOWLEDGE_BASE_MAX_MATCH_LINE_CHARS:()=>500,GREP_KNOWLEDGE_BASE_MAX_PATTERN_CHARS:()=>500,GROK_CHAT_MODEL_NAMES:()=>O,GroupedJoin:()=>pn,HTTP_INTEGRATION_TYPES:()=>_e,HttpStatus:()=>ye,INTEGRATION_SCHEMA_TYPES:()=>Me,INTEGRATION_TYPES:()=>Ie,IntegrationClient:()=>rt,JobClient:()=>us,JoinQueryBuilder:()=>ln,KNOWLEDGE_BASE_GRAPH_EXPLORE_MAX_NODES:()=>1e3,KNOWLEDGE_BASE_GRAPH_SEARCH_MAX_LENGTH:()=>200,LangGraphClient:()=>ds,LangGraphReference:()=>ls,LastUsedValueExecuteFunctionCache:()=>Fi,LimitUnderflowState:()=>Jn,LocalQueryManager:()=>Ps,MAX_UPLOAD_FILE_BYTES:()=>re,MCP_OAUTH_INTEGRATION_TYPES:()=>we,METRIC_DOMAIN:()=>Ne,METRIC_FUNCTIONS:()=>Re,METRIC_INTERVAL_ALIGNMENT:()=>qe,METRIC_NO_DATA_BEHAVIOR:()=>Fe,ManagementClient:()=>Ms,MatchMaker:()=>ui,MutationSender:()=>Es,NOOP_FN:()=>gs,NativeQueryManager:()=>Ts,NotificationClient:()=>ks,OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>U,OPENAI_AUDIO_MODEL_NAMES:()=>Q,OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>L,OPENAI_CHAT_MODEL_NAMES:()=>k,OPENAI_EMBEDDINGS_MODEL_NAMES:()=>N,OPENAI_IMAGE_MODEL_NAMES:()=>x,OPEN_AI_CREATE_SPEECH_FORMATS:()=>W,ObservabilityClient:()=>Os,Pagination:()=>sn,QueryBuilder:()=>cn,QueryBuilderFactory:()=>rn,QuerySender:()=>xs,QuerySubscriptionManager:()=>ar,QueueManagerFactory:()=>dr,QueueManagerImpl:()=>pr,RAG_TYPES:()=>oe,RERANK_PROVIDERS:()=>v,RUN_IN_TRANSACTION_MUTEX:()=>zn,RateLimiter:()=>gr,RpcManager:()=>fr,SOURCE_CODE_ANALYZER_MODELS:()=>ze,SOURCE_CODE_ANALYZE_FUNCTION_ID:()=>Ke,SOURCE_CODE_CACHE_STRATEGIES:()=>Je,SOURCE_CODE_EXECUTION_MODES:()=>Ye,SOURCE_CODE_INTEGRATION_TYPES:()=>Ze,SOURCE_CODE_MAX_REPOSITORIES:()=>20,SOURCE_CODE_MAX_SUPPLEMENTAL_INSTRUCTIONS_LENGTH:()=>2e4,SOURCE_CONTROL_PROVIDERS:()=>Xe,SQUID_BUILT_IN_INTEGRATION_IDS:()=>Oe,SQUID_METRIC_NAMES:()=>De,SQUID_REGIONS:()=>xe,STABLE_DIFFUSION_MODEL_NAMES:()=>$,SchedulerClient:()=>Ir,SecretClient:()=>ot,SocketManager:()=>wr,Squid:()=>Or,SquidClientError:()=>fs,StorageClient:()=>Tr,VECTOR_DB_TYPES:()=>Z,VENDOR_AI_CHAT_MODEL_NAMES:()=>D,VOYAGE_EMBEDDING_MODEL_NAMES:()=>q,WebClient:()=>kr,WebhookManager:()=>Ar,assertNotPassiveMode:()=>mr,compareArgsByReference:()=>Ni,compareArgsBySerializedValue:()=>qi,deserializeQuery:()=>qs,embeddingModelSelectionOf:()=>J,generateId:()=>Pt,generateShortId:()=>Ut,generateShortIds:()=>Qt,generateUUID:()=>Ft,generateUUIDPolyfill:()=>jt,getConsoleUrl:()=>o,getCustomizationFlag:()=>xi,isAiEmbeddingsModelName:()=>P,isBuiltInIntegrationId:()=>Ce,isFileCapableProviderType:()=>E,isIntegrationDisabled:()=>Ae,isIntegrationEmbeddingModelSpec:()=>B,isIntegrationModelSpec:()=>Y,isPlaceholderParam:()=>he,isVendorAiChatModelName:()=>R,loadQueryResultDocIds:()=>Ns,normalizeBitbucketRepositorySelection:()=>tt,normalizeGitHubRepositorySelection:()=>et,observeAiStatusUpdates:()=>Jt,rawSquidHttpDelete:()=>ws,rawSquidHttpGet:()=>Is,rawSquidHttpPatch:()=>Ss,rawSquidHttpPost:()=>ms,rawSquidHttpPut:()=>bs,transformFileArgs:()=>ji,tryDeserializing:()=>_s,visitQueryResults:()=>Rs});const s="8000";function r(e,t,i,n,r){let o="https",a=`${n||t}.${r||e}.${new URL("https://squid.cloud").host}`,c="";/^local/.test(e)&&(o="http",c=s,/android$/.test(e)?a="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(a="localhost"));const u=o+"://"+a+(c?`:${c}`:""),l=i.replace(/^\/+/,"");return l?`${u}/${l}`:u}function o(e,t,i=""){return r(function(e,t){return t||(e.includes("sandbox")?"squidai.westus3.azure.sandbox":e.includes("local")?"local":e.includes("staging")?"squidai.westus3.azure.staging":"us-east-1.aws")}(e,t),"console",i)}class a{constructor(e,t,i,n){this.rpcManager=e,this.iacBaseUrl=o(t,n,`openapi/iac/applications/${i}/connectors`)}async list(){return await this.rpcManager.get(this.iacBaseUrl)??[]}async connect(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e}`,{})}async disconnect(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}}const c={sharepoint:{functionName:"getSharePointPathStatus",buildArgs:(e,t)=>[{integrationId:e,path:t}]}},u="Agent Response",l="Accessing Knowledge Base",d="Calling AI Function",h="AI Function Result",p="Inspecting Knowledge Base Metadata",g="Querying Knowledge Base Graph",f="Searching Knowledge Base Text",y="Querying Spreadsheet",m="AI_PROVIDER_ERROR",I=["user","ai"],b=["email","phoneNumber","creditCard","ssn","iban","passport"],S="gpt-6-luna",w="ai-agent-connection-event",v=["cohere","voyage","none"],_=["anthropic","bedrock","claude-code","codex","cohere","flux","gemini","openai","openai-compatible","grok","stability","voyage","mistral","textract","azure_document_intelligence","vertex","external"],M=["openai","gemini","anthropic","grok"];function E(e){return M.includes(e)}const T=["openai","anthropic","gemini"],k=["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-luna","gpt-6.1-sol"],A=["gemini-3.1-pro","gemini-3.8-flash","gemini-3.5-flash-lite"],O=["grok-4.6","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],C=["claude-fable-5","claude-fable-5-1","claude-haiku-4-5-20251001","claude-opus-5-5","claude-sonnet-5-5"],D=[...k,...C,...A,...O];function R(e){return D.includes(e)}const N=["text-embedding-3-small"],q=["voyage-3-large","voyage-4-large","voyage-4"],F=["titan-embed-text-v2"],j=[...N,...q,...F];function P(e){return j.includes(e)}function B(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e&&"dimensions"in e}const x=["gpt-image-1","gpt-image-1-mini","gpt-image-1.5","gpt-image-2","gpt-image-2-2026-04-21","chatgpt-image-latest"],L=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],U=["tts-1","tts-1-hd","gpt-4o-mini-tts"],Q=[...L,...U],$=["stable-diffusion-core"],G=["flux-pro-1.1","flux-kontext-pro"],H=[...x,...$,...G],V=[...L],K=[...U],W=["mp3","opus","aac","flac","wav","pcm"],z=["vendor","connector","custom"];function J(e){return void 0!==e.integrationId&&void 0!==e.dimensions?{integrationId:e.integrationId,model:e.modelId,dimensions:e.dimensions}:e.modelId}function Y(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const X=["pod","worker"],Z=["postgres","mongoAtlas"],ee=["none","enforced"],te="folderPath",ie="filename",ne={name:te,dataType:"string",required:!1,llmExtraction:!1},se=104857600,re=524288e3,oe=["contextual","basic"],ae=["economy","auto","fast"],ce=["twilio","openai"],ue=["phrase","agent"],le="ai-voice-session-event",de=["secret","regular"];function he(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const pe=["dev","prod"],ge="built_in_agent",fe=["bitbucket","confluence","connect_companion","cotomi","elevenlabs","openai_voice","essentials","freshdesk","generic_site_ingester","github","google_calendar","google_drive","hubspot","sharepoint","jira","jira_jsm","linear","mail","onedrive","outlook","salesforce","servicenow_csm","slack","teams","ticketmind_companion","twilio","zendesk"],ye={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,MOVED_TEMPORARILY:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,REQUEST_TOO_LONG:413,REQUEST_URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,REQUESTED_RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,INSUFFICIENT_SPACE_ON_RESOURCE:419,METHOD_FAILURE:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,INSUFFICIENT_STORAGE:507,NETWORK_AUTHENTICATION_REQUIRED:511},me="ai_agents",Ie=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_blob","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","bitbucket","built_in_azure_blob","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","azure-entra-external-id","azure-entra-id","dynamodb","elasticsearch","firebase_auth","firestore","gcs","generic_site_ingester","github","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jira_jsm","jwt_hmac","jwt_rsa","kafka","keycloak","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","outlook","oracledb","pinecone","postgres","redis","s3","salesforce","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","twilio","elevenlabs","openai_voice","mcp","a2a","legend","teams","openai_compatible","openai_compatible_embedding","sharepoint","vertex"],be=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","snowflake","elasticsearch","legend"],Se=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth","azure-entra-external-id","azure-entra-id"],we=["auth0","azure-entra-id","azure-entra-external-id"],ve=["graphql"],_e=["api"],Me=["data","api","graphql"],Ee="built_in_db",Te="built_in_queue",ke="built_in_storage";function Ae(e){return!1===e.enabled}const Oe=[Ee,Te,ke];function Ce(e){return Oe.includes(e)}const De=["squid_functionExecution_count","squid_functionExecution_time"],Re=["sum","max","min","average","median","p95","p99","count"],Ne=["user","squid"],qe=["align-by-start-time","align-by-end-time"],Fe=["return-no-result-groups","return-result-group-with-default-values"],je="__docId__",Pe=["in","not in","array_includes_some","array_includes_all","array_not_includes"],Be=[...Pe,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],xe=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],Le=["CONNECTED","DISCONNECTED","REMOVED"];function Ue(e){return null!=e}let Qe=e=>new Error(e);function $e(e,t,...i){e||function(e,...t){const i=He(e);if("object"==typeof i)throw i;throw Qe(i||"Assertion error",...t)}(t,...i)}function Ge(e,t,...i){return $e(e,t,...i),e}function He(e){return void 0===e?"":"string"==typeof e?e:e()}function Ve(e,t,i){const n=He(e);if("object"==typeof n)throw n;return`${n?`${n}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(i)}`}const Ke="analyzeCode",We=20,ze=["claude-code","codex"],Je=["reuse","recreate"],Ye=["read-only","write"],Xe=["github","bitbucket"],Ze=["github","bitbucket"];function et(e){const t=function(e){const t=new Set,i=new Set;for(const n of e){$e(Number.isSafeInteger(n.id)&&n.id>0,"GITHUB_REPOSITORY_ID_INVALID"),$e(!t.has(n.id),"GITHUB_REPOSITORY_IDS_MUST_BE_UNIQUE"),t.add(n.id),$e(it(n.fullName),"GITHUB_REPOSITORY_NAME_INVALID");const e=n.fullName.toLowerCase();$e(!i.has(e),"GITHUB_REPOSITORIES_MUST_BE_UNIQUE"),i.add(e),$e(n.defaultBranch.trim(),"GITHUB_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),nt(n.cloneUrl,n.fullName,!0),nt(n.htmlUrl,n.fullName,!1)}return e}(e.repositories??[]),i=0===t.length?e.repository:void 0,n=t.map(e=>e.fullName);$e(t.length>0||i,"GITHUB_REPOSITORIES_REQUIRED"),$e(t.length<=We,"GITHUB_REPOSITORY_LIMIT_EXCEEDED");const s=e.defaultRepository??n[0]??i;return $e(s,"GITHUB_DEFAULT_REPOSITORY_REQUIRED"),$e(n.some(e=>e.toLowerCase()===s.toLowerCase())||i?.toLowerCase()===s.toLowerCase(),"GITHUB_DEFAULT_REPOSITORY_NOT_ALLOWED"),{...i?{legacyRepository:i}:{},repositories:t,defaultRepository:s}}function tt(e){const t=e.workspace;$e(t.trim()===t&&/^[A-Za-z0-9_-]+$/.test(t),"BITBUCKET_WORKSPACE_INVALID");const i=e.repositories;$e(i.length>0,"BITBUCKET_REPOSITORIES_REQUIRED"),$e(i.length<=We,"BITBUCKET_REPOSITORY_LIMIT_EXCEEDED");const n=new Set,s=new Set;for(const e of i){const i=e.uuid.trim();$e(i===e.uuid&&i.length>0,"BITBUCKET_REPOSITORY_ID_INVALID");const r=i.toLowerCase();$e(!n.has(r),"BITBUCKET_REPOSITORY_IDS_MUST_BE_UNIQUE"),n.add(r);const o=`${t}/`;$e(e.fullName.toLowerCase().startsWith(o.toLowerCase())&&e.fullName.length>o.length&&!e.fullName.slice(o.length).includes("/")&&!/\s/.test(e.fullName),"BITBUCKET_REPOSITORY_WORKSPACE_MISMATCH");const a=e.fullName.toLowerCase();$e(!s.has(a),"BITBUCKET_REPOSITORIES_MUST_BE_UNIQUE"),s.add(a),$e(e.defaultBranch.trim(),"BITBUCKET_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),st(e.cloneUrl,e.fullName,!0),st(e.webUrl,e.fullName,!1)}const r=e.defaultRepository;return $e(r&&i.some(e=>e.fullName.toLowerCase()===r.toLowerCase()),"BITBUCKET_DEFAULT_REPOSITORY_NOT_ALLOWED"),{repositories:i,defaultRepository:r}}function it(e){return/^[^/\s]+\/[^/\s]+$/.test(e)}function nt(e,t,i){let n;try{n=new URL(e)}catch{throw new Error("GITHUB_REPOSITORY_URL_INVALID")}const s=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?github\.com:\d+(?:\/|$)/i.test(e);$e(!("https:"!==n.protocol||"github.com"!==n.hostname||r||n.username||n.password||n.search||n.hash||n.pathname!==s),"GITHUB_REPOSITORY_URL_INVALID")}function st(e,t,i){let n;try{n=new URL(e)}catch{throw new Error("BITBUCKET_REPOSITORY_URL_INVALID")}const s=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?bitbucket\.org:\d+(?:\/|$)/i.test(e);$e(!("https:"!==n.protocol||"bitbucket.org"!==n.hostname||r||n.username||n.password||n.search||n.hash||n.pathname!==s),"BITBUCKET_REPOSITORY_URL_INVALID")}class rt{constructor(e,t,i,n,s){this.rpcManager=e,this.backendFunctionManager=s,this.iacBaseUrl=o(t,n,`openapi/iac/applications/${i}/integrations`)}async list(e,t){return(await this.rpcManager.get(this.iacBaseUrl)).filter(i=>(!e||i.type===e)&&(t?.includeDisabled||!Ae(i)))}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async getPathStatus(e,t){const i=await this.get(e);if(!i)throw new Error(`Integration not found: ${e}`);return async function(e,t,i,n){const s=c[t];if(!s)return{supported:!1};const r=await e.executeFunction(s.functionName,...s.buildArgs(i,n));return{supported:!0,knowledgeBaseId:r.knowledgeBaseId,entries:r.entries,truncated:r.truncated}}(this.backendFunctionManager,i.type,e,t)}async enable(e){await this.setEnabled(e,!0)}async disable(e){await this.setEnabled(e,!1)}async setEnabled(e,t){const i=await this.get(e);if(!i)throw new Error(`Integration not found: ${e}`);await this.upsertIntegration({...i,enabled:t})}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}async discoverSourceRepositories(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-source-repositories`,{})}async discoverSourceRepositoriesFromDraft(e){return await this.rpcManager.post(`${this.iacBaseUrl}/discover-source-repositories`,e)}async generateAiDescriptionsForDataSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions`,t)}async generateAiDescriptionsForAssociations(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-associations`,t)}async generateAiDescriptionsForStoredProcedures(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-stored-procedures`,t)}async generateAiDescriptionsForEndpoints(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-endpoints`,t)}async discoverDataConnectionSchema(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-schema`,{})}async startRelationshipInference(e,t){const{jobId:i}=await this.rpcManager.post(`${this.iacBaseUrl}/${e}/infer-relationships`,t??{});return i}async getRelationshipInference(e){const{run:t}=await this.rpcManager.get(`${this.iacBaseUrl}/${e}/infer-relationships`);return t}async cancelRelationshipInference(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}/infer-relationships`)}async testDataConnection(e){return await this.rpcManager.post(`${this.iacBaseUrl}/test-connection`,e)}async discoverGraphQLConnectionSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-graphql-schema`,t)}async discoverOpenApiSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema`,t)}async discoverOpenApiSchemaFromFile(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema-from-file`,{})}}class ot{constructor(e){this.rpcManager=e}get apiKeys(){return new at(this.rpcManager)}async get(e){const t={key:e};return await this.rpcManager.post("secret/get",t)||void 0}getAll(){return this.rpcManager.post("secret/getAll",{})}async upsert(e,t){return this.upsertMany([{key:e,value:t}]).then(e=>e[0])}async upsertMany(e){if(0===e.length)return[];const t={entries:e};return this.rpcManager.post("secret/upsert",t)}delete(e,t=!1){const i={keys:[e],force:t};return this.rpcManager.post("secret/delete",i)}async deleteMany(e,t=!1){if(0===e.length)return;const i={keys:e,force:t};return this.rpcManager.post("secret/delete",i)}}class at{constructor(e){this.rpcManager=e}get(e){const t={key:e};return this.rpcManager.post("secret/api-key/get",t)}getAll(){return this.rpcManager.post("secret/api-key/getAll",{})}upsert(e){const t={key:e};return this.rpcManager.post("secret/api-key/upsert",t)}delete(e){const t={key:e};return this.rpcManager.post("secret/api-key/delete",t)}}class ct{constructor(e,t,i,n,s){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=n,this.backendFunctionManager=s,this.integrationClient=new rt(this.rpcManager,this.region,this.appId,this.consoleRegion,this.backendFunctionManager),this.connectorClient=new a(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new ot(this.rpcManager)}integrations(){return this.integrationClient}connectors(){return this.connectorClient}secrets(){return this.secretClient}}const ut=require("rxjs");function lt(e){return"function"==typeof e}function dt(e){return function(t){if(function(e){return lt(null==e?void 0:e.lift)}(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw new TypeError("Unable to lift unknown Observable type")}}var ht=function(e,t){return ht=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},ht(e,t)};function pt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}ht(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function gt(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function ft(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,s,r=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(e){s={error:e}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return o}function yt(e,t,i){if(i||2===arguments.length)for(var n,s=0,r=t.length;s<r;s++)!n&&s in t||(n||(n=Array.prototype.slice.call(t,0,s)),n[s]=t[s]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var mt,It=((mt=function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(e,t){return t+1+") "+e.toString()}).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}(function(e){Error.call(e),e.stack=(new Error).stack})).prototype=Object.create(Error.prototype),mt.prototype.constructor=mt,mt);function bt(e,t){if(e){var i=e.indexOf(t);0<=i&&e.splice(i,1)}}var St=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,i,n,s;if(!this.closed){this.closed=!0;var r=this._parentage;if(r)if(this._parentage=null,Array.isArray(r))try{for(var o=gt(r),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else r.remove(this);var c=this.initialTeardown;if(lt(c))try{c()}catch(e){s=e instanceof It?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=gt(u),d=l.next();!d.done;d=l.next()){var h=d.value;try{wt(h)}catch(e){s=null!=s?s:[],e instanceof It?s=yt(yt([],ft(s)),ft(e.errors)):s.push(e)}}}catch(e){i={error:e}}finally{try{d&&!d.done&&(n=l.return)&&n.call(l)}finally{if(i)throw i.error}}}if(s)throw new It(s)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)wt(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&bt(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&bt(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function wt(e){lt(e)?e():e.unsubscribe()}St.EMPTY;var vt={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];var s=vt.delegate;return(null==s?void 0:s.setTimeout)?s.setTimeout.apply(s,yt([e,t],ft(i))):setTimeout.apply(void 0,yt([e,t],ft(i)))},clearTimeout:function(e){var t=vt.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function _t(){}var Mt=Et("C",void 0,void 0);function Et(e,t,i){return{kind:e,value:t,error:i}}var Tt=function(e){function t(t){var i,n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,((i=t)instanceof St||i&&"closed"in i&&lt(i.remove)&&lt(i.add)&&lt(i.unsubscribe))&&t.add(n)):n.destination=Dt,n}return pt(t,e),t.create=function(e,t,i){return new At(e,t,i)},t.prototype.next=function(e){this.isStopped?Ct(function(e){return Et("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Ct(Et("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Ct(Mt,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(St);Function.prototype.bind;var kt=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Ot(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Ot(e)}else Ot(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Ot(e)}},e}(),At=function(e){function t(t,i,n){var s,r=e.call(this)||this;return s=lt(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=n?n:void 0}:t,r.destination=new kt(s),r}return pt(t,e),t}(Tt);function Ot(e){!function(e){vt.setTimeout(function(){throw e})}(e)}function Ct(e,t){var i=null;i&&vt.setTimeout(function(){return i(e,t)})}var Dt={closed:!0,next:_t,error:function(e){throw e},complete:_t};function Rt(e,t,i,n,s){return new Nt(e,t,i,n,s)}var Nt=function(e){function t(t,i,n,s,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=s?function(e){try{s(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=n?function(){try{n()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return pt(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var i=this.closed;e.prototype.unsubscribe.call(this),!i&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(Tt);function qt(e,t){return dt(function(i,n){var s=0;i.subscribe(Rt(n,function(i){n.next(e.call(t,i,s++))}))})}function Ft(){return"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():jt()}function jt(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function Pt(){return Ft()}const Bt=18,xt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function Lt(){return xt.charAt(Math.floor(Math.random()*xt.length))}function Ut(e=Bt,t="",i=""){$e(t.length<e,"ID prefix is too long"),$e(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let n="";for(let t=0;t<e;t++)n+=Lt();if(t.length>0&&(n=t+n.substring(t.length)),i)for(;n.charAt(t.length)===i[t.length];)n=n.substring(0,t.length)+Lt()+n.substring(t.length+1);return n}function Qt({count:e,length:t,prefix:i}){$e(e>=0,`Invalid IDs count: ${e}`);const n=new Set;for(;n.size<e;)n.add(Ut(t||Bt,i||""));return[...n]}const $t=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Gt(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Gt(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Gt(t);else for(const t in e){if(!/^[a-zA-Z0-9_]+$/.test(t))throw new Error(`Invalid metadata filter key ${t} - can only contain letters, numbers, and underscores`);if($t.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${$t.join(", ")}`);const i=e[t];if("object"!=typeof i&&"string"!=typeof i&&"number"!=typeof i&&"boolean"!=typeof i)throw new Error(`Invalid metadata filter value for key ${t} - cannot be of type ${typeof i}`)}}function Ht(e,t,i){const n=atob(e),s=new Uint8Array(n.length);for(let e=0;e<n.length;e++)s[e]=n.charCodeAt(e);return new File([s],t,{type:i||"application/octet-stream"})}const Vt={TRACE_ID:"x-squid-traceid",SECRET:"x-squid-secret",APP_API_KEY:"x-app-api-key",APP_ID:"x-squid-appid",CLIENT_ID:"x-squid-clientid",CLIENT_VERSION:"x-squid-client-version",INTEGRATION_ACCESS_TOKENS:"x-squid-integration-access-tokens",POD_IP:"x-squid-pod-ip",INSTANCE_ID:"x-squid-instance-id",EXPECTED_INSTANCE_ID:"x-squid-expected-instance-id",WORKER_KEY:"x-squid-worker-key"};function Kt(e){return JSON.stringify(e)}function Wt(e){return e&&Object.keys(e).length?{[Vt.INTEGRATION_ACCESS_TOKENS]:Kt(e)}:{}}function zt(e){if(!e)return{headers:{},options:void 0};const{integrationAccessTokens:t,...i}=e;return{headers:Wt(t),options:i}}function Jt(e,t){const{agentId:i,jobId:n}=t;return e.notifyWebSocketIsNeeded(),e.observeNotifications().pipe((0,ut.filter)(e=>"aiStatus"===e.type&&(void 0===i||e.agentId===i)),(0,ut.filter)(e=>!n||e.jobId===n),(0,ut.map)(e=>({agentId:e.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.payload.statusUpdateId??e.messageId})))}Error;class Yt{constructor(e,t,i,n,s,r,o,a=()=>{}){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=n,this.socketManager=s,this.jobClient=r,this.backendFunctionManager=o,this.getMetricAnnotations=a}async get(){const e=await this.post("ai/agent/getAgent",{agentId:this.agentId});return e?.agent}async upsert(e){await this.post("ai/agent/upsertAgent",{...e,id:this.agentId})}async delete(){await this.post("ai/agent/deleteAgent",{agentId:this.agentId})}async updateInstructions(e){await this.setAgentOptionInPath("instructions",e)}async updateModel(e){await this.setAgentOptionInPath("model",e)}async updateConnectedAgents(e){await this.setAgentOptionInPath("connectedAgents",e)}async updateGuardrails(e){const t=await this.get();$e(t,"Agent not found");const i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}async updatePii(e){const t=await this.get();$e(t,"Agent not found");const i={onDetect:"off",...t.options?.pii,...e};await this.setAgentOptionInPath("pii",i)}async updateMcpServer(e){await this.post("ai/agent/setMcpServer",{agentId:this.agentId,mcpServer:e})}async generateMcpDescriptions(){return await this.post("ai/agent/generateMcpDescriptions",{agentId:this.agentId})}async updateCustomGuardrails(e){await this.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}async regenerateApiKey(){return await this.post("ai/agent/regenerateApiKey",{agentId:this.agentId})}async getApiKey(){return await this.post("ai/agent/getApiKey",{agentId:this.agentId})}async listRevisions(){return await this.post("ai/agent/listRevisions",{agentId:this.agentId})}async restoreRevision(e){await this.post("ai/agent/restoreRevision",{agentId:this.agentId,revisionNumber:e})}async deleteRevision(e){await this.post("ai/agent/deleteRevision",{agentId:this.agentId,revisionNumber:e})}chat(e,t,i){return this.chatInternal(e,t,i).responseStream}async transcribeAndChat(e,t,i){const n=this.chatInternal(e,t,i),s=await Ge(n.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:n.responseStream,transcribedPrompt:s.transcribedPrompt}}async ask(e,t,i){const n=await this.askInternal(e,!1,t,i);return this.replaceFileTags(n.responseString,n.annotations)}async askWithResult(e,t,i){return this.askInternal(e,!1,t,i)}async askWithAnnotations(e,t,i){const n=await this.askInternal(e,!1,t,i);return{responseString:n.responseString,annotations:n.annotations,routing:n.routing,validation:n.validation}}async askAsync(e,t,i){const{headers:n,options:s}=zt(i),r={agentId:this.agentId,prompt:e,options:this.withMetricAnnotations(s),jobId:t};await this.post("ai/chatbot/askAsync",r,[],"files",n)}observeStatusUpdates(e){return Jt(this.socketManager,{agentId:this.agentId,jobId:e})}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,i){return await this.askInternal(e,!1,t,i)}async transcribeAndAskWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,transcribedPrompt:n.transcribedPrompt,voiceResponseFile:Ht(s.base64File,`voice.${s.extension}`,s.mimeType)}}async askWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,voiceResponseFile:Ht(s.base64File,`voice.${s.extension}`,s.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}async addConnectedIntegration(e){await this.post("ai/agent/addConnectedIntegration",{agentId:this.agentId,integrationId:e.integrationId,integrationType:e.integrationType,description:e.description??""})}async addConnectedAgent(e){await this.post("ai/agent/addConnectedAgent",{agentId:this.agentId,connectedAgentId:e.agentId,description:e.description})}async addConnectedKnowledgeBase(e){await this.post("ai/agent/addConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e.knowledgeBaseId,description:e.description,includeMetadata:e.includeMetadata})}async addFunction(e){await this.post("ai/agent/addFunction",{agentId:this.agentId,functionId:e})}async removeConnectedAgent(e){await this.post("ai/agent/removeConnectedAgent",{agentId:this.agentId,connectedAgentId:e})}async removeConnectedIntegration(e){await this.post("ai/agent/removeConnectedIntegration",{agentId:this.agentId,integrationId:e})}async removeConnectedKnowledgeBase(e){await this.post("ai/agent/removeConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e})}async removeFunction(e){await this.post("ai/agent/removeFunction",{agentId:this.agentId,functionId:e})}async setAgentDescription(e){await this.post("ai/agent/setAgentDescription",{agentId:this.agentId,description:e})}async provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}async build(e,t,i){const n={agentId:this.agentId,request:e,memoryId:t,options:i};return await this.backendFunctionManager.executeFunction("buildAgent",n)}replaceFileTags(e,t={}){let i=e;for(const[e,n]of Object.entries(t)){let t="";const s=n.aiFileUrl.fileName?n.aiFileUrl.fileName:n.aiFileUrl.url;switch(n.aiFileUrl.type){case"image":t=`![${s}](${n.aiFileUrl.url})`;break;case"document":t=`[${s}](${n.aiFileUrl.url})`}const r=`\${id:${e}}`;i=i.replaceAll("`"+r+"`",t).replaceAll(r,t)}return i}async askInternal(e,t,i,n){if(i?.contextMetadataFilter&&Gt(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)Gt(i.contextMetadataFilterForKnowledgeBase[e]);n=n||Ft();const{headers:s,options:r}=zt(i);i=this.withMetricAnnotations({...Xt,...r||{}});const o="string"==typeof e;let a="ai/chatbot/";a+=o||t?!o&&t?"transcribeAndAskWithVoiceResponse":o&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const c={agentId:this.agentId,prompt:o?e:void 0,options:i,jobId:n},u=o?void 0:[e];return await this.post(a,c,u,"file",s),await this.jobClient.awaitJob(n)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Gt(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Gt(t.contextMetadataFilterForKnowledgeBase[e]);const n=Ft(),{headers:s,options:r}=zt(t),o=void 0===(t=this.withMetricAnnotations({...Xt,...r||{}})).smoothTyping||t.smoothTyping;let a="";const c=new ut.Subject,u=new ut.Subject;this.ongoingChatSequences[n]=u;let l=-1;u.pipe((0,ut.tap)(({tokenIndex:e})=>{void 0!==e&&e<l&&console.warn("Received token index out of order",e,l),void 0!==e&&(l=e)}),(0,ut.concatMap)(({value:e,complete:t,annotations:i})=>t?(0,ut.of)({value:e,complete:t,annotations:i}):(0,ut.of)(e).pipe((()=>{const e=globalThis.document,t="object"==typeof e&&null!==e&&!0===e.hidden;return o&&!t})()?(0,ut.delay)(0):(0,ut.tap)(),qt(e=>({value:e,complete:!1,annotations:void 0})))),(0,ut.takeWhile)(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{a+=e,t&&i&&(a=this.replaceFileTags(a,i)),c.next(a)},error:e=>{console.error(e)},complete:()=>{c.complete()}});const d="string"==typeof e;i=i||Ft();const h={agentId:this.agentId,jobId:i,prompt:d?e:void 0,options:t,clientRequestId:n},p={responseStream:c.pipe((0,ut.finalize)(()=>{delete this.ongoingChatSequences[n]}),(0,ut.share)())};let g;return g=d?this.post("ai/chatbot/chat",h,[],"files",s).catch(e=>{c.error(e),c.complete()}):this.post("ai/chatbot/transcribeAndChat",h,[e],"file",s).catch(e=>{throw c.error(e),c.complete(),e}),p.serverResponse=g.then(()=>this.jobClient.awaitJob(i)).catch(e=>{c.error(e),c.complete()}),p}withMetricAnnotations(e){const t=this.getMetricAnnotations();return t?{...e||{},metricAnnotations:{...t,...e?.metricAnnotations}}:e}async post(e,t,i=[],n="files",s={}){const r={...s};return this.agentApiKey&&(r["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,n,r)}}const Xt={smoothTyping:!0,responseFormat:"text"};class Zt{constructor(e,t,i,n,s=()=>{}){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=n,this.getMetricAnnotations=s,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"aiChatbot"===e.type),qt(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new Yt(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:i,complete:n,tokenIndex:s,annotations:r}=e.payload;if(n&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:n,tokenIndex:void 0===s?void 0:s,annotations:r});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:n&&e===i.length-1,tokenIndex:void 0===s?void 0:s,annotations:r})}}const ei="__squid_empty_chat_id";class ti{constructor(e){this.rpcManager=e}async transcribe(e,t={modelName:"whisper-1"}){return this.rpcManager.post("ai/audio/transcribe",t,[e])}async createSpeech(e,t){const i={input:e,options:t},n=await this.rpcManager.post("ai/audio/createSpeech",i);return Ht(n.base64File,`audio.${n.extension}`,n.mimeType)}}class ii{constructor(e,t){this.provider=e,this.rpcManager=t}async uploadFile(e){const t={provider:this.provider,expirationInSeconds:e.expirationInSeconds};return(await this.rpcManager.post("ai/files/uploadFile",t,[e.file],"file")).fileId}async deleteFile(e){const t={fileId:e,provider:this.provider};return(await this.rpcManager.post("ai/files/deleteFile",t)).deleted}}class ni{constructor(e){this.rpcManager=e}async generate(e,t){const i={prompt:e,options:t};return await this.rpcManager.post("ai/image/generate",i)}async removeBackground(e){return await this.rpcManager.post("ai/image/removeBackground",{},[e])}}function si(e){for(const t in e){const i=e[t];$e("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),$e(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}const ri=new Set(["completed","failed","cancelled"]);class oi{constructor(e,t,i,n,s){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i,this.socketManager=n,this.clientIdService=s}async getKnowledgeBase(){return(await this.rpcManager.post("ai/knowledge-base/getKnowledgeBase",{knowledgeBaseId:this.knowledgeBaseId})).knowledgeBase}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async upsertKnowledgeBase(e){await this.rpcManager.post("ai/knowledge-base/upsertKnowledgeBase",{knowledgeBase:{id:this.knowledgeBaseId,...e}})}async generateMetadataFieldDescriptions(e){return this.rpcManager.post("ai/knowledge-base/generateMetadataFieldDescriptions",{knowledgeBaseId:this.knowledgeBaseId,fieldNames:e?.fieldNames,overwriteExisting:e?.overwriteExisting})}async delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextsPage(e){return this.rpcManager.post("ai/knowledge-base/listContextsPage",{id:this.knowledgeBaseId,truncateTextAfter:e?.truncateTextAfter,offset:e?.offset,limit:e?.limit,search:e?.search})}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e,t){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e,truncateTextAfter:t?.truncateTextAfter})).context}async deleteContext(e){await this.deleteContexts([e])}async deleteContexts(e){await this.rpcManager.post("ai/knowledge-base/deleteContexts",{knowledgeBaseId:this.knowledgeBaseId,contextIds:e})}async setContextScopes(e,t){const{updatedChunkCount:i}=await this.rpcManager.post("ai/knowledge-base/setContextScopes",{knowledgeBaseId:this.knowledgeBaseId,contextId:e,scopes:t});return i}async setContextVersionStates(e){return(await this.rpcManager.post("ai/knowledge-base/setContextVersionStates",{knowledgeBaseId:this.knowledgeBaseId,items:e})).results}async upsertContext(e,t){const{failures:i,contextIds:n,graphIndexingSkippedContextIds:s,imageFailures:r}=await this.upsertContexts([e],t?[t]:void 0);if(i.length>0)return{failure:i[0]};const o=n?.[0],a=void 0!==o&&(s?.includes(o)??!1),c=r?.find(e=>e.contextId===o);return{...a?{graphIndexingSkipped:a}:{},...c?{imageFailures:c.imageFailures,imageFailureCount:c.imageFailureCount}:{}}}async upsertContexts(e,t,i){for(const t of e)t.metadata&&si(t.metadata);const n=Ft();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:n},t),i?.onUploaded?.(),await this.jobClient.awaitJob(n)}async bulkUpsertContexts(e,t,i){return this.rpcManager.post("ai/knowledge-base/bulk/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contexts:e,speed:i?.speed},t)}async createBulkUploadUrls(e){return this.rpcManager.post("ai/knowledge-base/bulk/createUploadUrls",{files:e.map(e=>({fileName:e}))})}async getBulkIngestionJob(e){return this.rpcManager.post("ai/knowledge-base/bulk/getJob",{jobId:e})}async cancelBulkIngestionJob(e){await this.rpcManager.post("ai/knowledge-base/bulk/cancelJob",{jobId:e})}observeBulkIngestionJob(e){return new ut.Observable(t=>{const i=()=>{this.rpcManager.post("ai/knowledge-base/bulk/subscribeToJob",{jobId:e}).catch(e=>t.error(e))};t.add(this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"bulkIngestionStatus"===e.type),(0,ut.filter)(t=>t.payload.jobId===e)).subscribe(e=>{t.next(e.payload),ri.has(e.payload.state)&&t.complete()})),t.add(this.clientIdService.observeClientId().pipe((0,ut.distinctUntilChanged)(),(0,ut.skip)(1)).subscribe(()=>i())),this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.awaitConnectionReady().then(i).catch(e=>t.error(e))})}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchWithGraphContext(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return this.rpcManager.post("ai/knowledge-base/search",t)}async grep(e,t){return this.rpcManager.post("ai/knowledge-base/grep",{knowledgeBaseId:this.knowledgeBaseId,pattern:e,options:t})}async queryGraph(e){return this.rpcManager.post("ai/knowledge-base/queryGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async getGraphStatus(e){return this.rpcManager.post("ai/knowledge-base/getGraphStatus",{...e,knowledgeBaseId:this.knowledgeBaseId})}async getFileStatus(e){return this.rpcManager.post("ai/knowledge-base/getFileStatus",{knowledgeBaseId:this.knowledgeBaseId,path:e})}async getFolderStatus(e,t){return this.rpcManager.post("ai/knowledge-base/getFolderStatus",{knowledgeBaseId:this.knowledgeBaseId,folderPath:e,fileLimit:t})}async rebuildGraph(e){await this.rpcManager.post("ai/knowledge-base/rebuildGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async exploreGraph(e){return this.rpcManager.post("ai/knowledge-base/exploreGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class ai{constructor(e,t,i,n){this.rpcManager=e,this.jobClient=t,this.socketManager=i,this.clientIdService=n}knowledgeBase(e){return new oi(e,this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async delete(e){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:e})}}class ci{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new ui(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new ui(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class ui{constructor(e,t){this.matchMaker=e,this.rpcManager=t,this.id=e.id}async insertEntity(e){await this.rpcManager.post("matchMaking/insertEntity",{matchMakerId:this.id,entity:e})}async insertManyEntities(e){await this.rpcManager.post("matchMaking/insertEntities",{matchMakerId:this.id,entities:e})}async delete(){await this.rpcManager.post("matchMaking/deleteMatchMaker",{matchMakerId:this.id})}async deleteEntity(e){await this.rpcManager.post("matchMaking/deleteEntity",{entityId:e,matchMakerId:this.id})}async findMatches(e,t={}){return(await this.rpcManager.post("matchMaking/findMatches",{matchMakerId:this.id,entityId:e,options:t})).matches}async findMatchesForEntity(e,t={}){return(await this.rpcManager.post("matchMaking/findMatchesForEntity",{matchMakerId:this.id,entity:e,options:t})).matches}async listEntities(e,t={}){return await this.rpcManager.post("matchMaking/listEntities",{categoryId:e,options:t,matchMakerId:this.id})}async getEntity(e){return(await this.rpcManager.post("matchMaking/getEntity",{matchMakerId:this.id,entityId:e})).entity}getMatchMakerDetails(){return this.matchMaker}}class li{constructor(e,t,i,n){this.sessionId=e,this.callId=t,this.peer=i,this.microphone=n,this.eventListeners=new Set,this.endListeners=new Set,this.ended=!1}static async start(e,t){const i=globalThis,n=i.RTCPeerConnection,s=i.navigator?.mediaDevices;if(!n||!s)throw new Error("A web voice call needs a browser with WebRTC support");const{sink:r,...o}=t,a=await s.getUserMedia({audio:!0}),c=new n,u=r??i.document?.createElement("audio");u&&(u.autoplay=!0),c.ontrack=e=>{u&&(u.srcObject=e.streams[0],u.play().catch(()=>{}))};for(const e of a.getAudioTracks())c.addTrack(e,a);const l=c.createDataChannel("oai-events"),d=await c.createOffer();let h;await c.setLocalDescription(d),l.onmessage=e=>{try{h?.dispatch(JSON.parse(e.data))}catch{}},c.onconnectionstatechange=()=>{["failed","closed","disconnected"].includes(c.connectionState)&&h?.finish()};const p=await e.startOpenAiWebCall({...o,sdp:d.sdp??""});return await c.setRemoteDescription({type:"answer",sdp:p.sdp}),h=new li(p.sessionId,p.callId,c,a),h}onEvent(e){return this.eventListeners.add(e),()=>this.eventListeners.delete(e)}onTurn(e){return this.onEvent(t=>{const i="string"==typeof t.transcript?t.transcript.trim():"";i&&("conversation.item.input_audio_transcription.completed"===t.type?e({role:"user",text:i,at:(new Date).toISOString()}):"response.output_audio_transcript.done"===t.type&&e({role:"agent",text:i,at:(new Date).toISOString()}))})}onEnd(e){return this.endListeners.add(e),()=>this.endListeners.delete(e)}setMuted(e){for(const t of this.microphone.getAudioTracks())t.enabled=!e}stop(){this.finish()}dispatch(e){for(const t of this.eventListeners)t(e)}finish(){if(!this.ended){this.ended=!0;for(const e of this.microphone.getTracks())e.stop();this.peer.close();for(const e of this.endListeners)e()}}}class di{constructor(e){this.rpcManager=e}async createSession(e){return this.rpcManager.post("ai/voice/createSession",e)}async answerOpenAiCall(e){return this.rpcManager.post("ai/voice/openai/answer",e)}async startOpenAiWebCall(e){return this.rpcManager.post("ai/voice/openai/webCall",e)}async startWebCall(e){return li.start(this,e)}}class hi{constructor(e,t,i,n,s,r=()=>{}){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.clientIdService=n,this.backendFunctionManager=s,this.getMetricAnnotations=r}agent(e=ge,t=void 0){return this.getAiAgentClient().agent(e,t)}knowledgeBase(e){return this.getAiKnowledgeBaseClient().knowledgeBase(e)}async listAgents(){return this.getAiAgentClient().listAgents()}async listKnowledgeBases(){return this.getAiKnowledgeBaseClient().listKnowledgeBases()}async listFunctions(){const e=await this.rpcManager.post("/application/getBundleMetadata",{});return Object.values(e.aiFunctions||{})}async listChatModels(e){return(await this.rpcManager.post("ai/settings/listChatModels",e??{})).models}async listEmbeddingModels(e){return(await this.rpcManager.post("ai/settings/listEmbeddingModels",e??{})).models}image(){return new ni(this.rpcManager)}audio(){return new ti(this.rpcManager)}voice(){return new di(this.rpcManager)}matchMaking(){return new ci(this.rpcManager)}files(e){return new ii(e,this.rpcManager)}executeAiQuery(e,t,i,n){const{accessToken:s,...r}=i??{},o={integrationId:e,prompt:t,options:r},a=Wt(s?{[e]:s}:void 0);return this.rpcManager.post("ai/query/executeDataQuery",o,[],"files",a,n)}executeAiApiCall(e,t,i,n){const s={integrationId:e,prompt:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeApiQuery",s)}executeAiSpreadsheetQuery(e,t,i,n){const s={prompt:e,files:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeSpreadsheetQuery",s)}async getApplicationAiSettings(){return(await this.rpcManager.post("ai/settings/getApplicationAiSettings",{})).settings}async setApplicationAiSettings(e){const t={settings:e};await this.rpcManager.post("ai/settings/setApplicationAiSettings",t)}async setAiProviderApiKeySecret(e,t){const i={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",i)).settings}observeStatusUpdates(e){return Jt(this.socketManager,{jobId:e})}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new Zt(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new ai(this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)),this.aiKnowledgeBaseClient}}const pi={headers:{},queryParams:{},pathParams:{}};class gi{constructor(e){this.rpcManager=e}async get(e,t,i){return this.request(e,t,void 0,i,"get")}async post(e,t,i,n){return this.request(e,t,i,n,"post")}async delete(e,t,i,n){return this.request(e,t,i,n,"delete")}async patch(e,t,i,n){return this.request(e,t,i,n,"patch")}async put(e,t,i,n){return this.request(e,t,i,n,"put")}async request(e,t,i,n,s){const r={integrationId:e,endpointId:t,body:i,options:{...pi,...this.convertOptionsToStrings(n||{})},overrideMethod:s};return await this.rpcManager.rawPost("api/callApi",r,void 0,void 0,!1)}convertOptionsToStrings(e){return{headers:this.convertToStrings(e.headers),queryParams:this.convertToStrings(e.queryParams),pathParams:this.convertToStrings(e.pathParams)}}convertToStrings(e){if(!e)return{};const t=Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,String(t)]);return Object.fromEntries(t)}}class fi{constructor(e,t){this.apiKey=e,this.authProvider=t}setAuthProvider(e){this.authProvider=e}async getAuthData(){return{token:await this.getTokenFromAuthProvider(),integrationId:this.authProvider?.integrationId}}getApiKey(){return this.apiKey}async getToken(){if(this.apiKey)return{type:"ApiKey",token:this.apiKey};const e=await this.getTokenFromAuthProvider();return e?{type:"Bearer",token:e,integrationId:this.authProvider?.integrationId}:void 0}async getTokenFromAuthProvider(){const e=this.authProvider?.getToken();return"object"==typeof e?await e:e}}const yi=/[.\[\]]/;function mi(e,t){if(!e)return;const i=t.split(yi);let n,s=e;for(;s&&i.length;){const e=i.shift();if(e){if("object"!=typeof s||!(e in s))return;n=s[e],s=n}}return n}function Ii(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function bi(e,t,i,n="."){const s=t.split(n);let r=e;for(;s.length;){const e=Ge(s.shift());if(s.length){const t=r[e],i=Ii(t)?Ei(t)??{}:{};r[e]=i,r=i}else r[e]=i}}function Si(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function wi(e){return null==e}function vi(e,t){if(e===t)return!0;if(null===e||null===t)return!1;const i=typeof e;if(i!==typeof t)return!1;if("object"!==i)return e===t;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(const i of n)if(!s.includes(i)||!vi(e[i],t[i]))return!1;return!0}function _i(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=Mi(e[n],t);return i}function Mi(e,t){const i=t?t(e):void 0;if(void 0!==i)return i;if("object"!=typeof e||null===e)return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return _i(e,t);if(e instanceof Map)return new Map(_i(Array.from(e),t));if(e instanceof Set)return new Set(_i(Array.from(e),t));if(ArrayBuffer.isView(e))return n=e,"undefined"!=typeof Buffer&&n instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length);var n;const s={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(s[i]=Mi(e[i],t));return s}function Ei(e){return"object"!=typeof e||null===e?e:e instanceof Date?new Date(e):Array.isArray(e)?[...e]:e instanceof Map?new Map(Array.from(e)):e instanceof Set?new Set(Array.from(e)):{...e}}function Ti(e,t){if(e===t||wi(e)&&wi(t))return 0;if(wi(e))return-1;if(wi(t))return 1;const i=typeof e,n=typeof t;return i!==n?i<n?-1:1:"number"==typeof e?($e("number"==typeof t),isNaN(e)&&isNaN(t)?0:isNaN(e)?-1:isNaN(t)?1:e<t?-1:1):"boolean"==typeof e?($e("boolean"==typeof t),e<t?-1:1):"bigint"==typeof e?($e("bigint"==typeof t),e<t?-1:1):"string"==typeof e?($e("string"==typeof t),e<t?-1:1):e instanceof Date&&t instanceof Date?Math.sign(e.getTime()-t.getTime()):0}function ki(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function Ai(e){if(Array.isArray(e))return e.map(e=>Ai(e));if("object"!=typeof e||null===e||e instanceof Date)return e;const t=Object.keys(e),i={};return t.sort().forEach(t=>{i[t]=Ai(e[t])}),i}function Oi(e){return Ci(Ai(e))}function Ci(e){if(void 0===e)return null;const t=Mi(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function Di(e){return Mi(JSON.parse(e),e=>{if(null===e||"object"!=typeof e)return;const t=e,i=t.$date;return i&&1===Object.keys(t).length?new Date(i):void 0})}function Ri(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=Ci(e);if("undefined"!=typeof Buffer)return Buffer.from(t,"utf8").toString("base64");{const e=(new TextEncoder).encode(t);let i="";for(let t=0;t<e.length;t++)i+=String.fromCharCode(e[t]);return btoa(i)}}const Ni=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0},qi=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(Ci(e[i])!==Ci(t[i]))return!1;return!0};class Fi{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||Ni,n=this.options.valueExpirationMillis||1/0;return t&&Date.now()<t.cacheTimeMillis+n&&i(t.args,e)?{found:!0,value:t.result}:{found:!1}}set(e,t){this.cachedEntry={args:e,result:t,cacheTimeMillis:Date.now()}}}function ji(e){const t=[],i=[];let n=0;for(const s of e)if("undefined"!=typeof File)if(s instanceof File){i.push(s);const e={type:"file",__squid_placeholder__:!0,fileIndex:n++};t.push(e)}else if(Pi(s)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:s.map((e,t)=>(i.push(s[t]),n++))};t.push(e)}else t.push(s);else t.push(s);return{argsArray:t,fileArray:i}}function Pi(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class Bi{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:n,fileArray:s}=ji(i),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(n);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?Ni:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,n));if(t)return t.promise}const u=this.createExecuteCallPromise(r,n,s,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:n,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,n,s={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:Ci(t)},a=Di((await this.rpcManager.post(r,o,i.length>0?i:[],"files",s)).payload);if(a?.__isSquidBase64File__){const e=a;return Ht(e.base64,e.filename,e.mimetype)}return n&&n.set(t,a),a}}function xi(e){if("undefined"!=typeof globalThis)return globalThis[e]}function Li(){if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}void 0===Li()?.SQUID_LOG_DEBUG_ENABLED&&function(e=!0){Li().SQUID_LOG_DEBUG_ENABLED=e}(function(){let e="";return"undefined"!=typeof window&&window.location?e=new URLSearchParams(window.location.search).get("SQUID_DEBUG")||"":"undefined"!=typeof process&&process.env&&(e=process.env.SQUID_DEBUG||""),"1"===e||"true"===e}());class Ui{static debug(...e){(function(){const e=Li();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=Li();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Qi{constructor(e){this.destructManager=e,this.clientTooOldSubject=new ut.BehaviorSubject(!1),this.isTenant=!0===Li().squidTenant,this.clientIdSubject=new ut.BehaviorSubject(this.generateClientId()),this.destructManager.onDestruct(()=>{this.clientTooOldSubject.complete(),this.clientIdSubject.complete()})}observeClientId(){return this.clientIdSubject}observeClientTooOld(){return this.clientTooOldSubject.pipe((0,ut.filter)(e=>e),(0,ut.map)(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe((0,ut.skip)(1),(0,ut.filter)(e=>!e),(0,ut.map)(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=Li()[Gi];return e?e():Ft()}generateClientId(){const e=Li()[$i];if(e)return e();let t=`${this.isTenant?"tenant-":""}${Ft()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const $i="SQUID_CLIENT_ID_GENERATOR",Gi="SQUID_CLIENT_REQUEST_ID_GENERATOR",Hi="__squidId";function Vi(e){return Di(e)}function Ki(...e){const[t,i,n]=e,s="object"==typeof t?t:{docId:t,collectionName:i,integrationId:n};return s.integrationId||(s.integrationId=void 0),Oi(s)}function Wi(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return vi(e,t);if("!="===i)return!vi(e,t);switch(i){case"<":return!wi(e)&&(!!wi(t)||t<e);case"<=":return!!wi(t)||!wi(e)&&t<=e;case">":return!wi(t)&&(!!wi(e)||t>e);case">=":return!!wi(e)||!wi(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&zi(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&zi(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&zi(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&zi(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>Ge(i,"VALUE_CANNOT_BE_NULL").some(t=>vi(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>Ge(i,"VALUE_CANNOT_BE_NULL").some(t=>vi(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!Ge(i,"VALUE_CANNOT_BE_NULL").some(t=>vi(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function zi(e,t,i){i||(e=e.toLowerCase(),t=t.toLowerCase());const n=function(e){let t="";for(let i=0;i<e.length;++i)"\\"===e[i]?i+1<e.length&&["%","_"].includes(e[i+1])?(t+=e[i+1],i++):i+1<e.length&&"\\"===e[i+1]?(t+="\\\\",i++):t+="\\":"%"===e[i]?t+="[\\s\\S]*":"_"===e[i]?t+="[\\s\\S]":("/-\\^$*+?.()[]{}|".includes(e[i])&&(t+="\\"),t+=e[i]);return t}(t);return new RegExp(`^${n}$`).test(e)}function Ji(e){for(let t=0;t<e.length;t++)if("\\"===e[t]){if(!["%","_","\\"].includes(e[t+1]))return!0;t++}return!1}function Yi(e,t){return`${e}_${t}`}function Xi(e){return"fieldName"in e}function Zi(e){return"docIds"in e}function en(e,t,i){const n=e.docIds.some(e=>Object.entries(e).every(([e,n])=>Wi(n,i(t,e)??null,"==")));switch(e.operator){case"==":case"in":return n;case"!=":case"not in":return!n}}function tn(e,t,i,n){const s=e,r=n(t,je);if("string"!=typeof r)return Wi(s,r??null,i);let o;try{o=Di(r)}catch{return Wi(s,r,i)}if(!o||"object"!=typeof o||Array.isArray(o))return Wi(s,r,i);const a=Object.keys(o);if(1===a.length&&"__id"===a[0]){const e=o.__id,t=function(e){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const t=Object.keys(e);return 1===t.length&&"__id"===t[0]?e.__id:Oi(e)}if("string"==typeof e)try{const t=Di(e);if(t&&"object"==typeof t&&!Array.isArray(t)){const e=Object.keys(t);if(1===e.length&&"__id"===e[0])return t.__id}}catch{}return e}(s);return Wi(t,e,i)}if(1===a.length){const e=function(e,t){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const i=Object.keys(e);if(1===i.length&&i[0]===t)return e[t]}if("string"==typeof e)try{const i=Di(e);if(i&&"object"==typeof i&&!Array.isArray(i)){const e=Object.keys(i);if(1===e.length&&e[0]===t)return i[t]}}catch{}return e}(s,a[0]);return Wi(e,o[a[0]],i)}return"object"!=typeof s||null===s||Array.isArray(s)?Wi(s,r,i):Wi(Oi(s),r,i)}class nn{constructor(e,t,i,n,s){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.projectFields=n,this.identityReference=s,this.refId=Ft()}setInMemoryData(e){this.inMemoryData=e}get squidDocId(){return this.identityReference?.squidDocId??this._squidDocId}get data(){return Mi(this.dataRef)}get dataRef(){if(void 0!==this.inMemoryData)return this.inMemoryData;const e=Ge(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=Vi(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`});return this.projectFields?this.applyProjection(e):e}get hasData(){return this.dataManager.hasSufficientData(this.squidDocId,this.projectFields)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return Ge(e.length<=1,"Got more than one doc for the same id:"+this.squidDocId),e.length?e[0]:void 0}snapshots(){return this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshots().pipe((0,ut.map)(e=>(Ge(e.length<=1,"Got more than one doc for the same id:"+this.squidDocId),e.length?e[0]:void 0)))}peek(){return this.isTracked()&&this.hasData?this.data:void 0}isDirty(){return this.dataManager.isDirty(this.squidDocId)}async update(e,t){const i={};Object.entries(e).forEach(([e,t])=>{const n=void 0!==t?{type:"update",value:t}:{type:"removeProperty"};i[e]=[n]});const n={type:"update",squidDocIdObj:Vi(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:Mi(t)},i)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,i){const n={type:"applyNumericFn",fn:"increment",value:t},s={type:"update",squidDocIdObj:Vi(this.squidDocId),properties:{[e]:[n]}};return this.dataManager.applyOutgoingMutation(s,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async upsert(e,t){const i=Vi(this.squidDocId),n=i.integrationId;let s=Di(i.docId);if(s[Hi]&&(s={}),n===Ee&&s.__id)try{const e=Di(s.__id);s={...s,...e}}catch{}const r={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...s}};return this.dataManager.applyOutgoingMutation(r,t)}async insert(e,t){return this.upsert(e,t)}async delete(e){const t={type:"delete",squidDocIdObj:Vi(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}applyProjection(e){const t={},i=Ge(this.projectFields,"applyProjection called without projectFields"),{integrationId:n}=Vi(this.squidDocId);"__id"in e&&(t.__id=e.__id),"__docId__"in e&&(t.__docId__=e.__docId__);const s=n===Ee?"__id":"__docId__";if(s in e){const i=e[s];if("string"==typeof i&&i.startsWith("{"))try{const e=Di(i);if("object"==typeof e&&null!==e)for(const[i,n]of Object.entries(e))i in t||(t[i]=n)}catch{}}for(const n of i)if(n.includes(".")){const i=mi(e,n);void 0!==i&&bi(t,n,i)}else n in e&&(t[n]=e[n]);return t}hasSquidPlaceholderId(){const e=Di(this.squidDocId);if("object"==typeof e&&e.docId){const t=Di(e.docId);if("object"==typeof t&&Object.keys(t).includes(Hi))return!0}return!1}}class sn{constructor(e,t={}){this.internalStateObserver=new ut.BehaviorSubject(null),this.firstElement=null,this.isDestroyed=new ut.BehaviorSubject(!1),this.snapshotSubject=new ut.Subject,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,$e(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe((0,ut.switchAll)()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...t},this.goToFirstPage()}unsubscribe(){this.isDestroyed.next(!0),this.isDestroyed.complete(),this.internalStateObserver.complete(),this.snapshotSubject.complete()}async prev(){return this.prevInternal(await this.waitForInternalState()),await this.waitForData()}async next(){const{numBefore:e,extractedData:t}=await this.waitForInternalState();return e+this.paginateOptions.pageSize<t.length&&(this.firstElement=t[e+this.paginateOptions.pageSize]),this.internalStateObserver.next(null),this.doNewQuery(t[e],!1),await this.waitForData()}async waitForData(){return this.internalStateToState(await this.waitForInternalState())}observeState(){return this.internalStateObserver.pipe((0,ut.filter)(e=>null!==e),(0,ut.map)(e=>this.internalStateToState(e)))}async first(){return await this.waitForInternalState(),this.internalStateObserver.next(null),this.firstElement=null,this.lastElement=null,this.goToFirstPage(),await this.waitForData()}async refreshPage(){const{extractedData:e}=await this.waitForInternalState();return this.internalStateObserver.next(null),this.onFirstPage?this.goToFirstPage():this.doNewQuery(e[0],!1),await this.waitForData()}async last(){await this.waitForInternalState(),this.internalStateObserver.next(null),this.firstElement=null,this.lastElement=null,this.navigatingToLastPage=!0;const e=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).flipSortOrder().snapshots(this.paginateOptions.subscribe).pipe((0,ut.map)(e=>e.reverse()));return this.snapshotSubject.next(e),await this.waitForData()}goToFirstPage(){this.onFirstPage=!0;const e=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).snapshots(this.paginateOptions.subscribe);this.snapshotSubject.next(e)}compareObjects(e,t){if(e===t||wi(e)&&wi(t))return 0;if(wi(e))return-1;if(wi(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:s}of i){const i=Ti(mi(e,n),mi(t,n));if(0!==i)return s?i:-i}return 0}async dataReceived(e){const t=e.map(e=>this.templateSnapshotEmitter.extractData(e));if(0===e.length)return void(this.onFirstPage?this.internalStateObserver.next({numBefore:0,numAfter:0,data:e,extractedData:t}):this.goToFirstPage());if(null===this.firstElement)if(null!==this.lastElement){const i=t.filter(e=>1===this.compareObjects(e,this.lastElement)).length;this.firstElement=t[e.length-i-this.paginateOptions.pageSize],this.lastElement=null}else this.navigatingToLastPage&&(this.firstElement=t[e.length-this.paginateOptions.pageSize],this.navigatingToLastPage=!1);const i=t.filter(e=>-1===this.compareObjects(e,this.firstElement)).length,n=Math.max(0,e.length-i-this.paginateOptions.pageSize);i!==e.length?this.internalStateObserver.next({numBefore:i,numAfter:n,data:e,extractedData:t}):this.prevInternal({numBefore:i,numAfter:n,data:e,extractedData:t})}doNewQuery(e,t){if(this.onFirstPage=!1,t){const t=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).flipSortOrder();e&&t.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(t=>({fieldName:t.fieldName,operator:t.asc?"<=":">=",value:mi(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe((0,ut.map)(e=>e.reverse())))}else{const t=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize);e&&t.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(t=>({fieldName:t.fieldName,operator:t.asc?">=":"<=",value:mi(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe))}}async waitForInternalState(){const e=this.internalStateObserver.value;return null!==e?e:await(0,ut.firstValueFrom)((0,ut.race)(this.isDestroyed.pipe((0,ut.filter)(Boolean),(0,ut.map)(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe((0,ut.filter)(e=>null!==e),(0,ut.take)(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:n,extractedData:s}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(s[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:n>0,hasPrev:i>0}}prevInternal(e){const{numBefore:t,numAfter:i,extractedData:n}=e;this.firstElement=null,this.lastElement=n[t-1],this.internalStateObserver.next(null),this.doNewQuery(n[n.length-i-1],!0)}}class rn{constructor(e,t,i,n,s){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=n,this.mutationSender=s}getForDocument(e){const{collectionName:t,integrationId:i,docId:n}=Vi(e),s=Di(n),r=this.get(t,i);for(const[e,t]of Object.entries(s))r.where(e,"==",t);return r}get(e,t){return new cn(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService,this.mutationSender)}}class on{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}docId(e){return this.eq(je,e)}docIds(e){return this.in(je,e)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"like_cs":"like",t)}notLike(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"not like_cs":"not like",t)}arrayIncludesSome(e,t){return this.where(e,"array_includes_some",t)}arrayIncludesAll(e,t){return this.where(e,"array_includes_all",t)}arrayNotIncludes(e,t){return this.where(e,"array_not_includes",t)}throwIfInvalidLikePattern(e){if(Ji(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class an{constructor(e){this.queryBuilder=e}peek(){return this.queryBuilder.peek().map(e=>e.data)}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1).pipe((0,ut.defaultIfEmpty)([])))}snapshots(e){return this.queryBuilder.snapshots(e).pipe(qt(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new an(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}projectFields(e){const t=this.queryBuilder.projectFields(e);return new an(t)}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new sn(this,e)}}class cn extends on{constructor(e,t,i,n,s,r,o,a){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=n,this.documentReferenceFactory=s,this.queryBuilderFactory=r,this.documentIdentityService=o,this.mutationSender=a,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return Ri(this.build())}where(e,t,i){if($e(Be.includes(t),`Invalid operator: ${t}`),this.query.projectFields&&e!==je&&!this.query.projectFields.includes(e))throw new Error(`Cannot filter by field '${e}' that is not included in projectFields.`);if("in"===t||"not in"===t){const n=Array.isArray(i)?[...i]:[i];"in"===t&&0===n.length&&(this.containsEmptyInCondition=!0);for(const i of n)this.query.conditions.push({fieldName:e,operator:"in"===t?"==":"!=",value:i});return this}return this.query.conditions.push({fieldName:e,operator:t,value:i}),this}limit(e){return function(e){var t;$e(function(e){return"number"==typeof e}(t=e),()=>Ve("Limit needs to be a number","Not a number",t)),-1!==e&&($e(e>0,"query limit has to be greater than 0"),$e(Math.floor(e)===e,"query limit has to be an integer"),$e(e<=2e4,"Limit can be maximum 20000"))}(e),this.query.limit=e,this}getLimit(){return this.query.limit}limitBy(e,...t){const i=this.query.sortOrder.map(e=>e.fieldName);return $e(vi(t.sort(),i.slice(0,t.length).sort()),"All fields in limitBy must be appear in the first fields in the sortBy list."),this.query.limitBy={limit:e,fields:t,reverseSort:!1},this}sortBy(e,t=!0){const i={asc:t,fieldName:e};if(function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,n,s,r;$e((i=t,n=["fieldName","asc"],!Array.isArray(i)&&[...Object.keys(i)].every(e=>n.includes(e))),"Field sort should only contain a fieldName and asc"),$e((s=t.asc,r="boolean",Array.isArray(s)?s.every(e=>typeof e===r):typeof s===r),"Asc needs to be boolean")}(i),$e(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.projectFields&&e!==je&&!this.query.projectFields.includes(e))throw new Error(`Cannot sort by field '${e}' that is not included in projectFields.`);return this.query.sortOrder.push(i),this}projectFields(e){if(0===e.length&&"built_in_db"!==this.integrationId)throw new Error(`Empty projectFields is only allowed for built_in_db integration. For '${this.integrationId}', you must specify at least one field to project.`);if(this.query.projectFields)for(const t of e)if(!this.query.projectFields.includes(t))throw new Error(`Cannot project field '${t}' that is not in the existing projection. Subsequent projectFields calls must be subsets of the previous projection.`);const t=e;for(const e of this.query.sortOrder)if(e.fieldName!==je&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including sort field '${e.fieldName}'.`);for(const e of this.query.conditions)if(Xi(e)){if(e.fieldName!==je&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including filter field '${e.fieldName}'.`)}else if(Zi(e));else for(const i of e.fields)if(i.fieldName!==je&&!t.includes(i.fieldName))throw new Error(`Cannot set projectFields without including filter field '${i.fieldName}'.`);const i=this.clone();return i.query.projectFields=[...e],i}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1).pipe((0,ut.defaultIfEmpty)([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new ut.BehaviorSubject([]);const t=this.build(),i=t.projectFields;return this.querySubscriptionManager.processQuery(t,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(qt(e=>e.map(e=>{$e(1===Object.keys(e).length);const t=e[this.collectionName],n=Ki(Ge(t).__docId__,this.collectionName,this.integrationId),s=this.querySubscriptionManager.detachedRecords.delete(e),r=this.documentReferenceFactory.create(n,this.queryBuilderFactory,i,s);return s&&r.setInMemoryData(t),r})))}changes(){let e,t=new Set;return this.snapshots().pipe((0,ut.combineLatestWith)(this.documentIdentityService.observeChanges().pipe((0,ut.switchMap)(t=>(Object.entries(t).forEach(([t,i])=>{!function(e,t,i){const n=e[t];void 0!==n&&(e[i]=n,delete e[t])}(e||{},t,i)}),ut.NEVER)),(0,ut.startWith)({}))),qt(([i])=>{let n=[];const s=[],r=[];if(e){for(const r of i){const i=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){s.push(r);const n=e[i];delete e[i],t.delete(n)}else n.push(r)}for(const e of t)r.push(e)}else n=i;e={},t=new Set;for(const n of i){const i=n.dataRef;e[n.squidDocId]=i,t.add(i)}return new un(n,s,r)}))}async delete(){return this.validateQueryDeleteModifiers(),this.containsEmptyInCondition?{deletedCount:0}:($e(this.mutationSender,"Query delete is not available on this query builder."),this.mutationSender.deleteQuery(this.build()))}dereference(){return new an(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new cn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService,this.mutationSender);return e.query=Mi(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){if(!e.length)return this;if(this.query.projectFields)for(const t of e)if(t.fieldName!==je&&!this.query.projectFields.includes(t.fieldName))throw new Error(`Cannot filter by field '${t.fieldName}' that is not included in projectFields.`);return this.query.conditions.push({fields:e}),this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new sn(this,e)}validateQueryDeleteModifiers(){$e(0===this.query.sortOrder.length&&-1===this.query.limit&&!this.query.limitBy,"query.delete() does not currently support sortBy, limit, or limitBy.")}mergeConditions(){const e=[],t=ki(this.query.conditions.filter(Xi)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=ki(i,e=>e.operator);for(const[i,n]of Object.entries(t)){if("=="===i||"!="===i){e.push(...n);continue}const t=[...n];t.sort((e,t)=>Ti(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!Xi(e)),...e]}}class un{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class ln extends on{constructor(e,t,i,n,s,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=n,this.queryBuilderFactory=s,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,i){return this.queryBuilder.where(e,t,i),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}projectFields(e){throw new Error("projectFields is not yet supported for join queries")}join(e,t,i,n){const s=n?.leftAlias??this.latestAlias,r={...i,leftAlias:s,isInner:n?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[s].push(t),new ln(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:r},this.queryBuilder)}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new ut.BehaviorSubject([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,Mi(this.joins),Mi(this.joinConditions),e,!1).pipe(qt(e=>e.map(e=>{const t={};for(const[i,n]of Object.entries(e)){const e=i===this.rootAlias?this.collectionName:this.joins[i].collectionName,s=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,r=n?Ki(n.__docId__,e,s):void 0;t[i]=r?this.documentReferenceFactory.create(r,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new pn(this)}dereference(){return new dn(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ln(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,Mi(this.leftToRight),Mi(this.joins),Mi(this.joinConditions),this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}extractData(e){return e[this.rootAlias].dataRef}serialize(){return{type:"join",grouped:!1,dereference:!1,root:{alias:this.rootAlias,query:this.build()},leftToRight:this.leftToRight,joins:this.joins,joinConditions:this.joinConditions}}paginate(e){if(this.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class dn{constructor(e){this.joinQueryBuilder=e}grouped(){return this.joinQueryBuilder.grouped().dereference()}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(qt(e=>e.map(e=>function(e,t){const i={},n=Object.keys(e);for(const s of n){const n=e[s];i[s]=t(n)}return i}(e,e=>e?.data))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new dn(this.joinQueryBuilder.clone())}addCompositeCondition(e){return this.joinQueryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.joinQueryBuilder.flipSortOrder(),this}limit(e){return this.joinQueryBuilder.limit(e),this}extractData(e){return e[this.joinQueryBuilder.rootAlias]}paginate(e){if(this.joinQueryBuilder.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class hn{constructor(e){this.groupedJoin=e}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(qt(e=>e.map(e=>this.dereference(e,this.groupedJoin.joinQueryBuilder.rootAlias))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.groupedJoin.getSortOrders()}clone(){return new hn(this.groupedJoin.clone())}addCompositeCondition(e){return this.groupedJoin.addCompositeCondition(e),this}flipSortOrder(){return this.groupedJoin.flipSortOrder(),this}limit(e){return this.groupedJoin.limit(e),this}getLimit(){return this.groupedJoin.getLimit()}extractData(e){return e[this.groupedJoin.joinQueryBuilder.rootAlias]}serialize(){return{...this.groupedJoin.joinQueryBuilder.serialize(),dereference:!0,grouped:!0}}paginate(e){if(this.groupedJoin.joinQueryBuilder.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}dereference(e,t){const i=this.groupedJoin.joinQueryBuilder.leftToRight[t];if(i.length){const n={[t]:e[t].data};for(const t of i)n[t]=e[t].map(e=>this.dereference(e,t));return n}return e.data}}class pn{constructor(e){this.joinQueryBuilder=e}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(qt(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new hn(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new pn(this.joinQueryBuilder.clone())}addCompositeCondition(e){return this.joinQueryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.joinQueryBuilder.flipSortOrder(),this}limit(e){return this.joinQueryBuilder.limit(e),this}getLimit(){return this.joinQueryBuilder.getLimit()}extractData(e){return Object.keys(this.joinQueryBuilder.leftToRight).length>1?e[this.joinQueryBuilder.rootAlias].dataRef:e.dataRef}serialize(){return{...this.joinQueryBuilder.serialize(),grouped:!0}}paginate(e){if(this.joinQueryBuilder.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new sn(this,e)}groupData(e,t){const i=ki(e,e=>e[t]?.squidDocId);return Object.values(i).filter(e=>void 0!==e[0][t]).map(e=>{const i=this.joinQueryBuilder.leftToRight[t],n=e[0][t];if(0===i.length)return n;const s={[t]:n};for(const t of i)s[t]=this.groupData(e,t);return s})}}class gn{constructor(e,t,i,n,s,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=n,this.querySubscriptionManager=s,this.dataManager=r,this.refId=Ft()}doc(e){if(e&&"string"!=typeof e&&"object"!=typeof e&&!Array.isArray(e))throw new Error("Invalid doc id. Can be only object or string.");if(this.integrationId!==Ee)if(e){if("object"!=typeof e)throw new Error("Invalid doc id. String doc ids are only supported for the built_in_db integration. For all other integrations, the doc id must be an object.")}else e={[Hi]:Ft()};else e=e&&"string"!=typeof e?{__id:Oi(e)}:{__id:e||Ft()};const t=Ki(Oi(e),this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)}async insertMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)await this.doc(i.id).upsert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof nn?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new ln(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new fn(...e)}}class fn{constructor(...e){if(0===e.length)throw new Error("At least one query builder must be provided");this.snapshotEmitters=e.map(e=>e.clone());const t=Math.max(...this.snapshotEmitters.map(e=>{const t=e.getLimit();return-1===t?1e3:t}));this.snapshotEmitters.forEach(e=>e.limit(t));const i=this.snapshotEmitters[0].getSortOrders();for(const e of this.snapshotEmitters){const t=e.getSortOrders();if(t.length!==i.length)throw new Error("All the queries must have the same sort order");for(let e=0;e<i.length;e++)if(t[e].fieldName!==i[e].fieldName||t[e].asc!==i[e].asc)throw new Error("All the queries must have the same sort order")}}snapshot(){return(0,ut.firstValueFrom)(this.snapshots(!1))}snapshots(e=!0){const t=this.snapshotEmitters.map(t=>t.snapshots(e));return this.or(this.snapshotEmitters[0].getSortOrders(),...t)}peek(){throw new Error("peek is not currently supported for merged queries")}clone(){return new fn(...this.snapshotEmitters.map(e=>e.clone()))}getSortOrders(){return this.snapshotEmitters[0].getSortOrders()}addCompositeCondition(e){for(const t of this.snapshotEmitters)t.addCompositeCondition(e);return this}limit(e){return this.snapshotEmitters.forEach(t=>t.limit(e)),this}getLimit(){return this.snapshotEmitters[0].getLimit()}flipSortOrder(){return this.snapshotEmitters.forEach(e=>e.flipSortOrder()),this}serialize(){return{type:"merged",queries:this.snapshotEmitters.map(e=>e.serialize())}}extractData(e){return this.snapshotEmitters[0].extractData(e)}paginate(e){return new sn(this,e)}or(e,...t){return(0,ut.combineLatest)([...t]).pipe((0,ut.map)(t=>{const i=new Set,n=t.flat(),s=[];for(const e of n)i.has(this.extractData(e))||(i.add(this.extractData(e)),s.push(e));return s.sort((t,i)=>{for(const{fieldName:n,asc:s}of e){const e=mi(this.extractData(t),n),r=mi(this.extractData(i),n);if(!Wi(e,r,"=="))return Wi(r,e,"<")?s?-1:1:s?1:-1}return 0}).slice(0,this.getLimit())}))}}class yn{constructor(e,t,i,n){this.documentReferenceFactory=e,this.queryBuilderFactory=t,this.querySubscriptionManager=i,this.dataManager=n,this.collections=new Map}get(e,t){let i=this.collections.get(t);i||(i=new Map,this.collections.set(t,i));let n=i.get(e);return n||(n=new gn(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class mn{constructor(e,t,i){this.clientIdService=e,this.socketManager=t,this.runtimeOptions=i,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var In=i(150);const bn={"in:in":(e,t)=>e.every(e=>t.includes(e)),"in:not in":(e,t)=>e.every(e=>t.every(t=>function(e,t){return wi(e)||wi(t)?wi(e)!==wi(t):vn(e,t)&&!vi(e,t)&&!(Number.isNaN(e)&&Number.isNaN(t))}(e,t))),"not in:not in":(e,t)=>t.every(t=>e.includes(t)),">:not in":(e,t)=>t.every(t=>En(e,t)),">=:not in":(e,t)=>t.every(t=>Mn(e,t)),"<:not in":(e,t)=>t.every(t=>wn(e,t)),"<=:not in":(e,t)=>t.every(t=>Sn(e,t)),">:>":(e,t)=>En(e,t),">=:>":(e,t)=>Mn(e,t),"in:>":(e,t)=>e.every(e=>Mn(e,t)),">:>=":(e,t)=>En(e,t),">=:>=":(e,t)=>En(e,t),"in:>=":(e,t)=>e.every(e=>En(e,t)),"<:<":(e,t)=>wn(e,t),"<=:<":(e,t)=>Sn(e,t),"in:<":(e,t)=>e.every(e=>Sn(e,t)),"<:<=":(e,t)=>wn(e,t),"<=:<=":(e,t)=>wn(e,t),"in:<=":(e,t)=>e.every(e=>wn(e,t)),"like:like":(e,t)=>kn(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>kn(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>kn(e,t)&&Dn(t),"like_cs:like_cs":(e,t)=>kn(e,t),"like:not like":(e,t)=>!On(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!On(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!On(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!On(e,t),"not like:not like":(e,t)=>kn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>kn(t,e)&&Dn(e),"not like:not like_cs":(e,t)=>kn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>kn(t,e),"in:like":(e,t)=>e.every(e=>Wi(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Wi(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>_n(e)&&Wi(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>_n(e)&&Wi(t,e,"not like_cs")),"like:in":(e,t)=>Rn(e)&&Dn(e)&&t.includes(e),"like_cs:in":(e,t)=>Rn(e)&&t.includes(e),"not in:not like":(e,t)=>Rn(t)&&Dn(t)&&e.includes(t),"not in:not like_cs":(e,t)=>Rn(t)&&e.includes(t),"like:not in":(e,t)=>t.every(t=>Wi(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Wi(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Wi(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Wi(e,t,"like_cs")),"array_includes_some:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_all:array_includes_all":(e,t)=>t.every(t=>e.includes(t)),"array_not_includes:array_not_includes":(e,t)=>t.every(t=>e.includes(t)),"array_includes_all:array_includes_some":(e,t)=>e.some(e=>t.includes(e)),"array_includes_some:array_includes_all":(e,t)=>e.every(e=>t.every(t=>e===t))};function Sn(e,t){return wi(e)?!wi(t):!wi(t)&&vn(e,t)&&e<t}function wn(e,t){return!!wi(e)||!wi(t)&&vn(e,t)&&e<=t}function vn(e,t){return typeof e==typeof t&&e instanceof Date==t instanceof Date}function _n(e){return wi(e)||"string"==typeof e}function Mn(e,t){return Sn(t,e)}function En(e,t){return wn(t,e)}function Tn(e){const t=[];for(let i=0;i<e.length;i++){const n=e[i],s=e[i+1];"\\"!==n||"%"!==s&&"_"!==s?"\\"===n&&"\\"===s?(t.push(n),i++):t.push(n):(t.push(n+s),i++)}return t}function kn(e,t){return An(Tn(e),Tn(t))}function An(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return qn(t.slice(n));const s=e[i],r=t[n];return"%"===s&&"%"===r?An(e,t,i+1,n+1)||An(e,t,i+1,n):"%"!==s&&("%"===r?An(e,t,i,n+1)||An(e,t,i+1,n):(s===r||"_"===r)&&An(e,t,i+1,n+1))}function On(e,t){return Cn(Tn(e),Tn(t))}function Cn(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return qn(t.slice(n));if(n>=t.length)return qn(e.slice(i));const s=e[i],r=t[n];return"%"===s&&"%"===r?Cn(e,t,i+1,n+1)||Cn(e,t,i,n+1)||Cn(e,t,i+1,n):"%"===s||"%"===r?Cn(e,t,i,n+1)||Cn(e,t,i+1,n):(s===r||"_"===s||"_"===r)&&Cn(e,t,i+1,n+1)}function Dn(e){return e===e.toLowerCase()&&e===e.toUpperCase()}function Rn(e){return!/[%_\\]/.test(e)}function Nn(e,t){return e.includes("like")&&"string"==typeof t&&Ji(t)}function qn(e){return e.every(e=>"%"===e)}function Fn(e,t){const i=Object.keys(e),n=Object.keys(t);if(i.length!==n.length)return!1;for(const n of i){if(!Object.prototype.hasOwnProperty.call(t,n))return!1;if(!vi(e[n],t[n]))return!1}return!0}function jn(e,t){return t.every(t=>{const i=Object.keys(t).sort();if(i.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(i[t]!==e[t])return!1;return!0})}class Pn{constructor(e){this.query=e,this.query=e;const t=this.query.conditions.filter(Xi),i=this.query.conditions.filter(Zi),n=i.flatMap(e=>function(e){if("=="!==e.operator&&"in"!==e.operator)return[];if(0===e.docIds.length)return[];const t=[],i=e.docIds[0];for(const n of Object.keys(i)){const s=i[n];e.docIds.every(e=>Object.prototype.hasOwnProperty.call(e,n)&&vi(e[n],s))&&t.push({fieldName:n,operator:"==",value:s})}return t}(e));this.exactSimpleConditions=this.parseConditions(t),this.exactDocIdConditions=i,this.subqueryConditions=this.parseConditions([...t,...n])}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}get projectFields(){return this.query.projectFields}sortedBy(e){return!e.find((e,t)=>!vi(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,i){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:i})}isSubqueryOfCondition(e){return!!this.subqueryConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;for(const t of e.conditions.filter(Zi))if(!this.childImpliesParentDocIdCondition(t))return!1;const t=e.conditions.filter(Xi),i=this.isSubqueryOfConditions(t),n=this.sortedBy(e.sortOrder),s=-1===e.limit||this.limit>-1&&this.limit<e.limit,r=this.isProjectFieldsSubset(this.query.projectFields,e.projectFields);return i&&n&&s&&r}childImpliesParentDocIdCondition(e){const t=e.docIds;if(0===t.length)return!1;const i="=="===e.operator||"in"===e.operator,n=Object.keys(t[0]).sort(),s=[];for(const e of this.query.conditions)Zi(e)&&s.push(...e.docIds);if(!jn(n,t)||!jn(n,s))return!1;const r=this.buildChildEffectiveTupleSet();return i?void 0!==r.allowed&&r.allowed.every(e=>t.some(t=>Fn(e,t))):void 0!==r.allowed?r.allowed.every(e=>!t.some(t=>Fn(e,t))):t.every(e=>r.excluded.some(t=>Fn(e,t)))}buildChildEffectiveTupleSet(){let e;const t=[];for(const i of this.query.conditions)if(Zi(i))if("=="===i.operator||"in"===i.operator)e=void 0===e?[...i.docIds]:e.filter(e=>i.docIds.some(t=>Fn(e,t)));else for(const e of i.docIds)t.some(t=>Fn(t,e))||t.push(e);return void 0!==e&&t.length>0&&(e=e.filter(e=>!t.some(t=>Fn(e,t)))),{allowed:e,excluded:t}}isProjectFieldsSubset(e,t){if(!t)return!0;if(!e)return!1;const i=new Set(t);return e.every(e=>i.has(e))}getConditionsFor(...e){return this.subqueryConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.subqueryConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.exactSimpleConditions){const i=t.fieldName,n=t.operator;if(i===je){const i=t.value;if("in"===n||"not in"===n){const t=(Array.isArray(i)?i:[i]).some(t=>tn(t,e,"==",mi));if(!("in"===n?t:!t))return!1;continue}if(!tn(i,e,n,mi))return!1;continue}const s=mi(e,i);if("in"===n){if(t.value.includes(s))continue;return!1}if("not in"!==n){if(!Wi(t.value,s,n))return!1}else if(t.value.includes(s))return!1}for(const t of this.exactDocIdConditions)if(!en(t,e,mi))return!1;return!0}evaluateSubset(e,t){const{operator:i,value:n}=e,{operator:s,value:r}=this.parseConditions([t])[0],o=bn[`${i}:${s}`];return!!o&&!Nn(i,n)&&!Nn(s,r)&&o(n,r)}parseConditions(e){const t=[],i=new Map,n=new Map;return e.forEach(e=>{switch(e.operator){case"==":case"in":i.set(e.fieldName,(i.get(e.fieldName)||[]).concat(e.value));break;case"!=":case"not in":n.set(e.fieldName,(n.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),i.forEach((e,i)=>{t.push({fieldName:i,operator:"in",value:e})}),n.forEach((e,i)=>{t.push({fieldName:i,operator:"not in",value:e})}),t}}function Bn(e){if(null===e||"object"!=typeof e||Array.isArray(e))return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function xn(e,t){let i=e;for(const e of t.split(".")){if(!Bn(i))return;i=i[e]}return i}function Ln(e,t,i){const n=t.split(".");let s=e;for(const[e,r]of n.entries()){if(e===n.length-1)return void(s[r]=i);const o=s[r];if(null!=o&&!Bn(o))throw new Error(`Cannot set path ${t}, ${r} is not an object`);const a=Bn(o)?{...o}:{};s[r]=a,s=a}}function Un(e,t){const i=t.split(".");let n=e;for(const[e,t]of i.entries()){if(e===i.length-1)return void delete n[t];const s=n[t];if(!Bn(s))return;const r={...s};n[t]=r,n=r}}function Qn(e,t){switch(t.type){case"applyNumericFn":return function(e,t){if("increment"===t.fn)return"number"==typeof e?e+t.value:t.value;throw new Error("Unknown numeric function: "+JSON.stringify(t))}(e,t);case"applyStringFn":return function(e,t){const i="string"==typeof e?e:null;switch(t.fn){case"trim":return null===i?null:i.trim();case"extendString":return null===i?t.value:i+t.value;default:throw new Error("Unknown string function: "+JSON.stringify(t))}}(e,t);case"update":return"object"==typeof t.value?Mi(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function $n(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function Gn(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if($e("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=Mi(e);t=Mi(t);for(const[e]of $n(i)){const n=e.split(".").length;Object.entries(t.properties).some(([t])=>e.startsWith(t+".")&&n>t.split(".").length)&&delete i.properties[e]}for(const[e,n]of $n(t))i.properties[e]=Hn([...i.properties[e]||[],...n]);return i}(e,t);const i=Mi(e);for(const[e,n]of $n(t)){const t=n;for(const n of t){const t=i.properties,s=Qn(xn(t,e),n);void 0===s?Un(t,e):Ln(t,e,s)}}return i}function Hn(e){let t=0;for(;t+1<e.length;){const i=Vn(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function Vn(e,t){if("removeProperty"===t.type||"update"===t.type)return t;if("applyNumericFn"===t.type){if($e("increment"===t.fn,"Unrecognized applyNumericFn"),"applyNumericFn"===e.type)return $e("increment"===e.fn,"Unrecognized applyNumericFn"),{type:"applyNumericFn",fn:"increment",value:e.value+t.value};if("update"===e.type){if("number"!=typeof e.value)throw new Error("Cannot increment a value that is not a number");return{type:"update",value:e.value+t.value}}return t}if("extendString"===t.fn){if("update"===e.type){if("string"!=typeof e.value)throw new Error("Cannot extend a value that is not a string");return{type:"update",value:e.value+t.value}}return"applyStringFn"===e.type&&"extendString"===e.fn?{type:"applyStringFn",fn:"extendString",value:e.value+t.value}:t}return null}function Kn(e,t){if(!e)return;const i={...e},n=$n(t);for(const[e,t]of n){const n=t;for(const t of n){const n=Qn(xn(i,e),t);void 0===n?Un(i,e):Ln(i,e,n)}}return i}function Wn(e){const t={};for(const i of e){const e=`${i.squidDocIdObj.integrationId}/${i.squidDocIdObj.collectionName}/${i.squidDocIdObj.docId}`;t[e]||(t[e]=[]),t[e].push(i)}const i=[];for(const e in t){const n=t[e].reduce((e,t)=>Ge(Gn(e,t),"Merge result cannot be null"));i.push(n)}return i}const zn="dataManager_runInTransaction";var Jn;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(Jn||(Jn={}));class Yn{constructor(e,t,i,n,s,r,o,a,c){this.documentStore=e,this.mutationSender=t,this.socketManager=i,this.querySubscriptionManager=n,this.queryBuilderFactory=s,this.lockManager=r,this.destructManager=o,this.documentIdentityService=a,this.querySender=c,this.docIdToLocalTimestamp=new Map,this.batchClientRequestIds=new Set,this.docIdToServerTimestamp=new Map,this.pendingIncomingUpdates=new Map,this.pendingOutgoingMutations=new Map,this.pendingOutgoingMutationsChanged=new ut.Subject,this.outgoingMutationsEmpty=new ut.BehaviorSubject(!0),this.knownDirtyDocs=new Set,this.failedDocsToResync=[],this.refreshDocIdToTimestamp=new Map,this.handleIncomingMessagesForTests=!0,this.destructManager.onDestruct(()=>{this.destruct()}),this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.handleNotifications(),this.startDeleteExpiredTimestampsJob(),this.handleOrphanDocs(),this.outgoingMutationsEmpty.subscribe(e=>{this.querySender.safeToSendQueriesToServer.next(e)})}getProperties(e){return this.documentStore.getDocumentOrUndefined(e)}hasSufficientData(e,t){return this.documentStore.hasSufficientData(e,t)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),i=t&&!t.expireTimestamp?t.timestamp:void 0,n=this.docIdToLocalTimestamp.get(e);return!((!n||i)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&n===i)}async executeDetachedQuery(e){const t=this.currentTransactionId,i={query:e,clientRequestId:Ft(),subscribe:!1},n=await this.querySender.sendQueryDirect(i);return this.currentTransactionId!==t?this.reRunQueryThroughNormalPipeline(e):this.applyPendingMutationsToQueryResult(n.docs,e)}async reRunQueryThroughNormalPipeline(e){await(0,ut.firstValueFrom)(this.outgoingMutationsEmpty.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)));const t={query:e,clientRequestId:Ft(),subscribe:!1};return(await this.querySender.sendQueryDirect(t)).docs}predictUpdate(e,t){try{return Kn(e,t)}catch{return e}}applyPendingMutationsToQueryResult(e,t){const i=new Pn(t),n=new Map;for(const i of e){const e=Ki(i.__docId__,t.collectionName,t.integrationId);n.set(e,i)}for(const[e,s]of this.pendingOutgoingMutations){const r=Vi(e);if(r.collectionName===t.collectionName&&r.integrationId===t.integrationId)for(const{mutation:t}of s){const s=n.get(e);if("delete"===t.type)n.delete(e);else if("update"===t.type){if(s){const r=this.predictUpdate(s,t);r&&i.documentMatchesQuery(r)?n.set(e,r):n.delete(e)}}else if("insert"===t.type){const s={...t.properties,__docId__:r.docId};i.documentMatchesQuery(s)&&n.set(e,s)}}}const s=Array.from(n.values()),{sortOrder:r}=t;s.sort((e,t)=>{for(const{fieldName:i,asc:n}of r){const s=Ti(mi(e,i),mi(t,i));if(0!==s)return n?s:-s}return 0});const o=t.limit<0?2e3:t.limit;return s.slice(0,o)}async runInTransaction(e,t){if(t)return $e(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(zn)?this.lockManager.lockSync(zn):await this.lockManager.lock(zn);let i=Xn;const n=()=>i!==Xn;return new Promise(async(t,s)=>{try{let r;this.currentTransactionId=Ft();try{r=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(n()?void 0:{resolve:()=>t(r),reject:s})}}catch(e){i=n()?i:e}finally{try{this.lockManager.release(zn)}catch(e){i=n()?i:e}}n()&&s(i)})}async applyOutgoingMutation(e,t){const i=Ki(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(zn)||(await this.lockManager.lock(zn),this.lockManager.release(zn)),this.knownDirtyDocs.delete(i);const n=this.removeInternalProperties(e),s=this.pendingOutgoingMutations.get(i)?.slice(-1)[0],r=s&&!s.sentToServer?Ge(Wn([s.mutation,n])[0],"Failed to reduce mutations"):void 0;if("update"===e.type&&Kn(this.documentStore.getDocumentOrUndefined(i),e),s&&r)s.mutation=r,this.outgoingMutationsEmpty.next(!1);else{const e={mutation:n,sentToServer:!1},t=this.pendingOutgoingMutations.get(i)||[];t.push(e),this.pendingOutgoingMutations.set(i,t),this.outgoingMutationsEmpty.next(!1),this.pendingOutgoingMutationsChanged.next()}return this.runInTransaction(async()=>{const t=this.documentStore.getDocumentOrUndefined(i),n="delete"===e.type?void 0:"update"===e.type?t&&this.predictUpdate(t,e):{...e.properties};this.updateDocumentFromSnapshot(i,n)&&("insert"===e.type&&this.docIdToLocalTimestamp.set(i,(new Date).getTime()),this.querySubscriptionManager.setClientRequestIdsForLocalDoc(i,n).forEach(e=>this.batchClientRequestIds.add(e)))},t)}isTracked(e){if(this.pendingIncomingUpdates.get(e))return!0;const t=this.pendingOutgoingMutations.get(e);return!(!t||!t.length)||this.querySubscriptionManager.hasOngoingQueryForDocId(e)}isForgotten(e){return this.documentStore.hasData(e)&&!this.isTracked(e)}isLocalOnly(e){return!this.hasBeenAcknowledged(e)&&this.documentStore.hasData(e)}hasBeenAcknowledged(e){return this.docIdToServerTimestamp.has(e)}async runInTransactionSync(e,t){if(t)return $e(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(zn);try{this.currentTransactionId=Ft();try{return e(this.currentTransactionId)}catch(e){console.error("error while executing callback function in transaction",e)}finally{this.finishTransaction()}}catch(e){console.error("error while executing transaction",e)}finally{this.lockManager.release(zn)}}removeInternalProperties(e){if("delete"===e.type)return e;const t={...e,properties:{...e.properties}};return delete t.properties.__docId__,delete t.properties.__ts__,t}handleNotifications(){this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"mutations"===e.type),qt(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t={},i=[];for(const n of e){if(!this.querySubscriptionManager.hasOngoingQuery(n.clientRequestId))continue;const e=this.querySubscriptionManager.getQuery(n.clientRequestId),s=null!==e.projectFields&&void 0!==e.projectFields,r=this.querySubscriptionManager.hasSubscription(n.clientRequestId);s&&r?i.push({squidDocId:n.squidDocId,item:{properties:n.doc,timestamp:n.mutationTimestamp,clientRequestId:n.clientRequestId,projectFields:e.projectFields}}):t[n.squidDocId]={properties:n.doc,timestamp:n.mutationTimestamp}}Object.keys(t).length>0&&this.applyIncomingUpdates(t),i.length>0&&this.runInTransactionSync(()=>{this.applyProjectedUpdates(i)})}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId);if(null!==t.projectFields&&void 0!==t.projectFields){const i=[];for(const n of e.docs){const s=Ki(n.__docId__,t.collectionName,t.integrationId);i.push({squidDocId:s,item:{properties:n,timestamp:n.__ts__,clientRequestId:e.clientRequestId,projectFields:t.projectFields}})}this.runInTransactionSync(()=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId,e.docs),this.batchClientRequestIds.add(e.clientRequestId),this.applyProjectedUpdates(i)})}else{const i={};for(const n of e.docs){const e=Ki(n.__docId__,t.collectionName,t.integrationId);i[e]={properties:n,timestamp:n.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId,e.docs),this.batchClientRequestIds.add(e.clientRequestId),this.applyIncomingUpdates(i,t)&&this.querySubscriptionManager.hasSubscription(e.clientRequestId)&&this.batchClientRequestIds.delete(e.clientRequestId)})}}applyIncomingUpdates(e,t){let i=!1;const n=new Set,s=new Set;for(const[t,r]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>r.timestamp?i=!0:o&&o.timestamp>r.timestamp?(r.properties&&this.documentStore.adoptMissingFields(t,r.properties),s.add(t)):(this.pendingIncomingUpdates.set(t,r),n.add(t))}return this.runInTransactionSync(()=>{for(const e of n)this.maybeApplyIncomingUpdate(e);for(const e of s)this.refreshQueryMapping(e)},t),i}applyProjectedUpdates(e){for(const{squidDocId:t,item:i}of e){const e=Ge(i.clientRequestId,"clientRequestId required for projected updates"),n=this.pendingOutgoingMutations.get(t);if(n&&n.length)continue;const s=this.docIdToServerTimestamp.get(t);s&&s.timestamp>i.timestamp?(this.querySubscriptionManager.addDocToQuery(t,e),this.batchClientRequestIds.add(e)):(this.acknowledgeDocument(t,i.timestamp,!i.properties),this.docIdToLocalTimestamp.set(t,i.timestamp),i.properties?(this.documentStore.saveProjectedDocument(t,i.properties,i.projectFields),this.querySubscriptionManager.addDocToQuery(t,e)):this.querySubscriptionManager.removeDocFromQuery(t,e),this.batchClientRequestIds.add(e))}}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const i=this.pendingOutgoingMutations.get(e);i&&i.length||(this.updateDocumentFromSnapshot(e,t.properties),this.acknowledgeDocument(e,t.timestamp,!t.properties),this.docIdToLocalTimestamp.set(e,t.timestamp),this.pendingIncomingUpdates.delete(e),this.refreshQueryMapping(e))}refreshQueryMapping(e){const t=this.documentStore.getDocumentOrUndefined(e);this.querySubscriptionManager.setClientRequestIdsForLocalDoc(e,t).forEach(e=>{this.batchClientRequestIds.add(e)}),t&&(this.querySubscriptionManager.findQueriesForDocument(t,e).length||this.forgetDocument(e,!1))}destruct(){this.stopDeleteExpiredTimestampsJob()}stopDeleteExpiredTimestampsJob(){void 0!==this.deleteExpiredTimestampsInterval&&(clearInterval(this.deleteExpiredTimestampsInterval),this.deleteExpiredTimestampsInterval=void 0)}startDeleteExpiredTimestampsJob(){this.deleteExpiredTimestampsInterval=setInterval(()=>{const e=[...this.docIdToServerTimestamp.entries()].filter(([e,t])=>!(!t.expireTimestamp||t.expireTimestamp>Date.now()||this.isTracked(e)));for(const[t]of e)this.docIdToServerTimestamp.delete(t),this.forgetDocument(t,!0)},1e4)}updateDocumentFromSnapshot(e,t){const i=this.documentStore.getDocumentOrUndefined(e);return!(!i&&!t||i===t)&&((!i||!t||Oi({...t,__ts__:void 0})!==Oi(i))&&(this.documentStore.saveDocument(e,t),!0))}finishTransaction(e){this.currentTransactionId=void 0;const t=[...this.batchClientRequestIds.values()];this.batchClientRequestIds.clear(),this.querySubscriptionManager.notifyAllSubscriptions(t),this.sendAllUnsentOutgoingMutations(e)}async sendAllUnsentOutgoingMutations(e){const t=this.groupOutgoingMutationsByIntegrationId();try{await In.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:i,idResolutionMap:n={},refreshList:s=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(n),s.forEach(e=>{this.refreshDocIdToTimestamp.set(n[e]||e,i)});for(const t of e){let e=this.removeOutgoingMutation(t);n[e]&&(e=n[e]),this.acknowledgeDocument(e,i),this.isTracked(e)||(this.setExpiration(e,!0),this.forgetDocument(e,!1))}}catch(t){for(const t of e){const e=this.removeOutgoingMutation(t);this.forgetDocument(e,!1),(this.hasBeenAcknowledged(e)||"insert"===t.mutation.type)&&this.failedDocsToResync.push(e)}throw t}}removeOutgoingMutation(e){const t=Ki(e.mutation.squidDocIdObj),i=Ge(this.pendingOutgoingMutations.get(t));return i.splice(i.indexOf(e),1),i.length||this.pendingOutgoingMutations.delete(t),this.pendingOutgoingMutationsChanged.next(),t}async resyncFailedUpdates(){const e=[...this.failedDocsToResync];this.failedDocsToResync.splice(0);for(const t of e){const{docId:e}=Vi(t);this.setExpiration(t,!0);try{const i=e.includes(Hi)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(Ge(i.length<=1,"Got more than one doc for the same id:"+t),!i.length){this.forgetDocument(t,!1);const e=this.querySubscriptionManager.setClientRequestIdsForLocalDoc(t,void 0);this.querySubscriptionManager.notifyAllSubscriptions(e)}}catch(e){this.querySubscriptionManager.errorOutAllQueries(t,e)}}}async refreshUpdatedDocuments(){const e=[];for(const[t,i]of this.refreshDocIdToTimestamp.entries()){const n=this.docIdToServerTimestamp.get(t)?.timestamp;n&&n>i||e.push(t)}this.refreshDocIdToTimestamp.clear(),await Promise.allSettled(e.map(e=>this.queryBuilderFactory.getForDocument(e).snapshot()))}groupOutgoingMutationsByIntegrationId(){const e={};for(const[,t]of[...this.pendingOutgoingMutations.entries()]){const i=t[t.length-1];if(i&&!i.sentToServer){const t=i.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(i),i.sentToServer=!0}}return Object.entries(e)}handleOrphanDocs(){this.querySubscriptionManager.onOrphanDocuments.subscribe(e=>{for(const t of e)this.isTracked(t)||this.forgetDocument(t,!1)})}acknowledgeDocument(e,t,i=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,i)}setExpiration(e,t){const i=this.docIdToServerTimestamp.get(e);i&&(i.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),this.pendingIncomingUpdates.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=Ki(t.mutation.squidDocIdObj),n=e[i];n&&(t.mutation.squidDocIdObj=Vi(n))})}),Object.entries(e).forEach(([e,t])=>{Si(this.pendingOutgoingMutations,e,t),Si(this.docIdToLocalTimestamp,e,t),Si(this.docIdToServerTimestamp,e,t)})}hasPendingSentMutations(){for(const e of this.pendingOutgoingMutations.values())for(const t of e)if(t.sentToServer)return!0;return!1}}const Xn=Symbol("undefined");class Zn{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new ut.BehaviorSubject(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe((0,ut.filter)(Boolean),qt(()=>{}))}onPreDestruct(e){this.preDestructors.push(e)}onDestruct(e){this.destructors.push(e)}async destruct(){this.reportDestructed();const e=this.preDestructors.concat(this.destructors);let t=e.shift();for(;t;){try{await t()}catch(e){console.error("Error while destructing Squid",e)}t=e.shift()}}reportDestructed(){this.isDestructing||this.isDestructedSubject.next(!0)}}class es{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{if(e)return;const t=Object.keys(this.ongoingLocks);t.length>0&&(console.warn(`DistributedLockManager: WebSocket disconnected, releasing ${t.length} lock(s)`),Ui.debug(`DistributedLockManager: released lock(s): [${t.join(", ")}]`)),this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.lockId];t?.release()})}async lock(e,t){"number"==typeof t&&(t={acquisitionTimeoutMillis:t});const i=t?.acquisitionTimeoutMillis??2e3,n=t?.maxHoldTimeMillis;this.socketManager.notifyWebSocketIsNeeded(),$e(await(0,ut.firstValueFrom)((0,ut.race)((0,ut.timer)(this.lockWaitForConnectionThreshold).pipe(qt(()=>!1)),this.socketManager.observeConnectionReady().pipe((0,ut.filter)(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const s=Ft(),r={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:n,clientRequestId:s}};this.socketManager.postMessage(r);const o=await(0,ut.firstValueFrom)((0,ut.race)((0,ut.timer)(i+4e3).pipe((0,ut.take)(1),qt(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:s}}))),this.acquireLockMessagesFromServer.pipe((0,ut.filter)(e=>e.payload.clientRequestId===s)))),a=o.payload.lockId;$e(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),$e(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new ts(a,e,s,this.ongoingLocks,this.socketManager);return this.ongoingLocks[a]=c,c}releaseAllLocks(){for(const[e,t]of Object.entries(this.ongoingLocks))t.release(),delete this.ongoingLocks[e]}}class ts{constructor(e,t,i,n,s){this.lockId=e,this.resourceId=t,this.clientRequestId=i,this.ongoingLocks=n,this.socketManager=s,this.released=!1,this.onReleaseSubject=new ut.ReplaySubject(1)}async release(){if(this.released)return;this.released=!0,delete this.ongoingLocks[this.lockId];const e={type:"releaseLock",payload:{lockId:this.lockId,clientRequestId:this.clientRequestId}},t=this.socketManager.sendMessage(e),i=await(0,ut.firstValueFrom)((0,ut.race)((0,ut.from)(t.then(is,is)),this.socketManager.observeConnectionReady().pipe((0,ut.filter)(e=>!e),qt(()=>!1))));if(this.onReleaseSubject.next(),!i)return t.catch(()=>{}),void this.onReleaseSubject.complete();try{await t}finally{this.onReleaseSubject.complete()}}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}function is(){return!0}class ns{constructor(e,t){this.documentStore=e,this.destructManager=t,this.changeNotifier=new ut.BehaviorSubject({}),this.destructManager.onDestruct(()=>{this.changeNotifier.complete()})}migrate(e){Object.entries(e).forEach(([e,t])=>{this.documentStore.migrateDocId(e,t)}),this.changeNotifier.next(e)}observeChanges(){return this.changeNotifier.asObservable()}}class ss{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t,i,n=!1){if(i||n)return new nn(e,Ge(this.dataManager,"dataManager not found"),t,i,n?this.create(e,t):void 0);let s=this.documents.get(e);if(s)return s;s=new nn(e,Ge(this.dataManager,"dataManager not found"),t);const{integrationId:r,collectionName:o}=Vi(e);this.documents.set(e,s);const a=this.getCollectionKey(r,o),c=this.documentsForCollection.get(a)||[];return this.documentsForCollection.set(a,c.concat(s)),s}setDataManager(e){this.dataManager=e}getDocumentsForCollection(e,t){const i=this.getCollectionKey(e,t);return(this.documentsForCollection.get(i)||[]).filter(e=>e.hasData)}migrateDocIds(e){for(const[,t]of this.documents)t.migrateDocIds(e);Object.entries(e).forEach(([e,t])=>{const i=Vi(e),n=Vi(t);Si(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class rs{constructor(){this.squidDocIdToDoc=new Map,this.squidDocIdToProjectedFields=new Map}saveProjectedDocument(e,t,i){const n=this.squidDocIdToDoc.get(e);if(n){const i=this.mergeDocuments(n,t),s=this.removeInternalProperties(i);this.squidDocIdToDoc.set(e,s)}else{const i=this.removeInternalProperties(t);this.squidDocIdToDoc.set(e,i)}if(i?.length){const t=this.squidDocIdToProjectedFields.get(e);if(void 0!==t)for(const e of i)t.add(e);else n||this.squidDocIdToProjectedFields.set(e,new Set(i))}return this.squidDocIdToDoc.get(e)}mergeDocuments(e,t){const i=Mi(e);for(const e of Object.keys(t)){const n=t[e],s=i[e];null===n||"object"!=typeof n||Array.isArray(n)||null===s||"object"!=typeof s||Array.isArray(s)?i[e]=n:i[e]=this.mergeDocuments(s,n)}return i}adoptMissingFields(e,t){const i=this.squidDocIdToDoc.get(e);if(!i)return;const n=Object.keys(t).filter(e=>"__ts__"!==e&&!(e in i));if(!n.length)return;const s=Mi(i);for(const e of n)s[e]=t[e];this.squidDocIdToDoc.set(e,s);const r=this.squidDocIdToProjectedFields.get(e);if(r)for(const e of n)r.add(e)}deleteDocument(e){this.squidDocIdToDoc.delete(e),this.squidDocIdToProjectedFields.delete(e)}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=Mi(t),n=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}return this.squidDocIdToDoc.delete(e),void this.squidDocIdToProjectedFields.delete(e)}const n=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}hasSufficientData(e,t){if(!this.squidDocIdToDoc.has(e))return!1;const i=this.squidDocIdToProjectedFields.get(e);return void 0===i||!!t?.length&&t.every(e=>i.has(e))}group(e,t){return Object.values(ki(e,e=>Oi(t.map(t=>mi(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=Array.from(e).map(e=>this.squidDocIdToDoc.get(e)).filter(Ue),{sortOrder:n,limitBy:s}=t,r=i.sort((e,t)=>this.compareSquidDocs(e,t,n)),o=t.limit<0?2e3:t.limit;let a;if(s){const{limit:e,fields:t,reverseSort:i}=s,n=this.group(r,t);let c;c=i?n.map(t=>t.slice(-e)):n.map(t=>t.slice(0,e)),a=c.flat().slice(0,o)}else a=r.slice(0,o);return null!==t.projectFields&&void 0!==t.projectFields&&(a=a.map(e=>this.projectDocument(e,t.projectFields))),a}projectDocument(e,t){const i={};"__id"in e&&(i.__id=e.__id),"__docId__"in e&&(i.__docId__=e.__docId__);for(const n of t)if(n.includes(".")){const t=mi(e,n);void 0!==t&&bi(i,n,t)}else n in e&&(i[n]=e[n]);return i}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;Si(this.squidDocIdToDoc,e,t),Si(this.squidDocIdToProjectedFields,e,t);const n=Vi(t),s=Di(n.docId);this.saveDocument(t,{...i,...s,__docId__:n.docId})}countDocsUpTo(e,t,i){let n=0;for(const s of e){const e=this.squidDocIdToDoc.get(s);e&&this.compareSquidDocs(e,t,i)<=0&&n++}return n}findLastDoc(e,t){let i;for(const n of e)(!i||this.compareSquidDocs(n,i,t)>0)&&(i=n);return i}compareSquidDocs(e,t,i){for(const{fieldName:n,asc:s}of i){const i=Ti(mi(e,n),mi(t,n));if(0!==i)return s?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class os{constructor(e){this.rpcManager=e}async emit(e){const t={event:e};await this.rpcManager.post("events/emit",t)}}class as{constructor(e,t){this.integrationId=e,this.rpcManager=t}async saveAuthCode(e,t){const i={authCode:e,externalAuthConfig:{identifier:t,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/saveAuthCode",i)}async getAccessToken(e){const t={externalAuthConfig:{identifier:e,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/getAccessToken",t)}}class cs{constructor(e){this.rpcManager=e}async extractDataFromDocumentFile(e,t){t||(t={});const i={options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentFile",i,[e],"file")}async extractDataFromDocumentUrl(e,t){t||(t={});const i={url:e,options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentUrl",i)}async createPdf(e){return await this.rpcManager.post("extraction/createPdf",e)}}class us{constructor(e,t,i,n,s){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.ownedJobs=new Set,n.onDestruct(async()=>{this.stopKeepAlive();const e=[...this.ownedJobs];this.ownedJobs.clear(),await Promise.all(e.map(e=>this.resolveJob(e,"failed",void 0,"Client shut down").catch(()=>{})))}),s.isPassiveMode||this.clientIdService.observeClientId().pipe((0,ut.distinctUntilChanged)(),(0,ut.skip)(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))Ui.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(t=>{const i=this.listeners[e];i&&(i.error(t),delete this.listeners[e])})})}async startJob(e){await this.rpcManager.post("job/startJob",{jobId:e}),this.ownedJobs.add(e),this.ensureKeepAlive()}async completeJob(e,t){await this.resolveJob(e,"completed",t)}async failJob(e,t){await this.resolveJob(e,"failed",void 0,t)}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new ut.ReplaySubject(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(i=>{t.error(i),delete this.listeners[e]}),(0,ut.firstValueFrom)(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"jobStatus"===e.type)).subscribe(e=>{const t=e.payload,i=t.id,n=this.listeners[i];if(n){if("completed"===t.status)n.next(t.result);else if("failed"===t.status){const e=Object.assign(new Error(t.error||"Job failed"),{errorType:t.errorType});n.error(e)}else console.error("Unexpected job status:",t.status,"for jobId:",i);delete this.listeners[i]}}))}async resolveJob(e,t,i,n){try{await this.rpcManager.post("job/resolveJob",{jobId:e,status:t,result:i,error:n})}finally{this.ownedJobs.delete(e),this.ownedJobs.size||this.stopKeepAlive()}}ensureKeepAlive(){void 0===this.keepAliveHandle&&(this.keepAliveHandle=setInterval(()=>{if(!this.ownedJobs.size)return void this.stopKeepAlive();const e={jobIds:[...this.ownedJobs]};this.rpcManager.post("job/keepAlive",e).catch(e=>Ui.debug("Job keep-alive failed:",e))},15e3))}stopKeepAlive(){void 0!==this.keepAliveHandle&&(clearInterval(this.keepAliveHandle),this.keepAliveHandle=void 0)}}class ls{constructor(e,t,i){this.graphId=e,this.rpcManager=t,this.jobClient=i}async invoke(e={}){const t=Ft();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,timeoutMs:e.timeoutMs,graphContext:e.context,jobId:t}),await this.jobClient.awaitJob(t)}async invokeAsync(e={}){const t=Ft();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,timeoutMs:e.timeoutMs,graphContext:e.context,jobId:t}),t}async resume(e,t,i={}){const n=Ft();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,timeoutMs:i.timeoutMs,graphContext:i.context,jobId:n}),await this.jobClient.awaitJob(n)}async resumeAsync(e,t,i={}){const n=Ft();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,timeoutMs:i.timeoutMs,graphContext:i.context,jobId:n}),n}async getState(e){return this.rpcManager.post("langgraph/getState",{graphId:this.graphId,threadId:e})}async deleteThread(e){await this.rpcManager.post("langgraph/deleteThread",{graphId:this.graphId,threadId:e})}}class ds{constructor(e,t){this.rpcManager=e,this.jobClient=t}graph(e){return new ls(e,this.rpcManager,this.jobClient)}}const hs="squid_mgmt_";function ps(e="n_"){return`${e}${Ut(10).toLowerCase()}`}const gs=e=>e();class fs extends Error{constructor(e,t,i,n,s){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=s}}const ys="1.0.503";async function ms(e){return vs({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage,abortSignal:e.abortSignal})}async function Is(e){return vs({...e,method:"GET",files:[],filesFieldName:""})}async function bs(e){return vs({...e,method:"PUT"})}async function Ss(e){return vs({...e,method:"PATCH"})}async function ws(e){return vs({...e,method:"DELETE",files:[],filesFieldName:""})}async function vs(e){const t=await async function({headers:e,files:t,filesFieldName:i,message:n,url:s,extractErrorMessage:r,method:o,abortSignal:a}){const c=new Headers(e);c.append(Vt.TRACE_ID,ps("c_")),c.append(Vt.CLIENT_VERSION,ys);const u={method:o,headers:c,body:void 0,signal:a};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const n of t)e.append(i||"files",n,n.name);e.append("body",Ci(n)),u.body=e}else void 0!==n&&(c.append("Content-Type","application/json"),u.body=Ci(n));else"DELETE"===o&&void 0!==n&&(c.append("Content-Type","application/json"),u.body=Ci(n));try{const e=await fetch(s,u),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),n=_s(i);if(!r)throw new fs(i,e.status,s,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new fs(o,e.status,s,t,n)}const i=await e.text();return Ui.debug(`received response from url ${s}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw Ui.debug(`Unable to perform fetch request to url: ${s}`,e),e}}(e);return t.body=_s(t.body),t}function _s(e){if(e){try{return Di(e)}catch{}return e}}class Ms{constructor(e){$e(e.apiKey.startsWith(hs),`Invalid management API key format. Key must start with '${hs}'`),this.apiKey=e.apiKey,this.consoleRegion=e.consoleRegion}async createOrganization(e){return this.callApi("POST","organizations",e)}async createApplication(e){return this.callApi("POST","applications",e)}async deleteApplication(e){await this.callApi("DELETE",`applications/${e}`)}async renameOrganization(e){await this.callApi("PATCH",`organizations/${e.organizationId}`,{name:e.name})}async renameApplication(e){await this.callApi("PATCH",`applications/${e.appId}`,{name:e.name})}async callApi(e,t,i){const n=r(this.consoleRegion,"console",`openapi/iac/management/${t}`),s={Authorization:`ManagementKey ${this.apiKey}`};return"POST"===e?(await ms({url:n,headers:s,message:i,files:[],filesFieldName:"",extractErrorMessage:!0})).body:"PATCH"===e?(await Ss({url:n,headers:s,message:i,extractErrorMessage:!0})).body:(await ws({url:n,headers:s,message:i,extractErrorMessage:!0})).body}}class Es{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=Wn(e),n=i.map(e=>`sendMutation_${Ki(e.squidDocIdObj)}`);await this.lockManager.lock(...n),await this.querySender.waitForAllQueriesToFinish();try{const e={mutations:i,integrationId:t};return await this.rpcManager.post("mutation/mutate",e)}catch(e){throw Ui.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}async deleteQuery(e){const t=`deleteQuery_${e.integrationId}_${e.collectionName}`;await this.lockManager.lock(t),await this.querySender.waitForAllQueriesToFinish();try{const t={query:e};return await this.rpcManager.post("mutation/deleteQuery",t)}catch(t){throw Ui.debug("Error while deleting query results",{error:t,query:JSON.stringify(e,null,2)}),t}finally{this.lockManager.release(t)}}}class Ts{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class ks{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,ut.filter)(e=>"userNotification"===e.type),(0,ut.map)(e=>e.payload))}async publishNotification(e,t){return await this.rpcManager.post("/notification/publishNotification",{clientIds:t,payload:e})}async publishSystemNotification(e,t){return await this.rpcManager.post("/notification/publishSystemNotification",{clientIds:t,payload:e})}}const As={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class Os{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!Cs.test(e)||e.length>=Ds);$e(0===i.length,()=>`Tag name is not allowed: ${i.join(",")}`),this.isReporting=!0;const n={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},s=this.rpcManager.post("/observability/metrics",{metrics:[n]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==s),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(s)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...As,...e,fn:Array.isArray(e.fn)?e.fn:[e.fn]};t.pointIntervalSeconds||(t.pointIntervalSeconds=t.periodEndSeconds-t.periodStartSeconds);const i=await this.rpcManager.post("/observability/metrics/query",t);return function(e,t){const{pointIntervalSeconds:i,noDataBehavior:n}=e,s=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-start-time"===n)return e;const s=t-e;let r=t-Math.floor(s/i)*i;return r>e&&(r-=i),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-end-time"===n)return t-i;const s=t-e;let r=e+Math.floor(s/i)*i;return r>=t&&(r-=i),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const i=[];for(let t=0;t<e.groupByTags.length;t++){const n=e.groupByTags[t],s=a[n]?.[0]||"";i.push(s)}t.push({tagValues:i,points:[]})}else"return-result-group-with-default-values"===n&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[i,n]of Object.entries(a)){const s=e.groupByTags.indexOf(i);if(!(s<0))for(let e=0;e<t.length;e++){const i=t[e],r=new Set(n);for(let e=0;e<t.length;e++){const n=t[e];i.tagValues.every((e,t)=>t===s||e===n.tagValues[t])&&r.delete(n.tagValues[s])}if(0!==r.size)for(const e of r){const n={tagValues:[...i.tagValues],points:[]};n.tagValues[s]=e,t.push(n)}}}for(const n of t){if(0!==n.points.length){const e=n.points[0][0],t=n.points[n.points.length-1][0];$e(e>=r,()=>`Invalid first point time: ${e}`),$e(t<=o,()=>`Invalid last point time: ${t}`)}const t=[];let a=0;const c=e=>"count"===e?0:s,u=Array.isArray(e.fn)?e.fn.map(c):[s];for(let e=r;e<=o;e+=i){const i=n.points[a];i?i[0]===e?(t.push(i),a++):($e(i[0]>e,()=>`Result point has invalid time: ${i[0]}`),t.push([e,...u])):t.push([e,...u])}n.points=t}}(t,i.resultGroups),i}}const Cs=/^[a-zA-Z0-9_-]+$/,Ds=1e3;async function Rs(e,t,i=500,n){const s=Date.now(),r=e.paginate({pageSize:i,subscribe:!1});let o=0,a=0,c=await r.waitForData();for(n?.({pageIndex:a,documentCount:c.data.length,totalLoaded:o+c.data.length});;){for(const e of c.data)o++,await t(e.data);if(!c.hasNext)break;c=await r.next(),a++,n?.({pageIndex:a,documentCount:c.data.length,totalLoaded:o+c.data.length})}return{count:o,time:Date.now()-s}}async function Ns(e,t=500,i){const n=[],s=e.paginate({pageSize:t,subscribe:!1});let r=0,o=await s.waitForData();for(i?.({pageIndex:r,documentCount:o.data.length,totalLoaded:n.length+o.data.length});;){for(const e of o.data){const t=Vi(e.squidDocId),i=Di(t.docId),s=t.integrationId===Ee?i.__id:i;n.push(s)}if(!o.hasNext)break;o=await s.next(),r++,i?.({pageIndex:r,documentCount:o.data.length,totalLoaded:n.length+o.data.length})}return n}function qs(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:n}=t,{collectionName:s,integrationId:r}=i;let o=e.collection(s,r).query();return o=Fs(o,i),n?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:n,joinConditions:s,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=Fs(u,i.query),Object.entries(n).map(([t,i])=>{const{collectionName:n,integrationId:r}=i,{left:o,right:a,leftAlias:c}=s[t];let l=e.collection(n,r).query();l=Fs(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),r&&o?u.grouped().dereference():r?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:n,integrationId:s}=js(i[0]),r=i.map(t=>qs(e,t));return e.collection(n,s).or(...r)}(e,t)}}function Fs(e,t){const{conditions:i,limit:n,sortOrder:s}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");if("docIds"in t)throw new Error("DocId conditions are not supported in query serialization.");const{fieldName:i,operator:n,value:s}=t;e.where(i,n,s)}e.limit(n);for(const{fieldName:t,asc:i}of s)e.sortBy(t,i);return e}function js(e){switch(e.type){case"simple":{const{collectionName:t,integrationId:i}=e.query;return{collectionName:t,integrationId:i}}case"join":{const{collectionName:t,integrationId:i}=e.root.query;return{collectionName:t,integrationId:i}}case"merged":return js(e.queries[0])}}class Ps{constructor(e,t,i){this.documentStore=e,this.documentReferenceFactory=t,this.querySubscriptionManager=i}peek(e){if(!this.querySubscriptionManager.findValidParentOfQuery(e))return[];const{integrationId:t,collectionName:i}=e,n=new Pn(e),s=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>n.documentMatchesQuery(e.data)),r={};return s.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[Ki(e.__docId__,i,t)])}}function Bs(e,t){return dt(function(i,n){var s=0;i.subscribe(Rt(n,function(i){return e.call(t,i,s++)&&n.next(i)}))})}class xs{constructor(e,t,i){this.rpcManager=e,this.destructManager=t,this.webSocketConnectionReady$=i,this.safeToSendQueriesToServer=new ut.BehaviorSubject(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new ut.BehaviorSubject(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new ut.Subject,i=(0,ut.firstValueFrom)(t);return this.pendingQueryRequests.push({queryRequest:e,responseSubject:t}),this.pendingQueryBatchTimeout&&(clearTimeout(this.pendingQueryBatchTimeout),this.pendingQueryBatchTimeout=void 0),this.pendingQueryRequests.length>=10?(this.processQueryBatch(),i):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.gateForCurrentBatch().subscribe(()=>{this.processQueryBatch()})},0),i)}gateForCurrentBatch(){return this.pendingQueryRequests.some(({queryRequest:e})=>e.subscribe)&&this.webSocketConnectionReady$?(0,ut.combineLatest)([this.safeToSendQueriesToServer,this.webSocketConnectionReady$]).pipe(Bs(([e,t])=>e&&t),(0,ut.take)(1),qt(()=>!0)):this.safeToSendQueriesToServer.pipe(Bs(Boolean),(0,ut.take)(1))}async sendQueryDirect(e){const t=await this.rpcManager.post("query/batchQueries",[e]),i=t.errors[e.clientRequestId];if(i)throw i;return t.results[e.clientRequestId]}async waitForAllQueriesToFinish(){return(0,ut.firstValueFrom)(this.inflightQueriesCount.pipe(Bs(e=>0===e))).then(()=>{})}async processQueryBatch(){const e=this.pendingQueryRequests.splice(0);if(!e.length)return;const t=Array.from(e.map(({queryRequest:e})=>e).reduce((e,t)=>(e.set(t.clientRequestId,t),e),new Map).values()),i=e.map(({responseSubject:e})=>e);this.inflightQueriesCount.next(this.inflightQueriesCount.value+t.length);try{const i=await this.rpcManager.post("query/batchQueries",t);for(const{queryRequest:t,responseSubject:n}of e){const e=t.clientRequestId,s=i.errors[e],r=i.results[e];s?n.error(s):n.next(r)}}catch(e){i.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var Ls={d:(e,t)=>{for(var i in t)Ls.o(t,i)&&!Ls.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function Us(e,t,...i){e||function(e,...t){const i=function(e){return void 0===e?"":"string"==typeof e?e:e()}(e);if("object"==typeof i)throw i;throw(e=>new Error(e))(i||"Assertion error",...t)}(t,...i)}function Qs(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return $s(e,t);if(0===t.length)return Us("object"==typeof i&&null!==i&&!Array.isArray(i),()=>`Root state must be a record. Trying to set '${i}', type: ${typeof i}`),i;function n(e){const t=Number(e);return!isNaN(t)&&t>=0&&t!==1/0}let s=e;for(let e=0;e<t.length-1&&void 0!==s;e++){const i=t[e];Us(!Array.isArray(s)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),s=s[i],Us(void 0===s||"object"==typeof s&&null!==s,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===s?"<null>":typeof s}'`)}const r=t[t.length-1];return Us(!Array.isArray(s)||n(r),()=>`Invalid array index Path: '${t}`),(null==s?void 0:s[r])===i?e:Gs(e,t,i)}(e,t.path,t.value);case"delete":return $s(e,t.path);case"batch":return t.actions.reduce((e,t)=>Qs(e,t),e)}}function $s(e,t){Us(0!==t.length,"Can't delete an empty path");let i=e;for(let n=0;n<t.length-1;n++){const s=t[n];if(i=i[s],void 0===i)return e;Us("object"==typeof i&&null!==i,()=>`Cannot delete a property from a non-record parent. Path: '${t.slice(0,n+1)}', type: ${null===i?"<null>":typeof i}`)}const n=t[t.length-1];return void 0===i[n]?e:Gs(e,t,void 0)}function Gs(e,t,i){function n(e,i){Us(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const s=Object.assign({},e);let r=s;for(let e=0;e<t.length-1;e++){const s=t[e],o=r[s];Us(void 0===o||"object"==typeof o&&null!==o,()=>`Internal error: sub-path has an invalid type and can't be patched: '${t.slice(0,e+1)}', type: '${null===o?null:typeof o}'`);const a=void 0===o?void 0===i?void 0:{}:Array.isArray(o)?[...o]:Object.assign({},o);if(void 0===a)return n(r,s),r;r[s]=a,r=a}const o=t[t.length-1];return void 0===i?n(r,o):r[o]=i,s}function Hs(e,t){const i=[];if("set"===e.type||"delete"===e.type)i.push(e.path);else if("batch"===e.type)for(const t of e.actions)i.push(...Hs(t,"as-is"));return"unique-and-sorted"===t?Ws(i):i}function Vs(e,t){if(e.length<t.length)return!1;for(let i=0;i<t.length;i++)if(e[i]!==t[i])return!1;return!0}function Ks(e){const t=[...e];return t.sort((e,t)=>{for(let i=0;i<e.length;i++){if(i===t.length)return 1;const n=e[i].localeCompare(t[i]);if(0!==n)return n}return e.length-t.length}),t}function Ws(e){const t=Ks(e),i=t;for(let e=0;e<t.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++){const r=t[s];n.length===r.length&&Vs(n,r)&&(i[s]=void 0,e++)}}return i.filter(e=>void 0!==e)}const zs=(Js={Observable:()=>ut.Observable,Subject:()=>ut.Subject},Ys={},Ls.d(Ys,Js),Ys);var Js,Ys;const Xs=(Zs={filter:()=>Bs,map:()=>qt},er={},Ls.d(er,Zs),er);var Zs,er;class tr{constructor(){this.root={children:new Map,childrenWithValue:0}}get(e){var t;return null===(t=this.getNode(e))||void 0===t?void 0:t.value}getOrSet(e,t){const i=this._buildPath(e);if(void 0!==i.value)return i.value;const n=t(e);return this._setNodeValue(i,n,void 0===n),n}set(e,t){const i=void 0===t?this._findNode(e):this._buildPath(e);i&&this._setNodeValue(i,t,!0)}delete(e){const t=this._findNode(e);if(void 0===t)return;if(void 0===t.parent){if(t!==this.root)throw new Error("Only root node can have no parent.");return this.root.value=void 0,this.root.children.clear(),void(this.root.childrenWithValue=0)}const i=(void 0===t.value?0:1)+t.childrenWithValue;i>0&&this._updateChildrenWithValue(t,-i),t.parent.children.delete(e[e.length-1]),this._runGc(t.parent)}clear(){this.delete([])}count(e=[],t="node-and-children"){const i=this.getNode(e);return void 0===i?0:i.childrenWithValue+("node-and-children"===t&&void 0!==i.value?1:0)}get isEmpty(){return 0===this.count()}fillPath(e,t){const i=[];let n=this.root,s=t(n.value,i);if(s!==tr.StopFillToken){this._setNodeValue(n,s,!1);for(let r=0;r<e.length;r++){const o=e[r];i.push(o);let a=n.children.get(o);if(s=t(null==a?void 0:a.value,i),s===tr.StopFillToken)break;a||(a={children:new Map,parent:n,childrenWithValue:0},n.children.set(o,a)),this._setNodeValue(a,s,!1),n=a}this._runGc(n)}}visitDfs(e,t,i=[]){const n=this.getNode(i);void 0!==n&&this._visitDfs(e,n,t,[...i])}_visitDfs(e,t,i,n){if("pre-order"===e&&!1===i(t.value,n))return!1;for(const[s,r]of t.children){if(n.push(s),!this._visitDfs(e,r,i,n))return!1;n.pop()}return"in-order"!==e||!1!==i(t.value,n)}getNode(e){return this._getNode(e)}_getNode(e){let t=this.root;for(const i of e)if(t=t.children.get(i),!t)return;return t}_findNode(e){let t=this.root;for(let i=0;i<e.length&&t;i++)t=t.children.get(e[i]);return t}_buildPath(e){let t=this.root;for(let i=0;i<e.length;i++){const n=e[i];let s=t.children.get(n);s||(s={children:new Map,parent:t,childrenWithValue:0},t.children.set(n,s)),t=s}return t}_setNodeValue(e,t,i){if(e.value!==t){const i=void 0===t?-1:void 0===e.value?1:0;e.value=t,this._updateChildrenWithValue(e,i)}i&&this._runGc(e)}_updateChildrenWithValue(e,t){if(0!==t)for(let i=e.parent;i;i=i.parent)if(i.childrenWithValue+=t,i.childrenWithValue<0)throw new Error("Internal error: negative counter value!")}_runGc(e){void 0===e.value&&(0===e.childrenWithValue&&e.children.clear(),e.parent&&this._runGc(e.parent))}}tr.StopFillToken=Symbol("Trie.StopFillToken");class ir extends zs.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class nr{constructor(e){this.rootState=e,this.observersTrie=new tr,this.batchDepth=0,this.appliedBatchActions=[],this.rootStateBeforeBatchStart=this.rootState,this.stubForUnusedPaths=[]}get state(){return this.rootState}get state$(){return this.observe([])}get(e){return this._get(this.rootState,e)}observe(e,t=[]){return this._observeChanges(e,t,"new-value-only").pipe((0,Xs.map)(e=>e.value))}observeChanges(e,t=[]){return this._observeChanges(e,t,"all-details")}set(e,t,i){(null==i?void 0:i(this.get(e),t,e))||this._apply({type:"set",path:e,value:t})}delete(e){this._apply({type:"delete",path:e})}reset(e){this.observersTrie.visitDfs("pre-order",e=>null==e?void 0:e.complete()),this.observersTrie.delete([]),this.rootState=e}runInBatch(e){this.batchDepth++;try{e()}finally{if(this.batchDepth--,0===this.batchDepth&&this.appliedBatchActions.length>0){const e={type:"batch",actions:this.appliedBatchActions};this.appliedBatchActions=[],this._notify(e)}}}_apply(e){0===this.batchDepth&&(this.rootStateBeforeBatchStart=this.rootState),this.rootState=Qs(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=Hs(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=Ws([...t,...i]),s=new tr;for(const e of n)s.fillPath(e,()=>!0);s.visitDfs("pre-order",(t,i)=>{const n=this.observersTrie.get(i);if(n){const t=this.get(i),s=n.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;n.next({action:e,value:t,oldValue:s})}})}_observeChanges(e,t=[],i){const n=0===t.length?void 0:new tr;for(const e of t)null==n||n.set(e,!0);return new zs.Observable(t=>{const s=this.observersTrie.getOrSet(e,()=>new ir);s.isAllDetailsMode=s.isAllDetailsMode||"all-details"===i;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=s.pipe((0,Xs.filter)(({action:e})=>void 0===n||Hs(e,"as-is").some(e=>!n.get(e))),(0,Xs.map)(({action:t,value:i,oldValue:n})=>{let r=this.stubForUnusedPaths;if(s.isAllDetailsMode){const i=Hs(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=Ks(e),i=t;for(let e=0;e<i.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++)Vs(t[s],n)&&(i[s]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>Vs(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:n,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),s.observed||this.observersTrie.delete(e)}})}_get(e,t){let i=e;for(let e=0;e<t.length&&void 0!==i;e++){const n=t[e];i=null==i?void 0:i[n]}return i}selectChildPathsWithObservers(e){const t=[];for(const i of e)this.observersTrie.count(i,"children-only")>0&&this.observersTrie.visitDfs("pre-order",(e,i)=>{e&&t.push([...i])},i);return t}}function sr(e,t,i=(e,t)=>e>t?1:e<t?-1:0,n=0,s=e.length-1){if(s<n)return-1;const r=Math.trunc((n+s)/2);return 0===i(t,e[r])?r:i(t,e[r])>0?sr(e,t,i,r+1,s):sr(e,t,i,n,r-1)}function rr(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==sr(e,t,i))return;let n;for(n=e.length-1;n>=0&&i(e[n],t)>0;n--)e[n+1]=e[n];e[n+1]=t}function or(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=sr(e,t,i);n>-1&&e.splice(n,1)}class ar{setDetachedQueryExecutor(e){this.detachedQueryExecutor=e}constructor(e,t,i,n,s,r,o,a){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=n,this.documentIdentityService=s,this.querySender=r,this.socketManager=o,this.lockManager=a,this.onOrphanDocuments=new ut.Subject,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new ur,this.queryResultsSubject=new ut.Subject,this.detachedRecords=new Set,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.clientIdService.observeClientTooOld().subscribe(()=>{this.invalidateOngoingQueryRegistrations()}),this.clientIdService.observeClientReadyToBeRegenerated().subscribe(()=>{this.refreshOngoingQueries()}),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}dumpSubscriptionInfo(){console.log("Ongoing queries:",this.ongoingQueries),console.log("ClientRequestId to local documents:",this.clientRequestIdToLocalDocuments),console.log("Local documents to clientRequestId:",this.localDocumentToClientRequestIds)}observeQueryResults(){return this.queryResultsSubject.asObservable()}hasOngoingQuery(e){return this.ongoingQueries.has(e)}getQuery(e){return Ge(this.ongoingQueries.get(e),"UNKNOWN_QUERY").query}setGotInitialResult(e,t){const i=this.ongoingQueries.get(e);i?.gotInitialResponse&&this.removeClientRequestIdMapping(e),i&&(i.gotInitialResponse=!0,i.isInFlight=!1,t&&i.subscribe&&i.query.limit>0&&this.setLimitWindow(i,t))}findQueriesForDocument(e,t){const{collectionName:i,integrationId:n}=Vi(t),s=this.queryMappingManager.getMapping(i,n);return s?function(e,t){const i=[...e.unconditional||[]],n=new Map;for(const[i,s]of Object.entries(e.conditional||{})){const e=Di(i);let r;if(Xi(e))if(e.fieldName===je)r=tn(e.value,t,e.operator,mi);else{const i=mi(t,e.fieldName)??null;r=Wi(e.value,i,e.operator)}else r=Zi(e)?en(e,t,mi):cr(e,t);if(r)for(const e of s)n.set(e,(n.get(e)||0)+1)}for(const[t,s]of n.entries())s>=e.queriesMetadata[t].condCount&&i.push(t);return i}(s,e):[]}setClientRequestIdsForLocalDoc(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set,n=new Set(t?this.findQueriesForDocument(t,e).map(e=>function(e){const t=e.split("_");return{clientId:t[0],clientRequestId:t[1]}}(e).clientRequestId):[]),s=new Set([...i,...n]);for(const t of[...i]){if(n.has(t))continue;i.delete(t);const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),i.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of n){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}return[...s]}addDocToQuery(e,t){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}removeDocFromQuery(e,t){const i=this.localDocumentToClientRequestIds.get(e);let n=!i;i&&(i.delete(t),i.size||(this.localDocumentToClientRequestIds.delete(e),n=!0));const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),n&&this.documentStore.deleteDocument(e)}errorOutAllQueries(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of i){const i=this.ongoingQueries.get(e);i&&(this.destructManager.isDestructing?i.dataSubject.complete():i.dataSubject.error(t),i.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const i of e){const e=this.ongoingQueries.get(i);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const n=this.clientRequestIdToLocalDocuments.get(i)||new Set,s=this.documentStore.sortAndLimitDocs(n,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(s,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=Ge(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case Jn.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+100?Jn.ENABLED:Jn.DISABLED;break;case Jn.DISABLED:break;case Jn.ENABLED:{const{limitWindowEnd:t,query:i}=e;if((t?this.documentStore.countDocsUpTo(n,t,i.sortOrder):n.size)<i.limit+20){e.limitUnderflowState=Jn.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}}e.dataSubject.next(s)}for(const e of t){const t=this.collectAllObservables(e);Ge(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new Pn(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,n,s,r,o){s&&this.socketManager.notifyWebSocketIsNeeded();const a=Object.keys(i).length>0;return s||a||!this.detachedQueryExecutor||this.lockManager.canGetLock(zn)?(0,ut.defer)(()=>{const a=this.createOngoingQueryGraph(e,t,i,n,s,!0,{},o);r&&(a.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(a),a.allObservables=new ut.ReplaySubject(1);const c=a.allObservables.pipe((0,ut.switchMap)(e=>(0,ut.combineLatest)(e).pipe(qt(e=>this.joinResults(e,n,a)))),Bs(()=>this.allOngoingQueriesGotInitialResult(a)),(0,ut.startWith)(void 0),(0,ut.pairwise)(),Bs(([e,t])=>!vi(e,t)),qt(([,e])=>e),s?(0,ut.tap)():(0,ut.take)(1),(0,ut.finalize)(()=>{a.dataSubject.complete(),a.done=!0,this.completeAllSupportedQueries(a),a.allObservables?.complete()})),u=this.collectAllObservables(a);return a.allObservables.next(u),c}).pipe((0,ut.share)()):(0,ut.from)(this.detachedQueryExecutor(e)).pipe(qt(e=>e.map(e=>{const i={[t]:e};return this.detachedRecords.add(i),i})))}hasOngoingQueryForDocId(e){const t=this.localDocumentToClientRequestIds.get(e);return!!t&&!!t.size}unsubscribe(){const e=[...this.ongoingQueries.values()];for(const t of e)t.dataSubject.complete(),t.allObservables?.complete()}hasSubscription(e){return!!this.ongoingQueries.get(e)?.subscribe}isValidParent(e){if(!e.activated||e.isInFlight||e.isEmptyForJoin||e.done||!e.subscribe||!e.gotInitialResponse||!e.dataSubject.value)return!1;const t=-1===e.query.limit?1e3:e.query.limit;return e.dataSubject.value.length<t}findValidParentOfOngoingQuery(e){if(e.forceFetchFromServer)return;const t=new Pn(e.query);for(const i of this.ongoingQueries.values()){if(e===i)return;if(this.isValidParent(i)&&t.isSubqueryOfQuery(i.query))return i}}setLimitWindow(e,t){const{limit:i,sortOrder:n}=e.query,s=this.documentStore.findLastDoc(t,n),r=void 0!==s&&n.length>0&&n.every(({fieldName:e})=>void 0!==mi(s,e));e.limitWindowEnd=r?s:void 0,e.limitUnderflowState=t.length===i+100?Jn.ENABLED:Jn.DISABLED}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const i=[];for(const n of t){const t=Ge(this.localDocumentToClientRequestIds.get(n));t.delete(e),t.size||(this.localDocumentToClientRequestIds.delete(n),i.push(n))}i.length&&this.onOrphanDocuments.next(i)}registerQueryFinalizer(e){const t=e.clientRequestId,i=Yi(this.clientIdService.getClientId(),t);e.dataSubject.pipe((0,ut.finalize)(async()=>{if(e.unsubscribeBlockerCount.value>0&&await(0,ut.firstValueFrom)((0,ut.race)(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(Bs(e=>0===e)))),this.queryMappingManager.removeQuery(i),this.ongoingQueries.delete(t),e.subscribe&&!e.isEmptyForJoin&&e.activated){const i={clientRequestId:t};this.rpcManager.post("query/unsubscribe",i).catch(t=>{this.destructManager.isDestructing||console.error("Got error while unsubscribing from query",e.query,t)})}this.removeClientRequestIdMapping(t)}),Bs(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,t,i,n,s,r,o={},a){if(o[t])return o[t];const c=r&&a?a:this.clientIdService.generateClientRequestId(),u=[],l={clientRequestId:c,activated:r,alias:t,query:e,subscribe:s,dataSubject:new ut.BehaviorSubject(null),supportedQueries:u,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new ut.BehaviorSubject(0),queryRegistered:new ut.BehaviorSubject(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:s?Jn.UNKNOWN:Jn.DISABLED};this.registerQueryFinalizer(l),this.ongoingQueries.set(c,l),o[t]=l;for(const[e,r]of Object.entries(n)){const a=r.leftAlias;if(a!==t&&e!==t)continue;const c=a===t?e:a;if(a===t){const e=this.createOngoingQueryGraph(i[c],c,i,n,s,!1,o);e.joinCondition=r,u.push(e)}else l.supportingOngoingQuery=this.createOngoingQueryGraph(i[c],c,i,n,s,!1,o)}return l}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(Bs(Boolean),qt(e=>({docs:e,alias:i}))));for(const i of e.supportedQueries)this.collectAllObservables(i,t);return t}joinResults(e,t,i){const n=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let s=n[i.alias].map(e=>({[i.alias]:e}));const r=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<r.length;e++){const i=r[e].alias;o.has(i)||(o.add(i),s=this.join(s,i,n[i],t[i]))}return s}join(e,t,i,n){if(!e.length)return e;const s=Object.keys(e[0]);if(!n||!s.includes(n.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[n.right]);r.has(t)||r.set(t,[]),Ge(r.get(t)).push(e)}),e.flatMap(e=>{const i=r.get(this.transformKey(e[n.leftAlias]?.[n.left]))||[];return i.length?i.map(i=>({...e,[t]:i})):n.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],i=[e];for(;i.length;){const e=Ge(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,t){const i=Ge(t.joinCondition),n=t.query;if(t.activated){if(!t.canExpandForJoin)return!1;const s=Ge(t.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===t.alias),r=new Set(e.map(e=>e[i.left]??null));for(const e of s)e.query.conditions.filter(Xi).filter(e=>e.fieldName===i.right).forEach(e=>{r.delete(e.value)});if(0===r.size)return!1;const o=Mi(n);o.conditions=o.conditions.filter(e=>!Xi(e)||e.fieldName!==i.right),[...r].forEach(e=>{o.conditions.push({fieldName:i.right,operator:"==",value:e})});const a={...t,query:o,activated:!0,gotInitialResponse:!1,dataSubject:new ut.BehaviorSubject(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(a),this.ongoingQueries.set(a.clientRequestId,a),Ge(t.supportingOngoingQuery).supportedQueries.push(a),this.sendQueryToServerOrUseParentQuery(a),!0}{if(t.activated=!0,n.conditions.filter(Xi).filter(e=>e.fieldName===i.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(t),t.canExpandForJoin=!1,!0;const s=e.map(e=>e[i.left]??null).map(e=>({fieldName:i.right,operator:"==",value:e}));return s.length?(n.conditions.push(...s),this.sendQueryToServerOrUseParentQuery(t)):t.isEmptyForJoin=!0,!0}}allOngoingQueriesGotInitialResult(e){return!!e.isEmptyForJoin||!!e.gotInitialResponse&&(!e.supportedQueries.length||e.supportedQueries.every(e=>this.allOngoingQueriesGotInitialResult(e)))}async completeAllSupportedQueries(e){const t=[...e.supportedQueries||[]];for(;t.length;){const e=Ge(t.shift());t.push(...e.supportedQueries||[]),await(0,ut.firstValueFrom)(e.unsubscribeBlockerCount.pipe(Bs(e=>0===e))),e.dataSubject.complete()}}transformKey(e){return e instanceof Date?`DATE AS string KEY: ${e.toISOString()}`:e}preDestruct(){this.unsubscribe()}sendQueryToServerOrUseParentQuery(e,t=!1){if(this.destructManager.isDestructing)return;const i=e.query,n=e.clientRequestId,s=Yi(this.clientIdService.getClientId(),n);this.queryMappingManager.addQuery(i,s),this.ongoingQueries.set(n,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},n=new Pn(e.query);e.limitWindowEnd=void 0,t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await(0,ut.firstValueFrom)(t.queryRegistered.pipe(Bs(Boolean)))}catch(t){return this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(e.dataSubject.error(t),e.queryRegistered.error(t)),void(e.done=!0)}if(this.destructManager.isDestructing)return;if(e.done)return;this.rpcManager.post("query/register",i).then(()=>{e.isInFlight=!1,e.queryRegistered.next(!0)}).catch(i=>{e.isInFlight=!1,this.destructManager.isDestructing?e.dataSubject.complete():(console.error("Query error",e.query,t.query,i),e.dataSubject.error(i)),e.done=!0}).finally(()=>{t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value-1)});const s=(0,ut.race)(e.queryRegistered.pipe(Bs(Boolean),(0,ut.delay)(2e3),(0,ut.take)(1)),this.destructManager.observeIsDestructing().pipe((0,ut.take)(1)));t.dataSubject.pipe((0,ut.takeWhile)(()=>!e.done),(0,ut.takeUntil)(s),Bs(Boolean),(0,ut.tap)(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),qt(e=>e.filter(e=>n.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(Ki(i.__docId__,e.query.collectionName,e.query.integrationId),i);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,i=t>0&&e.subscribe?t+100:t,n={query:{...e.query,limit:i},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(n).then(t=>{e.isInFlight=!1,e.queryRegistered.next(!0),this.queryResultsSubject.next(t)}).catch(t=>{e.isInFlight=!1,this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(Ui.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}invalidateOngoingQueryRegistrations(){for(const e of this.ongoingQueries.values())e.queryRegistered.next(!1)}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const i of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{i.has(t)&&(i.delete(t),i.add(e[t]))});t.forEach(t=>{Si(this.localDocumentToClientRequestIds,t,e[t])})}}function cr(e,t){for(const i of e.fields){const e=mi(t,i.fieldName)??null;if(Wi(i.value,e,i.operator))return!0;if(Wi(i.value,e,"!="))return!1}return!1}class ur{constructor(){this.stateService=new nr({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const s of e.conditions){if(Xi(s)&&["=="].includes(s.operator)){const e=Ri(s.fieldName);n.has(e)||(i++,n.add(e))}else i++;const r=this.getConditionStatePath(e,s),o=[...this.stateService.get(r)||[]];rr(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];rr(n,t),this.stateService.set(i,n)}this.stateService.set([...this.getQueryMetadataStatePath(e,t),"condCount"],i)}),this.querySubscriptionIdToQuery[t]=e}async removeQuery(e){const t=this.querySubscriptionIdToQuery[e];if(t)return this.stateService.runInBatch(()=>{for(const i of t.conditions){const n=this.getConditionStatePath(t,i),s=[...this.stateService.get(n)||[]];or(s,e),s.length?this.stateService.set(n,s):this.stateService.delete(n)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];or(n,e),this.stateService.set(i,n)}this.stateService.delete(this.getQueryMetadataStatePath(t,e))}),t}getMapping(e,t){return this.stateService.get(["queryMapping",e,t,"mapping"])}getQueryMetadataStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","queriesMetadata",`${t}`]}getConditionStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","conditional",(i=t,Oi(i))];var i}}class lr{constructor(){this.locks={}}async lock(...e){if(this.canGetLock(...e))return void this.lockSync(...e);const t=Object.entries(this.locks).filter(([t])=>e.includes(t)).map(([,e])=>e);await(0,ut.lastValueFrom)((0,ut.combineLatest)(t).pipe((0,ut.filter)(e=>!e.includes(!0)),(0,ut.take)(1))),await this.lock(...e)}release(...e){for(const t of e){const e=Ge(this.locks[t]);e.next(!1),e.complete(),delete this.locks[t]}}canGetLock(...e){return!e.some(e=>this.locks[e]?.value)}lockSync(...e){$e(this.canGetLock(...e),"Cannot acquire lock sync");for(const t of e)this.locks[t]=new ut.BehaviorSubject(!0)}}class dr{constructor(e,t,i){this.rpcManager=e,this.socketManager=t,this.queueManagers=new Map,this.socketManager.observeNotifications().subscribe(e=>{const t=this.getOrUndefined(e.integrationId,e.topicName);t&&t.onMessages(e.payload)}),i.onPreDestruct(()=>{for(const e of this.queueManagers.values())for(const t of e.values())t.destruct()})}get(e,t){let i=this.queueManagers.get(e);i||(i=new Map,this.queueManagers.set(e,i));let n=i.get(t);return n||(n=new pr(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const hr="subscriptionMutex";class pr{constructor(e,t,i,n){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=n,this.messagesSubject=new ut.Subject,this.subscriberCount=0,this.lockManager=new lr}async produce(e){await this.lockManager.lock(hr);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(hr)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),(0,ut.defer)(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe((0,ut.finalize)(()=>{this.subscriberCount--,0===this.subscriberCount&&this.performUnsubscribe()}))))}onMessages(e){for(const t of e)this.messagesSubject.next(t)}destruct(){this.messagesSubject.complete()}async performSubscribe(){await this.lockManager.lock(hr);try{await this.rpcManager.post("queue/subscribe",{integrationId:this.integrationId,topicName:this.topicName})}catch(e){this.messagesSubject.error(e),this.messagesSubject.complete(),this.subscriberCount=0,this.messagesSubject=new ut.Subject}finally{this.lockManager.release(hr)}}async performUnsubscribe(){await this.lockManager.lock(hr);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(hr)}}}class gr{constructor(e,t){this.capacity=e,this.seconds=t,this.tokens=e,this.refillRatePerMs=e/(1e3*t),this.lastRefillTimestamp=Date.now()}async consume(){this.attemptConsume()||await(0,ut.firstValueFrom)((0,ut.interval)(10).pipe((0,ut.filter)(()=>this.attemptConsume()),(0,ut.first)()))}attemptConsume(){return this.refill(),this.tokens>=1&&(this.tokens-=1,!0)}refill(){const e=Date.now(),t=(e-this.lastRefillTimestamp)*this.refillRatePerMs;this.tokens=Math.min(this.tokens+t,this.capacity),this.lastRefillTimestamp=e}}class fr{constructor(e,t,i,n,s,r){this.region=e,this.appId=t,this.authManager=s,this.clientIdService=r,this.staticHeaders={},this.onGoingRpcCounter=new ut.BehaviorSubject(0);for(const[e,t]of Object.entries(n))this.setStaticHeader(e,t);this.clientIdService.observeClientId().subscribe(e=>{e?this.setStaticHeader("x-squid-clientid",e):this.deleteStaticHeader("x-squid-clientid")}),i.onDestruct(async()=>{await this.awaitAllSettled()});const o=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new gr(60*o,5),ai:new gr(20*o,5),secret:new gr(20*o,5)}}async getAuthHeaders(){const e=this.authManager.getApiKey();if(e)return{Authorization:`ApiKey ${e}`};const{token:t,integrationId:i}=await this.authManager.getAuthData();if(!t)return{};let n=`Bearer ${t}`;return i&&(n+=`; IntegrationId ${i}`),{Authorization:n}}async awaitAllSettled(){await(0,ut.firstValueFrom)(this.onGoingRpcCounter.pipe((0,ut.filter)(e=>0===e)))}setStaticHeader(e,t){this.staticHeaders[e]=t}deleteStaticHeader(e){delete this.staticHeaders[e]}getStaticHeaders(){return this.staticHeaders}async post(e,t,i=[],n="files",s={},r){return(await this.rawPost(e,t,i,n,!0,s,r)).body}async rawPost(e,t,i=[],n="files",s=!0,r={},o){return this.runRawRequest(e,r,async r=>{Ui.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const a=this.resolveUrl(e);return await ms({url:a,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s,abortSignal:o})})}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){return this.runRawRequest(e,{},async n=>{let s=this.resolveUrl(e);if(t&&Object.keys(t).length>0){const e=new URLSearchParams;Object.entries(t).forEach(([t,i])=>{e.append(t,String(i))}),s+=`?${e.toString()}`}return Ui.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await Is({url:s,headers:n,extractErrorMessage:i})})}async put(e,t,i=[],n="files"){return(await this.rawPut(e,t,i,n)).body}async rawPut(e,t,i=[],n="files",s=!0){return this.runRawRequest(e,{},async r=>{Ui.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const o=this.resolveUrl(e);return await bs({url:o,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s})})}async patch(e,t,i=[],n="files"){return(await this.rawPatch(e,t,i,n)).body}async rawPatch(e,t,i=[],n="files",s=!0){return this.runRawRequest(e,{},async r=>{Ui.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const o=this.resolveUrl(e);return await Ss({url:o,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s})})}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){return this.runRawRequest(e,{},async n=>{Ui.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const s=this.resolveUrl(e);return await ws({url:s,headers:n,message:t,extractErrorMessage:i})})}async runRawRequest(e,t,i){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),s={...this.staticHeaders,...n,...t};return await i(s)}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}resolveUrl(e){return e.startsWith("http://")||e.startsWith("https://")?e:r(this.region,this.appId,e)}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?Ge(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?Ge(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):Ge(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}const yr="This operation is not available in passive mode. Use active mode for real-time features.";function mr(e){$e(!e.isPassiveMode,yr)}class Ir{constructor(e){this.rpcManager=e}async list(){return(await this.rpcManager.post("/scheduler/listSchedulers",{})).schedulers}async enable(e){await this.update(this.createUpdateSchedulerOptions(e,!0))}async disable(e){await this.update(this.createUpdateSchedulerOptions(e,!1))}async update(e){const t={schedulers:e};await this.rpcManager.post("scheduler/updateSchedulers",t)}createUpdateSchedulerOptions(e,t){return Array.isArray(e)?e.map(e=>({schedulerId:e,enabled:t})):[{schedulerId:e,enabled:t}]}}function br(){}const Sr="undefined"!=typeof process&&process.versions?.node?i(86):Li().WebSocket;class wr{constructor(e,t,i,n=gs,s,r,o){this.clientIdService=e,this.region=t,this.appId=i,this.messageNotificationWrapper=n,this.destructManager=s,this.authManager=r,this.runtimeOptions=o,this.webSocketObserver=new ut.Subject,this.allMessagesObserver=new ut.Subject,this.connectionReady=new ut.BehaviorSubject(!1),this.seenMessageIds=new Set,this.destructSubject=new ut.Subject,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new ut.BehaviorSubject(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe((0,ut.filter)(Boolean),(0,ut.take)(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe((0,ut.skip)(1),(0,ut.filter)(e=>!e),(0,ut.switchMap)(()=>(0,ut.race)((0,ut.timer)(this.clientTooOldThreshold),this.connectionReady.pipe((0,ut.filter)(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?Ui.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(Ui.debug(this.clientIdService.getClientId(),"Client disconnected for a long period - refreshing"),this.refreshClient())}),this.observeConnectionReady().pipe((0,ut.filter)(Boolean)).subscribe(()=>{this.clientIdService.isClientTooOld()&&this.clientIdService.notifyClientNotTooOld()}),this.observeNotifications().pipe((0,ut.filter)(e=>"clientInfo"===e.type)).subscribe(e=>{console.log("Client info message received",e)})}refreshClient(){this.destructManager.isDestructing?Ui.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?Ui.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(Ui.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),Ui.debug(this.clientIdService.getClientId(),"Client too old. Reconnecting..."),this.connect())}getClientInfo(){this.postMessage({type:"getClientInfo"})}observeNotifications(){return this.webSocketObserver.asObservable()}observeConnectionReady(){return this.connectionReady.asObservable().pipe((0,ut.distinctUntilChanged)())}async awaitConnectionReady(){mr(this.runtimeOptions),await(0,ut.firstValueFrom)(this.observeConnectionReady().pipe((0,ut.filter)(Boolean)))}notifyWebSocketIsNeeded(){mr(this.runtimeOptions),this.webSocketNeededSubject.next(!0)}postMessage(e){this.sendMessageImpl(e)}sendMessage(e){return this.sendMessageImpl(e)}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(Ui.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded();try{await(0,ut.firstValueFrom)((0,ut.race)(this.connectionReady.pipe((0,ut.filter)(Boolean)),(0,ut.timer)(12e4).pipe((0,ut.tap)(()=>{throw new Error("WebSocket connection not ready within 2 minutes")}))).pipe((0,ut.takeUntil)(this.destructSubject)))}catch(e){if(this.destructManager.isDestructing)return;throw e}const t=await this.authManager.getToken();if(this.connectionReady.value)try{$e(this.socket,"Socket is undefined in sendMessageAsync");const i=Ci({message:e,authToken:t});Ui.debug(this.clientIdService.getClientId(),"Sending message to socket: ",i),this.socket.send(i)}catch(t){this.socket?.connected?console.error("Websocket message is ignored due to a non-recoverable error",t):(this.connectionReady.next(!1),await this.sendMessageImpl(e))}else await this.sendMessageImpl(e)}sendKillMessage(){this.socket?.connected&&this.socket.send(Ci({message:{type:"kill"}}))}closeCurrentSocketSilently(){if(this.socket)try{this.socket.close()}catch(e){}}connect(){this.closeCurrentSocketSilently(),this.connectionReady.value&&this.connectionReady.next(!1);const e=r(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();Ui.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,n=0,s=1;const r={connected:!1,closeCalled:!1,open(){i=new(Sr?.WebSocket??Sr)(e,t.protocols||[]),i.onmessage=t.onmessage?e=>{e.data&&t.onmessage?t.onmessage(e):console.log("No data received from websockets, please contact support@getsquid.ai with this message.")}:br,i.onopen=function(e){r.connected=!0,(t.onopen||br)(e),n=0},i.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return Ui.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||br)(e),void r.reconnect(e);(t.onclose||br)(e)},i.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||br)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;s&&n++<i?s=setTimeout(function(){(t.onreconnect||br)(e),Ui.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||br)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(s),s=void 0,i.close(e,t)}catch(e){}}};return r.open(),r}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{Ui.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{Ui.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Ui.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{Ui.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Ui.debug(t,`WebSocket onclose event triggered - ignored because the client id changed. new: ${this.clientIdService.getClientId()}`)},onerror:e=>console.error("WebSocket error:",e)})}onConnectionReady(){this.connectionReady.next(!0),this.connectedAtLeastOnce?this.postMessage({type:"catchup"}):this.connectedAtLeastOnce=!0}onMessage(e){if("connectionReady"===e)return Ui.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=Di(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),Ui.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new ut.Subject;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe((0,ut.tap)(e=>t.push(e)),(0,ut.auditTime)(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await(0,ut.firstValueFrom)((0,ut.timer)(0)),this.connectionReady.next(!1),await(0,ut.firstValueFrom)((0,ut.timer)(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function vr(e){var t,i;i="Invalid application ID",$e(function(e){return"string"==typeof e}(t=e),()=>Ve(i,"Not a string",t));const n=e.split("-");$e(n.length<4,`Invalid application ID: ${e}`);const[s,r,o]=n;return{appId:s,environmentId:r??"prod",squidDeveloperId:o}}function _r(e,t){return`${vr(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Mr(e,t,i){return`${_r(e,t)}${i?`-${i}`:""}`}function Er(e){const t=vr(e);return _r(t.appId,t.environmentId)}class Tr{constructor(e="built_in_storage",t){this.integrationId=e,this.rpcManager=t}async uploadFile(e,t,i){const n={integrationId:this.integrationId,dirPathInBucket:e,expirationInSeconds:i};await this.rpcManager.post("storage/uploadFile",n,[t])}async getFileMetadata(e){const t={integrationId:this.integrationId,filePathInBucket:e};return await this.rpcManager.post("storage/getFileMetadata",t)}async getDownloadUrl(e,t){const i={integrationId:this.integrationId,filePathInBucket:e,urlExpirationInSeconds:t};return await this.rpcManager.post("storage/getDownloadUrl",i)}async listDirectoryContents(e){const t={integrationId:this.integrationId,dirPathInBucket:e};return await this.rpcManager.post("storage/listDirectoryContents",t)}async deleteFile(e){await this.deleteFiles([e])}async deleteFiles(e){const t={integrationId:this.integrationId,filePathsInBucket:e};await this.rpcManager.post("storage/deleteFiles",t)}}class kr{constructor(e,t,i,n,s){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=n,this.consoleRegion=s}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e,t,i){return await this.rpcManager.post("web/aiSearch",{query:e,allowedDomains:i},[],"files",{},t)}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e){$e(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shorten",i,"create short URL","json")}async createShortUrls(e){$e(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shortenMany",i,"create short URLs","json")}async deleteShortUrl(e){$e(this.apiKey,"API key is required to delete a short URL");const t={id:e,appId:this.appId};await this.postShortUrlApi("delete",t,"delete short URL","ignore")}async deleteShortUrls(e){$e(this.apiKey,"API key is required to delete a short URL");const t={ids:e,appId:this.appId};await this.postShortUrlApi("deleteMany",t,"delete short URLs","ignore")}async postShortUrlApi(e,t,i,n){const s=o(this.region,this.consoleRegion,`openapi/sqd/${e}`),r=await fetch(s,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(t)});if("ignore"===n)return void $e(r.ok,`Failed to ${i} (${r.status}): ${r.statusText}`);const a=await r.text();return $e(r.ok,`Failed to ${i} (${r.status}): ${a}`),JSON.parse(a)}}class Ar{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:n={},body:s,files:o=[]}=t,a=await this.rpcManager.getAuthHeaders(),c={...this.rpcManager.getStaticHeaders(),...a,...i};let u=r(this.region,this.appId,`webhooks/${encodeURIComponent(e)}`);if(n&&Object.keys(n).length>0){const e=new URLSearchParams;Object.entries(n).forEach(([t,i])=>{e.append(t,String(i))}),u+=`?${e.toString()}`}const l=new Headers(c);let d;if(l.append(Vt.TRACE_ID,ps("c_")),l.append(Vt.CLIENT_VERSION,ys),o&&o.length>0){const e=new FormData;for(const t of o)e.append("file",t,t.name);s&&"object"==typeof s&&Object.entries(s).forEach(([t,i])=>{e.append(t,String(i))}),d=e}else l.append("Content-Type","application/json"),d=Ci(s||{});const h=await fetch(u,{method:"POST",headers:l,body:d}),p={};if(h.headers.forEach((e,t)=>{p[t]=e}),!h.ok){const e=await h.text();let t;try{t=JSON.parse(e)}catch{t=e}const i="string"==typeof t?t:t?.message||h.statusText;throw new fs(i,h.status,u,p,t)}const g=await h.text();let f;try{f=JSON.parse(g)}catch{f=g}return f}getWebhookUrl(e){return r(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class Or{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Zn,$e(e.appId,"APP_ID_MUST_BE_PROVIDED"),this.runtimeOptions={isPassiveMode:e.isPassiveMode??!1};for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,i=Mr(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Qi(this.destructManager),Ui.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new fi(e.apiKey,e.authProvider),this.socketManager=new wr(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new fr(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new ks(this.socketManager,this.rpcManager),this.jobClient=new us(this.socketManager,this.rpcManager,this.clientIdService,this.destructManager,this.runtimeOptions),this.langGraphClient=new ds(this.rpcManager,this.jobClient),this.backendFunctionManager=new Bi(this.rpcManager),this.aiClient=new hi(this.socketManager,this.rpcManager,this.jobClient,this.clientIdService,this.backendFunctionManager,()=>this.metricAnnotations),this.apiClient=new gi(this.rpcManager),this.eventsClient=new os(this.rpcManager),this.documentStore=new rs,this.lockManager=new lr,this.distributedLockManager=new es(this.socketManager,this.destructManager),this.documentIdentityService=new ns(this.documentStore,this.destructManager),this.documentReferenceFactory=new ss(this.documentIdentityService),this.querySender=new xs(this.rpcManager,this.destructManager,this.socketManager.observeConnectionReady()),this.observabilityClient=new Os(this.rpcManager),this.schedulerClient=new Ir(this.rpcManager),this._appId=i,this.querySubscriptionManager=new ar(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager,this.lockManager),this.localQueryManager=new Ps(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new Es(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new rn(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService,n),this.dataManager=new Yn(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new yn(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.querySubscriptionManager.setDetachedQueryExecutor(e=>this.dataManager.executeDetachedQuery(e)),this.webhookManager=new Ar(this.rpcManager,e.region,i),this.nativeQueryManager=new Ts(this.rpcManager),this._connectionDetails=new mn(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new dr(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new ct(this.rpcManager,this.options.region,Er(i),this.options.consoleRegion,this.backendFunctionManager),this.webClient=new kr(this.rpcManager,this.options.region,Er(i),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}get isDestructed(){return this.destructManager.isDestructing}static getInstance(e){const t=Oi(e);let i=Or.squidInstancesMap[t];return i||(i=new Or(e),Or.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(Or.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Ee){return this._validateNotDestructed(),this.collectionReferenceFactory.get(e,t)}runInTransaction(e){return this._validateNotDestructed(),this.dataManager.runInTransaction(e)}executeFunction(e,...t){return this._validateNotDestructed(),this.backendFunctionManager.executeFunction(e,...t)}executeFunctionWithHeaders(e,t,...i){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...i)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}getWebhookUrl(e){return this._validateNotDestructed(),this.webhookManager.getWebhookUrl(e)}executeNativeRelationalQuery(e,t,i={}){const n={type:"relational",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativePureQuery(e,t,i={}){const n={type:"pure",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeMongoQuery(e,t,i){const n={type:"mongo",collectionName:t,aggregationPipeline:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeElasticQuery(e,t,i,n="_search",s="GET"){const r={type:"elasticsearch",index:t,endpoint:n,method:s,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}setMetricAnnotations(e){this.metricAnnotations=e?{...e}:void 0}job(){return this._validateNotDestructed(),this.jobClient}langGraph(e){return this._validateNotDestructed(),this.langGraphClient.graph(e)}api(){return this._validateNotDestructed(),this.apiClient}admin(){return this._validateNotDestructed(),this.adminClient}web(){return this._validateNotDestructed(),this.webClient}storage(e="built_in_storage"){return this._validateNotDestructed(),new Tr(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new as(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new cs(this.rpcManager)}events(){return this._validateNotDestructed(),this.eventsClient}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t,i){const n=await this.acquireLock(e,i);try{return await t(n)}finally{n.release()}}queue(e,t=Te){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(Or.squidInstancesMap).find(([,e])=>e===this);e&&delete Or.squidInstancesMap[e[0]]})}connectionDetails(){return this._validateNotDestructed(),this._connectionDetails}getNotificationClient(){return this._validateNotDestructed(),this.notificationClient}async _unsubscribe(){this.querySubscriptionManager.unsubscribe(),await this.rpcManager.awaitAllSettled()}internal(){const{rpcManager:e}=this;return{getApplicationUrl:(e,t,i)=>r(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>Mr(e,t,i)}}_validateNotDestructed(){$e(!this.destructManager.isDestructing,"The client was already destructed.")}}const Cr=exports;for(var Dr in n)Cr[Dr]=n[Dr];n.__esModule&&Object.defineProperty(Cr,"__esModule",{value:!0})})();