@squidcloud/client 1.0.440 → 1.0.442
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 +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/internal-common/src/metric-name.d.ts +9 -0
- package/dist/internal-common/src/public-types/ai-common.public-types.d.ts +5 -1
- package/dist/internal-common/src/public-types-backend/api-call.public-context.d.ts +30 -0
- package/dist/internal-common/src/public-types-backend/mutation.public-context.d.ts +148 -0
- package/dist/internal-common/src/public-types-backend/native-query.public-context.d.ts +72 -0
- package/dist/internal-common/src/public-types-backend/query.public-context.d.ts +177 -0
- package/dist/internal-common/src/types/ai-agent.types.d.ts +200 -0
- package/dist/internal-common/src/types/ai-knowledge-base.types.d.ts +202 -0
- package/dist/internal-common/src/types/ai-matchmaking.types.d.ts +59 -0
- package/dist/internal-common/src/types/backend-function.types.d.ts +1 -0
- package/dist/internal-common/src/types/communication.types.d.ts +1 -0
- package/dist/internal-common/src/types/document.types.d.ts +1 -0
- package/dist/internal-common/src/types/file.types.d.ts +6 -0
- package/dist/internal-common/src/types/headers.types.d.ts +17 -0
- package/dist/internal-common/src/types/management-api-key.types.d.ts +92 -0
- package/dist/internal-common/src/types/mutation.types.d.ts +1 -0
- package/dist/internal-common/src/types/notification.types.d.ts +5 -0
- package/dist/internal-common/src/types/observability.types.d.ts +107 -0
- package/dist/internal-common/src/types/query.types.d.ts +13 -0
- package/dist/internal-common/src/types/secret.types.d.ts +7 -0
- package/dist/internal-common/src/types/socket.types.d.ts +1 -0
- package/dist/internal-common/src/types/stage.d.ts +9 -0
- package/dist/internal-common/src/types/time-units.d.ts +1 -0
- package/dist/internal-common/src/types/url-shortener.types.d.ts +45 -0
- package/dist/internal-common/src/utils/array.d.ts +7 -0
- package/dist/internal-common/src/utils/e2e-test-utils.d.ts +2 -0
- package/dist/internal-common/src/utils/file-utils.d.ts +2 -0
- package/dist/internal-common/src/utils/global.utils.d.ts +1 -0
- package/dist/internal-common/src/utils/http.d.ts +5 -0
- package/dist/internal-common/src/utils/lock.manager.d.ts +14 -0
- package/dist/internal-common/src/utils/metric-utils.d.ts +4 -0
- package/dist/internal-common/src/utils/metrics.types.d.ts +7 -0
- package/dist/internal-common/src/utils/object.d.ts +86 -0
- package/dist/internal-common/src/utils/serialization.d.ts +18 -0
- package/dist/internal-common/src/utils/squid.constants.d.ts +1 -0
- package/dist/internal-common/src/utils/trace-id-generator.d.ts +1 -0
- package/dist/internal-common/src/utils/validation.d.ts +19 -0
- package/dist/internal-common/src/websocket.impl.d.ts +26 -0
- package/dist/typescript-client/src/management-client.d.ts +13 -25
- package/dist/typescript-client/src/version.d.ts +1 -1
- package/package.json +1 -1
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 r=Object.getOwnPropertyDescriptor(t,i);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),r=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 s=i(642);t.default=s.PromisePool,r(i(273),t),r(i(642),t),r(i(837),t),r(i(426),t),r(i(858),t),r(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){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolExecutor=void 0;const n=i(642),r=i(172),s=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],taskTimeout:0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw r.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}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}processedCount(){return this.processedItems().length}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 r.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 r.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 r.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 r.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw r.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw r.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):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.processedItems().push(e),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 s.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 r.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(s.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 r{constructor(e){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 r(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}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).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=r,r.notRun=Symbol("notRun"),r.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")}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,i),s.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};i.r(n),i.d(n,{AI_AGENTS_INTEGRATION_ID:()=>Ue,AI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>qe,AI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>Ne,AI_CHAT_MESSAGE_SOURCE:()=>de,AI_EMBEDDINGS_MODEL_NAMES:()=>Me,AI_IMAGE_MODEL_NAMES:()=>Ae,AI_PROVIDER_TYPES:()=>ge,ALL_OPERATORS:()=>st,ANTHROPIC_CHAT_MODEL_NAMES:()=>be,API_INJECTION_FIELD_TYPES:()=>je,ARRAY_OPERATORS:()=>rt,AUTH_INTEGRATION_TYPES:()=>He,AdminClient:()=>l,AiAgentClient:()=>ie,AiAgentReference:()=>ee,AiAudioClient:()=>re,AiClient:()=>ct,AiFilesClient:()=>se,AiImageClient:()=>oe,AiKnowledgeBaseClient:()=>ue,AiKnowledgeBaseReference:()=>ce,AiMatchMakingClient:()=>le,ApiClient:()=>lt,ApiKeysSecretClient:()=>u,AuthManager:()=>ht,BUILT_IN_AGENT_ID:()=>Le,BUILT_IN_DB_INTEGRATION_ID:()=>ze,BUILT_IN_QUEUE_INTEGRATION_ID:()=>Je,BUILT_IN_STORAGE_INTEGRATION_ID:()=>Ye,BackendFunctionManager:()=>Ft,BaseQueryBuilder:()=>Zt,CLIENT_CONNECTION_STATES:()=>at,CLIENT_ID_GENERATOR_KEY:()=>Lt,CLIENT_REQUEST_ID_GENERATOR_KEY:()=>Qt,Changes:()=>ti,ClientIdService:()=>Bt,CollectionReference:()=>oi,CollectionReferenceFactory:()=>ci,ConnectionDetails:()=>ui,DATA_INTEGRATION_TYPES:()=>Ge,DEFAULT_SHORT_ID_LENGTH:()=>V,DataManager:()=>bi,DereferencedJoin:()=>ni,DestructManager:()=>vi,DistributedLockImpl:()=>wi,DistributedLockManager:()=>Si,DocumentReference:()=>zt,DocumentReferenceFactory:()=>ki,DocumentStore:()=>Ti,EMPTY_CHAT_ID:()=>ne,ENVIRONMENT_IDS:()=>Be,ExternalAuthClient:()=>_i,ExtractionClient:()=>Ei,FETCH_BEYOND_LIMIT:()=>Rn,FLUX_MODEL_NAMES:()=>De,GEMINI_CHAT_MODEL_NAMES:()=>ye,GRAPHQL_INTEGRATION_TYPES:()=>Ve,GROK_CHAT_MODEL_NAMES:()=>me,GroupedJoin:()=>si,HTTP_INTEGRATION_TYPES:()=>We,HttpStatus:()=>Qe,INTEGRATION_SCHEMA_TYPES:()=>Ke,INTEGRATION_TYPES:()=>$e,IntegrationClient:()=>a,JobClient:()=>Oi,JoinQueryBuilder:()=>ii,LastUsedValueExecuteFunctionCache:()=>Nt,LimitUnderflowState:()=>En,LocalQueryManager:()=>un,METRIC_DOMAIN:()=>it,METRIC_FUNCTIONS:()=>tt,METRIC_INTERVAL_ALIGNMENT:()=>nt,ManagementClient:()=>Ui,MatchMaker:()=>he,MutationSender:()=>$i,NOOP_FN:()=>Ni,NativeQueryManager:()=>Gi,NotificationClient:()=>Hi,OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>Ee,OPENAI_AUDIO_MODEL_NAMES:()=>Oe,OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>_e,OPENAI_CHAT_MODEL_NAMES:()=>fe,OPENAI_EMBEDDINGS_MODEL_NAMES:()=>Se,OPENAI_IMAGE_MODEL_NAMES:()=>Te,OPEN_AI_CREATE_SPEECH_FORMATS:()=>Re,ObservabilityClient:()=>Wi,Pagination:()=>Jt,QueryBuilder:()=>ei,QueryBuilderFactory:()=>Yt,QuerySender:()=>hn,QuerySubscriptionManager:()=>Fn,QueueManagerFactory:()=>Bn,QueueManagerImpl:()=>Qn,RAG_TYPES:()=>xe,RERANK_PROVIDERS:()=>pe,RateLimiter:()=>Un,RpcManager:()=>$n,SQUID_BUILT_IN_INTEGRATION_IDS:()=>Ze,SQUID_METRIC_NAMES:()=>et,SQUID_REGIONS:()=>ot,STABLE_DIFFUSION_MODEL_NAMES:()=>Ce,SchedulerClient:()=>Vn,SecretClient:()=>c,SocketManager:()=>zn,Squid:()=>nr,SquidClientError:()=>qi,StorageClient:()=>er,VENDOR_AI_CHAT_MODEL_NAMES:()=>Ie,VOYAGE_EMBEDDING_MODEL_NAMES:()=>we,WebClient:()=>tr,WebhookManager:()=>ir,assertNotPassiveMode:()=>Hn,compareArgsByReference:()=>Dt,compareArgsBySerializedValue:()=>At,deserializeQuery:()=>Yi,generateId:()=>H,generateShortId:()=>z,generateShortIds:()=>J,generateUUID:()=>$,generateUUIDPolyfill:()=>G,getConsoleUrl:()=>o,getCustomizationFlag:()=>xt,isAiEmbeddingsModelName:()=>ke,isBuiltInIntegrationId:()=>Xe,isIntegrationModelSpec:()=>Fe,isPlaceholderParam:()=>Pe,isVendorAiChatModelName:()=>ve,rawSquidHttpDelete:()=>Bi,rawSquidHttpGet:()=>xi,rawSquidHttpPatch:()=>Pi,rawSquidHttpPost:()=>Fi,rawSquidHttpPut:()=>ji,transformFileArgs:()=>qt,tryDeserializing:()=>Qi,visitQueryResults:()=>Ji});const r=["aiData","api","application","application-kotlin","auth","backend-function","connector","integration","internal-storage","internalCodeExecutor","management-secret","mutation","native-query","observability","openapi","query","queue","quota","scheduler","secret","storage","webhooks","ws","personalStorage","internal-extraction","notification"];function s(e,t,i,n,s,o){let a="https",c=`${n||t}.${s||e}.${new URL("https://squid.cloud").host}`,u="";/^local/.test(e)&&(a="http",u=r.includes(i.replace(/^\//,"").split("/")[0]||"")||o?"8001":"8000",/android$/.test(e)?c="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(c="localhost"));const l=a+"://"+c+(u?`:${u}`:""),h=i.replace(/^\/+/,"");return h?`${l}/${h}`:l}function o(e,t,i=""){return s(function(e,t){return t||(e.includes("sandbox")?"us-east-1.aws.sandbox":e.includes("local")?"local":e.includes("staging")?"us-central1.gcp.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}/integrations`)}async list(e){const t=await this.rpcManager.get(this.iacBaseUrl);return e?t.filter(t=>t.type===e):t}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}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 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 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 c{constructor(e){this.rpcManager=e}get apiKeys(){return new u(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 u{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 l{constructor(e,t,i,n){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=n,this.integrationClient=new a(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new c(this.rpcManager)}integrations(){return this.integrationClient}secrets(){return this.secretClient}}const h=require("rxjs");function d(e){return"function"==typeof e}function p(e){return function(t){if(function(e){return d(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 g=function(e,t){return g=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])},g(e,t)};function f(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}g(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function y(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 m(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)o.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return o}function b(e,t,i){if(i||2===arguments.length)for(var n,r=0,s=t.length;r<s;r++)!n&&r in t||(n||(n=Array.prototype.slice.call(t,0,r)),n[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var I,v=((I=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),I.prototype.constructor=I,I);function S(e,t){if(e){var i=e.indexOf(t);0<=i&&e.splice(i,1)}}var w=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,r;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var o=y(s),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 s.remove(this);var c=this.initialTeardown;if(d(c))try{c()}catch(e){r=e instanceof v?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=y(u),h=l.next();!h.done;h=l.next()){var p=h.value;try{M(p)}catch(e){r=null!=r?r:[],e instanceof v?r=b(b([],m(r)),m(e.errors)):r.push(e)}}}catch(e){i={error:e}}finally{try{h&&!h.done&&(n=l.return)&&n.call(l)}finally{if(i)throw i.error}}}if(r)throw new v(r)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)M(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)&&S(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&S(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function M(e){d(e)?e():e.unsubscribe()}w.EMPTY;var k={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];var r=k.delegate;return(null==r?void 0:r.setTimeout)?r.setTimeout.apply(r,b([e,t],m(i))):setTimeout.apply(void 0,b([e,t],m(i)))},clearTimeout:function(e){var t=k.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function T(){}var _=E("C",void 0,void 0);function E(e,t,i){return{kind:e,value:t,error:i}}var O=function(e){function t(t){var i,n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,((i=t)instanceof w||i&&"closed"in i&&d(i.remove)&&d(i.add)&&d(i.unsubscribe))&&t.add(n)):n.destination=q,n}return f(t,e),t.create=function(e,t,i){return new D(e,t,i)},t.prototype.next=function(e){this.isStopped?N(function(e){return E("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?N(E("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?N(_,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}(w);Function.prototype.bind;var C=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){A(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){A(e)}else A(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){A(e)}},e}(),D=function(e){function t(t,i,n){var r,s=e.call(this)||this;return r=d(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=n?n:void 0}:t,s.destination=new C(r),s}return f(t,e),t}(O);function A(e){!function(e){k.setTimeout(function(){throw e})}(e)}function N(e,t){var i=null;i&&k.setTimeout(function(){return i(e,t)})}var q={closed:!0,next:T,error:function(e){throw e},complete:T};function R(e,t,i,n,r){return new F(e,t,i,n,r)}var F=function(e){function t(t,i,n,r,s,o){var a=e.call(this,t)||this;return a.onFinalize=s,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=r?function(e){try{r(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 f(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}(O);function x(e,t){return p(function(i,n){var r=0;i.subscribe(R(n,function(i){n.next(e.call(t,i,r++))}))})}function j(e){return null!=e}let P=e=>new Error(e);function B(e,t,...i){e||function(e,...t){const i=Q(e);if("object"==typeof i)throw i;throw P(i||"Assertion error",...t)}(t,...i)}function L(e,t,...i){return B(e,t,...i),e}function Q(e){return void 0===e?"":"string"==typeof e?e:e()}function U(e,t,i){const n=Q(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)}`}function $(){return"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():G()}function G(){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 H(){return $()}const V=18,W="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function K(){return W.charAt(Math.floor(Math.random()*W.length))}function z(e=V,t="",i=""){B(t.length<e,"ID prefix is too long"),B(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let n="";for(let t=0;t<e;t++)n+=K();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)+K()+n.substring(t.length+1);return n}function J({count:e,length:t,prefix:i}){B(e>=0,`Invalid IDs count: ${e}`);const n=new Set;for(;n.size<e;)n.add(z(t||V,i||""));return[...n]}const Y=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Z(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Z(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Z(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(Y.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${Y.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 X(e,t,i){const n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new File([r],t,{type:i||"application/octet-stream"})}class ee{constructor(e,t,i,n,r,s,o){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=n,this.socketManager=r,this.jobClient=s,this.backendFunctionManager=o}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();B(t,"Agent not found");const i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}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),r=await L(n.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:n.responseStream,transcribedPrompt:r.transcribedPrompt}}async ask(e,t,i){const n=await this.askInternal(e,!1,t,i);return this.replaceFileTags(n.responseString,n.annotations)}async askWithAnnotations(e,t,i){const n=await this.askInternal(e,!1,t,i);return{responseString:n.responseString,annotations:n.annotations}}async askAsync(e,t,i){const n={agentId:this.agentId,prompt:e,options:i,jobId:t};await this.post("ai/chatbot/askAsync",n)}observeStatusUpdates(e){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiStatus"===e.type&&e.agentId===this.agentId),(0,h.filter)(t=>!e||t.jobId===e),x(e=>({agentId:this.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.messageId})))}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),r=n.voiceResponse;return{responseString:n.responseString,transcribedPrompt:n.transcribedPrompt,voiceResponseFile:X(r.base64File,`voice.${r.extension}`,r.mimeType)}}async askWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),r=n.voiceResponse;return{responseString:n.responseString,voiceResponseFile:X(r.base64File,`voice.${r.extension}`,r.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}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){const i={agentId:this.agentId,request:e,memoryId:t};return await this.backendFunctionManager.executeFunction("buildAgent",i)}replaceFileTags(e,t={}){let i=e;for(const[e,n]of Object.entries(t)){let t="";const r=n.aiFileUrl.fileName?n.aiFileUrl.fileName:n.aiFileUrl.url;switch(n.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${r}](${n.aiFileUrl.url})`}const s=`\${id:${e}}`;i=i.replaceAll("`"+s+"`",t).replaceAll(s,t)}return i}async askInternal(e,t,i,n){if(i?.contextMetadataFilter&&Z(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)Z(i.contextMetadataFilterForKnowledgeBase[e]);n=n||$(),i={...te,...i||{}};const r="string"==typeof e;let s="ai/chatbot/";s+=r||t?!r&&t?"transcribeAndAskWithVoiceResponse":r&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const o={agentId:this.agentId,prompt:r?e:void 0,options:i,jobId:n},a=r?void 0:[e];return await this.post(s,o,a,"file"),await this.jobClient.awaitJob(n)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Z(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Z(t.contextMetadataFilterForKnowledgeBase[e]);const n=$(),r=void 0===(t={...te,...t||{}}).smoothTyping||t.smoothTyping;let s="";const o=new h.Subject,a=new h.Subject;this.ongoingChatSequences[n]=a;let c=-1;a.pipe((0,h.tap)(({tokenIndex:e})=>{void 0!==e&&e<c&&console.warn("Received token index out of order",e,c),void 0!==e&&(c=e)}),(0,h.concatMap)(({value:e,complete:t,annotations:i})=>t?(0,h.of)({value:e,complete:t,annotations:i}):(0,h.of)(e).pipe(r?(0,h.delay)(0):(0,h.tap)(),x(e=>({value:e,complete:!1,annotations:void 0})))),(0,h.takeWhile)(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{s+=e,t&&i&&(s=this.replaceFileTags(s,i)),o.next(s)},error:e=>{console.error(e)},complete:()=>{o.complete()}});const u="string"==typeof e;i=i||$();const l={agentId:this.agentId,jobId:i,prompt:u?e:void 0,options:t,clientRequestId:n},d={responseStream:o.pipe((0,h.finalize)(()=>{delete this.ongoingChatSequences[n]}),(0,h.share)())};return u?this.post("ai/chatbot/chat",l).catch(e=>{o.error(e),o.complete()}):this.post("ai/chatbot/transcribeAndChat",l,[e],"file").catch(e=>{throw o.error(e),o.complete(),e}),d.serverResponse=this.jobClient.awaitJob(i).catch(e=>{o.error(e),o.complete()}),d}async post(e,t,i=[],n="files"){const r={};return this.agentApiKey&&(r["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,n,r)}}const te={smoothTyping:!0,responseFormat:"text"};class ie{constructor(e,t,i,n){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=n,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiChatbot"===e.type),x(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new ee(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)}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:r,annotations:s}=e.payload;if(n&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:s});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:n,tokenIndex:void 0===r?void 0:r,annotations:s});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:n&&e===i.length-1,tokenIndex:void 0===r?void 0:r,annotations:s})}}const ne="__squid_empty_chat_id";class re{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 X(n.base64File,`audio.${n.extension}`,n.mimeType)}}class se{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 oe{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 ae(e){for(const t in e){const i=e[t];B("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),B(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}class ce{constructor(e,t,i){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i}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 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 listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e})).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 upsertContext(e,t){const{failures:i}=await this.upsertContexts([e],t?[t]:void 0);return i.length>0?{failure:i[0]}:{}}async upsertContexts(e,t){for(const t of e)t.metadata&&ae(t.metadata);const i=$();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:i},t),await this.jobClient.awaitJob(i)}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 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 ue{constructor(e,t){this.rpcManager=e,this.jobClient=t}knowledgeBase(e){return new ce(e,this.rpcManager,this.jobClient)}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 le{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new he(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new he(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class he{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}}const de=["user","ai"],pe=["cohere","none"],ge=["anthropic","bedrock","claude-code","flux","gemini","openai","grok","stability","voyage","mistral","textract","external"],fe=["gpt-5-mini","gpt-5-nano","gpt-5.2","gpt-5.2-pro"],ye=["gemini-3-pro","gemini-3-flash"],me=["grok-4","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],be=["claude-haiku-4-5-20251001","claude-opus-4-6","claude-opus-4-5-20251101","claude-sonnet-4-5-20250929"],Ie=[...fe,...be,...ye,...me];function ve(e){return Ie.includes(e)}const Se=["text-embedding-3-small"],we=["voyage-3-large"],Me=[...Se,...we];function ke(e){return Me.includes(e)}const Te=["dall-e-3"],_e=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],Ee=["tts-1","tts-1-hd","gpt-4o-mini-tts"],Oe=[..._e,...Ee],Ce=["stable-diffusion-core"],De=["flux-pro-1.1","flux-kontext-pro"],Ae=[...Te,...Ce,...De],Ne=[..._e],qe=[...Ee],Re=["mp3","opus","aac","flac","wav","pcm"];function Fe(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const xe=["contextual","basic"],je=["secret","regular"];function Pe(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const Be=["dev","prod"],Le="built_in_agent",Qe={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},Ue="ai_agents",$e=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","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","dynamodb","elasticsearch","firebase_auth","firestore","gcs","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","oracledb","pinecone","postgres","redis","s3","salesforce_crm","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","mcp","a2a","legend","teams","openai_compatible"],Ge=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],He=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth"],Ve=["graphql"],We=["api"],Ke=["data","api","graphql"],ze="built_in_db",Je="built_in_queue",Ye="built_in_storage",Ze=[ze,Je,Ye];function Xe(e){return Ze.includes(e)}const et=["squid_functionExecution_count","squid_functionExecution_time"],tt=["sum","max","min","average","median","p95","p99","count"],it=["user","squid"],nt=["align-by-start-time","align-by-end-time"],rt=["in","not in","array_includes_some","array_includes_all","array_not_includes"],st=[...rt,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],ot=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],at=["CONNECTED","DISCONNECTED","REMOVED"];class ct{constructor(e,t,i,n){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.backendFunctionManager=n}agent(e=Le,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||{})}image(){return new oe(this.rpcManager)}audio(){return new re(this.rpcManager)}matchMaking(){return new le(this.rpcManager)}files(e){return new se(e,this.rpcManager)}executeAiQuery(e,t,i){const n={integrationId:e,prompt:t,options:i};return this.rpcManager.post("ai/query/executeDataQuery",n)}executeAiApiCall(e,t,i,n){const r={integrationId:e,prompt:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeApiQuery",r)}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 this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiStatus"===e.type),(0,h.filter)(t=>!e||t.jobId===e),(0,h.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.messageId})))}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new ie(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new ue(this.rpcManager,this.jobClient)),this.aiKnowledgeBaseClient}}const ut={headers:{},queryParams:{},pathParams:{}};class lt{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,r){const s={integrationId:e,endpointId:t,body:i,options:{...ut,...this.convertOptionsToStrings(n||{})},overrideMethod:r};return await this.rpcManager.rawPost("api/callApi",s,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 ht{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 dt=/[.\[\]]/;function pt(e,t){if(!e)return;const i=t.split(dt);let n,r=e;for(;r&&i.length;){const e=i.shift();if(e){if("object"!=typeof r||!(e in r))return;n=r[e],r=n}}return n}function gt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function ft(e,t,i,n="."){const r=t.split(n);let s=e;for(;r.length;){const e=L(r.shift());if(r.length){const t=s[e],i=gt(t)?wt(t)??{}:{};s[e]=i,s=i}else s[e]=i}}function yt(e,t,i="."){const n=t.split(i);let r=e;for(;n.length;){const e=L(n.shift());if(n.length){const t=gt(r[e])?wt(r[e])??{}:{};r[e]=t,r=t}else delete r[e]}}function mt(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function bt(e){return null==e}function It(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),r=Object.keys(t);if(n.length!==r.length)return!1;for(const i of n)if(!r.includes(i)||!It(e[i],t[i]))return!1;return!0}function vt(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=St(e[n],t);return i}function St(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 vt(e,t);if(e instanceof Map)return new Map(vt(Array.from(e),t));if(e instanceof Set)return new Set(vt(Array.from(e),t));if(ArrayBuffer.isView(e))return(n=e)instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length);var n;const r={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(r[i]=St(e[i],t));return r}function wt(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 Mt(e,t){if(e===t||bt(e)&&bt(t))return 0;if(bt(e))return-1;if(bt(t))return 1;const i=typeof e,n=typeof t;return i!==n?i<n?-1:1:"number"==typeof e?(B("number"==typeof t),isNaN(e)&&isNaN(t)?0:isNaN(e)?-1:isNaN(t)?1:e<t?-1:1):"boolean"==typeof e?(B("boolean"==typeof t),e<t?-1:1):"bigint"==typeof e?(B("bigint"==typeof t),e<t?-1:1):"string"==typeof e?(B("string"==typeof t),e<t?-1:1):e instanceof Date&&t instanceof Date?Math.sign(e.getTime()-t.getTime()):0}function kt(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function Tt(e){if(Array.isArray(e))return e.map(e=>Tt(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]=Tt(e[t])}),i}function _t(e){return Et(Tt(e))}function Et(e){if(void 0===e)return null;const t=St(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function Ot(e){return St(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 Ct(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=Et(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 Dt=(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},At=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(Et(e[i])!==Et(t[i]))return!1;return!0};class Nt{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||Dt,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 qt(e){const t=[],i=[];let n=0;for(const r of e)if("undefined"!=typeof File)if(r instanceof File){i.push(r);const e={type:"file",__squid_placeholder__:!0,fileIndex:n++};t.push(e)}else if(Rt(r)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:r.map((e,t)=>(i.push(r[t]),n++))};t.push(e)}else t.push(r);else t.push(r);return{argsArray:t,fileArray:i}}function Rt(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class Ft{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:n,fileArray:r}=qt(i),s="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?Dt:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===s&&e(t.args,n));if(t)return t.promise}const u=this.createExecuteCallPromise(s,n,r,a,t);return c&&(this.inFlightDedupCalls.push({functionName:s,args:n,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,n,r={}){const s=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:Et(t)},a=Ot((await this.rpcManager.post(s,o,i.length>0?i:[],"files",r)).payload);if(a?.__isSquidBase64File__){const e=a;return X(e.base64,e.filename,e.mimetype)}return n&&n.set(t,a),a}}function xt(e){if("undefined"!=typeof globalThis)return globalThis[e]}function jt(){if("undefined"!=typeof window)return window;if(void 0!==i.g)return i.g;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}!function(e=!0){jt().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 Pt{static debug(...e){(function(){const e=jt();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=jt();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Bt{constructor(e){this.destructManager=e,this.clientTooOldSubject=new h.BehaviorSubject(!1),this.isTenant=!0===jt().squidTenant,this.clientIdSubject=new h.BehaviorSubject(this.generateClientId()),this.destructManager.onDestruct(()=>{this.clientTooOldSubject.complete(),this.clientIdSubject.complete()})}observeClientId(){return this.clientIdSubject}observeClientTooOld(){return this.clientTooOldSubject.pipe((0,h.filter)(e=>e),(0,h.map)(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe((0,h.skip)(1),(0,h.filter)(e=>!e),(0,h.map)(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=jt()[Qt];return e?e():$()}generateClientId(){const e=jt()[Lt];if(e)return e();let t=`${this.isTenant?"tenant-":""}${$()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const Lt="SQUID_CLIENT_ID_GENERATOR",Qt="SQUID_CLIENT_REQUEST_ID_GENERATOR",Ut="__squidId";function $t(e){return Ot(e)}function Gt(...e){const[t,i,n]=e,r="object"==typeof t?t:{docId:t,collectionName:i,integrationId:n};return r.integrationId||(r.integrationId=void 0),_t(r)}function Ht(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return It(e,t);if("!="===i)return!It(e,t);switch(i){case"<":return!bt(e)&&(!!bt(t)||t<e);case"<=":return!!bt(t)||!bt(e)&&t<=e;case">":return!bt(t)&&(!!bt(e)||t>e);case">=":return!!bt(e)||!bt(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Vt(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Vt(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Vt(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Vt(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>L(i,"VALUE_CANNOT_BE_NULL").some(t=>It(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>L(i,"VALUE_CANNOT_BE_NULL").some(t=>It(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!L(i,"VALUE_CANNOT_BE_NULL").some(t=>It(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function Vt(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 Wt(e,t){return`${e}_${t}`}function Kt(e){return"fieldName"in e}class zt{constructor(e,t,i){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.refId=$()}get squidDocId(){return this._squidDocId}get data(){return St(this.dataRef)}get dataRef(){return L(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=$t(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`})}get hasData(){return!!this.dataManager.getProperties(this.squidDocId)}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 L(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,h.map)(e=>(L(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:$t(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:St(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},r={type:"update",squidDocIdObj:$t(this.squidDocId),properties:{[e]:[n]}};return this.dataManager.applyOutgoingMutation(r,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async insert(e,t){const i=$t(this.squidDocId),n=i.integrationId;let r=Ot(i.docId);if(r[Ut]&&(r={}),n===ze&&r.__id)try{const e=Ot(r.__id);r={...r,...e}}catch{}const s={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...r}};return this.dataManager.applyOutgoingMutation(s,t)}async delete(e){const t={type:"delete",squidDocIdObj:$t(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)}hasSquidPlaceholderId(){const e=Ot(this._squidDocId);if("object"==typeof e&&e.docId){const t=Ot(e.docId);if("object"==typeof t&&Object.keys(t).includes(Ut))return!0}return!1}}class Jt{constructor(e,t={}){this.internalStateObserver=new h.BehaviorSubject(null),this.firstElement=null,this.isDestroyed=new h.BehaviorSubject(!1),this.snapshotSubject=new h.Subject,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,B(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe((0,h.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,h.filter)(e=>null!==e),(0,h.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,h.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||bt(e)&&bt(t))return 0;if(bt(e))return-1;if(bt(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:r}of i){const i=Mt(pt(e,n),pt(t,n));if(0!==i)return r?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:pt(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe((0,h.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:pt(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,h.firstValueFrom)((0,h.race)(this.isDestroyed.pipe((0,h.filter)(Boolean),(0,h.map)(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe((0,h.filter)(e=>null!==e),(0,h.take)(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:n,extractedData:r}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(r[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)}}Error;class Yt{constructor(e,t,i,n){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=n}getForDocument(e){const{collectionName:t,integrationId:i,docId:n}=$t(e),r=Ot(n),s=this.get(t,i);for(const[e,t]of Object.entries(r))s.where(e,"==",t);return s}get(e,t){return new ei(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService)}}class Zt{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)}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(/\\(?![%_\\])/.test(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class Xt{constructor(e){this.queryBuilder=e}peek(){return this.queryBuilder.peek().map(e=>e.data)}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1).pipe((0,h.defaultIfEmpty)([])))}snapshots(e){return this.queryBuilder.snapshots(e).pipe(x(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new Xt(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}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new Jt(this,e)}}class ei extends Zt{constructor(e,t,i,n,r,s,o){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=n,this.documentReferenceFactory=r,this.queryBuilderFactory=s,this.documentIdentityService=o,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return Ct(this.build())}where(e,t,i){if(B(st.includes(t),`Invalid operator: ${t}`),"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;B(function(e){return"number"==typeof e}(t=e),()=>U("Limit needs to be a number","Not a number",t)),-1!==e&&(B(e>0,"query limit has to be greater than 0"),B(Math.floor(e)===e,"query limit has to be an integer"),B(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 B(It(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};return function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,n,r,s;B((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"),B((r=t.asc,s="boolean",Array.isArray(r)?r.every(e=>typeof e===s):typeof r===s),"Asc needs to be boolean")}(i),B(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.sortOrder.push(i),this}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1).pipe((0,h.defaultIfEmpty)([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new h.BehaviorSubject([]);const t=this.build();return this.querySubscriptionManager.processQuery(t,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(x(e=>e.map(e=>{B(1===Object.keys(e).length);const t=Gt(L(e[this.collectionName]).__docId__,this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)})))}changes(){let e,t=new Set;return this.snapshots().pipe((0,h.combineLatestWith)(this.documentIdentityService.observeChanges().pipe((0,h.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)}),h.NEVER)),(0,h.startWith)({}))),x(([i])=>{let n=[];const r=[],s=[];if(e){for(const s of i){const i=s.squidDocId,o=s.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){r.push(s);const n=e[i];delete e[i],t.delete(n)}else n.push(s)}for(const e of t)s.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 ti(n,r,s)}))}dereference(){return new Xt(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new ei(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService);return e.query=St(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){return e.length?(this.query.conditions.push({fields:e}),this):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 Jt(this,e)}mergeConditions(){const e=[],t=kt(this.query.conditions.filter(Kt)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=kt(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)=>Mt(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!Kt(e)),...e]}}class ti{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class ii extends Zt{constructor(e,t,i,n,r,s,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=n,this.queryBuilderFactory=r,this.rootAlias=s,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}join(e,t,i,n){const r=n?.leftAlias??this.latestAlias,s={...i,leftAlias:r,isInner:n?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[r].push(t),new ii(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:s},this.queryBuilder)}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new h.BehaviorSubject([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,St(this.joins),St(this.joinConditions),e,!1).pipe(x(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,r=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,s=n?Gt(n.__docId__,e,r):void 0;t[i]=s?this.documentReferenceFactory.create(s,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new si(this)}dereference(){return new ni(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ii(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,St(this.leftToRight),St(this.joins),St(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 Jt(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class ni{constructor(e){this.joinQueryBuilder=e}grouped(){return this.joinQueryBuilder.grouped().dereference()}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(x(e=>e.map(e=>function(e,t){const i={},n=Object.keys(e);for(const r of n){const n=e[r];i[r]=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 ni(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 Jt(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class ri{constructor(e){this.groupedJoin=e}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(x(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 ri(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 Jt(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 si{constructor(e){this.joinQueryBuilder=e}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(x(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new ri(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new si(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 Jt(this,e)}groupData(e,t){const i=kt(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 r={[t]:n};for(const t of i)r[t]=this.groupData(e,t);return r})}}class oi{constructor(e,t,i,n,r,s){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=n,this.querySubscriptionManager=r,this.dataManager=s,this.refId=$()}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!==ze)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={[Ut]:$()};else e=e&&"string"!=typeof e?{__id:_t(e)}:{__id:e||$()};const t=Gt(_t(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).insert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof zt?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new ii(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new ai(...e)}}class ai{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,h.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 ai(...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 Jt(this,e)}or(e,...t){return(0,h.combineLatest)([...t]).pipe((0,h.map)(t=>{const i=new Set,n=t.flat(),r=[];for(const e of n)i.has(this.extractData(e))||(i.add(this.extractData(e)),r.push(e));return r.sort((t,i)=>{for(const{fieldName:n,asc:r}of e){const e=pt(this.extractData(t),n),s=pt(this.extractData(i),n);if(!Ht(e,s,"=="))return Ht(s,e,"<")?r?-1:1:r?1:-1}return 0}).slice(0,this.getLimit())}))}}class ci{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 oi(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class ui{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 li=i(150);function hi(e,t){switch(t.type){case"applyNumericFn":return function(e,t){if("increment"===t.fn)return null==e?t.value:e+t.value;throw new Error("Unknown numeric function: "+JSON.stringify(t))}(e,t);case"applyStringFn":return function(e,t){switch(t.fn){case"trim":return"string"!=typeof e?e:e.trim();case"extendString":return null==e?t.value:e+t.value;default:throw new Error("Unknown string function: "+JSON.stringify(t))}}(e,t);case"update":return"object"==typeof t.value?St(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function di(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function pi(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if(B("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=St(e);t=St(t);for(const[e]of di(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 di(t))i.properties[e]=gi([...i.properties[e]||[],...n]);return i}(e,t);const i=St(e);for(const[e,n]of di(t)){const t=n;for(const n of t){const t=hi(pt(i.properties,e),n);void 0===t?yt(i.properties,e):ft(i.properties,e,t)}}return i}function gi(e){let t=0;for(;t+1<e.length;){const i=fi(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function fi(e,t){return"removeProperty"===t.type||"update"===t.type?t:"applyNumericFn"===t.type?(B("increment"===t.fn,"Unrecognized applyNumericFn"),"applyNumericFn"===e.type?(B("increment"===e.fn,"Unrecognized applyNumericFn"),{type:"applyNumericFn",fn:"increment",value:e.value+t.value}):"update"===e.type?{type:"update",value:e.value+t.value}:t):"extendString"===t.fn?"update"===e.type?{type:"update",value:e.value+t.value}:"applyStringFn"===e.type?"trim"===e.fn?null:{type:"applyStringFn",fn:"extendString",value:e.value+t.value}:t:null}function yi(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)=>L(pi(e,t),"Merge result cannot be null"));i.push(n)}return i}const mi="dataManager_runInTransaction";class bi{constructor(e,t,i,n,r,s,o,a,c){this.documentStore=e,this.mutationSender=t,this.socketManager=i,this.querySubscriptionManager=n,this.queryBuilderFactory=r,this.lockManager=s,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 h.Subject,this.outgoingMutationsEmpty=new h.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)}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 runInTransaction(e,t){if(t)return B(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(mi)?this.lockManager.lockSync(mi):await this.lockManager.lock(mi);let i=Ii;const n=()=>i!==Ii;return new Promise(async(t,r)=>{try{let s;this.currentTransactionId=$();try{s=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(n()?void 0:{resolve:()=>t(s),reject:r})}}catch(e){i=n()?i:e}finally{try{this.lockManager.release(mi)}catch(e){i=n()?i:e}}n()&&r(i)})}async applyOutgoingMutation(e,t){const i=Gt(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(mi)||(await this.lockManager.lock(mi),this.lockManager.release(mi)),this.knownDirtyDocs.delete(i);const n=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(n&&!n.sentToServer)n.mutation=L(yi([n.mutation,this.removeInternalProperties(e)])[0],"Failed to reduce mutations"),this.outgoingMutationsEmpty.next(!1);else{const t={mutation:this.removeInternalProperties(e),sentToServer:!1},n=this.pendingOutgoingMutations.get(i)||[];n.push(t),this.pendingOutgoingMutations.set(i,n),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?function(e,t){if(!e)return;const i={...e},n=di(t);for(const[e,t]of n){const n=t;for(const t of n){const n=hi(pt(i,e),t);void 0===n?yt(i,e):ft(i,e,n)}}return i}(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 B(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(mi);try{this.currentTransactionId=$();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(mi)}}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,h.filter)(e=>"mutations"===e.type),x(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,h.filter)(Boolean),(0,h.take)(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,h.filter)(Boolean),(0,h.take)(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t=e.reduce((e,t)=>this.querySubscriptionManager.hasOngoingQuery(t.clientRequestId)?(e[t.squidDocId]={properties:t.doc,timestamp:t.mutationTimestamp},e):e,{});this.applyIncomingUpdates(t)}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId),i={};for(const n of e.docs){const e=Gt(n.__docId__,t.collectionName,t.integrationId);i[e]={properties:n,timestamp:n.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),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,r=new Set;for(const[t,s]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>s.timestamp?i=!0:o&&o.timestamp>s.timestamp?r.add(t):(this.pendingIncomingUpdates.set(t,s),n.add(t))}return this.runInTransactionSync(()=>{for(const e of n)this.maybeApplyIncomingUpdate(e);for(const e of r)this.refreshQueryMapping(e)},t),i}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||_t({...t,__ts__:void 0})!==_t(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 li.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(),this.hasPendingSentMutations()?(await(0,h.firstValueFrom)(this.pendingOutgoingMutationsChanged.pipe((0,h.filter)(()=>!this.hasPendingSentMutations()))),e?.resolve()):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:r=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(n),r.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=Gt(e.mutation.squidDocIdObj),i=L(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}=$t(t);this.setExpiration(t,!0);try{const i=e.includes(Ut)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(L(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),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=Gt(t.mutation.squidDocIdObj),n=e[i];n&&(t.mutation.squidDocIdObj=$t(n))})}),Object.entries(e).forEach(([e,t])=>{mt(this.pendingOutgoingMutations,e,t),mt(this.docIdToLocalTimestamp,e,t),mt(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 Ii=Symbol("undefined");class vi{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new h.BehaviorSubject(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe((0,h.filter)(Boolean),x(()=>{}))}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 Si{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{e||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(),B(await(0,h.firstValueFrom)((0,h.race)((0,h.timer)(this.lockWaitForConnectionThreshold).pipe(x(()=>!1)),this.socketManager.observeConnectionReady().pipe((0,h.filter)(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const r=$(),s={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:n,clientRequestId:r}};this.socketManager.postMessage(s);const o=await(0,h.firstValueFrom)((0,h.race)((0,h.timer)(i+4e3).pipe((0,h.take)(1),x(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:r}}))),this.acquireLockMessagesFromServer.pipe((0,h.filter)(e=>e.payload.clientRequestId===r)))),a=o.payload.lockId;B(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),B(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new wi(a,e,r,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 wi{constructor(e,t,i,n,r){this.lockId=e,this.resourceId=t,this.clientRequestId=i,this.ongoingLocks=n,this.socketManager=r,this.released=!1,this.onReleaseSubject=new h.Subject}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}};try{await this.socketManager.sendMessage(e)}finally{this.onReleaseSubject.next(),this.onReleaseSubject.complete()}}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}class Mi{constructor(e,t){this.documentStore=e,this.destructManager=t,this.changeNotifier=new h.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 ki{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t){let i=this.documents.get(e);if(i)return i;i=new zt(e,L(this.dataManager,"dataManager not found"),t);const{integrationId:n,collectionName:r}=$t(e);this.documents.set(e,i);const s=this.getCollectionKey(n,r),o=this.documentsForCollection.get(s)||[];return this.documentsForCollection.set(s,o.concat(i)),i}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=$t(e),n=$t(t);mt(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class Ti{constructor(){this.squidDocIdToDoc=new Map}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=St(t),n=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,n),n}return void this.squidDocIdToDoc.delete(e)}const n=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,n),t}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocument(e){return L(this.getDocumentOrUndefined(e))}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}group(e,t){return Object.values(kt(e,e=>_t(t.map(t=>pt(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=[...e].map(e=>this.squidDocIdToDoc.get(e)).filter(j),{sortOrder:n,limitBy:r}=t,s=i.sort((e,t)=>this.compareSquidDocs(e,t,n)),o=t.limit<0?2e3:t.limit;if(!r)return s.slice(0,o);const{limit:a,fields:c,reverseSort:u}=r,l=this.group(s,c);let h;return h=u?l.map(e=>e.slice(-a)):l.map(e=>e.slice(0,a)),h.flat().slice(0,o)}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;mt(this.squidDocIdToDoc,e,t);const n=$t(t),r=Ot(n.docId);this.saveDocument(t,{...i,...r,__docId__:n.docId})}compareSquidDocs(e,t,i){for(const{fieldName:n,asc:r}of i){const i=Mt(pt(e,n),pt(t,n));if(0!==i)return r?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class _i{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 Ei{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 Oi{constructor(e,t,i,n){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.runtimeOptions=n,this.isListening=!1,this.listeners={},n.isPassiveMode||this.clientIdService.observeClientId().pipe((0,h.distinctUntilChanged)(),(0,h.skip)(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))Pt.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e})})}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 h.ReplaySubject(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}),(0,h.firstValueFrom)(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"jobStatus"===e.type)).subscribe(e=>{const t=e.payload,i=t.id,n=this.listeners[i];n&&("completed"===t.status?n.next(t.result):"failed"===t.status?n.error(new Error(t.error||"Job failed")):console.error("Unexpected job status:",t.status,"for jobId:",i),delete this.listeners[i])}))}}const Ci="squid_mgmt_",Di={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",SOURCE_IP:"x-squid-source-ip"};function Ai(e="n_"){return`${e}${z(10).toLowerCase()}`}const Ni=e=>e();class qi extends Error{constructor(e,t,i,n,r){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=r}}const Ri="1.0.440";async function Fi(e){const t=await Li({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=Qi(t.body),t}async function xi(e){const t=await Li({...e,method:"GET",files:[],filesFieldName:""});return t.body=Qi(t.body),t}async function ji(e){const t=await Li({...e,method:"PUT"});return t.body=Qi(t.body),t}async function Pi(e){const t=await Li({...e,method:"PATCH"});return t.body=Qi(t.body),t}async function Bi(e){const t=await Li({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=Qi(t.body),t}async function Li({headers:e,files:t,filesFieldName:i,message:n,url:r,extractErrorMessage:s,method:o}){const a=new Headers(e);a.append(Di.TRACE_ID,Ai("c_")),a.append(Di.CLIENT_VERSION,Ri);const c={method:o,headers:a,body:void 0};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",Et(n)),c.body=e}else void 0!==n&&(a.append("Content-Type","application/json"),c.body=Et(n));else"DELETE"===o&&void 0!==n&&(a.append("Content-Type","application/json"),c.body=Et(n));try{const e=await fetch(r,c),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),n=Qi(i);if(!s)throw new qi(i,e.status,r,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new qi(o,e.status,r,t,n)}const i=await e.text();return Pt.debug(`received response from url ${r}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw Pt.debug(`Unable to perform fetch request to url: ${r}`,e),e}}function Qi(e){if(e){try{return Ot(e)}catch{}return e}}class Ui{constructor(e){B(e.apiKey.startsWith(Ci),`Invalid management API key format. Key must start with '${Ci}'`),this.apiKey=e.apiKey,this.region=e.region}async createOrganization(e){return this.callWebhook("management-createOrganization",e)}async createApplication(e){return this.callWebhook("management-createApplication",e)}async deleteApplication(e){await this.callWebhook("management-deleteApplication",e)}async callWebhook(e,t){const i=s(this.getConsoleRegion(),"console",`webhooks/${e}`);return(await Fi({url:i,headers:{Authorization:`ManagementKey ${this.apiKey}`},message:t,files:[],filesFieldName:"",extractErrorMessage:!0})).body}getConsoleRegion(){return this.region.includes("local")?"local":this.region.includes("sandbox")?"us-east-1.aws.sandbox":this.region.includes("staging")?"us-central1.gcp.staging":"us-east-1.aws"}}class $i{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=yi(e),n=i.map(e=>`sendMutation_${Gt(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 Pt.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}}class Gi{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class Hi{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"userNotification"===e.type),(0,h.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 Vi={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class Wi{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!Ki.test(e)||e.length>=zi);B(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},r=this.rpcManager.post("/observability/metrics",{metrics:[n]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==r),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(r)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...Vi,...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,r=void 0===e.fillValue?null:e.fillValue,s=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-start-time"===n)return e;const r=t-e;let s=t-Math.floor(r/i)*i;return s>e&&(s-=i),s}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-end-time"===n)return t-i;const r=t-e;let s=e+Math.floor(r/i)*i;return s>=t&&(s-=i),s}(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],r=a[n]?.[0]||"";i.push(r)}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 r=e.groupByTags.indexOf(i);if(!(r<0))for(let e=0;e<t.length;e++){const i=t[e],s=new Set(n);for(let e=0;e<t.length;e++){const n=t[e];i.tagValues.every((e,t)=>t===r||e===n.tagValues[t])&&s.delete(n.tagValues[r])}if(0!==s.size)for(const e of s){const n={tagValues:[...i.tagValues],points:[]};n.tagValues[r]=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];B(e>=s,()=>`Invalid first point time: ${e}`),B(t<=o,()=>`Invalid last point time: ${t}`)}const t=[];let a=0;const c=e=>"count"===e?0:r,u=Array.isArray(e.fn)?e.fn.map(c):[r];for(let e=s;e<=o;e+=i){const i=n.points[a];i?i[0]===e?(t.push(i),a++):(B(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 Ki=/^[a-zA-Z0-9_-]+$/,zi=1e3;async function Ji(e,t,i=500){const n=Date.now(),r=e.paginate({pageSize:i,subscribe:!1});let s=0,o=await r.waitForData();for(;;){for(const e of o.data)s++,await t(e.data);if(!o.hasNext)break;o=await r.next()}return{count:s,time:Date.now()-n}}function Yi(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:n}=t,{collectionName:r,integrationId:s}=i;let o=e.collection(r,s).query();return o=Zi(o,i),n?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:n,joinConditions:r,dereference:s,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=Zi(u,i.query),Object.entries(n).map(([t,i])=>{const{collectionName:n,integrationId:s}=i,{left:o,right:a,leftAlias:c}=r[t];let l=e.collection(n,s).query();l=Zi(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),s&&o?u.grouped().dereference():s?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:n,integrationId:r}=Xi(i[0]),s=i.map(t=>Yi(e,t));return e.collection(n,r).or(...s)}(e,t)}}function Zi(e,t){const{conditions:i,limit:n,sortOrder:r}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");const{fieldName:i,operator:n,value:r}=t;e.where(i,n,r)}e.limit(n);for(const{fieldName:t,asc:i}of r)e.sortBy(t,i);return e}function Xi(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 Xi(e.queries[0])}}const en={"in:in":(e,t)=>e.every(e=>t.includes(e)),"in:not in":(e,t)=>e.every(e=>!t.includes(e)),"not in:not in":(e,t)=>t.every(t=>e.includes(t)),">:not in":(e,t)=>t.every(t=>e>=t),">=:not in":(e,t)=>t.every(t=>e>t),"<:not in":(e,t)=>t.every(t=>e<=t),"<=:not in":(e,t)=>t.every(t=>e<t),">:>":(e,t)=>e>=t,">=:>":(e,t)=>e>t,"in:>":(e,t)=>e.every(e=>e>t),">:>=":(e,t)=>e>=t,">=:>=":(e,t)=>e>=t,"in:>=":(e,t)=>e.every(e=>e>=t),"<:<":(e,t)=>e<=t,"<=:<":(e,t)=>e<t,"in:<":(e,t)=>e.every(e=>e<t),"<:<=":(e,t)=>e<=t,"<=:<=":(e,t)=>e<=t,"in:<=":(e,t)=>e.every(e=>e<=t),"like:like":(e,t)=>tn(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>tn(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>tn(e,t)&&rn(t),"like_cs:like_cs":(e,t)=>tn(e,t),"like:not like":(e,t)=>!nn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!nn(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!nn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!nn(e,t),"not like:like":(e,t)=>on(e,t),"not like_cs:like":(e,t)=>on(e,t),"not like:like_cs":(e,t)=>on(e,t),"not like_cs:like_cs":(e,t)=>on(e,t),"not like:not like":(e,t)=>tn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>tn(t,e)&&rn(e),"not like:not like_cs":(e,t)=>tn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>tn(t,e),"in:like":(e,t)=>e.every(e=>Ht(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Ht(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>Ht(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>Ht(t,e,"not like_cs")),"like:in":(e,t)=>!e.includes("%")&&!e.includes("_")&&!!t.find(t=>t.toLowerCase()===e.toLowerCase()),"like_cs:in":(e,t)=>!e.includes("%")&&!e.includes("_")&&t.includes(e),"not like:in":(e,t)=>e.length>0&&sn(e)||an(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&sn(e)||an(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&sn(t)||an(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&sn(t)||an(t)&&e.includes(""),"not in:not like":(e,t)=>!t.includes("%")&&!t.includes("_")&&!!e.find(e=>e.toLowerCase()===t.toLowerCase()),"not in:not like_cs":(e,t)=>!t.includes("%")&&!t.includes("_")&&e.includes(t),"like:not in":(e,t)=>t.every(t=>Ht(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Ht(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Ht(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Ht(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)=>e.every(e=>t.includes(e)),"array_not_includes:array_not_includes":(e,t)=>t.every(t=>e.includes(t)),"array_includes_some:array_not_includes":(e,t)=>e.every(e=>!t.includes(e)),"array_not_includes:array_includes_some":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_some:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_includes_all":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_not_includes":(e,t)=>e.every(e=>!t.includes(e))};function tn(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return sn(t.substring(n));const r=e[i],s=t[n];return"%"===r&&"%"===s?tn(e,t,i+1,n+1)||tn(e,t,i+1,n):"%"!==r&&("%"===s?tn(e,t,i,n+1)||tn(e,t,i+1,n):(r===s||"_"===s)&&tn(e,t,i+1,n+1))}function nn(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return sn(t.substring(n));if(n>=t.length)return sn(e.substring(i));const r=i<e.length?e[i]:"",s=n<t.length?t[n]:"";return"%"===r&&"%"===s?nn(e,t,i+1,n+1)||nn(e,t,i,n+1)||nn(e,t,i+1,n):"%"===r||"%"===s?nn(e,t,i,n+1)||nn(e,t,i+1,n):(r===s||"_"===r||"_"===s)&&nn(e,t,i+1,n+1)}function rn(e){return!/[a-zA-Z]/.test(e)}function sn(e){return e.split("").every(e=>"%"===e)}function on(e,t){return e.length>0&&sn(e)||t.length>0&&sn(t)||an(e)&&0===t.length}function an(e){let t=!1,i=!1;for(const n of e)switch(n){case"%":t=!0;break;case"_":if(i)return!1;i=!0;break;default:return!1}return t&&i}class cn{constructor(e){this.query=e,this.query=e,this.parsedConditions=this.parseConditions(this.query.conditions.filter(Kt))}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}sortedBy(e){return!e.find((e,t)=>!It(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.parsedConditions.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;const t=e.conditions.filter(Kt),i=this.isSubqueryOfConditions(t),n=this.sortedBy(e.sortOrder),r=-1===e.limit||this.limit>-1&&this.limit<e.limit;return i&&n&&r}getConditionsFor(...e){return this.parsedConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.parsedConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.parsedConditions){const i=t.fieldName,n=t.operator,r=pt(e,i);if("in"===n){if(t.value.includes(r))continue;return!1}if("not in"!==n){if(!Ht(t.value,r,n))return!1}else if(t.value.includes(r))return!1}return!0}evaluateSubset(e,t){const{operator:i,value:n}=e,{operator:r,value:s}=this.parseConditions([t])[0],o=en[`${i}:${r}`];return!!o&&o(n,s)}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}}class un{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 cn(e),r=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>n.documentMatchesQuery(e.data)),s={};return r.forEach(e=>{s[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(s)),e).map(e=>s[Gt(e.__docId__,i,t)])}}function ln(e,t){return p(function(i,n){var r=0;i.subscribe(R(n,function(i){return e.call(t,i,r++)&&n.next(i)}))})}class hn{constructor(e,t){this.rpcManager=e,this.destructManager=t,this.safeToSendQueriesToServer=new h.BehaviorSubject(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new h.BehaviorSubject(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new h.Subject,i=(0,h.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.safeToSendQueriesToServer.pipe(ln(Boolean),(0,h.take)(1)).subscribe(()=>{this.processQueryBatch()})},0),i)}async waitForAllQueriesToFinish(){return(0,h.firstValueFrom)(this.inflightQueriesCount.pipe(ln(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,r=i.errors[e],s=i.results[e];r?n.error(r):n.next(s)}}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 dn={d:(e,t)=>{for(var i in t)dn.o(t,i)&&!dn.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function pn(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 gn(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return fn(e,t);if(0===t.length)return pn("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 r=e;for(let e=0;e<t.length-1&&void 0!==r;e++){const i=t[e];pn(!Array.isArray(r)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),r=r[i],pn(void 0===r||"object"==typeof r&&null!==r,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===r?"<null>":typeof r}'`)}const s=t[t.length-1];return pn(!Array.isArray(r)||n(s),()=>`Invalid array index Path: '${t}`),(null==r?void 0:r[s])===i?e:yn(e,t,i)}(e,t.path,t.value);case"delete":return fn(e,t.path);case"batch":return t.actions.reduce((e,t)=>gn(e,t),e)}}function fn(e,t){pn(0!==t.length,"Can't delete an empty path");let i=e;for(let n=0;n<t.length-1;n++){const r=t[n];if(i=i[r],void 0===i)return e;pn("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:yn(e,t,void 0)}function yn(e,t,i){function n(e,i){pn(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const r=Object.assign({},e);let s=r;for(let e=0;e<t.length-1;e++){const r=t[e],o=s[r];pn(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(s,r),s;s[r]=a,s=a}const o=t[t.length-1];return void 0===i?n(s,o):s[o]=i,r}function mn(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(...mn(t,"as-is"));return"unique-and-sorted"===t?vn(i):i}function bn(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 In(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 vn(e){const t=In(e),i=t;for(let e=0;e<t.length-1;e++){const n=t[e];for(let r=e+1;r<t.length;r++){const s=t[r];n.length===s.length&&bn(n,s)&&(i[r]=void 0,e++)}}return i.filter(e=>void 0!==e)}const Sn=(wn={Observable:()=>h.Observable,Subject:()=>h.Subject},Mn={},dn.d(Mn,wn),Mn);var wn,Mn;const kn=(Tn={filter:()=>ln,map:()=>x},_n={},dn.d(_n,Tn),_n);var Tn,_n,En;class On{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,r=t(n.value,i);if(r!==On.StopFillToken){this._setNodeValue(n,r,!1);for(let s=0;s<e.length;s++){const o=e[s];i.push(o);let a=n.children.get(o);if(r=t(null==a?void 0:a.value,i),r===On.StopFillToken)break;a||(a={children:new Map,parent:n,childrenWithValue:0},n.children.set(o,a)),this._setNodeValue(a,r,!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[r,s]of t.children){if(n.push(r),!this._visitDfs(e,s,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 r=t.children.get(n);r||(r={children:new Map,parent:t,childrenWithValue:0},t.children.set(n,r)),t=r}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))}}On.StopFillToken=Symbol("Trie.StopFillToken");class Cn extends Sn.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class Dn{constructor(e){this.rootState=e,this.observersTrie=new On,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,kn.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=gn(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=mn(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=vn([...t,...i]),r=new On;for(const e of n)r.fillPath(e,()=>!0);r.visitDfs("pre-order",(t,i)=>{const n=this.observersTrie.get(i);if(n){const t=this.get(i),r=n.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;n.next({action:e,value:t,oldValue:r})}})}_observeChanges(e,t=[],i){const n=0===t.length?void 0:new On;for(const e of t)null==n||n.set(e,!0);return new Sn.Observable(t=>{const r=this.observersTrie.getOrSet(e,()=>new Cn);r.isAllDetailsMode=r.isAllDetailsMode||"all-details"===i;const s={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(s);const o=r.pipe((0,kn.filter)(({action:e})=>void 0===n||mn(e,"as-is").some(e=>!n.get(e))),(0,kn.map)(({action:t,value:i,oldValue:n})=>{let s=this.stubForUnusedPaths;if(r.isAllDetailsMode){const i=mn(t,"as-is");s=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=In(e),i=t;for(let e=0;e<i.length-1;e++){const n=t[e];for(let r=e+1;r<t.length;r++)bn(t[r],n)&&(i[r]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>bn(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:n,paths:s}})).subscribe(t);return()=>{o.unsubscribe(),r.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 An(e,t,i=(e,t)=>e>t?1:e<t?-1:0,n=0,r=e.length-1){if(r<n)return-1;const s=Math.trunc((n+r)/2);return 0===i(t,e[s])?s:i(t,e[s])>0?An(e,t,i,s+1,r):An(e,t,i,n,s-1)}function Nn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==An(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 qn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=An(e,t,i);n>-1&&e.splice(n,1)}!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(En||(En={}));const Rn=100;class Fn{constructor(e,t,i,n,r,s,o){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=n,this.documentIdentityService=r,this.querySender=s,this.socketManager=o,this.onOrphanDocuments=new h.Subject,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new jn,this.queryResultsSubject=new h.Subject,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),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 L(this.ongoingQueries.get(e),"UNKNOWN_QUERY").query}setGotInitialResult(e){const t=this.ongoingQueries.get(e);t?.gotInitialResponse&&this.removeClientRequestIdMapping(e),t&&(t.gotInitialResponse=!0,t.isInFlight=!1)}findQueriesForDocument(e,t){const{collectionName:i,integrationId:n}=$t(t),r=this.queryMappingManager.getMapping(i,n);return r?function(e,t){const i=[...e.unconditional||[]],n=new Map;for(const[i,r]of Object.entries(e.conditional||{})){const e=Ot(i);let s;if(Kt(e)){const i=pt(t,e.fieldName)??null;s=Ht(e.value,i,e.operator)}else s=xn(e,t);if(s)for(const e of r)n.set(e,(n.get(e)||0)+1)}for(const[t,r]of n.entries())r>=e.queriesMetadata[t].condCount&&i.push(t);return i}(r,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):[]),r=new Set([...i,...n]);for(const t of[...i]){if(n.has(t))continue;i.delete(t);const r=this.clientRequestIdToLocalDocuments.get(t);r&&(r.delete(e),r.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[...r]}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,r=this.documentStore.sortAndLimitDocs(n,e.query),s=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(r,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=L(o?.supportingOngoingQuery);if(s&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case En.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+Rn?En.ENABLED:En.DISABLED;break;case En.DISABLED:break;case En.ENABLED:if(n.size<e.query.limit+20){e.limitUnderflowState=En.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}e.dataSubject.next(r)}for(const e of t){const t=this.collectAllObservables(e);L(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new cn(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,n,r,s){return r&&this.socketManager.notifyWebSocketIsNeeded(),(0,h.defer)(()=>{const o=this.createOngoingQueryGraph(e,t,i,n,r,!0);s&&(o.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(o),o.allObservables=new h.ReplaySubject(1);const a=o.allObservables.pipe((0,h.switchMap)(e=>(0,h.combineLatest)(e).pipe(x(e=>this.joinResults(e,n,o)))),ln(()=>this.allOngoingQueriesGotInitialResult(o)),(0,h.startWith)(void 0),(0,h.pairwise)(),ln(([e,t])=>!It(e,t)),x(([,e])=>e),r?(0,h.tap)():(0,h.take)(1),(0,h.finalize)(()=>{o.dataSubject.complete(),o.done=!0,this.completeAllSupportedQueries(o),o.allObservables?.complete()})),c=this.collectAllObservables(o);return o.allObservables.next(c),a}).pipe((0,h.share)())}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 cn(e.query);for(const i of this.ongoingQueries.values()){if(e===i)return;if(this.isValidParent(i)&&t.isSubqueryOfQuery(i.query))return i}}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const i=[];for(const n of t){const t=L(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=Wt(this.clientIdService.getClientId(),t);e.dataSubject.pipe((0,h.finalize)(async()=>{if(e.unsubscribeBlockerCount.value>0&&await(0,h.firstValueFrom)((0,h.race)(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(ln(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),this.ongoingQueries.delete(t)}),ln(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,t,i,n,r,s,o={}){if(o[t])return o[t];const a=this.clientIdService.generateClientRequestId(),c=[],u={clientRequestId:a,activated:s,alias:t,query:e,subscribe:r,dataSubject:new h.BehaviorSubject(null),supportedQueries:c,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new h.BehaviorSubject(0),queryRegistered:new h.BehaviorSubject(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:r?En.UNKNOWN:En.DISABLED};this.registerQueryFinalizer(u),this.ongoingQueries.set(a,u),o[t]=u;for(const[e,s]of Object.entries(n)){const a=s.leftAlias;if(a!==t&&e!==t)continue;const l=a===t?e:a;if(a===t){const e=this.createOngoingQueryGraph(i[l],l,i,n,r,!1,o);e.joinCondition=s,c.push(e)}else u.supportingOngoingQuery=this.createOngoingQueryGraph(i[l],l,i,n,r,!1,o)}return u}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(ln(Boolean),x(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 r=n[i.alias].map(e=>({[i.alias]:e}));const s=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<s.length;e++){const i=s[e].alias;o.has(i)||(o.add(i),r=this.join(r,i,n[i],t[i]))}return r}join(e,t,i,n){if(!e.length)return e;const r=Object.keys(e[0]);if(!n||!r.includes(n.leftAlias))throw new Error("No join condition found for alias "+t);const s=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[n.right]);s.has(t)||s.set(t,[]),L(s.get(t)).push(e)}),e.flatMap(e=>{const i=s.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=L(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,t){const i=L(t.joinCondition),n=t.query;if(t.activated){if(!t.canExpandForJoin)return!1;const r=L(t.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===t.alias),s=new Set(e.map(e=>e[i.left]??null));for(const e of r)e.query.conditions.filter(Kt).filter(e=>e.fieldName===i.right).forEach(e=>{s.delete(e.value)});if(0===s.size)return!1;const o=St(n);o.conditions=o.conditions.filter(e=>!Kt(e)||e.fieldName!==i.right),[...s].forEach(e=>{o.conditions.push({fieldName:i.right,operator:"==",value:e})});const a={...t,query:o,activated:!0,gotInitialResponse:!1,dataSubject:new h.BehaviorSubject(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(a),this.ongoingQueries.set(a.clientRequestId,a),L(t.supportingOngoingQuery).supportedQueries.push(a),this.sendQueryToServerOrUseParentQuery(a),!0}{if(t.activated=!0,n.conditions.filter(Kt).filter(e=>e.fieldName===i.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(t),t.canExpandForJoin=!1,!0;const r=e.map(e=>e[i.left]??null).map(e=>({fieldName:i.right,operator:"==",value:e}));return r.length?(n.conditions.push(...r),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=L(t.shift());t.push(...e.supportedQueries||[]),await(0,h.firstValueFrom)(e.unsubscribeBlockerCount.pipe(ln(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,r=Wt(this.clientIdService.getClientId(),n);this.queryMappingManager.addQuery(i,r),this.ongoingQueries.set(n,e);const s=t?void 0:this.findValidParentOfOngoingQuery(e);s?this.useParentOngoingQuery(e,s):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},n=new cn(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await(0,h.firstValueFrom)(t.queryRegistered.pipe(ln(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 r=(0,h.race)(e.queryRegistered.pipe(ln(Boolean),(0,h.delay)(2e3),(0,h.take)(1)),this.destructManager.observeIsDestructing().pipe((0,h.take)(1)));t.dataSubject.pipe((0,h.takeWhile)(()=>!e.done),(0,h.takeUntil)(r),ln(Boolean),(0,h.tap)(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),x(e=>e.filter(e=>n.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(Gt(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+Rn: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()):(Pt.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}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=>{mt(this.localDocumentToClientRequestIds,t,e[t])})}}function xn(e,t){for(const i of e.fields){const e=pt(t,i.fieldName)??null;if(Ht(i.value,e,i.operator))return!0;if(Ht(i.value,e,"!="))return!1}return!1}class jn{constructor(){this.stateService=new Dn({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const r of e.conditions){if(Kt(r)&&["=="].includes(r.operator)){const e=Ct(r.fieldName);n.has(e)||(i++,n.add(e))}else i++;const s=this.getConditionStatePath(e,r),o=[...this.stateService.get(s)||[]];Nn(o,t),this.stateService.set(s,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];Nn(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),r=[...this.stateService.get(n)||[]];qn(r,e),r.length?this.stateService.set(n,r):this.stateService.delete(n)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];qn(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,_t(i))];var i}}class Pn{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,h.lastValueFrom)((0,h.combineLatest)(t).pipe((0,h.filter)(e=>!e.includes(!0)),(0,h.take)(1))),await this.lock(...e)}release(...e){for(const t of e){const e=L(this.locks[t]);e.next(!1),e.complete(),delete this.locks[t]}}canGetLock(...e){return!e.some(e=>this.locks[e]?.value)}lockSync(...e){B(this.canGetLock(...e),"Cannot acquire lock sync");for(const t of e)this.locks[t]=new h.BehaviorSubject(!0)}}class Bn{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 Qn(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const Ln="subscriptionMutex";class Qn{constructor(e,t,i,n){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=n,this.messagesSubject=new h.Subject,this.subscriberCount=0,this.lockManager=new Pn}async produce(e){await this.lockManager.lock(Ln);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(Ln)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),(0,h.defer)(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe((0,h.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(Ln);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 h.Subject}finally{this.lockManager.release(Ln)}}async performUnsubscribe(){await this.lockManager.lock(Ln);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(Ln)}}}class Un{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,h.firstValueFrom)((0,h.interval)(10).pipe((0,h.filter)(()=>this.attemptConsume()),(0,h.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 $n{constructor(e,t,i,n,r,s){this.region=e,this.appId=t,this.authManager=r,this.clientIdService=s,this.staticHeaders={},this.onGoingRpcCounter=new h.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 Un(60*o,5),ai:new Un(20*o,5),secret:new Un(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,h.firstValueFrom)(this.onGoingRpcCounter.pipe((0,h.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",r={}){return(await this.rawPost(e,t,i,n,!0,r)).body}async rawPost(e,t,i=[],n="files",r=!0,o={}){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const a=await this.getAuthHeaders(),c={...this.staticHeaders,...a,...o};Pt.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const u=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await Fi({url:u,headers:c,message:t,files:i,filesFieldName:n,extractErrorMessage:r})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),r={...this.staticHeaders,...n};let o=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);if(t&&Object.keys(t).length>0){const e=new URLSearchParams;Object.entries(t).forEach(([t,i])=>{e.append(t,String(i))}),o+=`?${e.toString()}`}return Pt.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await xi({url:o,headers:r,extractErrorMessage:i})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async put(e,t,i=[],n="files"){return(await this.rawPut(e,t,i,n)).body}async rawPut(e,t,i=[],n="files",r=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const o=await this.getAuthHeaders(),a={...this.staticHeaders,...o};Pt.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const c=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await ji({url:c,headers:a,message:t,files:i,filesFieldName:n,extractErrorMessage:r})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async patch(e,t,i=[],n="files"){return(await this.rawPatch(e,t,i,n)).body}async rawPatch(e,t,i=[],n="files",r=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const o=await this.getAuthHeaders(),a={...this.staticHeaders,...o};Pt.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const c=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await Pi({url:c,headers:a,message:t,files:i,filesFieldName:n,extractErrorMessage:r})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),r={...this.staticHeaders,...n};Pt.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const o=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await Bi({url:o,headers:r,message:t,extractErrorMessage:i})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?L(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?L(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):L(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}const Gn="This operation is not available in passive mode. Use active mode for real-time features.";function Hn(e){B(!e.isPassiveMode,Gn)}class Vn{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 Wn(){}const Kn="undefined"!=typeof process&&process.versions?.node?i(86):jt().WebSocket;class zn{constructor(e,t,i,n=Ni,r,s,o){this.clientIdService=e,this.region=t,this.appId=i,this.messageNotificationWrapper=n,this.destructManager=r,this.authManager=s,this.runtimeOptions=o,this.webSocketObserver=new h.Subject,this.allMessagesObserver=new h.Subject,this.connectionReady=new h.BehaviorSubject(!1),this.seenMessageIds=new Set,this.destructSubject=new h.Subject,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new h.BehaviorSubject(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe((0,h.filter)(Boolean),(0,h.take)(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe((0,h.skip)(1),(0,h.filter)(e=>!e),(0,h.switchMap)(()=>(0,h.race)((0,h.timer)(this.clientTooOldThreshold),this.connectionReady.pipe((0,h.filter)(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?Pt.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(Pt.debug(this.clientIdService.getClientId(),"Client disconnected for a long period - refreshing"),this.refreshClient())}),this.observeConnectionReady().pipe((0,h.filter)(Boolean)).subscribe(()=>{this.clientIdService.isClientTooOld()&&this.clientIdService.notifyClientNotTooOld()}),this.observeNotifications().pipe((0,h.filter)(e=>"clientInfo"===e.type)).subscribe(e=>{console.log("Client info message received",e)})}refreshClient(){this.destructManager.isDestructing?Pt.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?Pt.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(Pt.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),Pt.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,h.distinctUntilChanged)())}async awaitConnectionReady(){Hn(this.runtimeOptions),await(0,h.firstValueFrom)(this.observeConnectionReady().pipe((0,h.filter)(Boolean)))}notifyWebSocketIsNeeded(){Hn(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&&(Pt.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded(),await(0,h.firstValueFrom)(this.connectionReady.pipe((0,h.filter)(Boolean)));const t=await this.authManager.getToken();if(this.connectionReady.value)try{B(this.socket,"Socket is undefined in sendMessageAsync");const i=Et({message:e,authToken:t});Pt.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(Et({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=s(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();Pt.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,n=0,r=1;const s={connected:!1,closeCalled:!1,open(){i=new(Kn?.WebSocket??Kn)(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.")}:Wn,i.onopen=function(e){s.connected=!0,(t.onopen||Wn)(e),n=0},i.onclose=function(e){if(s.connected=!1,4999!==e.code&&4001!==e.code)return Pt.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Wn)(e),void s.reconnect(e);(t.onclose||Wn)(e)},i.onerror=function(e){s.connected=!1,e&&"ECONNREFUSED"===e.code?s.reconnect(e):s.closeCalled||(t.onerror||Wn)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;r&&n++<i?r=setTimeout(function(){(t.onreconnect||Wn)(e),Pt.debug("WebSocket trying to reconnect..."),s.open()},t.timeoutMillis||1e3):(t.onmaximum||Wn)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){s.closeCalled=!0;try{s.connected=!1,clearTimeout(r),r=void 0,i.close(e,t)}catch(e){}}};return s.open(),s}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{Pt.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{Pt.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Pt.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{Pt.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Pt.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 Pt.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=Ot(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),Pt.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new h.Subject;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe((0,h.tap)(e=>t.push(e)),(0,h.debounceTime)(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await(0,h.firstValueFrom)((0,h.timer)(0)),this.connectionReady.next(!1),await(0,h.firstValueFrom)((0,h.timer)(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function Jn(e){var t,i;i="Invalid application ID",B(function(e){return"string"==typeof e}(t=e),()=>U(i,"Not a string",t));const[n,r,s,o]=e.split("-");return B(!o,`Invalid application ID: ${e}`),{appId:n,environmentId:r??"prod",squidDeveloperId:s}}function Yn(e,t){return`${Jn(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Zn(e,t,i){return`${Yn(e,t)}${i?`-${i}`:""}`}function Xn(e){const t=Jn(e);return Yn(t.appId,t.environmentId)}class er{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 tr{constructor(e,t,i,n,r){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=n,this.consoleRegion=r}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e){return await this.rpcManager.post("web/aiSearch",{query:e})}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e){B(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i=o(this.region,this.consoleRegion,"openapi/sqd/shorten"),n={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},r=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(n)}),s=await r.text();return B(r.ok,`Failed to create short URL (${r.status}): ${s}`),JSON.parse(s)}async createShortUrls(e){B(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i=o(this.region,this.consoleRegion,"openapi/sqd/shortenMany"),n={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},r=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(n)}),s=await r.text();return B(r.ok,`Failed to create short URLs (${r.status}): ${s}`),JSON.parse(s)}async deleteShortUrl(e){B(this.apiKey,"API key is required to delete a short URL");const t=o(this.region,this.consoleRegion,"openapi/sqd/delete"),i={id:e,appId:this.appId},n=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});B(n.ok,`Failed to delete short URL (${n.status}): ${n.statusText}`)}async deleteShortUrls(e){B(this.apiKey,"API key is required to delete a short URL");const t=o(this.region,this.consoleRegion,"openapi/sqd/deleteMany"),i={ids:e,appId:this.appId},n=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});B(n.ok,`Failed to delete short URLs (${n.status}): ${n.statusText}`)}}class ir{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:n={},body:r,files:o=[]}=t,a=await this.rpcManager.getAuthHeaders(),c={...this.rpcManager.getStaticHeaders(),...a,...i};let u=s(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 h;if(l.append(Di.TRACE_ID,Ai("c_")),l.append(Di.CLIENT_VERSION,Ri),o&&o.length>0){const e=new FormData;for(const t of o)e.append("file",t,t.name);r&&"object"==typeof r&&Object.entries(r).forEach(([t,i])=>{e.append(t,String(i))}),h=e}else l.append("Content-Type","application/json"),h=Et(r||{});const d=await fetch(u,{method:"POST",headers:l,body:h}),p={};if(d.headers.forEach((e,t)=>{p[t]=e}),!d.ok){const e=await d.text();let t;try{t=JSON.parse(e)}catch{t=e}const i="string"==typeof t?t:t?.message||d.statusText;throw new qi(i,d.status,u,p,t)}const g=await d.text();let f;try{f=JSON.parse(g)}catch{f=g}return f}getWebhookUrl(e){return s(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class nr{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new vi,B(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=Zn(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Bt(this.destructManager),Pt.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new ht(e.apiKey,e.authProvider),this.socketManager=new zn(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new $n(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new Hi(this.socketManager,this.rpcManager),this.jobClient=new Oi(this.socketManager,this.rpcManager,this.clientIdService,this.runtimeOptions),this.backendFunctionManager=new Ft(this.rpcManager),this.aiClient=new ct(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager),this.apiClient=new lt(this.rpcManager),this.documentStore=new Ti,this.lockManager=new Pn,this.distributedLockManager=new Si(this.socketManager,this.destructManager),this.documentIdentityService=new Mi(this.documentStore,this.destructManager),this.documentReferenceFactory=new ki(this.documentIdentityService),this.querySender=new hn(this.rpcManager,this.destructManager),this.observabilityClient=new Wi(this.rpcManager),this.schedulerClient=new Vn(this.rpcManager),this._appId=i,this.querySubscriptionManager=new Fn(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager),this.localQueryManager=new un(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new $i(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new Yt(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService),this.dataManager=new bi(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new ci(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.webhookManager=new ir(this.rpcManager,e.region,i),this.nativeQueryManager=new Gi(this.rpcManager),this._connectionDetails=new ui(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new Bn(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new l(this.rpcManager,this.options.region,Xn(i),this.options.consoleRegion),this.webClient=new tr(this.rpcManager,this.options.region,Xn(i),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}static getInstance(e){Hn(e);const t=_t(e);let i=nr.squidInstancesMap[t];return i||(i=new nr(e),nr.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(nr.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=ze){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",r="GET"){const s={type:"elasticsearch",index:t,endpoint:n,method:r,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}ai(){return this._validateNotDestructed(),this.aiClient}job(){return this._validateNotDestructed(),this.jobClient}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 er(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new _i(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new Ei(this.rpcManager)}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t){const i=await this.acquireLock(e);try{return await t(i)}finally{i.release()}}queue(e,t=Je){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(nr.squidInstancesMap).find(([,e])=>e===this);e&&delete nr.squidInstancesMap[e[0]]})}get isDestructed(){return this.destructManager.isDestructing}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)=>s(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>Zn(e,t,i)}}_validateNotDestructed(){B(!this.destructManager.isDestructing,"The client was already destructed.")}}var rr=exports;for(var sr in n)rr[sr]=n[sr];n.__esModule&&Object.defineProperty(rr,"__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 r=Object.getOwnPropertyDescriptor(t,i);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,r)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),r=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 s=i(642);t.default=s.PromisePool,r(i(273),t),r(i(642),t),r(i(837),t),r(i(426),t),r(i(858),t),r(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){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolExecutor=void 0;const n=i(642),r=i(172),s=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],taskTimeout:0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw r.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}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}processedCount(){return this.processedItems().length}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 r.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 r.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 r.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 r.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw r.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw r.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):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.processedItems().push(e),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 s.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 r.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(s.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 r{constructor(e){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 r(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}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).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=r,r.notRun=Symbol("notRun"),r.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")}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,i),s.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};i.r(n),i.d(n,{AI_AGENTS_INTEGRATION_ID:()=>$e,AI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>Re,AI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>qe,AI_CHAT_MESSAGE_SOURCE:()=>de,AI_EMBEDDINGS_MODEL_NAMES:()=>ke,AI_IMAGE_MODEL_NAMES:()=>Ne,AI_PROVIDER_TYPES:()=>ge,ALL_OPERATORS:()=>ot,ANTHROPIC_CHAT_MODEL_NAMES:()=>be,API_INJECTION_FIELD_TYPES:()=>Pe,ARRAY_OPERATORS:()=>st,AUTH_INTEGRATION_TYPES:()=>Ve,AdminClient:()=>l,AiAgentClient:()=>ie,AiAgentReference:()=>ee,AiAudioClient:()=>re,AiClient:()=>ut,AiFilesClient:()=>se,AiImageClient:()=>oe,AiKnowledgeBaseClient:()=>ue,AiKnowledgeBaseReference:()=>ce,AiMatchMakingClient:()=>le,ApiClient:()=>ht,ApiKeysSecretClient:()=>u,AuthManager:()=>dt,BEDROCK_EMBEDDING_MODEL_NAMES:()=>Me,BUILT_IN_AGENT_ID:()=>Qe,BUILT_IN_DB_INTEGRATION_ID:()=>Je,BUILT_IN_QUEUE_INTEGRATION_ID:()=>Ye,BUILT_IN_STORAGE_INTEGRATION_ID:()=>Ze,BackendFunctionManager:()=>xt,BaseQueryBuilder:()=>Xt,CLIENT_CONNECTION_STATES:()=>ct,CLIENT_ID_GENERATOR_KEY:()=>Qt,CLIENT_REQUEST_ID_GENERATOR_KEY:()=>Ut,Changes:()=>ii,ClientIdService:()=>Lt,CollectionReference:()=>ai,CollectionReferenceFactory:()=>ui,ConnectionDetails:()=>li,DATA_INTEGRATION_TYPES:()=>He,DEFAULT_SHORT_ID_LENGTH:()=>V,DataManager:()=>Ii,DereferencedJoin:()=>ri,DestructManager:()=>Si,DistributedLockImpl:()=>Mi,DistributedLockManager:()=>wi,DocumentReference:()=>Jt,DocumentReferenceFactory:()=>Ti,DocumentStore:()=>_i,EMPTY_CHAT_ID:()=>ne,ENVIRONMENT_IDS:()=>Le,ExternalAuthClient:()=>Ei,ExtractionClient:()=>Oi,FETCH_BEYOND_LIMIT:()=>Fn,FLUX_MODEL_NAMES:()=>Ae,GEMINI_CHAT_MODEL_NAMES:()=>ye,GRAPHQL_INTEGRATION_TYPES:()=>We,GROK_CHAT_MODEL_NAMES:()=>me,GroupedJoin:()=>oi,HTTP_INTEGRATION_TYPES:()=>Ke,HttpStatus:()=>Ue,INTEGRATION_SCHEMA_TYPES:()=>ze,INTEGRATION_TYPES:()=>Ge,IntegrationClient:()=>a,JobClient:()=>Ci,JoinQueryBuilder:()=>ni,LastUsedValueExecuteFunctionCache:()=>qt,LimitUnderflowState:()=>On,LocalQueryManager:()=>ln,METRIC_DOMAIN:()=>nt,METRIC_FUNCTIONS:()=>it,METRIC_INTERVAL_ALIGNMENT:()=>rt,ManagementClient:()=>$i,MatchMaker:()=>he,MutationSender:()=>Gi,NOOP_FN:()=>qi,NativeQueryManager:()=>Hi,NotificationClient:()=>Vi,OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>Oe,OPENAI_AUDIO_MODEL_NAMES:()=>Ce,OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>Ee,OPENAI_CHAT_MODEL_NAMES:()=>fe,OPENAI_EMBEDDINGS_MODEL_NAMES:()=>Se,OPENAI_IMAGE_MODEL_NAMES:()=>_e,OPEN_AI_CREATE_SPEECH_FORMATS:()=>Fe,ObservabilityClient:()=>Ki,Pagination:()=>Yt,QueryBuilder:()=>ti,QueryBuilderFactory:()=>Zt,QuerySender:()=>dn,QuerySubscriptionManager:()=>xn,QueueManagerFactory:()=>Ln,QueueManagerImpl:()=>Un,RAG_TYPES:()=>je,RERANK_PROVIDERS:()=>pe,RateLimiter:()=>$n,RpcManager:()=>Gn,SQUID_BUILT_IN_INTEGRATION_IDS:()=>Xe,SQUID_METRIC_NAMES:()=>tt,SQUID_REGIONS:()=>at,STABLE_DIFFUSION_MODEL_NAMES:()=>De,SchedulerClient:()=>Wn,SecretClient:()=>c,SocketManager:()=>Jn,Squid:()=>rr,SquidClientError:()=>Ri,StorageClient:()=>tr,VENDOR_AI_CHAT_MODEL_NAMES:()=>Ie,VOYAGE_EMBEDDING_MODEL_NAMES:()=>we,WebClient:()=>ir,WebhookManager:()=>nr,assertNotPassiveMode:()=>Vn,compareArgsByReference:()=>At,compareArgsBySerializedValue:()=>Nt,deserializeQuery:()=>Zi,generateId:()=>H,generateShortId:()=>z,generateShortIds:()=>J,generateUUID:()=>$,generateUUIDPolyfill:()=>G,getConsoleUrl:()=>o,getCustomizationFlag:()=>jt,isAiEmbeddingsModelName:()=>Te,isBuiltInIntegrationId:()=>et,isIntegrationModelSpec:()=>xe,isPlaceholderParam:()=>Be,isVendorAiChatModelName:()=>ve,rawSquidHttpDelete:()=>Li,rawSquidHttpGet:()=>ji,rawSquidHttpPatch:()=>Bi,rawSquidHttpPost:()=>xi,rawSquidHttpPut:()=>Pi,transformFileArgs:()=>Rt,tryDeserializing:()=>Ui,visitQueryResults:()=>Yi});const r=["aiData","api","application","application-kotlin","auth","backend-function","connector","integration","internal-storage","internalCodeExecutor","management-secret","mutation","native-query","observability","openapi","query","queue","quota","scheduler","secret","storage","webhooks","ws","personalStorage","internal-extraction","notification"];function s(e,t,i,n,s,o){let a="https",c=`${n||t}.${s||e}.${new URL("https://squid.cloud").host}`,u="";/^local/.test(e)&&(a="http",u=r.includes(i.replace(/^\//,"").split("/")[0]||"")||o?"8001":"8000",/android$/.test(e)?c="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(c="localhost"));const l=a+"://"+c+(u?`:${u}`:""),h=i.replace(/^\/+/,"");return h?`${l}/${h}`:l}function o(e,t,i=""){return s(function(e,t){return t||(e.includes("sandbox")?"us-east-1.aws.sandbox":e.includes("local")?"local":e.includes("staging")?"us-central1.gcp.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}/integrations`)}async list(e){const t=await this.rpcManager.get(this.iacBaseUrl);return e?t.filter(t=>t.type===e):t}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}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 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 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 c{constructor(e){this.rpcManager=e}get apiKeys(){return new u(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 u{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 l{constructor(e,t,i,n){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=n,this.integrationClient=new a(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new c(this.rpcManager)}integrations(){return this.integrationClient}secrets(){return this.secretClient}}const h=require("rxjs");function d(e){return"function"==typeof e}function p(e){return function(t){if(function(e){return d(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 g=function(e,t){return g=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])},g(e,t)};function f(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}g(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function y(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 m(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)o.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return o}function b(e,t,i){if(i||2===arguments.length)for(var n,r=0,s=t.length;r<s;r++)!n&&r in t||(n||(n=Array.prototype.slice.call(t,0,r)),n[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var I,v=((I=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),I.prototype.constructor=I,I);function S(e,t){if(e){var i=e.indexOf(t);0<=i&&e.splice(i,1)}}var w=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,r;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var o=y(s),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 s.remove(this);var c=this.initialTeardown;if(d(c))try{c()}catch(e){r=e instanceof v?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=y(u),h=l.next();!h.done;h=l.next()){var p=h.value;try{M(p)}catch(e){r=null!=r?r:[],e instanceof v?r=b(b([],m(r)),m(e.errors)):r.push(e)}}}catch(e){i={error:e}}finally{try{h&&!h.done&&(n=l.return)&&n.call(l)}finally{if(i)throw i.error}}}if(r)throw new v(r)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)M(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)&&S(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&S(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function M(e){d(e)?e():e.unsubscribe()}w.EMPTY;var k={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];var r=k.delegate;return(null==r?void 0:r.setTimeout)?r.setTimeout.apply(r,b([e,t],m(i))):setTimeout.apply(void 0,b([e,t],m(i)))},clearTimeout:function(e){var t=k.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function T(){}var _=E("C",void 0,void 0);function E(e,t,i){return{kind:e,value:t,error:i}}var O=function(e){function t(t){var i,n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,((i=t)instanceof w||i&&"closed"in i&&d(i.remove)&&d(i.add)&&d(i.unsubscribe))&&t.add(n)):n.destination=q,n}return f(t,e),t.create=function(e,t,i){return new D(e,t,i)},t.prototype.next=function(e){this.isStopped?N(function(e){return E("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?N(E("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?N(_,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}(w);Function.prototype.bind;var C=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){A(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){A(e)}else A(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){A(e)}},e}(),D=function(e){function t(t,i,n){var r,s=e.call(this)||this;return r=d(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=n?n:void 0}:t,s.destination=new C(r),s}return f(t,e),t}(O);function A(e){!function(e){k.setTimeout(function(){throw e})}(e)}function N(e,t){var i=null;i&&k.setTimeout(function(){return i(e,t)})}var q={closed:!0,next:T,error:function(e){throw e},complete:T};function R(e,t,i,n,r){return new F(e,t,i,n,r)}var F=function(e){function t(t,i,n,r,s,o){var a=e.call(this,t)||this;return a.onFinalize=s,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=r?function(e){try{r(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 f(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}(O);function x(e,t){return p(function(i,n){var r=0;i.subscribe(R(n,function(i){n.next(e.call(t,i,r++))}))})}function j(e){return null!=e}let P=e=>new Error(e);function B(e,t,...i){e||function(e,...t){const i=Q(e);if("object"==typeof i)throw i;throw P(i||"Assertion error",...t)}(t,...i)}function L(e,t,...i){return B(e,t,...i),e}function Q(e){return void 0===e?"":"string"==typeof e?e:e()}function U(e,t,i){const n=Q(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)}`}function $(){return"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():G()}function G(){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 H(){return $()}const V=18,W="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function K(){return W.charAt(Math.floor(Math.random()*W.length))}function z(e=V,t="",i=""){B(t.length<e,"ID prefix is too long"),B(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let n="";for(let t=0;t<e;t++)n+=K();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)+K()+n.substring(t.length+1);return n}function J({count:e,length:t,prefix:i}){B(e>=0,`Invalid IDs count: ${e}`);const n=new Set;for(;n.size<e;)n.add(z(t||V,i||""));return[...n]}const Y=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Z(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Z(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Z(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(Y.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${Y.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 X(e,t,i){const n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new File([r],t,{type:i||"application/octet-stream"})}class ee{constructor(e,t,i,n,r,s,o){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=n,this.socketManager=r,this.jobClient=s,this.backendFunctionManager=o}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();B(t,"Agent not found");const i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}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),r=await L(n.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:n.responseStream,transcribedPrompt:r.transcribedPrompt}}async ask(e,t,i){const n=await this.askInternal(e,!1,t,i);return this.replaceFileTags(n.responseString,n.annotations)}async askWithAnnotations(e,t,i){const n=await this.askInternal(e,!1,t,i);return{responseString:n.responseString,annotations:n.annotations}}async askAsync(e,t,i){const n={agentId:this.agentId,prompt:e,options:i,jobId:t};await this.post("ai/chatbot/askAsync",n)}observeStatusUpdates(e){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiStatus"===e.type&&e.agentId===this.agentId),(0,h.filter)(t=>!e||t.jobId===e),x(e=>({agentId:this.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.messageId})))}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),r=n.voiceResponse;return{responseString:n.responseString,transcribedPrompt:n.transcribedPrompt,voiceResponseFile:X(r.base64File,`voice.${r.extension}`,r.mimeType)}}async askWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),r=n.voiceResponse;return{responseString:n.responseString,voiceResponseFile:X(r.base64File,`voice.${r.extension}`,r.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}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){const i={agentId:this.agentId,request:e,memoryId:t};return await this.backendFunctionManager.executeFunction("buildAgent",i)}replaceFileTags(e,t={}){let i=e;for(const[e,n]of Object.entries(t)){let t="";const r=n.aiFileUrl.fileName?n.aiFileUrl.fileName:n.aiFileUrl.url;switch(n.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${r}](${n.aiFileUrl.url})`}const s=`\${id:${e}}`;i=i.replaceAll("`"+s+"`",t).replaceAll(s,t)}return i}async askInternal(e,t,i,n){if(i?.contextMetadataFilter&&Z(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)Z(i.contextMetadataFilterForKnowledgeBase[e]);n=n||$(),i={...te,...i||{}};const r="string"==typeof e;let s="ai/chatbot/";s+=r||t?!r&&t?"transcribeAndAskWithVoiceResponse":r&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const o={agentId:this.agentId,prompt:r?e:void 0,options:i,jobId:n},a=r?void 0:[e];return await this.post(s,o,a,"file"),await this.jobClient.awaitJob(n)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Z(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Z(t.contextMetadataFilterForKnowledgeBase[e]);const n=$(),r=void 0===(t={...te,...t||{}}).smoothTyping||t.smoothTyping;let s="";const o=new h.Subject,a=new h.Subject;this.ongoingChatSequences[n]=a;let c=-1;a.pipe((0,h.tap)(({tokenIndex:e})=>{void 0!==e&&e<c&&console.warn("Received token index out of order",e,c),void 0!==e&&(c=e)}),(0,h.concatMap)(({value:e,complete:t,annotations:i})=>t?(0,h.of)({value:e,complete:t,annotations:i}):(0,h.of)(e).pipe(r?(0,h.delay)(0):(0,h.tap)(),x(e=>({value:e,complete:!1,annotations:void 0})))),(0,h.takeWhile)(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{s+=e,t&&i&&(s=this.replaceFileTags(s,i)),o.next(s)},error:e=>{console.error(e)},complete:()=>{o.complete()}});const u="string"==typeof e;i=i||$();const l={agentId:this.agentId,jobId:i,prompt:u?e:void 0,options:t,clientRequestId:n},d={responseStream:o.pipe((0,h.finalize)(()=>{delete this.ongoingChatSequences[n]}),(0,h.share)())};return u?this.post("ai/chatbot/chat",l).catch(e=>{o.error(e),o.complete()}):this.post("ai/chatbot/transcribeAndChat",l,[e],"file").catch(e=>{throw o.error(e),o.complete(),e}),d.serverResponse=this.jobClient.awaitJob(i).catch(e=>{o.error(e),o.complete()}),d}async post(e,t,i=[],n="files"){const r={};return this.agentApiKey&&(r["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,n,r)}}const te={smoothTyping:!0,responseFormat:"text"};class ie{constructor(e,t,i,n){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=n,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiChatbot"===e.type),x(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new ee(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)}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:r,annotations:s}=e.payload;if(n&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:s});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:n,tokenIndex:void 0===r?void 0:r,annotations:s});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:n&&e===i.length-1,tokenIndex:void 0===r?void 0:r,annotations:s})}}const ne="__squid_empty_chat_id";class re{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 X(n.base64File,`audio.${n.extension}`,n.mimeType)}}class se{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 oe{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 ae(e){for(const t in e){const i=e[t];B("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),B(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}class ce{constructor(e,t,i){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i}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 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 listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e})).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 upsertContext(e,t){const{failures:i}=await this.upsertContexts([e],t?[t]:void 0);return i.length>0?{failure:i[0]}:{}}async upsertContexts(e,t){for(const t of e)t.metadata&&ae(t.metadata);const i=$();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:i},t),await this.jobClient.awaitJob(i)}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 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 ue{constructor(e,t){this.rpcManager=e,this.jobClient=t}knowledgeBase(e){return new ce(e,this.rpcManager,this.jobClient)}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 le{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new he(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new he(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class he{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}}const de=["user","ai"],pe=["cohere","none"],ge=["anthropic","bedrock","claude-code","flux","gemini","openai","grok","stability","voyage","mistral","textract","external"],fe=["gpt-5-mini","gpt-5-nano","gpt-5.2","gpt-5.2-pro"],ye=["gemini-3-pro","gemini-3-flash"],me=["grok-4","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],be=["claude-haiku-4-5-20251001","claude-opus-4-6","claude-opus-4-5-20251101","claude-sonnet-4-5-20250929"],Ie=[...fe,...be,...ye,...me];function ve(e){return Ie.includes(e)}const Se=["text-embedding-3-small"],we=["voyage-3-large"],Me=["titan-embed-text-v2"],ke=[...Se,...we,...Me];function Te(e){return ke.includes(e)}const _e=["dall-e-3"],Ee=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],Oe=["tts-1","tts-1-hd","gpt-4o-mini-tts"],Ce=[...Ee,...Oe],De=["stable-diffusion-core"],Ae=["flux-pro-1.1","flux-kontext-pro"],Ne=[..._e,...De,...Ae],qe=[...Ee],Re=[...Oe],Fe=["mp3","opus","aac","flac","wav","pcm"];function xe(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const je=["contextual","basic"],Pe=["secret","regular"];function Be(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const Le=["dev","prod"],Qe="built_in_agent",Ue={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},$e="ai_agents",Ge=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","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","dynamodb","elasticsearch","firebase_auth","firestore","gcs","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","oracledb","pinecone","postgres","redis","s3","salesforce_crm","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","mcp","a2a","legend","teams","openai_compatible"],He=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],Ve=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth"],We=["graphql"],Ke=["api"],ze=["data","api","graphql"],Je="built_in_db",Ye="built_in_queue",Ze="built_in_storage",Xe=[Je,Ye,Ze];function et(e){return Xe.includes(e)}const tt=["squid_functionExecution_count","squid_functionExecution_time"],it=["sum","max","min","average","median","p95","p99","count"],nt=["user","squid"],rt=["align-by-start-time","align-by-end-time"],st=["in","not in","array_includes_some","array_includes_all","array_not_includes"],ot=[...st,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],at=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],ct=["CONNECTED","DISCONNECTED","REMOVED"];class ut{constructor(e,t,i,n){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.backendFunctionManager=n}agent(e=Qe,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||{})}image(){return new oe(this.rpcManager)}audio(){return new re(this.rpcManager)}matchMaking(){return new le(this.rpcManager)}files(e){return new se(e,this.rpcManager)}executeAiQuery(e,t,i){const n={integrationId:e,prompt:t,options:i};return this.rpcManager.post("ai/query/executeDataQuery",n)}executeAiApiCall(e,t,i,n){const r={integrationId:e,prompt:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeApiQuery",r)}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 this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiStatus"===e.type),(0,h.filter)(t=>!e||t.jobId===e),(0,h.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.messageId})))}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new ie(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new ue(this.rpcManager,this.jobClient)),this.aiKnowledgeBaseClient}}const lt={headers:{},queryParams:{},pathParams:{}};class ht{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,r){const s={integrationId:e,endpointId:t,body:i,options:{...lt,...this.convertOptionsToStrings(n||{})},overrideMethod:r};return await this.rpcManager.rawPost("api/callApi",s,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 dt{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 pt=/[.\[\]]/;function gt(e,t){if(!e)return;const i=t.split(pt);let n,r=e;for(;r&&i.length;){const e=i.shift();if(e){if("object"!=typeof r||!(e in r))return;n=r[e],r=n}}return n}function ft(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function yt(e,t,i,n="."){const r=t.split(n);let s=e;for(;r.length;){const e=L(r.shift());if(r.length){const t=s[e],i=ft(t)?Mt(t)??{}:{};s[e]=i,s=i}else s[e]=i}}function mt(e,t,i="."){const n=t.split(i);let r=e;for(;n.length;){const e=L(n.shift());if(n.length){const t=ft(r[e])?Mt(r[e])??{}:{};r[e]=t,r=t}else delete r[e]}}function bt(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function It(e){return null==e}function vt(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),r=Object.keys(t);if(n.length!==r.length)return!1;for(const i of n)if(!r.includes(i)||!vt(e[i],t[i]))return!1;return!0}function St(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=wt(e[n],t);return i}function wt(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 St(e,t);if(e instanceof Map)return new Map(St(Array.from(e),t));if(e instanceof Set)return new Set(St(Array.from(e),t));if(ArrayBuffer.isView(e))return(n=e)instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length);var n;const r={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(r[i]=wt(e[i],t));return r}function Mt(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 kt(e,t){if(e===t||It(e)&&It(t))return 0;if(It(e))return-1;if(It(t))return 1;const i=typeof e,n=typeof t;return i!==n?i<n?-1:1:"number"==typeof e?(B("number"==typeof t),isNaN(e)&&isNaN(t)?0:isNaN(e)?-1:isNaN(t)?1:e<t?-1:1):"boolean"==typeof e?(B("boolean"==typeof t),e<t?-1:1):"bigint"==typeof e?(B("bigint"==typeof t),e<t?-1:1):"string"==typeof e?(B("string"==typeof t),e<t?-1:1):e instanceof Date&&t instanceof Date?Math.sign(e.getTime()-t.getTime()):0}function Tt(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function _t(e){if(Array.isArray(e))return e.map(e=>_t(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]=_t(e[t])}),i}function Et(e){return Ot(_t(e))}function Ot(e){if(void 0===e)return null;const t=wt(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function Ct(e){return wt(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 Dt(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=Ot(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 At=(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},Nt=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(Ot(e[i])!==Ot(t[i]))return!1;return!0};class qt{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||At,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 Rt(e){const t=[],i=[];let n=0;for(const r of e)if("undefined"!=typeof File)if(r instanceof File){i.push(r);const e={type:"file",__squid_placeholder__:!0,fileIndex:n++};t.push(e)}else if(Ft(r)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:r.map((e,t)=>(i.push(r[t]),n++))};t.push(e)}else t.push(r);else t.push(r);return{argsArray:t,fileArray:i}}function Ft(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class xt{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:n,fileArray:r}=Rt(i),s="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?At:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===s&&e(t.args,n));if(t)return t.promise}const u=this.createExecuteCallPromise(s,n,r,a,t);return c&&(this.inFlightDedupCalls.push({functionName:s,args:n,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,n,r={}){const s=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:Ot(t)},a=Ct((await this.rpcManager.post(s,o,i.length>0?i:[],"files",r)).payload);if(a?.__isSquidBase64File__){const e=a;return X(e.base64,e.filename,e.mimetype)}return n&&n.set(t,a),a}}function jt(e){if("undefined"!=typeof globalThis)return globalThis[e]}function Pt(){if("undefined"!=typeof window)return window;if(void 0!==i.g)return i.g;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}!function(e=!0){Pt().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 Bt{static debug(...e){(function(){const e=Pt();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=Pt();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Lt{constructor(e){this.destructManager=e,this.clientTooOldSubject=new h.BehaviorSubject(!1),this.isTenant=!0===Pt().squidTenant,this.clientIdSubject=new h.BehaviorSubject(this.generateClientId()),this.destructManager.onDestruct(()=>{this.clientTooOldSubject.complete(),this.clientIdSubject.complete()})}observeClientId(){return this.clientIdSubject}observeClientTooOld(){return this.clientTooOldSubject.pipe((0,h.filter)(e=>e),(0,h.map)(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe((0,h.skip)(1),(0,h.filter)(e=>!e),(0,h.map)(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=Pt()[Ut];return e?e():$()}generateClientId(){const e=Pt()[Qt];if(e)return e();let t=`${this.isTenant?"tenant-":""}${$()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const Qt="SQUID_CLIENT_ID_GENERATOR",Ut="SQUID_CLIENT_REQUEST_ID_GENERATOR",$t="__squidId";function Gt(e){return Ct(e)}function Ht(...e){const[t,i,n]=e,r="object"==typeof t?t:{docId:t,collectionName:i,integrationId:n};return r.integrationId||(r.integrationId=void 0),Et(r)}function Vt(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return vt(e,t);if("!="===i)return!vt(e,t);switch(i){case"<":return!It(e)&&(!!It(t)||t<e);case"<=":return!!It(t)||!It(e)&&t<=e;case">":return!It(t)&&(!!It(e)||t>e);case">=":return!!It(e)||!It(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Wt(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Wt(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Wt(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Wt(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>L(i,"VALUE_CANNOT_BE_NULL").some(t=>vt(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>L(i,"VALUE_CANNOT_BE_NULL").some(t=>vt(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!L(i,"VALUE_CANNOT_BE_NULL").some(t=>vt(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function Wt(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 Kt(e,t){return`${e}_${t}`}function zt(e){return"fieldName"in e}class Jt{constructor(e,t,i){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.refId=$()}get squidDocId(){return this._squidDocId}get data(){return wt(this.dataRef)}get dataRef(){return L(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=Gt(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`})}get hasData(){return!!this.dataManager.getProperties(this.squidDocId)}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 L(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,h.map)(e=>(L(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:Gt(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:wt(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},r={type:"update",squidDocIdObj:Gt(this.squidDocId),properties:{[e]:[n]}};return this.dataManager.applyOutgoingMutation(r,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async insert(e,t){const i=Gt(this.squidDocId),n=i.integrationId;let r=Ct(i.docId);if(r[$t]&&(r={}),n===Je&&r.__id)try{const e=Ct(r.__id);r={...r,...e}}catch{}const s={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...r}};return this.dataManager.applyOutgoingMutation(s,t)}async delete(e){const t={type:"delete",squidDocIdObj:Gt(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)}hasSquidPlaceholderId(){const e=Ct(this._squidDocId);if("object"==typeof e&&e.docId){const t=Ct(e.docId);if("object"==typeof t&&Object.keys(t).includes($t))return!0}return!1}}class Yt{constructor(e,t={}){this.internalStateObserver=new h.BehaviorSubject(null),this.firstElement=null,this.isDestroyed=new h.BehaviorSubject(!1),this.snapshotSubject=new h.Subject,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,B(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe((0,h.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,h.filter)(e=>null!==e),(0,h.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,h.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||It(e)&&It(t))return 0;if(It(e))return-1;if(It(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:r}of i){const i=kt(gt(e,n),gt(t,n));if(0!==i)return r?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:gt(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe((0,h.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:gt(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,h.firstValueFrom)((0,h.race)(this.isDestroyed.pipe((0,h.filter)(Boolean),(0,h.map)(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe((0,h.filter)(e=>null!==e),(0,h.take)(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:n,extractedData:r}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(r[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)}}Error;class Zt{constructor(e,t,i,n){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=n}getForDocument(e){const{collectionName:t,integrationId:i,docId:n}=Gt(e),r=Ct(n),s=this.get(t,i);for(const[e,t]of Object.entries(r))s.where(e,"==",t);return s}get(e,t){return new ti(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService)}}class Xt{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)}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(/\\(?![%_\\])/.test(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class ei{constructor(e){this.queryBuilder=e}peek(){return this.queryBuilder.peek().map(e=>e.data)}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1).pipe((0,h.defaultIfEmpty)([])))}snapshots(e){return this.queryBuilder.snapshots(e).pipe(x(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ei(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}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new Yt(this,e)}}class ti extends Xt{constructor(e,t,i,n,r,s,o){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=n,this.documentReferenceFactory=r,this.queryBuilderFactory=s,this.documentIdentityService=o,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return Dt(this.build())}where(e,t,i){if(B(ot.includes(t),`Invalid operator: ${t}`),"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;B(function(e){return"number"==typeof e}(t=e),()=>U("Limit needs to be a number","Not a number",t)),-1!==e&&(B(e>0,"query limit has to be greater than 0"),B(Math.floor(e)===e,"query limit has to be an integer"),B(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 B(vt(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};return function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,n,r,s;B((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"),B((r=t.asc,s="boolean",Array.isArray(r)?r.every(e=>typeof e===s):typeof r===s),"Asc needs to be boolean")}(i),B(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.sortOrder.push(i),this}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1).pipe((0,h.defaultIfEmpty)([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new h.BehaviorSubject([]);const t=this.build();return this.querySubscriptionManager.processQuery(t,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(x(e=>e.map(e=>{B(1===Object.keys(e).length);const t=Ht(L(e[this.collectionName]).__docId__,this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)})))}changes(){let e,t=new Set;return this.snapshots().pipe((0,h.combineLatestWith)(this.documentIdentityService.observeChanges().pipe((0,h.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)}),h.NEVER)),(0,h.startWith)({}))),x(([i])=>{let n=[];const r=[],s=[];if(e){for(const s of i){const i=s.squidDocId,o=s.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){r.push(s);const n=e[i];delete e[i],t.delete(n)}else n.push(s)}for(const e of t)s.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 ii(n,r,s)}))}dereference(){return new ei(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new ti(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService);return e.query=wt(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){return e.length?(this.query.conditions.push({fields:e}),this):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 Yt(this,e)}mergeConditions(){const e=[],t=Tt(this.query.conditions.filter(zt)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=Tt(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)=>kt(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!zt(e)),...e]}}class ii{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class ni extends Xt{constructor(e,t,i,n,r,s,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=n,this.queryBuilderFactory=r,this.rootAlias=s,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}join(e,t,i,n){const r=n?.leftAlias??this.latestAlias,s={...i,leftAlias:r,isInner:n?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[r].push(t),new ni(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:s},this.queryBuilder)}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new h.BehaviorSubject([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,wt(this.joins),wt(this.joinConditions),e,!1).pipe(x(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,r=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,s=n?Ht(n.__docId__,e,r):void 0;t[i]=s?this.documentReferenceFactory.create(s,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new oi(this)}dereference(){return new ri(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ni(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,wt(this.leftToRight),wt(this.joins),wt(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 Yt(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class ri{constructor(e){this.joinQueryBuilder=e}grouped(){return this.joinQueryBuilder.grouped().dereference()}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(x(e=>e.map(e=>function(e,t){const i={},n=Object.keys(e);for(const r of n){const n=e[r];i[r]=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 ri(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 Yt(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class si{constructor(e){this.groupedJoin=e}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(x(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 si(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 Yt(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 oi{constructor(e){this.joinQueryBuilder=e}snapshot(){return(0,h.firstValueFrom)(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(x(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new si(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new oi(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 Yt(this,e)}groupData(e,t){const i=Tt(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 r={[t]:n};for(const t of i)r[t]=this.groupData(e,t);return r})}}class ai{constructor(e,t,i,n,r,s){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=n,this.querySubscriptionManager=r,this.dataManager=s,this.refId=$()}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!==Je)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={[$t]:$()};else e=e&&"string"!=typeof e?{__id:Et(e)}:{__id:e||$()};const t=Ht(Et(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).insert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof Jt?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new ni(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new ci(...e)}}class ci{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,h.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 ci(...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 Yt(this,e)}or(e,...t){return(0,h.combineLatest)([...t]).pipe((0,h.map)(t=>{const i=new Set,n=t.flat(),r=[];for(const e of n)i.has(this.extractData(e))||(i.add(this.extractData(e)),r.push(e));return r.sort((t,i)=>{for(const{fieldName:n,asc:r}of e){const e=gt(this.extractData(t),n),s=gt(this.extractData(i),n);if(!Vt(e,s,"=="))return Vt(s,e,"<")?r?-1:1:r?1:-1}return 0}).slice(0,this.getLimit())}))}}class ui{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 ai(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class li{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 hi=i(150);function di(e,t){switch(t.type){case"applyNumericFn":return function(e,t){if("increment"===t.fn)return null==e?t.value:e+t.value;throw new Error("Unknown numeric function: "+JSON.stringify(t))}(e,t);case"applyStringFn":return function(e,t){switch(t.fn){case"trim":return"string"!=typeof e?e:e.trim();case"extendString":return null==e?t.value:e+t.value;default:throw new Error("Unknown string function: "+JSON.stringify(t))}}(e,t);case"update":return"object"==typeof t.value?wt(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function pi(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function gi(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if(B("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=wt(e);t=wt(t);for(const[e]of pi(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 pi(t))i.properties[e]=fi([...i.properties[e]||[],...n]);return i}(e,t);const i=wt(e);for(const[e,n]of pi(t)){const t=n;for(const n of t){const t=di(gt(i.properties,e),n);void 0===t?mt(i.properties,e):yt(i.properties,e,t)}}return i}function fi(e){let t=0;for(;t+1<e.length;){const i=yi(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function yi(e,t){return"removeProperty"===t.type||"update"===t.type?t:"applyNumericFn"===t.type?(B("increment"===t.fn,"Unrecognized applyNumericFn"),"applyNumericFn"===e.type?(B("increment"===e.fn,"Unrecognized applyNumericFn"),{type:"applyNumericFn",fn:"increment",value:e.value+t.value}):"update"===e.type?{type:"update",value:e.value+t.value}:t):"extendString"===t.fn?"update"===e.type?{type:"update",value:e.value+t.value}:"applyStringFn"===e.type?"trim"===e.fn?null:{type:"applyStringFn",fn:"extendString",value:e.value+t.value}:t:null}function mi(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)=>L(gi(e,t),"Merge result cannot be null"));i.push(n)}return i}const bi="dataManager_runInTransaction";class Ii{constructor(e,t,i,n,r,s,o,a,c){this.documentStore=e,this.mutationSender=t,this.socketManager=i,this.querySubscriptionManager=n,this.queryBuilderFactory=r,this.lockManager=s,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 h.Subject,this.outgoingMutationsEmpty=new h.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)}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 runInTransaction(e,t){if(t)return B(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(bi)?this.lockManager.lockSync(bi):await this.lockManager.lock(bi);let i=vi;const n=()=>i!==vi;return new Promise(async(t,r)=>{try{let s;this.currentTransactionId=$();try{s=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(n()?void 0:{resolve:()=>t(s),reject:r})}}catch(e){i=n()?i:e}finally{try{this.lockManager.release(bi)}catch(e){i=n()?i:e}}n()&&r(i)})}async applyOutgoingMutation(e,t){const i=Ht(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(bi)||(await this.lockManager.lock(bi),this.lockManager.release(bi)),this.knownDirtyDocs.delete(i);const n=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(n&&!n.sentToServer)n.mutation=L(mi([n.mutation,this.removeInternalProperties(e)])[0],"Failed to reduce mutations"),this.outgoingMutationsEmpty.next(!1);else{const t={mutation:this.removeInternalProperties(e),sentToServer:!1},n=this.pendingOutgoingMutations.get(i)||[];n.push(t),this.pendingOutgoingMutations.set(i,n),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?function(e,t){if(!e)return;const i={...e},n=pi(t);for(const[e,t]of n){const n=t;for(const t of n){const n=di(gt(i,e),t);void 0===n?mt(i,e):yt(i,e,n)}}return i}(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 B(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(bi);try{this.currentTransactionId=$();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(bi)}}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,h.filter)(e=>"mutations"===e.type),x(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,h.filter)(Boolean),(0,h.take)(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe((0,h.filter)(Boolean),(0,h.take)(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t=e.reduce((e,t)=>this.querySubscriptionManager.hasOngoingQuery(t.clientRequestId)?(e[t.squidDocId]={properties:t.doc,timestamp:t.mutationTimestamp},e):e,{});this.applyIncomingUpdates(t)}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId),i={};for(const n of e.docs){const e=Ht(n.__docId__,t.collectionName,t.integrationId);i[e]={properties:n,timestamp:n.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),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,r=new Set;for(const[t,s]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>s.timestamp?i=!0:o&&o.timestamp>s.timestamp?r.add(t):(this.pendingIncomingUpdates.set(t,s),n.add(t))}return this.runInTransactionSync(()=>{for(const e of n)this.maybeApplyIncomingUpdate(e);for(const e of r)this.refreshQueryMapping(e)},t),i}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||Et({...t,__ts__:void 0})!==Et(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 hi.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(),this.hasPendingSentMutations()?(await(0,h.firstValueFrom)(this.pendingOutgoingMutationsChanged.pipe((0,h.filter)(()=>!this.hasPendingSentMutations()))),e?.resolve()):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:r=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(n),r.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=Ht(e.mutation.squidDocIdObj),i=L(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}=Gt(t);this.setExpiration(t,!0);try{const i=e.includes($t)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(L(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),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=Ht(t.mutation.squidDocIdObj),n=e[i];n&&(t.mutation.squidDocIdObj=Gt(n))})}),Object.entries(e).forEach(([e,t])=>{bt(this.pendingOutgoingMutations,e,t),bt(this.docIdToLocalTimestamp,e,t),bt(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 vi=Symbol("undefined");class Si{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new h.BehaviorSubject(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe((0,h.filter)(Boolean),x(()=>{}))}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 wi{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{e||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(),B(await(0,h.firstValueFrom)((0,h.race)((0,h.timer)(this.lockWaitForConnectionThreshold).pipe(x(()=>!1)),this.socketManager.observeConnectionReady().pipe((0,h.filter)(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const r=$(),s={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:n,clientRequestId:r}};this.socketManager.postMessage(s);const o=await(0,h.firstValueFrom)((0,h.race)((0,h.timer)(i+4e3).pipe((0,h.take)(1),x(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:r}}))),this.acquireLockMessagesFromServer.pipe((0,h.filter)(e=>e.payload.clientRequestId===r)))),a=o.payload.lockId;B(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),B(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new Mi(a,e,r,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 Mi{constructor(e,t,i,n,r){this.lockId=e,this.resourceId=t,this.clientRequestId=i,this.ongoingLocks=n,this.socketManager=r,this.released=!1,this.onReleaseSubject=new h.Subject}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}};try{await this.socketManager.sendMessage(e)}finally{this.onReleaseSubject.next(),this.onReleaseSubject.complete()}}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}class ki{constructor(e,t){this.documentStore=e,this.destructManager=t,this.changeNotifier=new h.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 Ti{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t){let i=this.documents.get(e);if(i)return i;i=new Jt(e,L(this.dataManager,"dataManager not found"),t);const{integrationId:n,collectionName:r}=Gt(e);this.documents.set(e,i);const s=this.getCollectionKey(n,r),o=this.documentsForCollection.get(s)||[];return this.documentsForCollection.set(s,o.concat(i)),i}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=Gt(e),n=Gt(t);bt(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class _i{constructor(){this.squidDocIdToDoc=new Map}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=wt(t),n=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,n),n}return void this.squidDocIdToDoc.delete(e)}const n=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,n),t}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocument(e){return L(this.getDocumentOrUndefined(e))}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}group(e,t){return Object.values(Tt(e,e=>Et(t.map(t=>gt(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=[...e].map(e=>this.squidDocIdToDoc.get(e)).filter(j),{sortOrder:n,limitBy:r}=t,s=i.sort((e,t)=>this.compareSquidDocs(e,t,n)),o=t.limit<0?2e3:t.limit;if(!r)return s.slice(0,o);const{limit:a,fields:c,reverseSort:u}=r,l=this.group(s,c);let h;return h=u?l.map(e=>e.slice(-a)):l.map(e=>e.slice(0,a)),h.flat().slice(0,o)}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;bt(this.squidDocIdToDoc,e,t);const n=Gt(t),r=Ct(n.docId);this.saveDocument(t,{...i,...r,__docId__:n.docId})}compareSquidDocs(e,t,i){for(const{fieldName:n,asc:r}of i){const i=kt(gt(e,n),gt(t,n));if(0!==i)return r?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class Ei{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 Oi{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 Ci{constructor(e,t,i,n){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.runtimeOptions=n,this.isListening=!1,this.listeners={},n.isPassiveMode||this.clientIdService.observeClientId().pipe((0,h.distinctUntilChanged)(),(0,h.skip)(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))Bt.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e})})}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 h.ReplaySubject(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}),(0,h.firstValueFrom)(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"jobStatus"===e.type)).subscribe(e=>{const t=e.payload,i=t.id,n=this.listeners[i];n&&("completed"===t.status?n.next(t.result):"failed"===t.status?n.error(new Error(t.error||"Job failed")):console.error("Unexpected job status:",t.status,"for jobId:",i),delete this.listeners[i])}))}}const Di="squid_mgmt_",Ai={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",SOURCE_IP:"x-squid-source-ip"};function Ni(e="n_"){return`${e}${z(10).toLowerCase()}`}const qi=e=>e();class Ri extends Error{constructor(e,t,i,n,r){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=r}}const Fi="1.0.442";async function xi(e){const t=await Qi({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=Ui(t.body),t}async function ji(e){const t=await Qi({...e,method:"GET",files:[],filesFieldName:""});return t.body=Ui(t.body),t}async function Pi(e){const t=await Qi({...e,method:"PUT"});return t.body=Ui(t.body),t}async function Bi(e){const t=await Qi({...e,method:"PATCH"});return t.body=Ui(t.body),t}async function Li(e){const t=await Qi({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=Ui(t.body),t}async function Qi({headers:e,files:t,filesFieldName:i,message:n,url:r,extractErrorMessage:s,method:o}){const a=new Headers(e);a.append(Ai.TRACE_ID,Ni("c_")),a.append(Ai.CLIENT_VERSION,Fi);const c={method:o,headers:a,body:void 0};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",Ot(n)),c.body=e}else void 0!==n&&(a.append("Content-Type","application/json"),c.body=Ot(n));else"DELETE"===o&&void 0!==n&&(a.append("Content-Type","application/json"),c.body=Ot(n));try{const e=await fetch(r,c),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),n=Ui(i);if(!s)throw new Ri(i,e.status,r,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new Ri(o,e.status,r,t,n)}const i=await e.text();return Bt.debug(`received response from url ${r}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw Bt.debug(`Unable to perform fetch request to url: ${r}`,e),e}}function Ui(e){if(e){try{return Ct(e)}catch{}return e}}class $i{constructor(e){B(e.apiKey.startsWith(Di),`Invalid management API key format. Key must start with '${Di}'`),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 callApi(e,t,i){const n=s(this.consoleRegion,"console",`openapi/iac/management/${t}`),r={Authorization:`ManagementKey ${this.apiKey}`};return"POST"===e?(await xi({url:n,headers:r,message:i,files:[],filesFieldName:"",extractErrorMessage:!0})).body:(await Li({url:n,headers:r,message:i,extractErrorMessage:!0})).body}}class Gi{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=mi(e),n=i.map(e=>`sendMutation_${Ht(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 Bt.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}}class Hi{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class Vi{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"userNotification"===e.type),(0,h.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 Wi={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class Ki{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!zi.test(e)||e.length>=Ji);B(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},r=this.rpcManager.post("/observability/metrics",{metrics:[n]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==r),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(r)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...Wi,...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,r=void 0===e.fillValue?null:e.fillValue,s=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-start-time"===n)return e;const r=t-e;let s=t-Math.floor(r/i)*i;return s>e&&(s-=i),s}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-end-time"===n)return t-i;const r=t-e;let s=e+Math.floor(r/i)*i;return s>=t&&(s-=i),s}(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],r=a[n]?.[0]||"";i.push(r)}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 r=e.groupByTags.indexOf(i);if(!(r<0))for(let e=0;e<t.length;e++){const i=t[e],s=new Set(n);for(let e=0;e<t.length;e++){const n=t[e];i.tagValues.every((e,t)=>t===r||e===n.tagValues[t])&&s.delete(n.tagValues[r])}if(0!==s.size)for(const e of s){const n={tagValues:[...i.tagValues],points:[]};n.tagValues[r]=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];B(e>=s,()=>`Invalid first point time: ${e}`),B(t<=o,()=>`Invalid last point time: ${t}`)}const t=[];let a=0;const c=e=>"count"===e?0:r,u=Array.isArray(e.fn)?e.fn.map(c):[r];for(let e=s;e<=o;e+=i){const i=n.points[a];i?i[0]===e?(t.push(i),a++):(B(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 zi=/^[a-zA-Z0-9_-]+$/,Ji=1e3;async function Yi(e,t,i=500){const n=Date.now(),r=e.paginate({pageSize:i,subscribe:!1});let s=0,o=await r.waitForData();for(;;){for(const e of o.data)s++,await t(e.data);if(!o.hasNext)break;o=await r.next()}return{count:s,time:Date.now()-n}}function Zi(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:n}=t,{collectionName:r,integrationId:s}=i;let o=e.collection(r,s).query();return o=Xi(o,i),n?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:n,joinConditions:r,dereference:s,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=Xi(u,i.query),Object.entries(n).map(([t,i])=>{const{collectionName:n,integrationId:s}=i,{left:o,right:a,leftAlias:c}=r[t];let l=e.collection(n,s).query();l=Xi(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),s&&o?u.grouped().dereference():s?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:n,integrationId:r}=en(i[0]),s=i.map(t=>Zi(e,t));return e.collection(n,r).or(...s)}(e,t)}}function Xi(e,t){const{conditions:i,limit:n,sortOrder:r}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");const{fieldName:i,operator:n,value:r}=t;e.where(i,n,r)}e.limit(n);for(const{fieldName:t,asc:i}of r)e.sortBy(t,i);return e}function en(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 en(e.queries[0])}}const tn={"in:in":(e,t)=>e.every(e=>t.includes(e)),"in:not in":(e,t)=>e.every(e=>!t.includes(e)),"not in:not in":(e,t)=>t.every(t=>e.includes(t)),">:not in":(e,t)=>t.every(t=>e>=t),">=:not in":(e,t)=>t.every(t=>e>t),"<:not in":(e,t)=>t.every(t=>e<=t),"<=:not in":(e,t)=>t.every(t=>e<t),">:>":(e,t)=>e>=t,">=:>":(e,t)=>e>t,"in:>":(e,t)=>e.every(e=>e>t),">:>=":(e,t)=>e>=t,">=:>=":(e,t)=>e>=t,"in:>=":(e,t)=>e.every(e=>e>=t),"<:<":(e,t)=>e<=t,"<=:<":(e,t)=>e<t,"in:<":(e,t)=>e.every(e=>e<t),"<:<=":(e,t)=>e<=t,"<=:<=":(e,t)=>e<=t,"in:<=":(e,t)=>e.every(e=>e<=t),"like:like":(e,t)=>nn(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>nn(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>nn(e,t)&&sn(t),"like_cs:like_cs":(e,t)=>nn(e,t),"like:not like":(e,t)=>!rn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!rn(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!rn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!rn(e,t),"not like:like":(e,t)=>an(e,t),"not like_cs:like":(e,t)=>an(e,t),"not like:like_cs":(e,t)=>an(e,t),"not like_cs:like_cs":(e,t)=>an(e,t),"not like:not like":(e,t)=>nn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>nn(t,e)&&sn(e),"not like:not like_cs":(e,t)=>nn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>nn(t,e),"in:like":(e,t)=>e.every(e=>Vt(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Vt(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>Vt(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>Vt(t,e,"not like_cs")),"like:in":(e,t)=>!e.includes("%")&&!e.includes("_")&&!!t.find(t=>t.toLowerCase()===e.toLowerCase()),"like_cs:in":(e,t)=>!e.includes("%")&&!e.includes("_")&&t.includes(e),"not like:in":(e,t)=>e.length>0&&on(e)||cn(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&on(e)||cn(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&on(t)||cn(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&on(t)||cn(t)&&e.includes(""),"not in:not like":(e,t)=>!t.includes("%")&&!t.includes("_")&&!!e.find(e=>e.toLowerCase()===t.toLowerCase()),"not in:not like_cs":(e,t)=>!t.includes("%")&&!t.includes("_")&&e.includes(t),"like:not in":(e,t)=>t.every(t=>Vt(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Vt(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Vt(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Vt(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)=>e.every(e=>t.includes(e)),"array_not_includes:array_not_includes":(e,t)=>t.every(t=>e.includes(t)),"array_includes_some:array_not_includes":(e,t)=>e.every(e=>!t.includes(e)),"array_not_includes:array_includes_some":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_some:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_includes_all":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_not_includes":(e,t)=>e.every(e=>!t.includes(e))};function nn(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return on(t.substring(n));const r=e[i],s=t[n];return"%"===r&&"%"===s?nn(e,t,i+1,n+1)||nn(e,t,i+1,n):"%"!==r&&("%"===s?nn(e,t,i,n+1)||nn(e,t,i+1,n):(r===s||"_"===s)&&nn(e,t,i+1,n+1))}function rn(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return on(t.substring(n));if(n>=t.length)return on(e.substring(i));const r=i<e.length?e[i]:"",s=n<t.length?t[n]:"";return"%"===r&&"%"===s?rn(e,t,i+1,n+1)||rn(e,t,i,n+1)||rn(e,t,i+1,n):"%"===r||"%"===s?rn(e,t,i,n+1)||rn(e,t,i+1,n):(r===s||"_"===r||"_"===s)&&rn(e,t,i+1,n+1)}function sn(e){return!/[a-zA-Z]/.test(e)}function on(e){return e.split("").every(e=>"%"===e)}function an(e,t){return e.length>0&&on(e)||t.length>0&&on(t)||cn(e)&&0===t.length}function cn(e){let t=!1,i=!1;for(const n of e)switch(n){case"%":t=!0;break;case"_":if(i)return!1;i=!0;break;default:return!1}return t&&i}class un{constructor(e){this.query=e,this.query=e,this.parsedConditions=this.parseConditions(this.query.conditions.filter(zt))}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}sortedBy(e){return!e.find((e,t)=>!vt(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.parsedConditions.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;const t=e.conditions.filter(zt),i=this.isSubqueryOfConditions(t),n=this.sortedBy(e.sortOrder),r=-1===e.limit||this.limit>-1&&this.limit<e.limit;return i&&n&&r}getConditionsFor(...e){return this.parsedConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.parsedConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.parsedConditions){const i=t.fieldName,n=t.operator,r=gt(e,i);if("in"===n){if(t.value.includes(r))continue;return!1}if("not in"!==n){if(!Vt(t.value,r,n))return!1}else if(t.value.includes(r))return!1}return!0}evaluateSubset(e,t){const{operator:i,value:n}=e,{operator:r,value:s}=this.parseConditions([t])[0],o=tn[`${i}:${r}`];return!!o&&o(n,s)}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}}class ln{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 un(e),r=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>n.documentMatchesQuery(e.data)),s={};return r.forEach(e=>{s[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(s)),e).map(e=>s[Ht(e.__docId__,i,t)])}}function hn(e,t){return p(function(i,n){var r=0;i.subscribe(R(n,function(i){return e.call(t,i,r++)&&n.next(i)}))})}class dn{constructor(e,t){this.rpcManager=e,this.destructManager=t,this.safeToSendQueriesToServer=new h.BehaviorSubject(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new h.BehaviorSubject(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new h.Subject,i=(0,h.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.safeToSendQueriesToServer.pipe(hn(Boolean),(0,h.take)(1)).subscribe(()=>{this.processQueryBatch()})},0),i)}async waitForAllQueriesToFinish(){return(0,h.firstValueFrom)(this.inflightQueriesCount.pipe(hn(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,r=i.errors[e],s=i.results[e];r?n.error(r):n.next(s)}}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 pn={d:(e,t)=>{for(var i in t)pn.o(t,i)&&!pn.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function gn(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 fn(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return yn(e,t);if(0===t.length)return gn("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 r=e;for(let e=0;e<t.length-1&&void 0!==r;e++){const i=t[e];gn(!Array.isArray(r)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),r=r[i],gn(void 0===r||"object"==typeof r&&null!==r,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===r?"<null>":typeof r}'`)}const s=t[t.length-1];return gn(!Array.isArray(r)||n(s),()=>`Invalid array index Path: '${t}`),(null==r?void 0:r[s])===i?e:mn(e,t,i)}(e,t.path,t.value);case"delete":return yn(e,t.path);case"batch":return t.actions.reduce((e,t)=>fn(e,t),e)}}function yn(e,t){gn(0!==t.length,"Can't delete an empty path");let i=e;for(let n=0;n<t.length-1;n++){const r=t[n];if(i=i[r],void 0===i)return e;gn("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:mn(e,t,void 0)}function mn(e,t,i){function n(e,i){gn(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const r=Object.assign({},e);let s=r;for(let e=0;e<t.length-1;e++){const r=t[e],o=s[r];gn(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(s,r),s;s[r]=a,s=a}const o=t[t.length-1];return void 0===i?n(s,o):s[o]=i,r}function bn(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(...bn(t,"as-is"));return"unique-and-sorted"===t?Sn(i):i}function In(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 vn(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 Sn(e){const t=vn(e),i=t;for(let e=0;e<t.length-1;e++){const n=t[e];for(let r=e+1;r<t.length;r++){const s=t[r];n.length===s.length&&In(n,s)&&(i[r]=void 0,e++)}}return i.filter(e=>void 0!==e)}const wn=(Mn={Observable:()=>h.Observable,Subject:()=>h.Subject},kn={},pn.d(kn,Mn),kn);var Mn,kn;const Tn=(_n={filter:()=>hn,map:()=>x},En={},pn.d(En,_n),En);var _n,En,On;class Cn{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,r=t(n.value,i);if(r!==Cn.StopFillToken){this._setNodeValue(n,r,!1);for(let s=0;s<e.length;s++){const o=e[s];i.push(o);let a=n.children.get(o);if(r=t(null==a?void 0:a.value,i),r===Cn.StopFillToken)break;a||(a={children:new Map,parent:n,childrenWithValue:0},n.children.set(o,a)),this._setNodeValue(a,r,!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[r,s]of t.children){if(n.push(r),!this._visitDfs(e,s,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 r=t.children.get(n);r||(r={children:new Map,parent:t,childrenWithValue:0},t.children.set(n,r)),t=r}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))}}Cn.StopFillToken=Symbol("Trie.StopFillToken");class Dn extends wn.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class An{constructor(e){this.rootState=e,this.observersTrie=new Cn,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,Tn.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=fn(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=bn(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=Sn([...t,...i]),r=new Cn;for(const e of n)r.fillPath(e,()=>!0);r.visitDfs("pre-order",(t,i)=>{const n=this.observersTrie.get(i);if(n){const t=this.get(i),r=n.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;n.next({action:e,value:t,oldValue:r})}})}_observeChanges(e,t=[],i){const n=0===t.length?void 0:new Cn;for(const e of t)null==n||n.set(e,!0);return new wn.Observable(t=>{const r=this.observersTrie.getOrSet(e,()=>new Dn);r.isAllDetailsMode=r.isAllDetailsMode||"all-details"===i;const s={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(s);const o=r.pipe((0,Tn.filter)(({action:e})=>void 0===n||bn(e,"as-is").some(e=>!n.get(e))),(0,Tn.map)(({action:t,value:i,oldValue:n})=>{let s=this.stubForUnusedPaths;if(r.isAllDetailsMode){const i=bn(t,"as-is");s=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=vn(e),i=t;for(let e=0;e<i.length-1;e++){const n=t[e];for(let r=e+1;r<t.length;r++)In(t[r],n)&&(i[r]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>In(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:n,paths:s}})).subscribe(t);return()=>{o.unsubscribe(),r.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 Nn(e,t,i=(e,t)=>e>t?1:e<t?-1:0,n=0,r=e.length-1){if(r<n)return-1;const s=Math.trunc((n+r)/2);return 0===i(t,e[s])?s:i(t,e[s])>0?Nn(e,t,i,s+1,r):Nn(e,t,i,n,s-1)}function qn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==Nn(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 Rn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=Nn(e,t,i);n>-1&&e.splice(n,1)}!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(On||(On={}));const Fn=100;class xn{constructor(e,t,i,n,r,s,o){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=n,this.documentIdentityService=r,this.querySender=s,this.socketManager=o,this.onOrphanDocuments=new h.Subject,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new Pn,this.queryResultsSubject=new h.Subject,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),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 L(this.ongoingQueries.get(e),"UNKNOWN_QUERY").query}setGotInitialResult(e){const t=this.ongoingQueries.get(e);t?.gotInitialResponse&&this.removeClientRequestIdMapping(e),t&&(t.gotInitialResponse=!0,t.isInFlight=!1)}findQueriesForDocument(e,t){const{collectionName:i,integrationId:n}=Gt(t),r=this.queryMappingManager.getMapping(i,n);return r?function(e,t){const i=[...e.unconditional||[]],n=new Map;for(const[i,r]of Object.entries(e.conditional||{})){const e=Ct(i);let s;if(zt(e)){const i=gt(t,e.fieldName)??null;s=Vt(e.value,i,e.operator)}else s=jn(e,t);if(s)for(const e of r)n.set(e,(n.get(e)||0)+1)}for(const[t,r]of n.entries())r>=e.queriesMetadata[t].condCount&&i.push(t);return i}(r,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):[]),r=new Set([...i,...n]);for(const t of[...i]){if(n.has(t))continue;i.delete(t);const r=this.clientRequestIdToLocalDocuments.get(t);r&&(r.delete(e),r.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[...r]}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,r=this.documentStore.sortAndLimitDocs(n,e.query),s=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(r,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=L(o?.supportingOngoingQuery);if(s&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case On.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+Fn?On.ENABLED:On.DISABLED;break;case On.DISABLED:break;case On.ENABLED:if(n.size<e.query.limit+20){e.limitUnderflowState=On.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}e.dataSubject.next(r)}for(const e of t){const t=this.collectAllObservables(e);L(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new un(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,n,r,s){return r&&this.socketManager.notifyWebSocketIsNeeded(),(0,h.defer)(()=>{const o=this.createOngoingQueryGraph(e,t,i,n,r,!0);s&&(o.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(o),o.allObservables=new h.ReplaySubject(1);const a=o.allObservables.pipe((0,h.switchMap)(e=>(0,h.combineLatest)(e).pipe(x(e=>this.joinResults(e,n,o)))),hn(()=>this.allOngoingQueriesGotInitialResult(o)),(0,h.startWith)(void 0),(0,h.pairwise)(),hn(([e,t])=>!vt(e,t)),x(([,e])=>e),r?(0,h.tap)():(0,h.take)(1),(0,h.finalize)(()=>{o.dataSubject.complete(),o.done=!0,this.completeAllSupportedQueries(o),o.allObservables?.complete()})),c=this.collectAllObservables(o);return o.allObservables.next(c),a}).pipe((0,h.share)())}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 un(e.query);for(const i of this.ongoingQueries.values()){if(e===i)return;if(this.isValidParent(i)&&t.isSubqueryOfQuery(i.query))return i}}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const i=[];for(const n of t){const t=L(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=Kt(this.clientIdService.getClientId(),t);e.dataSubject.pipe((0,h.finalize)(async()=>{if(e.unsubscribeBlockerCount.value>0&&await(0,h.firstValueFrom)((0,h.race)(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(hn(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),this.ongoingQueries.delete(t)}),hn(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,t,i,n,r,s,o={}){if(o[t])return o[t];const a=this.clientIdService.generateClientRequestId(),c=[],u={clientRequestId:a,activated:s,alias:t,query:e,subscribe:r,dataSubject:new h.BehaviorSubject(null),supportedQueries:c,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new h.BehaviorSubject(0),queryRegistered:new h.BehaviorSubject(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:r?On.UNKNOWN:On.DISABLED};this.registerQueryFinalizer(u),this.ongoingQueries.set(a,u),o[t]=u;for(const[e,s]of Object.entries(n)){const a=s.leftAlias;if(a!==t&&e!==t)continue;const l=a===t?e:a;if(a===t){const e=this.createOngoingQueryGraph(i[l],l,i,n,r,!1,o);e.joinCondition=s,c.push(e)}else u.supportingOngoingQuery=this.createOngoingQueryGraph(i[l],l,i,n,r,!1,o)}return u}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(hn(Boolean),x(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 r=n[i.alias].map(e=>({[i.alias]:e}));const s=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<s.length;e++){const i=s[e].alias;o.has(i)||(o.add(i),r=this.join(r,i,n[i],t[i]))}return r}join(e,t,i,n){if(!e.length)return e;const r=Object.keys(e[0]);if(!n||!r.includes(n.leftAlias))throw new Error("No join condition found for alias "+t);const s=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[n.right]);s.has(t)||s.set(t,[]),L(s.get(t)).push(e)}),e.flatMap(e=>{const i=s.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=L(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,t){const i=L(t.joinCondition),n=t.query;if(t.activated){if(!t.canExpandForJoin)return!1;const r=L(t.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===t.alias),s=new Set(e.map(e=>e[i.left]??null));for(const e of r)e.query.conditions.filter(zt).filter(e=>e.fieldName===i.right).forEach(e=>{s.delete(e.value)});if(0===s.size)return!1;const o=wt(n);o.conditions=o.conditions.filter(e=>!zt(e)||e.fieldName!==i.right),[...s].forEach(e=>{o.conditions.push({fieldName:i.right,operator:"==",value:e})});const a={...t,query:o,activated:!0,gotInitialResponse:!1,dataSubject:new h.BehaviorSubject(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(a),this.ongoingQueries.set(a.clientRequestId,a),L(t.supportingOngoingQuery).supportedQueries.push(a),this.sendQueryToServerOrUseParentQuery(a),!0}{if(t.activated=!0,n.conditions.filter(zt).filter(e=>e.fieldName===i.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(t),t.canExpandForJoin=!1,!0;const r=e.map(e=>e[i.left]??null).map(e=>({fieldName:i.right,operator:"==",value:e}));return r.length?(n.conditions.push(...r),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=L(t.shift());t.push(...e.supportedQueries||[]),await(0,h.firstValueFrom)(e.unsubscribeBlockerCount.pipe(hn(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,r=Kt(this.clientIdService.getClientId(),n);this.queryMappingManager.addQuery(i,r),this.ongoingQueries.set(n,e);const s=t?void 0:this.findValidParentOfOngoingQuery(e);s?this.useParentOngoingQuery(e,s):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},n=new un(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await(0,h.firstValueFrom)(t.queryRegistered.pipe(hn(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 r=(0,h.race)(e.queryRegistered.pipe(hn(Boolean),(0,h.delay)(2e3),(0,h.take)(1)),this.destructManager.observeIsDestructing().pipe((0,h.take)(1)));t.dataSubject.pipe((0,h.takeWhile)(()=>!e.done),(0,h.takeUntil)(r),hn(Boolean),(0,h.tap)(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),x(e=>e.filter(e=>n.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(Ht(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+Fn: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()):(Bt.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}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=>{bt(this.localDocumentToClientRequestIds,t,e[t])})}}function jn(e,t){for(const i of e.fields){const e=gt(t,i.fieldName)??null;if(Vt(i.value,e,i.operator))return!0;if(Vt(i.value,e,"!="))return!1}return!1}class Pn{constructor(){this.stateService=new An({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const r of e.conditions){if(zt(r)&&["=="].includes(r.operator)){const e=Dt(r.fieldName);n.has(e)||(i++,n.add(e))}else i++;const s=this.getConditionStatePath(e,r),o=[...this.stateService.get(s)||[]];qn(o,t),this.stateService.set(s,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];qn(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),r=[...this.stateService.get(n)||[]];Rn(r,e),r.length?this.stateService.set(n,r):this.stateService.delete(n)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];Rn(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,Et(i))];var i}}class Bn{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,h.lastValueFrom)((0,h.combineLatest)(t).pipe((0,h.filter)(e=>!e.includes(!0)),(0,h.take)(1))),await this.lock(...e)}release(...e){for(const t of e){const e=L(this.locks[t]);e.next(!1),e.complete(),delete this.locks[t]}}canGetLock(...e){return!e.some(e=>this.locks[e]?.value)}lockSync(...e){B(this.canGetLock(...e),"Cannot acquire lock sync");for(const t of e)this.locks[t]=new h.BehaviorSubject(!0)}}class Ln{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 Un(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const Qn="subscriptionMutex";class Un{constructor(e,t,i,n){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=n,this.messagesSubject=new h.Subject,this.subscriberCount=0,this.lockManager=new Bn}async produce(e){await this.lockManager.lock(Qn);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(Qn)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),(0,h.defer)(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe((0,h.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(Qn);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 h.Subject}finally{this.lockManager.release(Qn)}}async performUnsubscribe(){await this.lockManager.lock(Qn);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(Qn)}}}class $n{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,h.firstValueFrom)((0,h.interval)(10).pipe((0,h.filter)(()=>this.attemptConsume()),(0,h.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 Gn{constructor(e,t,i,n,r,s){this.region=e,this.appId=t,this.authManager=r,this.clientIdService=s,this.staticHeaders={},this.onGoingRpcCounter=new h.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 $n(60*o,5),ai:new $n(20*o,5),secret:new $n(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,h.firstValueFrom)(this.onGoingRpcCounter.pipe((0,h.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",r={}){return(await this.rawPost(e,t,i,n,!0,r)).body}async rawPost(e,t,i=[],n="files",r=!0,o={}){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const a=await this.getAuthHeaders(),c={...this.staticHeaders,...a,...o};Bt.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const u=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await xi({url:u,headers:c,message:t,files:i,filesFieldName:n,extractErrorMessage:r})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),r={...this.staticHeaders,...n};let o=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);if(t&&Object.keys(t).length>0){const e=new URLSearchParams;Object.entries(t).forEach(([t,i])=>{e.append(t,String(i))}),o+=`?${e.toString()}`}return Bt.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await ji({url:o,headers:r,extractErrorMessage:i})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async put(e,t,i=[],n="files"){return(await this.rawPut(e,t,i,n)).body}async rawPut(e,t,i=[],n="files",r=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const o=await this.getAuthHeaders(),a={...this.staticHeaders,...o};Bt.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const c=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await Pi({url:c,headers:a,message:t,files:i,filesFieldName:n,extractErrorMessage:r})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async patch(e,t,i=[],n="files"){return(await this.rawPatch(e,t,i,n)).body}async rawPatch(e,t,i=[],n="files",r=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const o=await this.getAuthHeaders(),a={...this.staticHeaders,...o};Bt.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const c=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await Bi({url:c,headers:a,message:t,files:i,filesFieldName:n,extractErrorMessage:r})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),r={...this.staticHeaders,...n};Bt.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const o=e.startsWith("http://")||e.startsWith("https://")?e:s(this.region,this.appId,e);return await Li({url:o,headers:r,message:t,extractErrorMessage:i})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?L(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?L(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):L(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}const Hn="This operation is not available in passive mode. Use active mode for real-time features.";function Vn(e){B(!e.isPassiveMode,Hn)}class Wn{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 Kn(){}const zn="undefined"!=typeof process&&process.versions?.node?i(86):Pt().WebSocket;class Jn{constructor(e,t,i,n=qi,r,s,o){this.clientIdService=e,this.region=t,this.appId=i,this.messageNotificationWrapper=n,this.destructManager=r,this.authManager=s,this.runtimeOptions=o,this.webSocketObserver=new h.Subject,this.allMessagesObserver=new h.Subject,this.connectionReady=new h.BehaviorSubject(!1),this.seenMessageIds=new Set,this.destructSubject=new h.Subject,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new h.BehaviorSubject(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe((0,h.filter)(Boolean),(0,h.take)(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe((0,h.skip)(1),(0,h.filter)(e=>!e),(0,h.switchMap)(()=>(0,h.race)((0,h.timer)(this.clientTooOldThreshold),this.connectionReady.pipe((0,h.filter)(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?Bt.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(Bt.debug(this.clientIdService.getClientId(),"Client disconnected for a long period - refreshing"),this.refreshClient())}),this.observeConnectionReady().pipe((0,h.filter)(Boolean)).subscribe(()=>{this.clientIdService.isClientTooOld()&&this.clientIdService.notifyClientNotTooOld()}),this.observeNotifications().pipe((0,h.filter)(e=>"clientInfo"===e.type)).subscribe(e=>{console.log("Client info message received",e)})}refreshClient(){this.destructManager.isDestructing?Bt.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?Bt.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(Bt.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),Bt.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,h.distinctUntilChanged)())}async awaitConnectionReady(){Vn(this.runtimeOptions),await(0,h.firstValueFrom)(this.observeConnectionReady().pipe((0,h.filter)(Boolean)))}notifyWebSocketIsNeeded(){Vn(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&&(Bt.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded(),await(0,h.firstValueFrom)(this.connectionReady.pipe((0,h.filter)(Boolean)));const t=await this.authManager.getToken();if(this.connectionReady.value)try{B(this.socket,"Socket is undefined in sendMessageAsync");const i=Ot({message:e,authToken:t});Bt.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(Ot({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=s(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();Bt.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,n=0,r=1;const s={connected:!1,closeCalled:!1,open(){i=new(zn?.WebSocket??zn)(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.")}:Kn,i.onopen=function(e){s.connected=!0,(t.onopen||Kn)(e),n=0},i.onclose=function(e){if(s.connected=!1,4999!==e.code&&4001!==e.code)return Bt.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Kn)(e),void s.reconnect(e);(t.onclose||Kn)(e)},i.onerror=function(e){s.connected=!1,e&&"ECONNREFUSED"===e.code?s.reconnect(e):s.closeCalled||(t.onerror||Kn)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;r&&n++<i?r=setTimeout(function(){(t.onreconnect||Kn)(e),Bt.debug("WebSocket trying to reconnect..."),s.open()},t.timeoutMillis||1e3):(t.onmaximum||Kn)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){s.closeCalled=!0;try{s.connected=!1,clearTimeout(r),r=void 0,i.close(e,t)}catch(e){}}};return s.open(),s}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{Bt.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{Bt.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Bt.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{Bt.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Bt.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 Bt.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=Ct(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),Bt.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new h.Subject;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe((0,h.tap)(e=>t.push(e)),(0,h.debounceTime)(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await(0,h.firstValueFrom)((0,h.timer)(0)),this.connectionReady.next(!1),await(0,h.firstValueFrom)((0,h.timer)(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function Yn(e){var t,i;i="Invalid application ID",B(function(e){return"string"==typeof e}(t=e),()=>U(i,"Not a string",t));const[n,r,s,o]=e.split("-");return B(!o,`Invalid application ID: ${e}`),{appId:n,environmentId:r??"prod",squidDeveloperId:s}}function Zn(e,t){return`${Yn(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Xn(e,t,i){return`${Zn(e,t)}${i?`-${i}`:""}`}function er(e){const t=Yn(e);return Zn(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 ir{constructor(e,t,i,n,r){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=n,this.consoleRegion=r}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e){return await this.rpcManager.post("web/aiSearch",{query:e})}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e){B(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i=o(this.region,this.consoleRegion,"openapi/sqd/shorten"),n={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},r=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(n)}),s=await r.text();return B(r.ok,`Failed to create short URL (${r.status}): ${s}`),JSON.parse(s)}async createShortUrls(e){B(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i=o(this.region,this.consoleRegion,"openapi/sqd/shortenMany"),n={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},r=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(n)}),s=await r.text();return B(r.ok,`Failed to create short URLs (${r.status}): ${s}`),JSON.parse(s)}async deleteShortUrl(e){B(this.apiKey,"API key is required to delete a short URL");const t=o(this.region,this.consoleRegion,"openapi/sqd/delete"),i={id:e,appId:this.appId},n=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});B(n.ok,`Failed to delete short URL (${n.status}): ${n.statusText}`)}async deleteShortUrls(e){B(this.apiKey,"API key is required to delete a short URL");const t=o(this.region,this.consoleRegion,"openapi/sqd/deleteMany"),i={ids:e,appId:this.appId},n=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});B(n.ok,`Failed to delete short URLs (${n.status}): ${n.statusText}`)}}class nr{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:n={},body:r,files:o=[]}=t,a=await this.rpcManager.getAuthHeaders(),c={...this.rpcManager.getStaticHeaders(),...a,...i};let u=s(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 h;if(l.append(Ai.TRACE_ID,Ni("c_")),l.append(Ai.CLIENT_VERSION,Fi),o&&o.length>0){const e=new FormData;for(const t of o)e.append("file",t,t.name);r&&"object"==typeof r&&Object.entries(r).forEach(([t,i])=>{e.append(t,String(i))}),h=e}else l.append("Content-Type","application/json"),h=Ot(r||{});const d=await fetch(u,{method:"POST",headers:l,body:h}),p={};if(d.headers.forEach((e,t)=>{p[t]=e}),!d.ok){const e=await d.text();let t;try{t=JSON.parse(e)}catch{t=e}const i="string"==typeof t?t:t?.message||d.statusText;throw new Ri(i,d.status,u,p,t)}const g=await d.text();let f;try{f=JSON.parse(g)}catch{f=g}return f}getWebhookUrl(e){return s(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class rr{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Si,B(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=Xn(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Lt(this.destructManager),Bt.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new dt(e.apiKey,e.authProvider),this.socketManager=new Jn(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new Gn(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new Vi(this.socketManager,this.rpcManager),this.jobClient=new Ci(this.socketManager,this.rpcManager,this.clientIdService,this.runtimeOptions),this.backendFunctionManager=new xt(this.rpcManager),this.aiClient=new ut(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager),this.apiClient=new ht(this.rpcManager),this.documentStore=new _i,this.lockManager=new Bn,this.distributedLockManager=new wi(this.socketManager,this.destructManager),this.documentIdentityService=new ki(this.documentStore,this.destructManager),this.documentReferenceFactory=new Ti(this.documentIdentityService),this.querySender=new dn(this.rpcManager,this.destructManager),this.observabilityClient=new Ki(this.rpcManager),this.schedulerClient=new Wn(this.rpcManager),this._appId=i,this.querySubscriptionManager=new xn(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager),this.localQueryManager=new ln(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new Gi(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new Zt(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService),this.dataManager=new Ii(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new ui(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.webhookManager=new nr(this.rpcManager,e.region,i),this.nativeQueryManager=new Hi(this.rpcManager),this._connectionDetails=new li(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new Ln(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new l(this.rpcManager,this.options.region,er(i),this.options.consoleRegion),this.webClient=new ir(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}static getInstance(e){Vn(e);const t=Et(e);let i=rr.squidInstancesMap[t];return i||(i=new rr(e),rr.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(rr.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Je){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",r="GET"){const s={type:"elasticsearch",index:t,endpoint:n,method:r,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}ai(){return this._validateNotDestructed(),this.aiClient}job(){return this._validateNotDestructed(),this.jobClient}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 Ei(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new Oi(this.rpcManager)}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t){const i=await this.acquireLock(e);try{return await t(i)}finally{i.release()}}queue(e,t=Ye){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(rr.squidInstancesMap).find(([,e])=>e===this);e&&delete rr.squidInstancesMap[e[0]]})}get isDestructed(){return this.destructManager.isDestructing}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)=>s(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>Xn(e,t,i)}}_validateNotDestructed(){B(!this.destructManager.isDestructing,"The client was already destructed.")}}var sr=exports;for(var or in n)sr[or]=n[or];n.__esModule&&Object.defineProperty(sr,"__esModule",{value:!0})})();
|