@squidcloud/client 1.0.423 → 1.0.425

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.
Files changed (54) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/index.js +1 -1
  3. package/dist/internal-common/src/metric-name.d.ts +9 -0
  4. package/dist/internal-common/src/public-types/ai-agent-integrations.public-types.d.ts +14 -0
  5. package/dist/internal-common/src/public-types/ai-agent.public-types.d.ts +81 -13
  6. package/dist/internal-common/src/public-types/ai-common.public-types.d.ts +12 -15
  7. package/dist/internal-common/src/public-types/ai-query.public-types.d.ts +14 -0
  8. package/dist/internal-common/src/public-types/integration.public-types.d.ts +2 -2
  9. package/dist/internal-common/src/public-types/web.public-types.d.ts +26 -0
  10. package/dist/internal-common/src/public-types-backend/api-call.public-context.d.ts +30 -0
  11. package/dist/internal-common/src/public-types-backend/mutation.public-context.d.ts +148 -0
  12. package/dist/internal-common/src/public-types-backend/native-query.public-context.d.ts +72 -0
  13. package/dist/internal-common/src/public-types-backend/query.public-context.d.ts +177 -0
  14. package/dist/internal-common/src/types/ai-agent.types.d.ts +195 -0
  15. package/dist/internal-common/src/types/ai-knowledge-base.types.d.ts +202 -0
  16. package/dist/internal-common/src/types/ai-matchmaking.types.d.ts +59 -0
  17. package/dist/internal-common/src/types/communication.types.d.ts +1 -0
  18. package/dist/internal-common/src/types/document.types.d.ts +1 -0
  19. package/dist/internal-common/src/types/file.types.d.ts +6 -0
  20. package/dist/internal-common/src/types/headers.types.d.ts +17 -0
  21. package/dist/internal-common/src/types/mutation.types.d.ts +1 -0
  22. package/dist/internal-common/src/types/notification.types.d.ts +5 -0
  23. package/dist/internal-common/src/types/observability.types.d.ts +101 -0
  24. package/dist/internal-common/src/types/query.types.d.ts +13 -0
  25. package/dist/internal-common/src/types/secret.types.d.ts +7 -0
  26. package/dist/internal-common/src/types/socket.types.d.ts +1 -0
  27. package/dist/internal-common/src/types/stage.d.ts +9 -0
  28. package/dist/internal-common/src/types/time-units.d.ts +1 -0
  29. package/dist/internal-common/src/types/url-shortener.types.d.ts +45 -0
  30. package/dist/internal-common/src/utils/array.d.ts +7 -0
  31. package/dist/internal-common/src/utils/e2e-test-utils.d.ts +2 -0
  32. package/dist/internal-common/src/utils/file-utils.d.ts +2 -0
  33. package/dist/internal-common/src/utils/global.utils.d.ts +1 -0
  34. package/dist/internal-common/src/utils/http.d.ts +5 -0
  35. package/dist/internal-common/src/utils/lock.manager.d.ts +14 -0
  36. package/dist/internal-common/src/utils/metric-utils.d.ts +4 -0
  37. package/dist/internal-common/src/utils/metrics.types.d.ts +7 -0
  38. package/dist/internal-common/src/utils/object.d.ts +86 -0
  39. package/dist/internal-common/src/utils/serialization.d.ts +18 -0
  40. package/dist/internal-common/src/utils/squid.constants.d.ts +1 -0
  41. package/dist/internal-common/src/utils/trace-id-generator.d.ts +1 -0
  42. package/dist/internal-common/src/utils/validation.d.ts +19 -0
  43. package/dist/internal-common/src/websocket.impl.d.ts +26 -0
  44. package/dist/typescript-client/src/agent/ai-agent-client-reference.d.ts +17 -1
  45. package/dist/typescript-client/src/ai-client.d.ts +0 -7
  46. package/dist/typescript-client/src/index.d.ts +0 -2
  47. package/dist/typescript-client/src/public-types.d.ts +0 -1
  48. package/dist/typescript-client/src/version.d.ts +1 -1
  49. package/dist/typescript-client/src/web-client.d.ts +9 -14
  50. package/package.json +1 -1
  51. package/dist/internal-common/src/public-types/ai-assistant.public-types.d.ts +0 -31
  52. package/dist/node_modules/json-schema-typed/draft-2020-12.d.ts +0 -1239
  53. package/dist/typescript-client/src/ai-assistant-client.d.ts +0 -72
  54. /package/dist/{typescript-client/src/file-utils.d.ts → internal-common/src/types/backend-function.types.d.ts} +0 -0
package/dist/cjs/index.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var e={86:e=>{e.exports=require("ws")},150:function(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)},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},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())}}},273:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},426:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},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")},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},858:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i}},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:()=>Ge,AI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>Fe,AI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>Re,AI_CHAT_MESSAGE_SOURCE:()=>pe,AI_EMBEDDINGS_MODEL_NAMES:()=>_e,AI_IMAGE_MODEL_NAMES:()=>Ne,AI_PROVIDER_TYPES:()=>me,AI_STATUS_MESSAGE_PARENT_MESSAGE_ID_TAG:()=>ge,AI_STATUS_MESSAGE_RESULT_TAG:()=>fe,ALL_OPERATORS:()=>at,ANTHROPIC_CHAT_MODEL_NAMES:()=>Se,API_INJECTION_FIELD_TYPES:()=>Be,ARRAY_OPERATORS:()=>ot,AUTH_INTEGRATION_TYPES:()=>We,AdminClient:()=>l,AiAgentClient:()=>ie,AiAgentReference:()=>ee,AiAssistantClient:()=>re,AiAudioClient:()=>se,AiClient:()=>lt,AiFilesClient:()=>oe,AiImageClient:()=>ae,AiKnowledgeBaseClient:()=>le,AiKnowledgeBaseReference:()=>ue,AiMatchMakingClient:()=>he,ApiClient:()=>dt,ApiKeysSecretClient:()=>u,AuthManager:()=>pt,BUILT_IN_AGENT_ID:()=>Ue,BUILT_IN_DB_INTEGRATION_ID:()=>Ye,BUILT_IN_QUEUE_INTEGRATION_ID:()=>Ze,BUILT_IN_STORAGE_INTEGRATION_ID:()=>Xe,BackendFunctionManager:()=>jt,BaseQueryBuilder:()=>ei,CLIENT_CONNECTION_STATES:()=>ut,CLIENT_ID_GENERATOR_KEY:()=>Ut,CLIENT_REQUEST_ID_GENERATOR_KEY:()=>$t,Changes:()=>ni,ClientIdService:()=>Qt,CollectionReference:()=>ci,CollectionReferenceFactory:()=>li,ConnectionDetails:()=>hi,DATA_INTEGRATION_TYPES:()=>He,DEFAULT_SHORT_ID_LENGTH:()=>H,DataManager:()=>vi,DereferencedJoin:()=>si,DestructManager:()=>wi,DistributedLockImpl:()=>Ti,DistributedLockManager:()=>Mi,DocumentReference:()=>Yt,DocumentReferenceFactory:()=>_i,DocumentStore:()=>Ei,EMPTY_CHAT_ID:()=>ne,ENVIRONMENT_IDS:()=>Qe,ExternalAuthClient:()=>Oi,ExtractionClient:()=>Ci,FETCH_BEYOND_LIMIT:()=>wn,FLUX_MODEL_NAMES:()=>qe,GEMINI_CHAT_MODEL_NAMES:()=>Ie,GRAPHQL_INTEGRATION_TYPES:()=>Ke,GROK_CHAT_MODEL_NAMES:()=>ve,GroupedJoin:()=>ai,HTTP_INTEGRATION_TYPES:()=>ze,HttpStatus:()=>$e,INTEGRATION_SCHEMA_TYPES:()=>Je,INTEGRATION_TYPES:()=>Ve,IntegrationClient:()=>a,JobClient:()=>Ai,JoinQueryBuilder:()=>ri,LastUsedValueExecuteFunctionCache:()=>Rt,LimitUnderflowState:()=>fn,LocalQueryManager:()=>Ji,METRIC_DOMAIN:()=>rt,METRIC_FUNCTIONS:()=>nt,METRIC_INTERVAL_ALIGNMENT:()=>st,MatchMaker:()=>de,MutationSender:()=>Di,NOOP_FN:()=>Nn,NativeQueryManager:()=>qi,NotificationClient:()=>Ni,OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>Ce,OPENAI_AUDIO_MODEL_NAMES:()=>Ae,OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>Oe,OPENAI_CHAT_MODEL_NAMES:()=>be,OPENAI_EMBEDDINGS_MODEL_NAMES:()=>Te,OPENAI_IMAGE_MODEL_NAMES:()=>Ee,OPEN_AI_CREATE_SPEECH_FORMATS:()=>xe,ObservabilityClient:()=>Fi,Pagination:()=>Zt,QueryBuilder:()=>ii,QueryBuilderFactory:()=>Xt,QuerySender:()=>Zi,QuerySubscriptionManager:()=>Mn,QueueManagerFactory:()=>En,QueueManagerImpl:()=>Cn,RAG_TYPES:()=>Pe,RERANK_PROVIDERS:()=>ye,RateLimiter:()=>An,RpcManager:()=>$n,SQUID_BUILT_IN_INTEGRATION_IDS:()=>et,SQUID_METRIC_NAMES:()=>it,SQUID_REGIONS:()=>ct,STABLE_DIFFUSION_MODEL_NAMES:()=>De,SchedulerClient:()=>Gn,SecretClient:()=>c,SocketManager:()=>Wn,Squid:()=>tr,SquidClientError:()=>Rn,StorageClient:()=>Zn,VENDOR_AI_CHAT_MODEL_NAMES:()=>we,VOYAGE_EMBEDDING_MODEL_NAMES:()=>ke,WebClient:()=>Xn,WebhookManager:()=>er,base64ToFile:()=>X,compareArgsByReference:()=>qt,compareArgsBySerializedValue:()=>Nt,deserializeQuery:()=>Bi,generateId:()=>V,generateShortId:()=>z,generateShortIds:()=>J,generateUUID:()=>$,generateUUIDPolyfill:()=>G,getConsoleUrl:()=>o,getCustomizationFlag:()=>Pt,isBuiltInIntegrationId:()=>tt,isIntegrationModelSpec:()=>je,isPlaceholderParam:()=>Le,isVendorAiChatModelName:()=>Me,rawSquidHttpDelete:()=>Ln,rawSquidHttpGet:()=>jn,rawSquidHttpPatch:()=>Bn,rawSquidHttpPost:()=>xn,rawSquidHttpPut:()=>Pn,transformFileArgs:()=>Ft,tryDeserializing:()=>Un,visitQueryResults:()=>Pi});const r=["aiData","api","application","application-kotlin","auth","backend-function","connector","integration","internal-storage","internalCodeExecutor","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)}}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 T={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];var r=T.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=T.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function k(){}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=N,n}return f(t,e),t.create=function(e,t,i){return new A(e,t,i)},t.prototype.next=function(e){this.isStopped?q(function(e){return E("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?q(E("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?q(_,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){D(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){D(e)}else D(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){D(e)}},e}(),A=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 D(e){!function(e){T.setTimeout(function(){throw e})}(e)}function q(e,t){var i=null;i&&T.setTimeout(function(){return i(e,t)})}var N={closed:!0,next:k,error:function(e){throw e},complete:k};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 V(){return $()}const H=18,W="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function K(){return W.charAt(Math.floor(Math.random()*W.length))}function z(e=H,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||H,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})}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(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiStatus"===e.type&&e.agentId===this.agentId),x(e=>({agentId:this.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,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 provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}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=`![${r}](${n.aiFileUrl.url})`;break;case"document":t=`[${r}](${n.aiFileUrl.url})`}i=i.replace(`\${id:${e}}`,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 createAssistant(e,t,i,n){const r={name:e,instructions:t,functions:i,toolTypes:n};return(await this.rpcManager.post("ai/assistant/createAssistant",r)).assistantId}async deleteAssistant(e){const t={assistantId:e};await this.rpcManager.post("ai/assistant/deleteAssistant",t)}async createThread(e){const t={assistantId:e};return(await this.rpcManager.post("ai/assistant/createThread",t)).threadId}async deleteThread(e){const t={threadId:e};await this.rpcManager.post("ai/assistant/deleteThread",t)}async queryAssistant(e,t,i,n,r){const s={assistantId:e,threadId:t,prompt:i,fileIds:n,options:r};return(await this.rpcManager.post("ai/assistant/queryAssistant",s)).answer}async addFileToAssistant(e,t){const i={assistantId:e};return(await this.rpcManager.post("ai/assistant/addFileToAssistant",i,[t],"file")).fileId}async removeFileFromAssistant(e,t){const i={assistantId:e,fileId:t};await this.rpcManager.post("ai/assistant/removeFileFromAssistant",i)}async addFileToThread(e,t){const i={threadId:e};return(await this.rpcManager.post("ai/assistant/addFileToThread",i,[t],"file")).fileId}}class se{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 oe{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 ae{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 ce(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 ue{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&&ce(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 le{constructor(e,t){this.rpcManager=e,this.jobClient=t}knowledgeBase(e){return new ue(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 he{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new de(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new de(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class de{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 pe=["user","ai"],ge="parent",fe="result",ye=["cohere","none"],me=["anthropic","flux","gemini","openai","grok","stability","voyage","external"],be=["o1","o3","o3-mini","o4-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-5.1","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","gpt-4o","gpt-4o-mini"],Ie=["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite"],ve=["grok-3","grok-3-fast","grok-3-mini","grok-3-mini-fast","grok-4","grok-4-fast-reasoning","grok-4-fast-non-reasoning","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],Se=["claude-3-7-sonnet-latest","claude-haiku-4-5-20251001","claude-opus-4-20250514","claude-opus-4-1-20250805","claude-opus-4-5-20251101","claude-sonnet-4-20250514","claude-sonnet-4-5-20250929"],we=[...be,...Se,...Ie,...ve];function Me(e){return we.includes(e)}const Te=["text-embedding-3-small"],ke=["voyage-3-large"],_e=[...Te,...ke],Ee=["dall-e-3"],Oe=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],Ce=["tts-1","tts-1-hd","gpt-4o-mini-tts"],Ae=[...Oe,...Ce],De=["stable-diffusion-core"],qe=["flux-pro-1.1","flux-kontext-pro"],Ne=[...Ee,...De,...qe],Re=[...Oe],Fe=[...Ce],xe=["mp3","opus","aac","flac","wav","pcm"];function je(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const Pe=["contextual","basic"],Be=["secret","regular"];function Le(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const Qe=["dev","prod"],Ue="built_in_agent",$e={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},Ge="ai_agents",Ve=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","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","google_calendar","google_docs","google_drive","graphql","hubspot","jira","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","servicenow","snowflake","spanner","xata","zendesk","mail","slack","mcp","a2a","legend","teams","openai_compatible"],He=["bigquery","built_in_db","clickhouse","cockroach","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],We=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth"],Ke=["graphql","linear"],ze=["api"],Je=["data","api","graphql"],Ye="built_in_db",Ze="built_in_queue",Xe="built_in_storage",et=[Ye,Ze,Xe];function tt(e){return et.includes(e)}const it=["squid_functionExecution_count","squid_functionExecution_time"],nt=["sum","max","min","average","median","p95","p99","count"],rt=["user","squid"],st=["align-by-start-time","align-by-end-time"],ot=["in","not in","array_includes_some","array_includes_all","array_not_includes"],at=[...ot,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],ct=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],ut=["CONNECTED","DISCONNECTED","REMOVED"];class lt{constructor(e,t,i,n){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.backendFunctionManager=n,this.aiAssistantClient=new re(this.rpcManager)}agent(e=Ue,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()}assistant(){return this.aiAssistantClient}image(){return new ae(this.rpcManager)}audio(){return new se(this.rpcManager)}matchMaking(){return new he(this.rpcManager)}files(e){return new oe(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}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 le(this.rpcManager,this.jobClient)),this.aiKnowledgeBaseClient}}const ht={headers:{},queryParams:{},pathParams:{}};class dt{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:{...ht,...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 pt{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 gt=/[.\[\]]/;function ft(e,t){if(!e)return;const i=t.split(gt);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 yt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function mt(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=yt(t)?Tt(t)??{}:{};s[e]=i,s=i}else s[e]=i}}function bt(e,t,i="."){const n=t.split(i);let r=e;for(;n.length;){const e=L(n.shift());if(n.length){const t=yt(r[e])?Tt(r[e])??{}:{};r[e]=t,r=t}else delete r[e]}}function It(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function vt(e){return null==e}function St(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)||!St(e[i],t[i]))return!1;return!0}function wt(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=Mt(e[n],t);return i}function Mt(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 wt(e,t);if(e instanceof Map)return new Map(wt(Array.from(e),t));if(e instanceof Set)return new Set(wt(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]=Mt(e[i],t));return r}function Tt(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||vt(e)&&vt(t))return 0;if(vt(e))return-1;if(vt(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 _t(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function Et(e){if(Array.isArray(e))return e.map(e=>Et(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]=Et(e[t])}),i}function Ot(e){return Ct(Et(e))}function Ct(e){if(void 0===e)return null;const t=Mt(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function At(e){return Mt(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=Ct(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 qt=(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(Ct(e[i])!==Ct(t[i]))return!1;return!0};class Rt{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||qt,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 Ft(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(xt(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 xt(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class jt{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:n,fileArray:r}=Ft(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?qt: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:Ct(t)},a=At((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 Pt(e){if("undefined"!=typeof globalThis)return globalThis[e]}function Bt(){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){Bt().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 Lt{static debug(...e){(function(){const e=Bt();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=Bt();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Qt{constructor(e){this.destructManager=e,this.clientTooOldSubject=new h.BehaviorSubject(!1),this.isTenant=!0===Bt().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=Bt()[$t];return e?e():$()}generateClientId(){const e=Bt()[Ut];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 Ut="SQUID_CLIENT_ID_GENERATOR",$t="SQUID_CLIENT_REQUEST_ID_GENERATOR",Gt="__squidId";function Vt(e){return At(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),Ot(r)}function Wt(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return St(e,t);if("!="===i)return!St(e,t);switch(i){case"<":return!vt(e)&&(!!vt(t)||t<e);case"<=":return!!vt(t)||!vt(e)&&t<=e;case">":return!vt(t)&&(!!vt(e)||t>e);case">=":return!!vt(e)||!vt(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Kt(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Kt(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Kt(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Kt(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=>St(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=>St(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=>St(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function Kt(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 zt(e,t){return`${e}_${t}`}function Jt(e){return"fieldName"in e}class Yt{constructor(e,t,i){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.refId=$()}get squidDocId(){return this._squidDocId}get data(){return Mt(this.dataRef)}get dataRef(){return L(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=Vt(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:Vt(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:Mt(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:Vt(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=Vt(this.squidDocId),n=i.integrationId;let r=At(i.docId);if(r[Gt]&&(r={}),n===Ye&&r.__id)try{const e=At(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:Vt(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=At(this._squidDocId);if("object"==typeof e&&e.docId){const t=At(e.docId);if("object"==typeof t&&Object.keys(t).includes(Gt))return!0}return!1}}class Zt{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||vt(e)&&vt(t))return 0;if(vt(e))return-1;if(vt(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:r}of i){const i=kt(ft(e,n),ft(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:ft(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:ft(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 Xt{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}=Vt(e),r=At(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 ii(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService)}}class ei{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 ti{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 ti(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 Zt(this,e)}}class ii extends ei{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(at.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(St(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 ni(n,r,s)}))}dereference(){return new ti(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new ii(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService);return e.query=Mt(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 Zt(this,e)}mergeConditions(){const e=[],t=_t(this.query.conditions.filter(Jt)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=_t(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=>!Jt(e)),...e]}}class ni{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class ri extends ei{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 ri(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,Mt(this.joins),Mt(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 ai(this)}dereference(){return new si(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ri(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,Mt(this.leftToRight),Mt(this.joins),Mt(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 Zt(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class si{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 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}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 Zt(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class oi{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 oi(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 Zt(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 ai{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 oi(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new ai(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 Zt(this,e)}groupData(e,t){const i=_t(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 ci{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!==Ye)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={[Gt]:$()};else e=e&&"string"!=typeof e?{__id:Ot(e)}:{__id:e||$()};const t=Ht(Ot(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 Yt?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new ri(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new ui(...e)}}class ui{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 ui(...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 Zt(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=ft(this.extractData(t),n),s=ft(this.extractData(i),n);if(!Wt(e,s,"=="))return Wt(s,e,"<")?r?-1:1:r?1:-1}return 0}).slice(0,this.getLimit())}))}}class li{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 ci(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class hi{constructor(e,t){this.clientIdService=e,this.socketManager=t,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 di=i(150);function pi(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?Mt(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function gi(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function fi(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=Mt(e);t=Mt(t);for(const[e]of gi(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 gi(t))i.properties[e]=yi([...i.properties[e]||[],...n]);return i}(e,t);const i=Mt(e);for(const[e,n]of gi(t)){const t=n;for(const n of t){const t=pi(ft(i.properties,e),n);void 0===t?bt(i.properties,e):mt(i.properties,e,t)}}return i}function yi(e){let t=0;for(;t+1<e.length;){const i=mi(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function mi(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 bi(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(fi(e,t),"Merge result cannot be null"));i.push(n)}return i}const Ii="dataManager_runInTransaction";class vi{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(Ii)?this.lockManager.lockSync(Ii):await this.lockManager.lock(Ii);let i=Si;const n=()=>i!==Si;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(Ii)}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(Ii)||(await this.lockManager.lock(Ii),this.lockManager.release(Ii)),this.knownDirtyDocs.delete(i);const n=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(n&&!n.sentToServer)n.mutation=L(bi([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=gi(t);for(const[e,t]of n){const n=t;for(const t of n){const n=pi(ft(i,e),t);void 0===n?bt(i,e):mt(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(Ii);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(Ii)}}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||Ot({...t,__ts__:void 0})!==Ot(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 di.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}=Vt(t);this.setExpiration(t,!0);try{const i=e.includes(Gt)?[]: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=Vt(n))})}),Object.entries(e).forEach(([e,t])=>{It(this.pendingOutgoingMutations,e,t),It(this.docIdToLocalTimestamp,e,t),It(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 Si=Symbol("undefined");class wi{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 Mi{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 Ti(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 Ti{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 _i{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 Yt(e,L(this.dataManager,"dataManager not found"),t);const{integrationId:n,collectionName:r}=Vt(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=Vt(e),n=Vt(t);It(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class Ei{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=Mt(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(_t(e,e=>Ot(t.map(t=>ft(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;It(this.squidDocIdToDoc,e,t);const n=Vt(t),r=At(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(ft(e,n),ft(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 Oi{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 Ci{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 Ai{constructor(e,t,i){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.clientIdService.observeClientId().pipe((0,h.distinctUntilChanged)(),(0,h.skip)(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))Lt.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])}))}}class Di{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=bi(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 Lt.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}}class qi{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class Ni{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return 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 Ri={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class Fi{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!xi.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={...Ri,...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 xi=/^[a-zA-Z0-9_-]+$/,ji=1e3;async function Pi(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 Bi(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=Li(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=Li(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=Li(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}=Qi(i[0]),s=i.map(t=>Bi(e,t));return e.collection(n,r).or(...s)}(e,t)}}function Li(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 Qi(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 Qi(e.queries[0])}}const Ui={"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)=>$i(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>$i(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>$i(e,t)&&Vi(t),"like_cs:like_cs":(e,t)=>$i(e,t),"like:not like":(e,t)=>!Gi(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!Gi(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!Gi(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!Gi(e,t),"not like:like":(e,t)=>Wi(e,t),"not like_cs:like":(e,t)=>Wi(e,t),"not like:like_cs":(e,t)=>Wi(e,t),"not like_cs:like_cs":(e,t)=>Wi(e,t),"not like:not like":(e,t)=>$i(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>$i(t,e)&&Vi(e),"not like:not like_cs":(e,t)=>$i(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>$i(t,e),"in:like":(e,t)=>e.every(e=>Wt(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Wt(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>Wt(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>Wt(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&&Hi(e)||Ki(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&Hi(e)||Ki(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&Hi(t)||Ki(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&Hi(t)||Ki(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=>Wt(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Wt(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Wt(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Wt(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 $i(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return Hi(t.substring(n));const r=e[i],s=t[n];return"%"===r&&"%"===s?$i(e,t,i+1,n+1)||$i(e,t,i+1,n):"%"!==r&&("%"===s?$i(e,t,i,n+1)||$i(e,t,i+1,n):(r===s||"_"===s)&&$i(e,t,i+1,n+1))}function Gi(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return Hi(t.substring(n));if(n>=t.length)return Hi(e.substring(i));const r=i<e.length?e[i]:"",s=n<t.length?t[n]:"";return"%"===r&&"%"===s?Gi(e,t,i+1,n+1)||Gi(e,t,i,n+1)||Gi(e,t,i+1,n):"%"===r||"%"===s?Gi(e,t,i,n+1)||Gi(e,t,i+1,n):(r===s||"_"===r||"_"===s)&&Gi(e,t,i+1,n+1)}function Vi(e){return!/[a-zA-Z]/.test(e)}function Hi(e){return e.split("").every(e=>"%"===e)}function Wi(e,t){return e.length>0&&Hi(e)||t.length>0&&Hi(t)||Ki(e)&&0===t.length}function Ki(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 zi{constructor(e){this.query=e,this.query=e,this.parsedConditions=this.parseConditions(this.query.conditions.filter(Jt))}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)=>!St(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(Jt),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=ft(e,i);if("in"===n){if(t.value.includes(r))continue;return!1}if("not in"!==n){if(!Wt(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=Ui[`${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 Ji{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 zi(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 Yi(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 Zi{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(Yi(Boolean),(0,h.take)(1)).subscribe(()=>{this.processQueryBatch()})},0),i)}async waitForAllQueriesToFinish(){return(0,h.firstValueFrom)(this.inflightQueriesCount.pipe(Yi(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 Xi={d:(e,t)=>{for(var i in t)Xi.o(t,i)&&!Xi.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function en(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 tn(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return nn(e,t);if(0===t.length)return en("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];en(!Array.isArray(r)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),r=r[i],en(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 en(!Array.isArray(r)||n(s),()=>`Invalid array index Path: '${t}`),(null==r?void 0:r[s])===i?e:rn(e,t,i)}(e,t.path,t.value);case"delete":return nn(e,t.path);case"batch":return t.actions.reduce((e,t)=>tn(e,t),e)}}function nn(e,t){en(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;en("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:rn(e,t,void 0)}function rn(e,t,i){function n(e,i){en(!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];en(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 sn(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(...sn(t,"as-is"));return"unique-and-sorted"===t?cn(i):i}function on(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 an(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 cn(e){const t=an(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&&on(n,s)&&(i[r]=void 0,e++)}}return i.filter(e=>void 0!==e)}const un=(ln={Observable:()=>h.Observable,Subject:()=>h.Subject},hn={},Xi.d(hn,ln),hn);var ln,hn;const dn=(pn={filter:()=>Yi,map:()=>x},gn={},Xi.d(gn,pn),gn);var pn,gn,fn;class yn{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!==yn.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===yn.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))}}yn.StopFillToken=Symbol("Trie.StopFillToken");class mn extends un.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class bn{constructor(e){this.rootState=e,this.observersTrie=new yn,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,dn.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=tn(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=sn(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=cn([...t,...i]),r=new yn;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 yn;for(const e of t)null==n||n.set(e,!0);return new un.Observable(t=>{const r=this.observersTrie.getOrSet(e,()=>new mn);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,dn.filter)(({action:e})=>void 0===n||sn(e,"as-is").some(e=>!n.get(e))),(0,dn.map)(({action:t,value:i,oldValue:n})=>{let s=this.stubForUnusedPaths;if(r.isAllDetailsMode){const i=sn(t,"as-is");s=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=an(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++)on(t[r],n)&&(i[r]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>on(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 In(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?In(e,t,i,s+1,r):In(e,t,i,n,s-1)}function vn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==In(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 Sn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=In(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"}(fn||(fn={}));const wn=100;class Mn{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 kn,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}=Vt(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=At(i);let s;if(Jt(e)){const i=ft(t,e.fieldName)??null;s=Wt(e.value,i,e.operator)}else s=Tn(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 fn.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+wn?fn.ENABLED:fn.DISABLED;break;case fn.DISABLED:break;case fn.ENABLED:if(n.size<e.query.limit+20){e.limitUnderflowState=fn.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 zi(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)))),Yi(()=>this.allOngoingQueriesGotInitialResult(o)),(0,h.startWith)(void 0),(0,h.pairwise)(),Yi(([e,t])=>!St(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 zi(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=zt(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(Yi(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)}),Yi(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?fn.UNKNOWN:fn.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(Yi(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(Jt).filter(e=>e.fieldName===i.right).forEach(e=>{s.delete(e.value)});if(0===s.size)return!1;const o=Mt(n);o.conditions=o.conditions.filter(e=>!Jt(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(Jt).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(Yi(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=zt(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 zi(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await(0,h.firstValueFrom)(t.queryRegistered.pipe(Yi(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(Yi(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),Yi(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+wn: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()):(Lt.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=>{It(this.localDocumentToClientRequestIds,t,e[t])})}}function Tn(e,t){for(const i of e.fields){const e=ft(t,i.fieldName)??null;if(Wt(i.value,e,i.operator))return!0;if(Wt(i.value,e,"!="))return!1}return!1}class kn{constructor(){this.stateService=new bn({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const r of e.conditions){if(Jt(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)||[]];vn(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)||[]];vn(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)||[]];Sn(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)||[]];Sn(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,Ot(i))];var i}}class _n{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 En{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 Cn(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const On="subscriptionMutex";class Cn{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 _n}async produce(e){await this.lockManager.lock(On);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(On)}}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(On);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(On)}}async performUnsubscribe(){await this.lockManager.lock(On);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(On)}}}class An{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}}const Dn={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 qn(e="n_"){return`${e}${z(10).toLowerCase()}`}const Nn=e=>e();class Rn extends Error{constructor(e,t,i,n,r){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=r}}const Fn="1.0.423";async function xn(e){const t=await Qn({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=Un(t.body),t}async function jn(e){const t=await Qn({...e,method:"GET",files:[],filesFieldName:""});return t.body=Un(t.body),t}async function Pn(e){const t=await Qn({...e,method:"PUT"});return t.body=Un(t.body),t}async function Bn(e){const t=await Qn({...e,method:"PATCH"});return t.body=Un(t.body),t}async function Ln(e){const t=await Qn({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=Un(t.body),t}async function Qn({headers:e,files:t,filesFieldName:i,message:n,url:r,extractErrorMessage:s,method:o}){const a=new Headers(e);a.append(Dn.TRACE_ID,qn("c_")),a.append(Dn.CLIENT_VERSION,Fn);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",Ct(n)),c.body=e}else void 0!==n&&(a.append("Content-Type","application/json"),c.body=Ct(n));else"DELETE"===o&&void 0!==n&&(a.append("Content-Type","application/json"),c.body=Ct(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=Un(i);if(!s)throw new Rn(i,e.status,r,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new Rn(o,e.status,r,t,n)}const i=await e.text();return Lt.debug(`received response from url ${r}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw Lt.debug(`Unable to perform fetch request to url: ${r}`,e),e}}function Un(e){if(e){try{return At(e)}catch{}return 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 An(60*o,5),ai:new An(20*o,5),secret:new An(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};Lt.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 xn({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 Lt.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await jn({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};Lt.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 Pn({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};Lt.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 Bn({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};Lt.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 Ln({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")}}class Gn{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 Vn(){}const Hn="undefined"!=typeof process&&process.versions?.node?i(86):Bt().WebSocket;class Wn{constructor(e,t,i,n=Nn,r,s){this.clientIdService=e,this.region=t,this.appId=i,this.messageNotificationWrapper=n,this.destructManager=r,this.authManager=s,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?Lt.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(Lt.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?Lt.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?Lt.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(Lt.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),Lt.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(){await(0,h.firstValueFrom)(this.observeConnectionReady().pipe((0,h.filter)(Boolean)))}notifyWebSocketIsNeeded(){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&&(Lt.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.webSocketNeededSubject.next(!0),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=Ct({message:e,authToken:t});Lt.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(Ct({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();Lt.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(Hn?.WebSocket??Hn)(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.")}:Vn,i.onopen=function(e){s.connected=!0,(t.onopen||Vn)(e),n=0},i.onclose=function(e){if(s.connected=!1,4999!==e.code&&4001!==e.code)return Lt.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Vn)(e),void s.reconnect(e);(t.onclose||Vn)(e)},i.onerror=function(e){s.connected=!1,e&&"ECONNREFUSED"===e.code?s.reconnect(e):s.closeCalled||(t.onerror||Vn)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;r&&n++<i?r=setTimeout(function(){(t.onreconnect||Vn)(e),Lt.debug("WebSocket trying to reconnect..."),s.open()},t.timeoutMillis||1e3):(t.onmaximum||Vn)(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:()=>{Lt.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{Lt.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Lt.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{Lt.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Lt.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 Lt.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=At(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),Lt.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 Kn(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`${Kn(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Jn(e,t,i){return`${zn(e,t)}${i?`-${i}`:""}`}function Yn(e){const t=Kn(e);return zn(t.appId,t.environmentId)}class Zn{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 Xn{constructor(e,t,i,n,r){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=n,this.consoleRegion=r}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,t){B(this.apiKey,"API key is required to create a short URL");const i=o(this.region,this.consoleRegion,"openapi/sqd/shorten"),n={url:e,appId:this.appId,secondsToLive:t},r=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(n)});if(!r.ok)throw console.error("Error making POST request to shorten endpoint",r.statusText),new Error(`${r.statusText}: ${r.text}`);return await r.json()}async createShortUrls(e,t){B(this.apiKey,"API key is required to create a short URL");const i=o(this.region,this.consoleRegion,"openapi/sqd/shortenMany"),n={urls:e,appId:this.appId,secondsToLive:t},r=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(n)});if(!r.ok)throw console.error("Error making POST request to shortenMany endpoint",r.statusText),new Error(`${r.statusText}: ${r.text}`);return await r.json()}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:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(i)});if(!n.ok)throw console.error("Error making POST request to delete endpoint",n.statusText),new Error(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:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(i)});if(!n.ok)throw console.error("Error making POST request to delete endpoint",n.statusText),new Error(n.statusText)}}class er{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(Dn.TRACE_ID,qn("c_")),l.append(Dn.CLIENT_VERSION,Fn),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=Ct(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 Rn(i,d.status,u,p,t)}const g=await d.text();let f;try{f=JSON.parse(g)}catch{f=g}return f}}class tr{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new wi,B(e.appId,"APP_ID_MUST_BE_PROVIDED");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=Jn(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Qt(this.destructManager),Lt.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new pt(e.apiKey,e.authProvider),this.socketManager=new Wn(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager),this.rpcManager=new $n(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new Ni(this.socketManager,this.rpcManager),this.jobClient=new Ai(this.socketManager,this.rpcManager,this.clientIdService),this.backendFunctionManager=new jt(this.rpcManager),this.aiClient=new lt(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager),this.apiClient=new dt(this.rpcManager),this.documentStore=new Ei,this.lockManager=new _n,this.distributedLockManager=new Mi(this.socketManager,this.destructManager),this.documentIdentityService=new ki(this.documentStore,this.destructManager),this.documentReferenceFactory=new _i(this.documentIdentityService),this.querySender=new Zi(this.rpcManager,this.destructManager),this.observabilityClient=new Fi(this.rpcManager),this.schedulerClient=new Gn(this.rpcManager),this._appId=i,this.querySubscriptionManager=new Mn(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager),this.localQueryManager=new Ji(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new Di(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new Xt(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService),this.dataManager=new vi(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new li(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.webhookManager=new er(this.rpcManager,e.region,i),this.nativeQueryManager=new qi(this.rpcManager),this._connectionDetails=new hi(this.clientIdService,this.socketManager),this.queueManagerFactory=new En(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new l(this.rpcManager,this.options.region,Yn(i),this.options.consoleRegion),this.webClient=new Xn(this.rpcManager,this.options.region,Yn(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){const t=Ot(e);let i=tr.squidInstancesMap[t];return i||(i=new tr(e),tr.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(tr.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Ye){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)}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 Zn(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new Oi(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new Ci(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=Ze){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(tr.squidInstancesMap).find(([,e])=>e===this);e&&delete tr.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)=>Jn(e,t,i)}}_validateNotDestructed(){B(!this.destructManager.isDestructing,"The client was already destructed.")}}var ir=exports;for(var nr in n)ir[nr]=n[nr];n.__esModule&&Object.defineProperty(ir,"__esModule",{value:!0})})();
1
+ (()=>{"use strict";var e={86:e=>{e.exports=require("ws")},150:function(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)},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},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())}}},273:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},426:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},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")},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},858:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i}},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:()=>Qe,AI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>qe,AI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>Ae,AI_CHAT_MESSAGE_SOURCE:()=>de,AI_EMBEDDINGS_MODEL_NAMES:()=>Me,AI_IMAGE_MODEL_NAMES:()=>De,AI_PROVIDER_TYPES:()=>ge,ALL_OPERATORS:()=>rt,ANTHROPIC_CHAT_MODEL_NAMES:()=>be,API_INJECTION_FIELD_TYPES:()=>xe,ARRAY_OPERATORS:()=>nt,AUTH_INTEGRATION_TYPES:()=>Ge,AdminClient:()=>l,AiAgentClient:()=>ie,AiAgentReference:()=>ee,AiAudioClient:()=>re,AiClient:()=>at,AiFilesClient:()=>se,AiImageClient:()=>oe,AiKnowledgeBaseClient:()=>ue,AiKnowledgeBaseReference:()=>ce,AiMatchMakingClient:()=>le,ApiClient:()=>ut,ApiKeysSecretClient:()=>u,AuthManager:()=>lt,BUILT_IN_AGENT_ID:()=>Be,BUILT_IN_DB_INTEGRATION_ID:()=>Ke,BUILT_IN_QUEUE_INTEGRATION_ID:()=>ze,BUILT_IN_STORAGE_INTEGRATION_ID:()=>Je,BackendFunctionManager:()=>Rt,BaseQueryBuilder:()=>Yt,CLIENT_CONNECTION_STATES:()=>ot,CLIENT_ID_GENERATOR_KEY:()=>Bt,CLIENT_REQUEST_ID_GENERATOR_KEY:()=>Lt,Changes:()=>ei,ClientIdService:()=>Pt,CollectionReference:()=>si,CollectionReferenceFactory:()=>ai,ConnectionDetails:()=>ci,DATA_INTEGRATION_TYPES:()=>$e,DEFAULT_SHORT_ID_LENGTH:()=>V,DataManager:()=>mi,DereferencedJoin:()=>ii,DestructManager:()=>Ii,DistributedLockImpl:()=>Si,DistributedLockManager:()=>vi,DocumentReference:()=>Kt,DocumentReferenceFactory:()=>Mi,DocumentStore:()=>ki,EMPTY_CHAT_ID:()=>ne,ENVIRONMENT_IDS:()=>Pe,ExternalAuthClient:()=>Ti,ExtractionClient:()=>_i,FETCH_BEYOND_LIMIT:()=>In,FLUX_MODEL_NAMES:()=>Ce,GEMINI_CHAT_MODEL_NAMES:()=>ye,GRAPHQL_INTEGRATION_TYPES:()=>He,GROK_CHAT_MODEL_NAMES:()=>me,GroupedJoin:()=>ri,HTTP_INTEGRATION_TYPES:()=>Ve,HttpStatus:()=>Le,INTEGRATION_SCHEMA_TYPES:()=>We,INTEGRATION_TYPES:()=>Ue,IntegrationClient:()=>a,JobClient:()=>Ei,JoinQueryBuilder:()=>ti,LastUsedValueExecuteFunctionCache:()=>At,LimitUnderflowState:()=>dn,LocalQueryManager:()=>Wi,METRIC_DOMAIN:()=>tt,METRIC_FUNCTIONS:()=>et,METRIC_INTERVAL_ALIGNMENT:()=>it,MatchMaker:()=>he,MutationSender:()=>Oi,NOOP_FN:()=>Dn,NativeQueryManager:()=>Ci,NotificationClient:()=>Di,OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES:()=>_e,OPENAI_AUDIO_MODEL_NAMES:()=>Ee,OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES:()=>Te,OPENAI_CHAT_MODEL_NAMES:()=>fe,OPENAI_EMBEDDINGS_MODEL_NAMES:()=>Se,OPENAI_IMAGE_MODEL_NAMES:()=>ke,OPEN_AI_CREATE_SPEECH_FORMATS:()=>Ne,ObservabilityClient:()=>qi,Pagination:()=>zt,QueryBuilder:()=>Xt,QueryBuilderFactory:()=>Jt,QuerySender:()=>zi,QuerySubscriptionManager:()=>vn,QueueManagerFactory:()=>kn,QueueManagerImpl:()=>_n,RAG_TYPES:()=>Fe,RERANK_PROVIDERS:()=>pe,RateLimiter:()=>En,RpcManager:()=>Ln,SQUID_BUILT_IN_INTEGRATION_IDS:()=>Ye,SQUID_METRIC_NAMES:()=>Xe,SQUID_REGIONS:()=>st,STABLE_DIFFUSION_MODEL_NAMES:()=>Oe,SchedulerClient:()=>Qn,SecretClient:()=>c,SocketManager:()=>Gn,Squid:()=>Zn,SquidClientError:()=>An,StorageClient:()=>zn,VENDOR_AI_CHAT_MODEL_NAMES:()=>Ie,VOYAGE_EMBEDDING_MODEL_NAMES:()=>we,WebClient:()=>Jn,WebhookManager:()=>Yn,compareArgsByReference:()=>Ct,compareArgsBySerializedValue:()=>Dt,deserializeQuery:()=>xi,generateId:()=>H,generateShortId:()=>z,generateShortIds:()=>J,generateUUID:()=>$,generateUUIDPolyfill:()=>G,getConsoleUrl:()=>o,getCustomizationFlag:()=>Ft,isBuiltInIntegrationId:()=>Ze,isIntegrationModelSpec:()=>Re,isPlaceholderParam:()=>je,isVendorAiChatModelName:()=>ve,rawSquidHttpDelete:()=>jn,rawSquidHttpGet:()=>Rn,rawSquidHttpPatch:()=>xn,rawSquidHttpPost:()=>Nn,rawSquidHttpPut:()=>Fn,transformFileArgs:()=>qt,tryDeserializing:()=>Bn,visitQueryResults:()=>Fi});const r=["aiData","api","application","application-kotlin","auth","backend-function","connector","integration","internal-storage","internalCodeExecutor","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)}}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=N,n}return f(t,e),t.create=function(e,t,i){return new D(e,t,i)},t.prototype.next=function(e){this.isStopped?q(function(e){return E("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?q(E("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?q(_,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 q(e,t){var i=null;i&&k.setTimeout(function(){return i(e,t)})}var N={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(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe((0,h.filter)(e=>"aiStatus"===e.type&&e.agentId===this.agentId),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 provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}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=`![${r}](${n.aiFileUrl.url})`;break;case"document":t=`[${r}](${n.aiFileUrl.url})`}i=i.replace(`\${id:${e}}`,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","flux","gemini","openai","grok","stability","voyage","external"],fe=["gpt-5-mini","gpt-5-nano","gpt-5.2","gpt-5.2-pro"],ye=["gemini-3-pro","gemini-3-flash","gemini-2.5-flash-lite"],me=["grok-4","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],be=["claude-haiku-4-5-20251001","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],ke=["dall-e-3"],Te=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],_e=["tts-1","tts-1-hd","gpt-4o-mini-tts"],Ee=[...Te,..._e],Oe=["stable-diffusion-core"],Ce=["flux-pro-1.1","flux-kontext-pro"],De=[...ke,...Oe,...Ce],Ae=[...Te],qe=[..._e],Ne=["mp3","opus","aac","flac","wav","pcm"];function Re(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const Fe=["contextual","basic"],xe=["secret","regular"];function je(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const Pe=["dev","prod"],Be="built_in_agent",Le={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},Qe="ai_agents",Ue=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","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","google_calendar","google_docs","google_drive","graphql","hubspot","jira","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","servicenow","snowflake","spanner","xata","zendesk","mail","slack","mcp","a2a","legend","teams","openai_compatible"],$e=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],Ge=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth"],He=["graphql"],Ve=["api"],We=["data","api","graphql"],Ke="built_in_db",ze="built_in_queue",Je="built_in_storage",Ye=[Ke,ze,Je];function Ze(e){return Ye.includes(e)}const Xe=["squid_functionExecution_count","squid_functionExecution_time"],et=["sum","max","min","average","median","p95","p99","count"],tt=["user","squid"],it=["align-by-start-time","align-by-end-time"],nt=["in","not in","array_includes_some","array_includes_all","array_not_includes"],rt=[...nt,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],st=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],ot=["CONNECTED","DISCONNECTED","REMOVED"];class at{constructor(e,t,i,n){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.backendFunctionManager=n}agent(e=Be,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()}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}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 ct={headers:{},queryParams:{},pathParams:{}};class ut{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:{...ct,...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 lt{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 ht=/[.\[\]]/;function dt(e,t){if(!e)return;const i=t.split(ht);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 pt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function gt(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=pt(t)?St(t)??{}:{};s[e]=i,s=i}else s[e]=i}}function ft(e,t,i="."){const n=t.split(i);let r=e;for(;n.length;){const e=L(n.shift());if(n.length){const t=pt(r[e])?St(r[e])??{}:{};r[e]=t,r=t}else delete r[e]}}function yt(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function mt(e){return null==e}function bt(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)||!bt(e[i],t[i]))return!1;return!0}function It(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=vt(e[n],t);return i}function vt(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 It(e,t);if(e instanceof Map)return new Map(It(Array.from(e),t));if(e instanceof Set)return new Set(It(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]=vt(e[i],t));return r}function St(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 wt(e,t){if(e===t||mt(e)&&mt(t))return 0;if(mt(e))return-1;if(mt(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 Mt(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function kt(e){if(Array.isArray(e))return e.map(e=>kt(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]=kt(e[t])}),i}function Tt(e){return _t(kt(e))}function _t(e){if(void 0===e)return null;const t=vt(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function Et(e){return vt(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 Ot(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=_t(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 Ct=(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},Dt=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(_t(e[i])!==_t(t[i]))return!1;return!0};class At{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||Ct,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(Nt(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 Nt(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class Rt{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?Ct: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:_t(t)},a=Et((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 Ft(e){if("undefined"!=typeof globalThis)return globalThis[e]}function xt(){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){xt().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 jt{static debug(...e){(function(){const e=xt();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=xt();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Pt{constructor(e){this.destructManager=e,this.clientTooOldSubject=new h.BehaviorSubject(!1),this.isTenant=!0===xt().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=xt()[Lt];return e?e():$()}generateClientId(){const e=xt()[Bt];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 Bt="SQUID_CLIENT_ID_GENERATOR",Lt="SQUID_CLIENT_REQUEST_ID_GENERATOR",Qt="__squidId";function Ut(e){return Et(e)}function $t(...e){const[t,i,n]=e,r="object"==typeof t?t:{docId:t,collectionName:i,integrationId:n};return r.integrationId||(r.integrationId=void 0),Tt(r)}function Gt(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return bt(e,t);if("!="===i)return!bt(e,t);switch(i){case"<":return!mt(e)&&(!!mt(t)||t<e);case"<=":return!!mt(t)||!mt(e)&&t<=e;case">":return!mt(t)&&(!!mt(e)||t>e);case">=":return!!mt(e)||!mt(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Ht(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Ht(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Ht(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Ht(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=>bt(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=>bt(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=>bt(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function Ht(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 Vt(e,t){return`${e}_${t}`}function Wt(e){return"fieldName"in e}class Kt{constructor(e,t,i){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.refId=$()}get squidDocId(){return this._squidDocId}get data(){return vt(this.dataRef)}get dataRef(){return L(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=Ut(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:Ut(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:vt(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:Ut(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=Ut(this.squidDocId),n=i.integrationId;let r=Et(i.docId);if(r[Qt]&&(r={}),n===Ke&&r.__id)try{const e=Et(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:Ut(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=Et(this._squidDocId);if("object"==typeof e&&e.docId){const t=Et(e.docId);if("object"==typeof t&&Object.keys(t).includes(Qt))return!0}return!1}}class zt{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||mt(e)&&mt(t))return 0;if(mt(e))return-1;if(mt(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:r}of i){const i=wt(dt(e,n),dt(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:dt(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:dt(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 Jt{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}=Ut(e),r=Et(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 Xt(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService)}}class Yt{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 Zt{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 Zt(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 zt(this,e)}}class Xt extends Yt{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 Ot(this.build())}where(e,t,i){if(B(rt.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(bt(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=$t(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 ei(n,r,s)}))}dereference(){return new Zt(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new Xt(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService);return e.query=vt(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 zt(this,e)}mergeConditions(){const e=[],t=Mt(this.query.conditions.filter(Wt)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=Mt(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)=>wt(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!Wt(e)),...e]}}class ei{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class ti extends Yt{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 ti(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,vt(this.joins),vt(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?$t(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 ri(this)}dereference(){return new ii(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ti(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,vt(this.leftToRight),vt(this.joins),vt(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 zt(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class ii{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 ii(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 zt(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class ni{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 ni(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 zt(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 ri{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 ni(this)}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}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 zt(this,e)}groupData(e,t){const i=Mt(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 si{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!==Ke)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={[Qt]:$()};else e=e&&"string"!=typeof e?{__id:Tt(e)}:{__id:e||$()};const t=$t(Tt(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 Kt?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new ti(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new oi(...e)}}class oi{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 oi(...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 zt(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=dt(this.extractData(t),n),s=dt(this.extractData(i),n);if(!Gt(e,s,"=="))return Gt(s,e,"<")?r?-1:1:r?1:-1}return 0}).slice(0,this.getLimit())}))}}class ai{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 si(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class ci{constructor(e,t){this.clientIdService=e,this.socketManager=t,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 ui=i(150);function li(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?vt(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function hi(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function di(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=vt(e);t=vt(t);for(const[e]of hi(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 hi(t))i.properties[e]=pi([...i.properties[e]||[],...n]);return i}(e,t);const i=vt(e);for(const[e,n]of hi(t)){const t=n;for(const n of t){const t=li(dt(i.properties,e),n);void 0===t?ft(i.properties,e):gt(i.properties,e,t)}}return i}function pi(e){let t=0;for(;t+1<e.length;){const i=gi(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function gi(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 fi(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(di(e,t),"Merge result cannot be null"));i.push(n)}return i}const yi="dataManager_runInTransaction";class mi{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(yi)?this.lockManager.lockSync(yi):await this.lockManager.lock(yi);let i=bi;const n=()=>i!==bi;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(yi)}catch(e){i=n()?i:e}}n()&&r(i)})}async applyOutgoingMutation(e,t){const i=$t(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(yi)||(await this.lockManager.lock(yi),this.lockManager.release(yi)),this.knownDirtyDocs.delete(i);const n=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(n&&!n.sentToServer)n.mutation=L(fi([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=hi(t);for(const[e,t]of n){const n=t;for(const t of n){const n=li(dt(i,e),t);void 0===n?ft(i,e):gt(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(yi);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(yi)}}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=$t(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||Tt({...t,__ts__:void 0})!==Tt(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 ui.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=$t(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}=Ut(t);this.setExpiration(t,!0);try{const i=e.includes(Qt)?[]: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=$t(t.mutation.squidDocIdObj),n=e[i];n&&(t.mutation.squidDocIdObj=Ut(n))})}),Object.entries(e).forEach(([e,t])=>{yt(this.pendingOutgoingMutations,e,t),yt(this.docIdToLocalTimestamp,e,t),yt(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 bi=Symbol("undefined");class Ii{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 vi{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 Si(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 Si{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 wi{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 Mi{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 Kt(e,L(this.dataManager,"dataManager not found"),t);const{integrationId:n,collectionName:r}=Ut(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=Ut(e),n=Ut(t);yt(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class ki{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=vt(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(Mt(e,e=>Tt(t.map(t=>dt(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;yt(this.squidDocIdToDoc,e,t);const n=Ut(t),r=Et(n.docId);this.saveDocument(t,{...i,...r,__docId__:n.docId})}compareSquidDocs(e,t,i){for(const{fieldName:n,asc:r}of i){const i=wt(dt(e,n),dt(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 Ti{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 _i{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 Ei{constructor(e,t,i){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.clientIdService.observeClientId().pipe((0,h.distinctUntilChanged)(),(0,h.skip)(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))jt.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])}))}}class Oi{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=fi(e),n=i.map(e=>`sendMutation_${$t(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 jt.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}}class Ci{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class Di{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return 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 Ai={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class qi{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!Ni.test(e)||e.length>=Ri);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={...Ai,...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 Ni=/^[a-zA-Z0-9_-]+$/,Ri=1e3;async function Fi(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 xi(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=ji(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=ji(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=ji(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}=Pi(i[0]),s=i.map(t=>xi(e,t));return e.collection(n,r).or(...s)}(e,t)}}function ji(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 Pi(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 Pi(e.queries[0])}}const Bi={"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)=>Li(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>Li(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>Li(e,t)&&Ui(t),"like_cs:like_cs":(e,t)=>Li(e,t),"like:not like":(e,t)=>!Qi(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!Qi(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!Qi(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!Qi(e,t),"not like:like":(e,t)=>Gi(e,t),"not like_cs:like":(e,t)=>Gi(e,t),"not like:like_cs":(e,t)=>Gi(e,t),"not like_cs:like_cs":(e,t)=>Gi(e,t),"not like:not like":(e,t)=>Li(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>Li(t,e)&&Ui(e),"not like:not like_cs":(e,t)=>Li(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>Li(t,e),"in:like":(e,t)=>e.every(e=>Gt(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Gt(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>Gt(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>Gt(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&&$i(e)||Hi(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&$i(e)||Hi(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&$i(t)||Hi(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&$i(t)||Hi(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=>Gt(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Gt(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Gt(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Gt(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 Li(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return $i(t.substring(n));const r=e[i],s=t[n];return"%"===r&&"%"===s?Li(e,t,i+1,n+1)||Li(e,t,i+1,n):"%"!==r&&("%"===s?Li(e,t,i,n+1)||Li(e,t,i+1,n):(r===s||"_"===s)&&Li(e,t,i+1,n+1))}function Qi(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return $i(t.substring(n));if(n>=t.length)return $i(e.substring(i));const r=i<e.length?e[i]:"",s=n<t.length?t[n]:"";return"%"===r&&"%"===s?Qi(e,t,i+1,n+1)||Qi(e,t,i,n+1)||Qi(e,t,i+1,n):"%"===r||"%"===s?Qi(e,t,i,n+1)||Qi(e,t,i+1,n):(r===s||"_"===r||"_"===s)&&Qi(e,t,i+1,n+1)}function Ui(e){return!/[a-zA-Z]/.test(e)}function $i(e){return e.split("").every(e=>"%"===e)}function Gi(e,t){return e.length>0&&$i(e)||t.length>0&&$i(t)||Hi(e)&&0===t.length}function Hi(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 Vi{constructor(e){this.query=e,this.query=e,this.parsedConditions=this.parseConditions(this.query.conditions.filter(Wt))}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)=>!bt(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(Wt),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=dt(e,i);if("in"===n){if(t.value.includes(r))continue;return!1}if("not in"!==n){if(!Gt(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=Bi[`${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 Wi{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 Vi(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[$t(e.__docId__,i,t)])}}function Ki(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 zi{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(Ki(Boolean),(0,h.take)(1)).subscribe(()=>{this.processQueryBatch()})},0),i)}async waitForAllQueriesToFinish(){return(0,h.firstValueFrom)(this.inflightQueriesCount.pipe(Ki(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 Ji={d:(e,t)=>{for(var i in t)Ji.o(t,i)&&!Ji.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function Yi(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 Zi(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return Xi(e,t);if(0===t.length)return Yi("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];Yi(!Array.isArray(r)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),r=r[i],Yi(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 Yi(!Array.isArray(r)||n(s),()=>`Invalid array index Path: '${t}`),(null==r?void 0:r[s])===i?e:en(e,t,i)}(e,t.path,t.value);case"delete":return Xi(e,t.path);case"batch":return t.actions.reduce((e,t)=>Zi(e,t),e)}}function Xi(e,t){Yi(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;Yi("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:en(e,t,void 0)}function en(e,t,i){function n(e,i){Yi(!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];Yi(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 tn(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(...tn(t,"as-is"));return"unique-and-sorted"===t?sn(i):i}function nn(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 rn(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=rn(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&&nn(n,s)&&(i[r]=void 0,e++)}}return i.filter(e=>void 0!==e)}const on=(an={Observable:()=>h.Observable,Subject:()=>h.Subject},cn={},Ji.d(cn,an),cn);var an,cn;const un=(ln={filter:()=>Ki,map:()=>x},hn={},Ji.d(hn,ln),hn);var ln,hn,dn;class pn{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!==pn.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===pn.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))}}pn.StopFillToken=Symbol("Trie.StopFillToken");class gn extends on.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class fn{constructor(e){this.rootState=e,this.observersTrie=new pn,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,un.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=Zi(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=tn(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=sn([...t,...i]),r=new pn;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 pn;for(const e of t)null==n||n.set(e,!0);return new on.Observable(t=>{const r=this.observersTrie.getOrSet(e,()=>new gn);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,un.filter)(({action:e})=>void 0===n||tn(e,"as-is").some(e=>!n.get(e))),(0,un.map)(({action:t,value:i,oldValue:n})=>{let s=this.stubForUnusedPaths;if(r.isAllDetailsMode){const i=tn(t,"as-is");s=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=rn(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++)nn(t[r],n)&&(i[r]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>nn(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 yn(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?yn(e,t,i,s+1,r):yn(e,t,i,n,s-1)}function mn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==yn(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 bn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=yn(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"}(dn||(dn={}));const In=100;class vn{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 wn,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}=Ut(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=Et(i);let s;if(Wt(e)){const i=dt(t,e.fieldName)??null;s=Gt(e.value,i,e.operator)}else s=Sn(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 dn.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+In?dn.ENABLED:dn.DISABLED;break;case dn.DISABLED:break;case dn.ENABLED:if(n.size<e.query.limit+20){e.limitUnderflowState=dn.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 Vi(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)))),Ki(()=>this.allOngoingQueriesGotInitialResult(o)),(0,h.startWith)(void 0),(0,h.pairwise)(),Ki(([e,t])=>!bt(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 Vi(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=Vt(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(Ki(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)}),Ki(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?dn.UNKNOWN:dn.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(Ki(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(Wt).filter(e=>e.fieldName===i.right).forEach(e=>{s.delete(e.value)});if(0===s.size)return!1;const o=vt(n);o.conditions=o.conditions.filter(e=>!Wt(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(Wt).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(Ki(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=Vt(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 Vi(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await(0,h.firstValueFrom)(t.queryRegistered.pipe(Ki(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(Ki(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),Ki(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($t(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+In: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()):(jt.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=>{yt(this.localDocumentToClientRequestIds,t,e[t])})}}function Sn(e,t){for(const i of e.fields){const e=dt(t,i.fieldName)??null;if(Gt(i.value,e,i.operator))return!0;if(Gt(i.value,e,"!="))return!1}return!1}class wn{constructor(){this.stateService=new fn({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const r of e.conditions){if(Wt(r)&&["=="].includes(r.operator)){const e=Ot(r.fieldName);n.has(e)||(i++,n.add(e))}else i++;const s=this.getConditionStatePath(e,r),o=[...this.stateService.get(s)||[]];mn(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)||[]];mn(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)||[]];bn(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)||[]];bn(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,Tt(i))];var i}}class Mn{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 kn{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 _n(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const Tn="subscriptionMutex";class _n{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 Mn}async produce(e){await this.lockManager.lock(Tn);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(Tn)}}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(Tn);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(Tn)}}async performUnsubscribe(){await this.lockManager.lock(Tn);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(Tn)}}}class En{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}}const On={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 Cn(e="n_"){return`${e}${z(10).toLowerCase()}`}const Dn=e=>e();class An extends Error{constructor(e,t,i,n,r){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=r}}const qn="1.0.425";async function Nn(e){const t=await Pn({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=Bn(t.body),t}async function Rn(e){const t=await Pn({...e,method:"GET",files:[],filesFieldName:""});return t.body=Bn(t.body),t}async function Fn(e){const t=await Pn({...e,method:"PUT"});return t.body=Bn(t.body),t}async function xn(e){const t=await Pn({...e,method:"PATCH"});return t.body=Bn(t.body),t}async function jn(e){const t=await Pn({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=Bn(t.body),t}async function Pn({headers:e,files:t,filesFieldName:i,message:n,url:r,extractErrorMessage:s,method:o}){const a=new Headers(e);a.append(On.TRACE_ID,Cn("c_")),a.append(On.CLIENT_VERSION,qn);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",_t(n)),c.body=e}else void 0!==n&&(a.append("Content-Type","application/json"),c.body=_t(n));else"DELETE"===o&&void 0!==n&&(a.append("Content-Type","application/json"),c.body=_t(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=Bn(i);if(!s)throw new An(i,e.status,r,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new An(o,e.status,r,t,n)}const i=await e.text();return jt.debug(`received response from url ${r}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw jt.debug(`Unable to perform fetch request to url: ${r}`,e),e}}function Bn(e){if(e){try{return Et(e)}catch{}return e}}class Ln{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 En(60*o,5),ai:new En(20*o,5),secret:new En(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};jt.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 Nn({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 jt.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await Rn({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};jt.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 Fn({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};jt.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 xn({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};jt.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 jn({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")}}class Qn{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 Un(){}const $n="undefined"!=typeof process&&process.versions?.node?i(86):xt().WebSocket;class Gn{constructor(e,t,i,n=Dn,r,s){this.clientIdService=e,this.region=t,this.appId=i,this.messageNotificationWrapper=n,this.destructManager=r,this.authManager=s,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?jt.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(jt.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?jt.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?jt.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(jt.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),jt.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(){await(0,h.firstValueFrom)(this.observeConnectionReady().pipe((0,h.filter)(Boolean)))}notifyWebSocketIsNeeded(){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&&(jt.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.webSocketNeededSubject.next(!0),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=_t({message:e,authToken:t});jt.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(_t({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();jt.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($n?.WebSocket??$n)(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.")}:Un,i.onopen=function(e){s.connected=!0,(t.onopen||Un)(e),n=0},i.onclose=function(e){if(s.connected=!1,4999!==e.code&&4001!==e.code)return jt.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Un)(e),void s.reconnect(e);(t.onclose||Un)(e)},i.onerror=function(e){s.connected=!1,e&&"ECONNREFUSED"===e.code?s.reconnect(e):s.closeCalled||(t.onerror||Un)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;r&&n++<i?r=setTimeout(function(){(t.onreconnect||Un)(e),jt.debug("WebSocket trying to reconnect..."),s.open()},t.timeoutMillis||1e3):(t.onmaximum||Un)(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:()=>{jt.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{jt.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):jt.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{jt.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):jt.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 jt.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=Et(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),jt.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 Hn(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 Vn(e,t){return`${Hn(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Wn(e,t,i){return`${Vn(e,t)}${i?`-${i}`:""}`}function Kn(e){const t=Hn(e);return Vn(t.appId,t.environmentId)}class zn{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 Jn{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 Yn{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(On.TRACE_ID,Cn("c_")),l.append(On.CLIENT_VERSION,qn),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=_t(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 An(i,d.status,u,p,t)}const g=await d.text();let f;try{f=JSON.parse(g)}catch{f=g}return f}}class Zn{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Ii,B(e.appId,"APP_ID_MUST_BE_PROVIDED");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=Wn(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Pt(this.destructManager),jt.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new lt(e.apiKey,e.authProvider),this.socketManager=new Gn(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager),this.rpcManager=new Ln(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new Di(this.socketManager,this.rpcManager),this.jobClient=new Ei(this.socketManager,this.rpcManager,this.clientIdService),this.backendFunctionManager=new Rt(this.rpcManager),this.aiClient=new at(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager),this.apiClient=new ut(this.rpcManager),this.documentStore=new ki,this.lockManager=new Mn,this.distributedLockManager=new vi(this.socketManager,this.destructManager),this.documentIdentityService=new wi(this.documentStore,this.destructManager),this.documentReferenceFactory=new Mi(this.documentIdentityService),this.querySender=new zi(this.rpcManager,this.destructManager),this.observabilityClient=new qi(this.rpcManager),this.schedulerClient=new Qn(this.rpcManager),this._appId=i,this.querySubscriptionManager=new vn(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager),this.localQueryManager=new Wi(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new Oi(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new Jt(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService),this.dataManager=new mi(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new ai(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.webhookManager=new Yn(this.rpcManager,e.region,i),this.nativeQueryManager=new Ci(this.rpcManager),this._connectionDetails=new ci(this.clientIdService,this.socketManager),this.queueManagerFactory=new kn(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new l(this.rpcManager,this.options.region,Kn(i),this.options.consoleRegion),this.webClient=new Jn(this.rpcManager,this.options.region,Kn(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){const t=Tt(e);let i=Zn.squidInstancesMap[t];return i||(i=new Zn(e),Zn.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(Zn.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Ke){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)}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 zn(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new Ti(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new _i(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=ze){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(Zn.squidInstancesMap).find(([,e])=>e===this);e&&delete Zn.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)=>Wn(e,t,i)}}_validateNotDestructed(){B(!this.destructManager.isDestructing,"The client was already destructed.")}}var Xn=exports;for(var er in n)Xn[er]=n[er];n.__esModule&&Object.defineProperty(Xn,"__esModule",{value:!0})})();