@squidcloud/client 1.0.489 → 1.0.491
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/internal-common/src/public-types/ai-agent.public-types.d.ts +57 -3
- package/dist/internal-common/src/public-types/ai-common.public-types.d.ts +7 -7
- package/dist/internal-common/src/public-types/ai-knowledge-base.public-types.d.ts +248 -4
- package/dist/internal-common/src/public-types/connector.public-types.d.ts +1 -1
- package/dist/internal-common/src/public-types/extraction.public-types.d.ts +15 -1
- package/dist/internal-common/src/public-types/integration.public-types.d.ts +10 -2
- package/dist/internal-common/src/public-types/source-code.public-types.d.ts +12 -0
- package/dist/typescript-client/src/ai-knowledge-base/ai-knowledge-base-client-reference.d.ts +31 -3
- package/dist/typescript-client/src/integration-client.d.ts +30 -3
- package/dist/typescript-client/src/query-utils.d.ts +14 -2
- package/dist/typescript-client/src/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"ws";import{BehaviorSubject as t,NEVER as i,Observable as s,ReplaySubject as n,Subject as r,combineLatest as o,combineLatestWith as a,concatMap as c,debounceTime as u,defaultIfEmpty as l,defer as d,delay as h,distinctUntilChanged as p,filter as g,finalize as f,first as y,firstValueFrom as m,from as I,interval as b,lastValueFrom as w,map as v,of as S,pairwise as M,race as k,share as _,skip as T,startWith as E,switchAll as D,switchMap as C,take as O,takeUntil as q,takeWhile as A,tap as R,timer as j}from"rxjs";var N={273(e,t){Object.defineProperty(t,"__esModule",{value:!0})},150(e,t,i){var s=this&&this.__createBinding||(Object.create?function(e,t,i,s){void 0===s&&(s=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,s,n)}:function(e,t,i,s){void 0===s&&(s=i),e[s]=t[i]}),n=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||s(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0});const r=i(642);t.default=r.PromisePool,n(i(273),t),n(i(642),t),n(i(837),t),n(i(426),t),n(i(858),t),n(i(172),t)},837(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class i extends Error{constructor(e,t){super(),this.raw=e,this.item=t,this.name=this.constructor.name,this.message=this.messageFrom(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e,t){return new this(e,t)}messageFrom(e){return e instanceof Error||"object"==typeof e?e.message:"string"==typeof e||"number"==typeof e?e.toString():""}}t.PromisePoolError=i},234(e,t,i){t.PromisePoolExecutor=void 0;const s=i(642),n=i(172),r=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],processedItemsCounter:0,taskTimeout:0,shouldStoreProcessedItems:!0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw n.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}storeProcessedItems(e=!0){return this.meta.shouldStoreProcessedItems=e,this}shouldStoreProcessedItems(){return this.meta.shouldStoreProcessedItems}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}flushProcessedItems(){this.meta.processedItems=[]}incrementProcessedItemsCounter(){this.meta.processedItemsCounter+=1}processedCount(){return this.meta.processedItemsCounter}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw n.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 n.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 n.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 n.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw n.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw n.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(s.PromisePool.notRun)),this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=s.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 s=>{await this.handleErrorFor(s,e,t),this.removeActive(i)}).finally(()=>{this.shouldStoreProcessedItems()&&this.processedItems().push(e),this.incrementProcessedItemsCounter(),this.runOnTaskFinishedHandlers(e)});this.tasks().push(i),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[i,s]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),i()]).finally(s)}createTaskTimeout(e){let t;return[async()=>new Promise((i,s)=>{t=setTimeout(()=>{s(new r.PromisePoolError(`Task in promise pool timed out after ${this.taskTimeout()}ms`,e))},this.taskTimeout())}),()=>clearTimeout(t)]}save(e,t){return this.shouldUseCorrespondingResults()?this.results()[t]=e:this.results().push(e),this}removeActive(e){return this.tasks().splice(this.tasks().indexOf(e),1),this}async handleErrorFor(e,t,i){if(this.shouldUseCorrespondingResults()&&(this.results()[i]=s.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 n.ValidationError}async runErrorHandlerFor(e,t){try{await(this.errorHandler?.(e,t,this))}catch(e){this.rethrowIfNotStoppingThePool(e)}}runOnTaskStartedHandlers(e){this.onTaskStartedHandlers.forEach(t=>{t(e,this)})}runOnTaskFinishedHandlers(e){this.onTaskFinishedHandlers.forEach(t=>{t(e,this)})}rethrowIfNotStoppingThePool(e){if(!this.isStoppingThePoolError(e))throw e}saveErrorFor(e,t){this.errors().push(r.PromisePoolError.createFrom(e,t))}async drained(){return await this.drainActiveTasks(),{errors:this.errors(),results:this.results()}}async drainActiveTasks(){await Promise.all(this.tasks())}}},642(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const s=i(234);class n{constructor(e){this.shouldStoreProcessedItems=!0,this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new n(e).withConcurrency(this.concurrency);return"function"==typeof this.errorHandler&&t.handleError(this.errorHandler),"number"==typeof this.timeout?t.withTaskTimeout(this.timeout):t}static for(e){return(new this).for(e)}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers.push(e),this}dontStoreProcessedItems(){return this.shouldStoreProcessedItems=!1,this}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new s.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).storeProcessedItems(this.shouldStoreProcessedItems).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=n,n.notRun=Symbol("notRun"),n.failed=Symbol("failed")},426(e,t){Object.defineProperty(t,"__esModule",{value:!0})},858(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i},172(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class i extends Error{constructor(e){super(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e){return new this(e)}}t.ValidationError=i},220(t){t.exports=e}};const F={};function x(e){const t=F[e];if(void 0!==t)return t.exports;const i=F[e]={exports:{}};return N[e].call(i.exports,i,i.exports,x),i.exports}x.d=(e,t)=>{if(Array.isArray(t))for(var i=0;i<t.length;){var s=t[i++],n=t[i++];x.o(e,s)?0===n&&i++:0===n?Object.defineProperty(e,s,{enumerable:!0,value:t[i++]}):Object.defineProperty(e,s,{enumerable:!0,get:n})}else for(var s in t)x.o(t,s)&&!x.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},x.o=(e,t)=>Object.hasOwn(e,t);const B=["application","auth","mutation","native-query","query"];function P(e,t,i,s,n,r){let o="https",a=`${s||t}.${n||e}.${new URL("https://squid.cloud").host}`,c="";/^local/.test(e)&&(o="http",c=r||function(e){const t=e.replace(/^\/+/,"").split("/")[0]||"";return B.includes(t)}(i)?"8001":"8000",/android$/.test(e)?a="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(a="localhost"));const u=o+"://"+a+(c?`:${c}`:""),l=i.replace(/^\/+/,"");return l?`${u}/${l}`:u}function U(e,t,i=""){return P(function(e,t){return t||(e.includes("sandbox")?"squidai.westus3.azure.sandbox":e.includes("local")?"local":e.includes("staging")?"squidai.westus3.azure.staging":"us-east-1.aws")}(e,t),"console",i)}class Q{constructor(e,t,i,s){this.rpcManager=e,this.iacBaseUrl=U(t,s,`openapi/iac/applications/${i}/connectors`)}async list(){return await this.rpcManager.get(this.iacBaseUrl)??[]}async connect(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e}`,{})}async disconnect(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}}class L{constructor(e,t,i,s){this.rpcManager=e,this.iacBaseUrl=U(t,s,`openapi/iac/applications/${i}/integrations`)}async list(e){const t=await this.rpcManager.get(this.iacBaseUrl);return e?t.filter(t=>t.type===e):t}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}async discoverSourceRepositories(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-source-repositories`,{})}async discoverSourceRepositoriesFromDraft(e){return await this.rpcManager.post(`${this.iacBaseUrl}/discover-source-repositories`,e)}async generateAiDescriptionsForDataSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions`,t)}async generateAiDescriptionsForAssociations(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-associations`,t)}async generateAiDescriptionsForStoredProcedures(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-stored-procedures`,t)}async generateAiDescriptionsForEndpoints(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-endpoints`,t)}async discoverDataConnectionSchema(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-schema`,{})}async testDataConnection(e){return await this.rpcManager.post(`${this.iacBaseUrl}/test-connection`,e)}async discoverGraphQLConnectionSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-graphql-schema`,t)}async discoverOpenApiSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema`,t)}async discoverOpenApiSchemaFromFile(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema-from-file`,{})}}class ${constructor(e){this.rpcManager=e}get apiKeys(){return new G(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 G{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 H{constructor(e,t,i,s){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=s,this.integrationClient=new L(this.rpcManager,this.region,this.appId,this.consoleRegion),this.connectorClient=new Q(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new $(this.rpcManager)}integrations(){return this.integrationClient}connectors(){return this.connectorClient}secrets(){return this.secretClient}}function K(e){return"function"==typeof e}function W(e){return function(t){if(function(e){return K(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 V=function(e,t){return V=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])},V(e,t)};function J(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}V(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function z(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],s=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&s>=e.length&&(e=void 0),{value:e&&e[s++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Y(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var s,n,r=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(s=r.next()).done;)o.push(s.value)}catch(e){n={error:e}}finally{try{s&&!s.done&&(i=r.return)&&i.call(r)}finally{if(n)throw n.error}}return o}function X(e,t,i){if(i||2===arguments.length)for(var s,n=0,r=t.length;n<r;n++)!s&&n in t||(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return e.concat(s||Array.prototype.slice.call(t))}Object.create,Object.create;var Z,ee=((Z=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),Z.prototype.constructor=Z,Z);function te(e,t){if(e){var i=e.indexOf(t);0<=i&&e.splice(i,1)}}var ie=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,s,n;if(!this.closed){this.closed=!0;var r=this._parentage;if(r)if(this._parentage=null,Array.isArray(r))try{for(var o=z(r),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else r.remove(this);var c=this.initialTeardown;if(K(c))try{c()}catch(e){n=e instanceof ee?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=z(u),d=l.next();!d.done;d=l.next()){var h=d.value;try{se(h)}catch(e){n=null!=n?n:[],e instanceof ee?n=X(X([],Y(n)),Y(e.errors)):n.push(e)}}}catch(e){i={error:e}}finally{try{d&&!d.done&&(s=l.return)&&s.call(l)}finally{if(i)throw i.error}}}if(n)throw new ee(n)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)se(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)&&te(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&te(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function se(e){K(e)?e():e.unsubscribe()}ie.EMPTY;var ne={setTimeout:function(e,t){for(var i=[],s=2;s<arguments.length;s++)i[s-2]=arguments[s];var n=ne.delegate;return(null==n?void 0:n.setTimeout)?n.setTimeout.apply(n,X([e,t],Y(i))):setTimeout.apply(void 0,X([e,t],Y(i)))},clearTimeout:function(e){var t=ne.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function re(){}var oe=ae("C",void 0,void 0);function ae(e,t,i){return{kind:e,value:t,error:i}}var ce=function(e){function t(t){var i,s=e.call(this)||this;return s.isStopped=!1,t?(s.destination=t,((i=t)instanceof ie||i&&"closed"in i&&K(i.remove)&&K(i.add)&&K(i.unsubscribe))&&t.add(s)):s.destination=pe,s}return J(t,e),t.create=function(e,t,i){return new le(e,t,i)},t.prototype.next=function(e){this.isStopped?he(function(e){return ae("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?he(ae("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?he(oe,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}(ie);Function.prototype.bind;var ue=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){de(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){de(e)}else de(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){de(e)}},e}(),le=function(e){function t(t,i,s){var n,r=e.call(this)||this;return n=K(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=s?s:void 0}:t,r.destination=new ue(n),r}return J(t,e),t}(ce);function de(e){!function(e){ne.setTimeout(function(){throw e})}(e)}function he(e,t){var i=null;i&&ne.setTimeout(function(){return i(e,t)})}var pe={closed:!0,next:re,error:function(e){throw e},complete:re};function ge(e,t,i,s,n){return new fe(e,t,i,s,n)}var fe=function(e){function t(t,i,s,n,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=n?function(e){try{n(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=s?function(){try{s()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return J(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}(ce);function ye(e,t){return W(function(i,s){var n=0;i.subscribe(ge(s,function(i){s.next(e.call(t,i,n++))}))})}function me(e){return null!=e}let Ie=e=>new Error(e);function be(e,t,...i){e||function(e,...t){const i=ve(e);if("object"==typeof i)throw i;throw Ie(i||"Assertion error",...t)}(t,...i)}function we(e,t,...i){return be(e,t,...i),e}function ve(e){return void 0===e?"":"string"==typeof e?e:e()}function Se(e,t,i){const s=ve(e);if("object"==typeof s)throw s;return`${s?`${s}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(i)}`}function Me(){return"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():ke()}function ke(){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 _e(){return Me()}function Te(){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()))}function Ee(e=18,t="",i=""){be(t.length<e,"ID prefix is too long"),be(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let s="";for(let t=0;t<e;t++)s+=Te();if(t.length>0&&(s=t+s.substring(t.length)),i)for(;s.charAt(t.length)===i[t.length];)s=s.substring(0,t.length)+Te()+s.substring(t.length+1);return s}function De({count:e,length:t,prefix:i}){be(e>=0,`Invalid IDs count: ${e}`);const s=new Set;for(;s.size<e;)s.add(Ee(t||18,i||""));return[...s]}const Ce=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Oe(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Oe(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Oe(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(Ce.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${Ce.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 qe(e,t,i){const s=atob(e),n=new Uint8Array(s.length);for(let e=0;e<s.length;e++)n[e]=s.charCodeAt(e);return new File([n],t,{type:i||"application/octet-stream"})}function Ae(e,t){const{agentId:i,jobId:s}=t;return e.notifyWebSocketIsNeeded(),e.observeNotifications().pipe(g(e=>"aiStatus"===e.type&&(void 0===i||e.agentId===i)),g(e=>!s||e.jobId===s),v(e=>({agentId:e.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.payload.statusUpdateId??e.messageId})))}class Re{constructor(e,t,i,s,n,r,o,a=()=>{}){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=s,this.socketManager=n,this.jobClient=r,this.backendFunctionManager=o,this.getMetricAnnotations=a}async get(){const e=await this.post("ai/agent/getAgent",{agentId:this.agentId});return e?.agent}async upsert(e){await this.post("ai/agent/upsertAgent",{...e,id:this.agentId})}async delete(){await this.post("ai/agent/deleteAgent",{agentId:this.agentId})}async updateInstructions(e){await this.setAgentOptionInPath("instructions",e)}async updateModel(e){await this.setAgentOptionInPath("model",e)}async updateConnectedAgents(e){await this.setAgentOptionInPath("connectedAgents",e)}async updateGuardrails(e){const t=await this.get();be(t,"Agent not found");const i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}async updatePii(e){const t=await this.get();be(t,"Agent not found");const i={onDetect:"off",...t.options?.pii,...e};await this.setAgentOptionInPath("pii",i)}async updateMcpServer(e){await this.post("ai/agent/setMcpServer",{agentId:this.agentId,mcpServer:e})}async generateMcpDescriptions(){return await this.post("ai/agent/generateMcpDescriptions",{agentId:this.agentId})}async updateCustomGuardrails(e){await this.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}async regenerateApiKey(){return await this.post("ai/agent/regenerateApiKey",{agentId:this.agentId})}async getApiKey(){return await this.post("ai/agent/getApiKey",{agentId:this.agentId})}async listRevisions(){return await this.post("ai/agent/listRevisions",{agentId:this.agentId})}async restoreRevision(e){await this.post("ai/agent/restoreRevision",{agentId:this.agentId,revisionNumber:e})}async deleteRevision(e){await this.post("ai/agent/deleteRevision",{agentId:this.agentId,revisionNumber:e})}chat(e,t,i){return this.chatInternal(e,t,i).responseStream}async transcribeAndChat(e,t,i){const s=this.chatInternal(e,t,i),n=await we(s.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:s.responseStream,transcribedPrompt:n.transcribedPrompt}}async ask(e,t,i){const s=await this.askInternal(e,!1,t,i);return this.replaceFileTags(s.responseString,s.annotations)}async askWithAnnotations(e,t,i){const s=await this.askInternal(e,!1,t,i);return{responseString:s.responseString,annotations:s.annotations}}async askAsync(e,t,i){const s={agentId:this.agentId,prompt:e,options:this.withMetricAnnotations(i),jobId:t};await this.post("ai/chatbot/askAsync",s)}observeStatusUpdates(e){return Ae(this.socketManager,{agentId:this.agentId,jobId:e})}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,i){return await this.askInternal(e,!1,t,i)}async transcribeAndAskWithVoiceResponse(e,t,i){const s=await this.askInternal(e,!0,t,i),n=s.voiceResponse;return{responseString:s.responseString,transcribedPrompt:s.transcribedPrompt,voiceResponseFile:qe(n.base64File,`voice.${n.extension}`,n.mimeType)}}async askWithVoiceResponse(e,t,i){const s=await this.askInternal(e,!0,t,i),n=s.voiceResponse;return{responseString:s.responseString,voiceResponseFile:qe(n.base64File,`voice.${n.extension}`,n.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}async addConnectedIntegration(e){await this.post("ai/agent/addConnectedIntegration",{agentId:this.agentId,integrationId:e.integrationId,integrationType:e.integrationType,description:e.description??""})}async addConnectedAgent(e){await this.post("ai/agent/addConnectedAgent",{agentId:this.agentId,connectedAgentId:e.agentId,description:e.description})}async addConnectedKnowledgeBase(e){await this.post("ai/agent/addConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e.knowledgeBaseId,description:e.description,includeMetadata:e.includeMetadata})}async addFunction(e){await this.post("ai/agent/addFunction",{agentId:this.agentId,functionId:e})}async removeConnectedAgent(e){await this.post("ai/agent/removeConnectedAgent",{agentId:this.agentId,connectedAgentId:e})}async removeConnectedIntegration(e){await this.post("ai/agent/removeConnectedIntegration",{agentId:this.agentId,integrationId:e})}async removeConnectedKnowledgeBase(e){await this.post("ai/agent/removeConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e})}async removeFunction(e){await this.post("ai/agent/removeFunction",{agentId:this.agentId,functionId:e})}async setAgentDescription(e){await this.post("ai/agent/setAgentDescription",{agentId:this.agentId,description:e})}async provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}async build(e,t,i){const s={agentId:this.agentId,request:e,memoryId:t,options:i};return await this.backendFunctionManager.executeFunction("buildAgent",s)}replaceFileTags(e,t={}){let i=e;for(const[e,s]of Object.entries(t)){let t="";const n=s.aiFileUrl.fileName?s.aiFileUrl.fileName:s.aiFileUrl.url;switch(s.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${n}](${s.aiFileUrl.url})`}const r=`\${id:${e}}`;i=i.replaceAll("`"+r+"`",t).replaceAll(r,t)}return i}async askInternal(e,t,i,s){if(i?.contextMetadataFilter&&Oe(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)Oe(i.contextMetadataFilterForKnowledgeBase[e]);s=s||Me(),i=this.withMetricAnnotations({...je,...i||{}});const n="string"==typeof e;let r="ai/chatbot/";r+=n||t?!n&&t?"transcribeAndAskWithVoiceResponse":n&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const o={agentId:this.agentId,prompt:n?e:void 0,options:i,jobId:s},a=n?void 0:[e];return await this.post(r,o,a,"file"),await this.jobClient.awaitJob(s)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Oe(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Oe(t.contextMetadataFilterForKnowledgeBase[e]);const s=Me(),n=void 0===(t=this.withMetricAnnotations({...je,...t||{}})).smoothTyping||t.smoothTyping;let o="";const a=new r,u=new r;this.ongoingChatSequences[s]=u;let l=-1;u.pipe(R(({tokenIndex:e})=>{void 0!==e&&e<l&&console.warn("Received token index out of order",e,l),void 0!==e&&(l=e)}),c(({value:e,complete:t,annotations:i})=>t?S({value:e,complete:t,annotations:i}):S(e).pipe((()=>{const e=globalThis.document,t="object"==typeof e&&null!==e&&!0===e.hidden;return n&&!t})()?h(0):R(),ye(e=>({value:e,complete:!1,annotations:void 0})))),A(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{o+=e,t&&i&&(o=this.replaceFileTags(o,i)),a.next(o)},error:e=>{console.error(e)},complete:()=>{a.complete()}});const d="string"==typeof e;i=i||Me();const p={agentId:this.agentId,jobId:i,prompt:d?e:void 0,options:t,clientRequestId:s},g={responseStream:a.pipe(f(()=>{delete this.ongoingChatSequences[s]}),_())};let y;return y=d?this.post("ai/chatbot/chat",p).catch(e=>{a.error(e),a.complete()}):this.post("ai/chatbot/transcribeAndChat",p,[e],"file").catch(e=>{throw a.error(e),a.complete(),e}),g.serverResponse=y.then(()=>this.jobClient.awaitJob(i)).catch(e=>{a.error(e),a.complete()}),g}withMetricAnnotations(e){const t=this.getMetricAnnotations();return t?{...e||{},metricAnnotations:{...t,...e?.metricAnnotations}}:e}async post(e,t,i=[],s="files"){const n={};return this.agentApiKey&&(n["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,s,n)}}const je={smoothTyping:!0,responseFormat:"text"};class Ne{constructor(e,t,i,s,n=()=>{}){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=s,this.getMetricAnnotations=n,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe(g(e=>"aiChatbot"===e.type),ye(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new Re(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:i,complete:s,tokenIndex:n,annotations:r}=e.payload;if(s&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:s,tokenIndex:void 0===n?void 0:n,annotations:r});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:s&&e===i.length-1,tokenIndex:void 0===n?void 0:n,annotations:r})}}const Fe="__squid_empty_chat_id";class xe{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},s=await this.rpcManager.post("ai/audio/createSpeech",i);return qe(s.base64File,`audio.${s.extension}`,s.mimeType)}}class Be{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 Pe{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 Ue(e){for(const t in e){const i=e[t];be("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),be(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}const Qe=new Set(["completed","failed","cancelled"]);class Le{constructor(e,t,i,s,n){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i,this.socketManager=s,this.clientIdService=n}async getKnowledgeBase(){return(await this.rpcManager.post("ai/knowledge-base/getKnowledgeBase",{knowledgeBaseId:this.knowledgeBaseId})).knowledgeBase}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async upsertKnowledgeBase(e){await this.rpcManager.post("ai/knowledge-base/upsertKnowledgeBase",{knowledgeBase:{id:this.knowledgeBaseId,...e}})}async generateMetadataFieldDescriptions(e){return this.rpcManager.post("ai/knowledge-base/generateMetadataFieldDescriptions",{knowledgeBaseId:this.knowledgeBaseId,fieldNames:e?.fieldNames,overwriteExisting:e?.overwriteExisting})}async delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextsPage(e){return this.rpcManager.post("ai/knowledge-base/listContextsPage",{id:this.knowledgeBaseId,truncateTextAfter:e?.truncateTextAfter,offset:e?.offset,limit:e?.limit,search:e?.search})}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e){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,contextIds:s,graphIndexingSkippedContextIds:n}=await this.upsertContexts([e],t?[t]:void 0);if(i.length>0)return{failure:i[0]};const r=s?.[0],o=void 0!==r&&(n?.includes(r)??!1);return o?{graphIndexingSkipped:o}:{}}async upsertContexts(e,t,i){for(const t of e)t.metadata&&Ue(t.metadata);const s=Me();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:s},t),i?.onUploaded?.(),await this.jobClient.awaitJob(s)}async bulkUpsertContexts(e,t){return this.rpcManager.post("ai/knowledge-base/bulk/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contexts:e},t)}async createBulkUploadUrls(e){return this.rpcManager.post("ai/knowledge-base/bulk/createUploadUrls",{files:e.map(e=>({fileName:e}))})}async getBulkIngestionJob(e){return this.rpcManager.post("ai/knowledge-base/bulk/getJob",{jobId:e})}async cancelBulkIngestionJob(e){await this.rpcManager.post("ai/knowledge-base/bulk/cancelJob",{jobId:e})}observeBulkIngestionJob(e){return new s(t=>{const i=()=>{this.rpcManager.post("ai/knowledge-base/bulk/subscribeToJob",{jobId:e}).catch(e=>t.error(e))};t.add(this.socketManager.observeNotifications().pipe(g(e=>"bulkIngestionStatus"===e.type),g(t=>t.payload.jobId===e)).subscribe(e=>{t.next(e.payload),Qe.has(e.payload.state)&&t.complete()})),t.add(this.clientIdService.observeClientId().pipe(p(),T(1)).subscribe(()=>i())),this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.awaitConnectionReady().then(i).catch(e=>t.error(e))})}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchWithGraphContext(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return this.rpcManager.post("ai/knowledge-base/search",t)}async grep(e,t){return this.rpcManager.post("ai/knowledge-base/grep",{knowledgeBaseId:this.knowledgeBaseId,pattern:e,options:t})}async queryGraph(e){return this.rpcManager.post("ai/knowledge-base/queryGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async getGraphStatus(){return this.rpcManager.post("ai/knowledge-base/getGraphStatus",{knowledgeBaseId:this.knowledgeBaseId})}async rebuildGraph(e){await this.rpcManager.post("ai/knowledge-base/rebuildGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async exploreGraph(e){return this.rpcManager.post("ai/knowledge-base/exploreGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class $e{constructor(e,t,i,s){this.rpcManager=e,this.jobClient=t,this.socketManager=i,this.clientIdService=s}knowledgeBase(e){return new Le(e,this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async delete(e){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:e})}}class Ge{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 Ke="Agent Response",We="Accessing Knowledge Base",Ve="Calling AI Function",Je="Inspecting Knowledge Base Metadata",ze="Querying Knowledge Base Graph",Ye="Searching Knowledge Base Text",Xe="Querying Spreadsheet",Ze=["user","ai"],et=["email","phoneNumber","creditCard","ssn","iban","passport"],tt="gpt-5.6-luna",it=["cohere","none"],st=["anthropic","bedrock","claude-code","codex","cohere","flux","gemini","openai","openai-compatible","grok","stability","voyage","mistral","textract","azure_document_intelligence","vertex","external"],nt=["openai","gemini","anthropic","grok"];function rt(e){return nt.includes(e)}const ot=["gpt-5.5-pro","gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna"],at=["gemini-3.1-pro","gemini-3.7-flash","gemini-3.5-flash-lite"],ct=["grok-4.6","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],ut=["claude-fable-5","claude-haiku-4-5-20251001","claude-opus-5","claude-sonnet-5"],lt=[...ot,...ut,...at,...ct];function dt(e){return lt.includes(e)}const ht=["text-embedding-3-small"],pt=["voyage-3-large"],gt=["titan-embed-text-v2"],ft=[...ht,...pt,...gt];function yt(e){return ft.includes(e)}function mt(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e&&"dimensions"in e}const It=["gpt-image-1","gpt-image-1-mini","gpt-image-1.5","gpt-image-2","gpt-image-2-2026-04-21","chatgpt-image-latest"],bt=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],wt=["tts-1","tts-1-hd","gpt-4o-mini-tts"],vt=[...bt,...wt],St=["stable-diffusion-core"],Mt=["flux-pro-1.1","flux-kontext-pro"],kt=[...It,...St,...Mt],_t=[...bt],Tt=[...wt],Et=["mp3","opus","aac","flac","wav","pcm"],Dt=["vendor","connector","custom"];function Ct(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const Ot=["pod","worker"],qt=["postgres","mongoAtlas"],At="folderPath",Rt=104857600,jt=["contextual","basic"],Nt=["secret","regular"];function Ft(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const xt=["dev","prod"],Bt="built_in_agent",Pt=["bitbucket","confluence","cotomi","essentials","freshdesk","github","google_calendar","google_drive","hubspot","sharepoint","jira","jira_jsm","linear","mail","onedrive","outlook","salesforce","servicenow_csm","slack","teams","ticketmind_companion","zendesk"],Ut={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},Qt="ai_agents",Lt=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_blob","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","bitbucket","built_in_azure_blob","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","azure-entra-external-id","dynamodb","elasticsearch","firebase_auth","firestore","gcs","github","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jira_jsm","jwt_hmac","jwt_rsa","kafka","keycloak","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","outlook","oracledb","pinecone","postgres","redis","s3","salesforce","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","mcp","a2a","legend","teams","openai_compatible","openai_compatible_embedding","sharepoint","vertex"],$t=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","snowflake","elasticsearch","legend"],Gt=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth","azure-entra-external-id"],Ht=["auth0"],Kt=["graphql"],Wt=["api"],Vt=["data","api","graphql"],Jt="built_in_db",zt="built_in_queue",Yt="built_in_storage",Xt=[Jt,zt,Yt];function Zt(e){return Xt.includes(e)}const ei=["squid_functionExecution_count","squid_functionExecution_time"],ti=["sum","max","min","average","median","p95","p99","count"],ii=["user","squid"],si=["align-by-start-time","align-by-end-time"],ni=["return-no-result-groups","return-result-group-with-default-values"],ri="__docId__",oi=["in","not in","array_includes_some","array_includes_all","array_not_includes"],ai=[...oi,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],ci=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],ui=["CONNECTED","DISCONNECTED","REMOVED"],li="analyzeCode",di=["claude-code","codex"],hi=["github","bitbucket"],pi=["github","bitbucket"];function gi(e){const t=function(e){const t=new Set,i=new Set;for(const s of e){be(Number.isSafeInteger(s.id)&&s.id>0,"GITHUB_REPOSITORY_ID_INVALID"),be(!t.has(s.id),"GITHUB_REPOSITORY_IDS_MUST_BE_UNIQUE"),t.add(s.id),be(yi(s.fullName),"GITHUB_REPOSITORY_NAME_INVALID");const e=s.fullName.toLowerCase();be(!i.has(e),"GITHUB_REPOSITORIES_MUST_BE_UNIQUE"),i.add(e),be(s.defaultBranch.trim(),"GITHUB_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),mi(s.cloneUrl,s.fullName,!0),mi(s.htmlUrl,s.fullName,!1)}return e}(e.repositories??[]),i=0===t.length?e.repository:void 0,s=t.map(e=>e.fullName);be(t.length>0||i,"GITHUB_REPOSITORIES_REQUIRED"),be(t.length<=20,"GITHUB_REPOSITORY_LIMIT_EXCEEDED");const n=e.defaultRepository??s[0]??i;return be(n,"GITHUB_DEFAULT_REPOSITORY_REQUIRED"),be(s.some(e=>e.toLowerCase()===n.toLowerCase())||i?.toLowerCase()===n.toLowerCase(),"GITHUB_DEFAULT_REPOSITORY_NOT_ALLOWED"),{...i?{legacyRepository:i}:{},repositories:t,defaultRepository:n}}function fi(e){const t=e.workspace;be(t.trim()===t&&/^[A-Za-z0-9_-]+$/.test(t),"BITBUCKET_WORKSPACE_INVALID");const i=e.repositories;be(i.length>0,"BITBUCKET_REPOSITORIES_REQUIRED"),be(i.length<=20,"BITBUCKET_REPOSITORY_LIMIT_EXCEEDED");const s=new Set,n=new Set;for(const e of i){const i=e.uuid.trim();be(i===e.uuid&&i.length>0,"BITBUCKET_REPOSITORY_ID_INVALID");const r=i.toLowerCase();be(!s.has(r),"BITBUCKET_REPOSITORY_IDS_MUST_BE_UNIQUE"),s.add(r);const o=`${t}/`;be(e.fullName.toLowerCase().startsWith(o.toLowerCase())&&e.fullName.length>o.length&&!e.fullName.slice(o.length).includes("/")&&!/\s/.test(e.fullName),"BITBUCKET_REPOSITORY_WORKSPACE_MISMATCH");const a=e.fullName.toLowerCase();be(!n.has(a),"BITBUCKET_REPOSITORIES_MUST_BE_UNIQUE"),n.add(a),be(e.defaultBranch.trim(),"BITBUCKET_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),Ii(e.cloneUrl,e.fullName,!0),Ii(e.webUrl,e.fullName,!1)}const r=e.defaultRepository;return be(r&&i.some(e=>e.fullName.toLowerCase()===r.toLowerCase()),"BITBUCKET_DEFAULT_REPOSITORY_NOT_ALLOWED"),{repositories:i,defaultRepository:r}}function yi(e){return/^[^/\s]+\/[^/\s]+$/.test(e)}function mi(e,t,i){let s;try{s=new URL(e)}catch{throw new Error("GITHUB_REPOSITORY_URL_INVALID")}const n=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?github\.com:\d+(?:\/|$)/i.test(e);be(!("https:"!==s.protocol||"github.com"!==s.hostname||r||s.username||s.password||s.search||s.hash||s.pathname!==n),"GITHUB_REPOSITORY_URL_INVALID")}function Ii(e,t,i){let s;try{s=new URL(e)}catch{throw new Error("BITBUCKET_REPOSITORY_URL_INVALID")}const n=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?bitbucket\.org:\d+(?:\/|$)/i.test(e);be(!("https:"!==s.protocol||"bitbucket.org"!==s.hostname||r||s.username||s.password||s.search||s.hash||s.pathname!==n),"BITBUCKET_REPOSITORY_URL_INVALID")}class bi{constructor(e,t,i,s,n,r=()=>{}){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.clientIdService=s,this.backendFunctionManager=n,this.getMetricAnnotations=r}agent(e=Bt,t=void 0){return this.getAiAgentClient().agent(e,t)}knowledgeBase(e){return this.getAiKnowledgeBaseClient().knowledgeBase(e)}async listAgents(){return this.getAiAgentClient().listAgents()}async listKnowledgeBases(){return this.getAiKnowledgeBaseClient().listKnowledgeBases()}async listFunctions(){const e=await this.rpcManager.post("/application/getBundleMetadata",{});return Object.values(e.aiFunctions||{})}async listChatModels(e){return(await this.rpcManager.post("ai/settings/listChatModels",e??{})).models}image(){return new Pe(this.rpcManager)}audio(){return new xe(this.rpcManager)}matchMaking(){return new Ge(this.rpcManager)}files(e){return new Be(e,this.rpcManager)}executeAiQuery(e,t,i,s){const n={integrationId:e,prompt:t,options:i};return this.rpcManager.post("ai/query/executeDataQuery",n,[],"files",{},s)}executeAiApiCall(e,t,i,s){const n={integrationId:e,prompt:t,options:i,sessionContext:s};return this.rpcManager.post("ai/query/executeApiQuery",n)}executeAiSpreadsheetQuery(e,t,i,s){const n={prompt:e,files:t,options:i,sessionContext:s};return this.rpcManager.post("ai/query/executeSpreadsheetQuery",n)}async getApplicationAiSettings(){return(await this.rpcManager.post("ai/settings/getApplicationAiSettings",{})).settings}async setApplicationAiSettings(e){const t={settings:e};await this.rpcManager.post("ai/settings/setApplicationAiSettings",t)}async setAiProviderApiKeySecret(e,t){const i={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",i)).settings}observeStatusUpdates(e){return Ae(this.socketManager,{jobId:e})}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new Ne(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new $e(this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)),this.aiKnowledgeBaseClient}}const wi={headers:{},queryParams:{},pathParams:{}};class vi{constructor(e){this.rpcManager=e}async get(e,t,i){return this.request(e,t,void 0,i,"get")}async post(e,t,i,s){return this.request(e,t,i,s,"post")}async delete(e,t,i,s){return this.request(e,t,i,s,"delete")}async patch(e,t,i,s){return this.request(e,t,i,s,"patch")}async put(e,t,i,s){return this.request(e,t,i,s,"put")}async request(e,t,i,s,n){const r={integrationId:e,endpointId:t,body:i,options:{...wi,...this.convertOptionsToStrings(s||{})},overrideMethod:n};return await this.rpcManager.rawPost("api/callApi",r,void 0,void 0,!1)}convertOptionsToStrings(e){return{headers:this.convertToStrings(e.headers),queryParams:this.convertToStrings(e.queryParams),pathParams:this.convertToStrings(e.pathParams)}}convertToStrings(e){if(!e)return{};const t=Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,String(t)]);return Object.fromEntries(t)}}class Si{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 Mi=/[.\[\]]/;function ki(e,t){if(!e)return;const i=t.split(Mi);let s,n=e;for(;n&&i.length;){const e=i.shift();if(e){if("object"!=typeof n||!(e in n))return;s=n[e],n=s}}return s}function _i(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Ti(e,t,i,s="."){const n=t.split(s);let r=e;for(;n.length;){const e=we(n.shift());if(n.length){const t=r[e],i=_i(t)?Ri(t)??{}:{};r[e]=i,r=i}else r[e]=i}}function Ei(e,t,i="."){const s=t.split(i);let n=e;for(;s.length;){const e=we(s.shift());if(s.length){const t=_i(n[e])?Ri(n[e])??{}:{};n[e]=t,n=t}else delete n[e]}}function Di(e,t,i){if(e.has(t)){const s=e.get(t);e.delete(t),e.set(i,s)}}function Ci(e){return null==e}function Oi(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 s=Object.keys(e),n=Object.keys(t);if(s.length!==n.length)return!1;for(const i of s)if(!n.includes(i)||!Oi(e[i],t[i]))return!1;return!0}function qi(e,t){const i=new Array(e.length);for(let s=0;s<e.length;s++)i[s]=Ai(e[s],t);return i}function Ai(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 qi(e,t);if(e instanceof Map)return new Map(qi(Array.from(e),t));if(e instanceof Set)return new Set(qi(Array.from(e),t));if(ArrayBuffer.isView(e))return s=e,"undefined"!=typeof Buffer&&s instanceof Buffer?Buffer.from(s):new s.constructor(s.buffer.slice(),s.byteOffset,s.length);var s;const n={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(n[i]=Ai(e[i],t));return n}function Ri(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 ji(e,t){if(e===t||Ci(e)&&Ci(t))return 0;if(Ci(e))return-1;if(Ci(t))return 1;const i=typeof e,s=typeof t;return i!==s?i<s?-1:1:"number"==typeof e?(be("number"==typeof t),isNaN(e)&&isNaN(t)?0:isNaN(e)?-1:isNaN(t)?1:e<t?-1:1):"boolean"==typeof e?(be("boolean"==typeof t),e<t?-1:1):"bigint"==typeof e?(be("bigint"==typeof t),e<t?-1:1):"string"==typeof e?(be("string"==typeof t),e<t?-1:1):e instanceof Date&&t instanceof Date?Math.sign(e.getTime()-t.getTime()):0}function Ni(e,t){return e.reduce((e,i)=>{const s=t(i);return e[s]?e[s].push(i):e[s]=[i],e},{})}function Fi(e){if(Array.isArray(e))return e.map(e=>Fi(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]=Fi(e[t])}),i}function xi(e){return Bi(Fi(e))}function Bi(e){if(void 0===e)return null;const t=Ai(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function Pi(e){return Ai(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 Ui(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=Bi(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 Qi=(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},Li=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(Bi(e[i])!==Bi(t[i]))return!1;return!0};class $i{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||Qi,s=this.options.valueExpirationMillis||1/0;return t&&Date.now()<t.cacheTimeMillis+s&&i(t.args,e)?{found:!0,value:t.result}:{found:!1}}set(e,t){this.cachedEntry={args:e,result:t,cacheTimeMillis:Date.now()}}}function Gi(e){const t=[],i=[];let s=0;for(const n of e)if("undefined"!=typeof File)if(n instanceof File){i.push(n);const e={type:"file",__squid_placeholder__:!0,fileIndex:s++};t.push(e)}else if(Hi(n)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:n.map((e,t)=>(i.push(n[t]),s++))};t.push(e)}else t.push(n);else t.push(n);return{argsArray:t,fileArray:i}}function Hi(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class Ki{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:s,fileArray:n}=Gi(i),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(s);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?Qi:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,s));if(t)return t.promise}const u=this.createExecuteCallPromise(r,s,n,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:s,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,s,n={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:Bi(t)},a=Pi((await this.rpcManager.post(r,o,i.length>0?i:[],"files",n)).payload);if(a?.__isSquidBase64File__){const e=a;return qe(e.base64,e.filename,e.mimetype)}return s&&s.set(t,a),a}}function Wi(e){if("undefined"!=typeof globalThis)return globalThis[e]}function Vi(){if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}void 0===Vi()?.SQUID_LOG_DEBUG_ENABLED&&function(e=!0){Vi().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 Ji{static debug(...e){(function(){const e=Vi();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=Vi();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class zi{constructor(e){this.destructManager=e,this.clientTooOldSubject=new t(!1),this.isTenant=!0===Vi().squidTenant,this.clientIdSubject=new t(this.generateClientId()),this.destructManager.onDestruct(()=>{this.clientTooOldSubject.complete(),this.clientIdSubject.complete()})}observeClientId(){return this.clientIdSubject}observeClientTooOld(){return this.clientTooOldSubject.pipe(g(e=>e),v(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe(T(1),g(e=>!e),v(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=Vi()[Xi];return e?e():Me()}generateClientId(){const e=Vi()[Yi];if(e)return e();let t=`${this.isTenant?"tenant-":""}${Me()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const Yi="SQUID_CLIENT_ID_GENERATOR",Xi="SQUID_CLIENT_REQUEST_ID_GENERATOR",Zi="__squidId";function es(e){return Pi(e)}function ts(...e){const[t,i,s]=e,n="object"==typeof t?t:{docId:t,collectionName:i,integrationId:s};return n.integrationId||(n.integrationId=void 0),xi(n)}function is(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return Oi(e,t);if("!="===i)return!Oi(e,t);switch(i){case"<":return!Ci(e)&&(!!Ci(t)||t<e);case"<=":return!!Ci(t)||!Ci(e)&&t<=e;case">":return!Ci(t)&&(!!Ci(e)||t>e);case">=":return!!Ci(e)||!Ci(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&ss(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&ss(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&ss(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&ss(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>we(i,"VALUE_CANNOT_BE_NULL").some(t=>Oi(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>we(i,"VALUE_CANNOT_BE_NULL").some(t=>Oi(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!we(i,"VALUE_CANNOT_BE_NULL").some(t=>Oi(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function ss(e,t,i){i||(e=e.toLowerCase(),t=t.toLowerCase());const s=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(`^${s}$`).test(e)}function ns(e,t){return`${e}_${t}`}function rs(e){return"fieldName"in e}function os(e){return"docIds"in e}function as(e,t,i){const s=e.docIds.some(e=>Object.entries(e).every(([e,s])=>is(s,i(t,e)??null,"==")));switch(e.operator){case"==":case"in":return s;case"!=":case"not in":return!s}}function cs(e,t,i,s){const n=e,r=s(t,ri);if("string"!=typeof r)return is(n,r??null,i);let o;try{o=Pi(r)}catch{return is(n,r,i)}if(!o||"object"!=typeof o||Array.isArray(o))return is(n,r,i);const a=Object.keys(o);if(1===a.length&&"__id"===a[0]){const e=o.__id,t=function(e){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const t=Object.keys(e);return 1===t.length&&"__id"===t[0]?e.__id:xi(e)}if("string"==typeof e)try{const t=Pi(e);if(t&&"object"==typeof t&&!Array.isArray(t)){const e=Object.keys(t);if(1===e.length&&"__id"===e[0])return t.__id}}catch{}return e}(n);return is(t,e,i)}if(1===a.length){const e=function(e,t){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const i=Object.keys(e);if(1===i.length&&i[0]===t)return e[t]}if("string"==typeof e)try{const i=Pi(e);if(i&&"object"==typeof i&&!Array.isArray(i)){const e=Object.keys(i);if(1===e.length&&e[0]===t)return i[t]}}catch{}return e}(n,a[0]);return is(e,o[a[0]],i)}return"object"!=typeof n||null===n||Array.isArray(n)?is(n,r,i):is(xi(n),r,i)}class us{constructor(e,t,i,s){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.projectFields=s,this.refId=Me()}setInMemoryData(e){this.inMemoryData=e}get squidDocId(){return this._squidDocId}get data(){return Ai(this.dataRef)}get dataRef(){if(void 0!==this.inMemoryData)return this.inMemoryData;const e=we(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=es(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`});return this.projectFields?this.applyProjection(e):e}get hasData(){return this.dataManager.hasSufficientData(this.squidDocId,this.projectFields)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return we(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(v(e=>(we(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 s=void 0!==t?{type:"update",value:t}:{type:"removeProperty"};i[e]=[s]});const s={type:"update",squidDocIdObj:es(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(s,t)}async setInPath(e,t,i){return this.update({[e]:Ai(t)},i)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,i){const s={type:"applyNumericFn",fn:"increment",value:t},n={type:"update",squidDocIdObj:es(this.squidDocId),properties:{[e]:[s]}};return this.dataManager.applyOutgoingMutation(n,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async upsert(e,t){const i=es(this.squidDocId),s=i.integrationId;let n=Pi(i.docId);if(n[Zi]&&(n={}),s===Jt&&n.__id)try{const e=Pi(n.__id);n={...n,...e}}catch{}const r={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...n}};return this.dataManager.applyOutgoingMutation(r,t)}async insert(e,t){return this.upsert(e,t)}async delete(e){const t={type:"delete",squidDocIdObj:es(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}applyProjection(e){const t={},i=we(this.projectFields,"applyProjection called without projectFields"),{integrationId:s}=es(this.squidDocId);"__id"in e&&(t.__id=e.__id),"__docId__"in e&&(t.__docId__=e.__docId__);const n=s===Jt?"__id":"__docId__";if(n in e){const i=e[n];if("string"==typeof i&&i.startsWith("{"))try{const e=Pi(i);if("object"==typeof e&&null!==e)for(const[i,s]of Object.entries(e))i in t||(t[i]=s)}catch{}}for(const s of i)if(s.includes(".")){const i=ki(e,s);void 0!==i&&Ti(t,s,i)}else s in e&&(t[s]=e[s]);return t}hasSquidPlaceholderId(){const e=Pi(this._squidDocId);if("object"==typeof e&&e.docId){const t=Pi(e.docId);if("object"==typeof t&&Object.keys(t).includes(Zi))return!0}return!1}}class ls{constructor(e,i={}){this.internalStateObserver=new t(null),this.firstElement=null,this.isDestroyed=new t(!1),this.snapshotSubject=new r,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,be(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe(D()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...i},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(g(e=>null!==e),v(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(v(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||Ci(e)&&Ci(t))return 0;if(Ci(e))return-1;if(Ci(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:s,asc:n}of i){const i=ji(ki(e,s),ki(t,s));if(0!==i)return n?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,s=Math.max(0,e.length-i-this.paginateOptions.pageSize);i!==e.length?this.internalStateObserver.next({numBefore:i,numAfter:s,data:e,extractedData:t}):this.prevInternal({numBefore:i,numAfter:s,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:ki(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe(v(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:ki(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe))}}async waitForInternalState(){const e=this.internalStateObserver.value;return null!==e?e:await m(k(this.isDestroyed.pipe(g(Boolean),v(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe(g(e=>null!==e),O(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:s,extractedData:n}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(n[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:s>0,hasPrev:i>0}}prevInternal(e){const{numBefore:t,numAfter:i,extractedData:s}=e;this.firstElement=null,this.lastElement=s[t-1],this.internalStateObserver.next(null),this.doNewQuery(s[s.length-i-1],!0)}}Error;class ds{constructor(e,t,i,s,n){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=s,this.mutationSender=n}getForDocument(e){const{collectionName:t,integrationId:i,docId:s}=es(e),n=Pi(s),r=this.get(t,i);for(const[e,t]of Object.entries(n))r.where(e,"==",t);return r}get(e,t){return new gs(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService,this.mutationSender)}}class hs{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}docId(e){return this.eq(ri,e)}docIds(e){return this.in(ri,e)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"like_cs":"like",t)}notLike(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"not like_cs":"not like",t)}arrayIncludesSome(e,t){return this.where(e,"array_includes_some",t)}arrayIncludesAll(e,t){return this.where(e,"array_includes_all",t)}arrayNotIncludes(e,t){return this.where(e,"array_not_includes",t)}throwIfInvalidLikePattern(e){if(/\\(?![%_\\])/.test(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class ps{constructor(e){this.queryBuilder=e}peek(){return this.queryBuilder.peek().map(e=>e.data)}snapshot(){return m(this.snapshots(!1).pipe(l([])))}snapshots(e){return this.queryBuilder.snapshots(e).pipe(ye(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ps(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}projectFields(e){const t=this.queryBuilder.projectFields(e);return new ps(t)}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new ls(this,e)}}class gs extends hs{constructor(e,t,i,s,n,r,o,a){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=s,this.documentReferenceFactory=n,this.queryBuilderFactory=r,this.documentIdentityService=o,this.mutationSender=a,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return Ui(this.build())}where(e,t,i){if(be(ai.includes(t),`Invalid operator: ${t}`),this.query.projectFields&&e!==ri&&!this.query.projectFields.includes(e))throw new Error(`Cannot filter by field '${e}' that is not included in projectFields.`);if("in"===t||"not in"===t){const s=Array.isArray(i)?[...i]:[i];"in"===t&&0===s.length&&(this.containsEmptyInCondition=!0);for(const i of s)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;be(function(e){return"number"==typeof e}(t=e),()=>Se("Limit needs to be a number","Not a number",t)),-1!==e&&(be(e>0,"query limit has to be greater than 0"),be(Math.floor(e)===e,"query limit has to be an integer"),be(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 be(Oi(t.sort(),i.slice(0,t.length).sort()),"All fields in limitBy must be appear in the first fields in the sortBy list."),this.query.limitBy={limit:e,fields:t,reverseSort:!1},this}sortBy(e,t=!0){const i={asc:t,fieldName:e};if(function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,s,n,r;be((i=t,s=["fieldName","asc"],!Array.isArray(i)&&[...Object.keys(i)].every(e=>s.includes(e))),"Field sort should only contain a fieldName and asc"),be((n=t.asc,r="boolean",Array.isArray(n)?n.every(e=>typeof e===r):typeof n===r),"Asc needs to be boolean")}(i),be(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.projectFields&&e!==ri&&!this.query.projectFields.includes(e))throw new Error(`Cannot sort by field '${e}' that is not included in projectFields.`);return this.query.sortOrder.push(i),this}projectFields(e){if(0===e.length&&"built_in_db"!==this.integrationId)throw new Error(`Empty projectFields is only allowed for built_in_db integration. For '${this.integrationId}', you must specify at least one field to project.`);if(this.query.projectFields)for(const t of e)if(!this.query.projectFields.includes(t))throw new Error(`Cannot project field '${t}' that is not in the existing projection. Subsequent projectFields calls must be subsets of the previous projection.`);const t=e;for(const e of this.query.sortOrder)if(e.fieldName!==ri&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including sort field '${e.fieldName}'.`);for(const e of this.query.conditions)if(rs(e)){if(e.fieldName!==ri&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including filter field '${e.fieldName}'.`)}else if(os(e));else for(const i of e.fields)if(i.fieldName!==ri&&!t.includes(i.fieldName))throw new Error(`Cannot set projectFields without including filter field '${i.fieldName}'.`);const i=this.clone();return i.query.projectFields=[...e],i}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return m(this.snapshots(!1).pipe(l([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new t([]);const i=this.build(),s=i.projectFields;return this.querySubscriptionManager.processQuery(i,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(ye(e=>e.map(e=>{be(1===Object.keys(e).length);const t=e[this.collectionName],i=ts(we(t).__docId__,this.collectionName,this.integrationId),n=this.documentReferenceFactory.create(i,this.queryBuilderFactory,s);return this.querySubscriptionManager.detachedRecords.delete(e)&&n.setInMemoryData(t),n})))}changes(){let e,t=new Set;return this.snapshots().pipe(a(this.documentIdentityService.observeChanges().pipe(C(t=>(Object.entries(t).forEach(([t,i])=>{!function(e,t,i){const s=e[t];void 0!==s&&(e[i]=s,delete e[t])}(e||{},t,i)}),i)),E({}))),ye(([i])=>{let s=[];const n=[],r=[];if(e){for(const r of i){const i=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){n.push(r);const s=e[i];delete e[i],t.delete(s)}else s.push(r)}for(const e of t)r.push(e)}else s=i;e={},t=new Set;for(const s of i){const i=s.dataRef;e[s.squidDocId]=i,t.add(i)}return new fs(s,n,r)}))}async delete(){return this.validateQueryDeleteModifiers(),this.containsEmptyInCondition?{deletedCount:0}:(be(this.mutationSender,"Query delete is not available on this query builder."),this.mutationSender.deleteQuery(this.build()))}dereference(){return new ps(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new gs(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService,this.mutationSender);return e.query=Ai(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){if(!e.length)return this;if(this.query.projectFields)for(const t of e)if(t.fieldName!==ri&&!this.query.projectFields.includes(t.fieldName))throw new Error(`Cannot filter by field '${t.fieldName}' that is not included in projectFields.`);return this.query.conditions.push({fields:e}),this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new ls(this,e)}validateQueryDeleteModifiers(){be(0===this.query.sortOrder.length&&-1===this.query.limit&&!this.query.limitBy,"query.delete() does not currently support sortBy, limit, or limitBy.")}mergeConditions(){const e=[],t=Ni(this.query.conditions.filter(rs)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=Ni(i,e=>e.operator);for(const[i,s]of Object.entries(t)){if("=="===i||"!="===i){e.push(...s);continue}const t=[...s];t.sort((e,t)=>ji(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!rs(e)),...e]}}class fs{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class ys extends hs{constructor(e,t,i,s,n,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=s,this.queryBuilderFactory=n,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,i){return this.queryBuilder.where(e,t,i),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}projectFields(e){throw new Error("projectFields is not yet supported for join queries")}join(e,t,i,s){const n=s?.leftAlias??this.latestAlias,r={...i,leftAlias:n,isInner:s?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[n].push(t),new ys(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:r},this.queryBuilder)}snapshot(){return m(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new t([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,Ai(this.joins),Ai(this.joinConditions),e,!1).pipe(ye(e=>e.map(e=>{const t={};for(const[i,s]of Object.entries(e)){const e=i===this.rootAlias?this.collectionName:this.joins[i].collectionName,n=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,r=s?ts(s.__docId__,e,n):void 0;t[i]=r?this.documentReferenceFactory.create(r,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new bs(this)}dereference(){return new ms(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new ys(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,Ai(this.leftToRight),Ai(this.joins),Ai(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 ls(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class ms{constructor(e){this.joinQueryBuilder=e}grouped(){return this.joinQueryBuilder.grouped().dereference()}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(ye(e=>e.map(e=>function(e,t){const i={},s=Object.keys(e);for(const n of s){const s=e[n];i[n]=t(s)}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 ms(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 ls(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class Is{constructor(e){this.groupedJoin=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(ye(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 Is(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 ls(this,e)}dereference(e,t){const i=this.groupedJoin.joinQueryBuilder.leftToRight[t];if(i.length){const s={[t]:e[t].data};for(const t of i)s[t]=e[t].map(e=>this.dereference(e,t));return s}return e.data}}class bs{constructor(e){this.joinQueryBuilder=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(ye(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new Is(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new bs(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 ls(this,e)}groupData(e,t){const i=Ni(e,e=>e[t]?.squidDocId);return Object.values(i).filter(e=>void 0!==e[0][t]).map(e=>{const i=this.joinQueryBuilder.leftToRight[t],s=e[0][t];if(0===i.length)return s;const n={[t]:s};for(const t of i)n[t]=this.groupData(e,t);return n})}}class ws{constructor(e,t,i,s,n,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=s,this.querySubscriptionManager=n,this.dataManager=r,this.refId=Me()}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!==Jt)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={[Zi]:Me()};else e=e&&"string"!=typeof e?{__id:xi(e)}:{__id:e||Me()};const t=ts(xi(e),this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)}async insertMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)await this.doc(i.id).upsert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof us?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new ys(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new vs(...e)}}class vs{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 m(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 vs(...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 ls(this,e)}or(e,...t){return o([...t]).pipe(v(t=>{const i=new Set,s=t.flat(),n=[];for(const e of s)i.has(this.extractData(e))||(i.add(this.extractData(e)),n.push(e));return n.sort((t,i)=>{for(const{fieldName:s,asc:n}of e){const e=ki(this.extractData(t),s),r=ki(this.extractData(i),s);if(!is(e,r,"=="))return is(r,e,"<")?n?-1:1:n?1:-1}return 0}).slice(0,this.getLimit())}))}}class Ss{constructor(e,t,i,s){this.documentReferenceFactory=e,this.queryBuilderFactory=t,this.querySubscriptionManager=i,this.dataManager=s,this.collections=new Map}get(e,t){let i=this.collections.get(t);i||(i=new Map,this.collections.set(t,i));let s=i.get(e);return s||(s=new ws(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,s)),s}}class Ms{constructor(e,t,i){this.clientIdService=e,this.socketManager=t,this.runtimeOptions=i,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var ks=x(150);const _s={"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)=>Ts(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>Ts(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>Ts(e,t)&&Ds(t),"like_cs:like_cs":(e,t)=>Ts(e,t),"like:not like":(e,t)=>!Es(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!Es(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!Es(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!Es(e,t),"not like:like":(e,t)=>Os(e,t),"not like_cs:like":(e,t)=>Os(e,t),"not like:like_cs":(e,t)=>Os(e,t),"not like_cs:like_cs":(e,t)=>Os(e,t),"not like:not like":(e,t)=>Ts(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>Ts(t,e)&&Ds(e),"not like:not like_cs":(e,t)=>Ts(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>Ts(t,e),"in:like":(e,t)=>e.every(e=>is(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>is(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>is(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>is(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&&Cs(e)||qs(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&Cs(e)||qs(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&Cs(t)||qs(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&Cs(t)||qs(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=>is(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>is(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>is(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>is(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 Ts(e,t,i=0,s=0){if(s>=t.length)return i>=e.length;if(i>=e.length)return Cs(t.substring(s));const n=e[i],r=t[s];return"%"===n&&"%"===r?Ts(e,t,i+1,s+1)||Ts(e,t,i+1,s):"%"!==n&&("%"===r?Ts(e,t,i,s+1)||Ts(e,t,i+1,s):(n===r||"_"===r)&&Ts(e,t,i+1,s+1))}function Es(e,t,i=0,s=0){if(i>=e.length&&s>=t.length)return!0;if(i>=e.length)return Cs(t.substring(s));if(s>=t.length)return Cs(e.substring(i));const n=i<e.length?e[i]:"",r=s<t.length?t[s]:"";return"%"===n&&"%"===r?Es(e,t,i+1,s+1)||Es(e,t,i,s+1)||Es(e,t,i+1,s):"%"===n||"%"===r?Es(e,t,i,s+1)||Es(e,t,i+1,s):(n===r||"_"===n||"_"===r)&&Es(e,t,i+1,s+1)}function Ds(e){return!/[a-zA-Z]/.test(e)}function Cs(e){return e.split("").every(e=>"%"===e)}function Os(e,t){return e.length>0&&Cs(e)||t.length>0&&Cs(t)||qs(e)&&0===t.length}function qs(e){let t=!1,i=!1;for(const s of e)switch(s){case"%":t=!0;break;case"_":if(i)return!1;i=!0;break;default:return!1}return t&&i}function As(e,t){const i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(const s of i){if(!Object.prototype.hasOwnProperty.call(t,s))return!1;if(!Oi(e[s],t[s]))return!1}return!0}function Rs(e,t){return t.every(t=>{const i=Object.keys(t).sort();if(i.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(i[t]!==e[t])return!1;return!0})}class js{constructor(e){this.query=e,this.query=e;const t=this.query.conditions.filter(rs),i=this.query.conditions.filter(os),s=i.flatMap(e=>function(e){if("=="!==e.operator&&"in"!==e.operator)return[];if(0===e.docIds.length)return[];const t=[],i=e.docIds[0];for(const s of Object.keys(i)){const n=i[s];e.docIds.every(e=>Object.prototype.hasOwnProperty.call(e,s)&&Oi(e[s],n))&&t.push({fieldName:s,operator:"==",value:n})}return t}(e));this.exactSimpleConditions=this.parseConditions(t),this.exactDocIdConditions=i,this.subqueryConditions=this.parseConditions([...t,...s])}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}get projectFields(){return this.query.projectFields}sortedBy(e){return!e.find((e,t)=>!Oi(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,i){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:i})}isSubqueryOfCondition(e){return!!this.subqueryConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;for(const t of e.conditions.filter(os))if(!this.childImpliesParentDocIdCondition(t))return!1;const t=e.conditions.filter(rs),i=this.isSubqueryOfConditions(t),s=this.sortedBy(e.sortOrder),n=-1===e.limit||this.limit>-1&&this.limit<e.limit,r=this.isProjectFieldsSubset(this.query.projectFields,e.projectFields);return i&&s&&n&&r}childImpliesParentDocIdCondition(e){const t=e.docIds;if(0===t.length)return!1;const i="=="===e.operator||"in"===e.operator,s=Object.keys(t[0]).sort(),n=[];for(const e of this.query.conditions)os(e)&&n.push(...e.docIds);if(!Rs(s,t)||!Rs(s,n))return!1;const r=this.buildChildEffectiveTupleSet();return i?void 0!==r.allowed&&r.allowed.every(e=>t.some(t=>As(e,t))):void 0!==r.allowed?r.allowed.every(e=>!t.some(t=>As(e,t))):t.every(e=>r.excluded.some(t=>As(e,t)))}buildChildEffectiveTupleSet(){let e;const t=[];for(const i of this.query.conditions)if(os(i))if("=="===i.operator||"in"===i.operator)e=void 0===e?[...i.docIds]:e.filter(e=>i.docIds.some(t=>As(e,t)));else for(const e of i.docIds)t.some(t=>As(t,e))||t.push(e);return void 0!==e&&t.length>0&&(e=e.filter(e=>!t.some(t=>As(e,t)))),{allowed:e,excluded:t}}isProjectFieldsSubset(e,t){if(!t)return!0;if(!e)return!1;const i=new Set(t);return e.every(e=>i.has(e))}getConditionsFor(...e){return this.subqueryConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.subqueryConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.exactSimpleConditions){const i=t.fieldName,s=t.operator;if(i===ri){const i=t.value;if("in"===s||"not in"===s){const t=(Array.isArray(i)?i:[i]).some(t=>cs(t,e,"==",ki));if(!("in"===s?t:!t))return!1;continue}if(!cs(i,e,s,ki))return!1;continue}const n=ki(e,i);if("in"===s){if(t.value.includes(n))continue;return!1}if("not in"!==s){if(!is(t.value,n,s))return!1}else if(t.value.includes(n))return!1}for(const t of this.exactDocIdConditions)if(!as(t,e,ki))return!1;return!0}evaluateSubset(e,t){const{operator:i,value:s}=e,{operator:n,value:r}=this.parseConditions([t])[0],o=_s[`${i}:${n}`];return!!o&&o(s,r)}parseConditions(e){const t=[],i=new Map,s=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":s.set(e.fieldName,(s.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),i.forEach((e,i)=>{t.push({fieldName:i,operator:"in",value:e})}),s.forEach((e,i)=>{t.push({fieldName:i,operator:"not in",value:e})}),t}}function Ns(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?Ai(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function Fs(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function xs(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if(be("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=Ai(e);t=Ai(t);for(const[e]of Fs(i)){const s=e.split(".").length;Object.entries(t.properties).some(([t])=>e.startsWith(t+".")&&s>t.split(".").length)&&delete i.properties[e]}for(const[e,s]of Fs(t))i.properties[e]=Bs([...i.properties[e]||[],...s]);return i}(e,t);const i=Ai(e);for(const[e,s]of Fs(t)){const t=s;for(const s of t){const t=Ns(ki(i.properties,e),s);void 0===t?Ei(i.properties,e):Ti(i.properties,e,t)}}return i}function Bs(e){let t=0;for(;t+1<e.length;){const i=Ps(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function Ps(e,t){return"removeProperty"===t.type||"update"===t.type?t:"applyNumericFn"===t.type?(be("increment"===t.fn,"Unrecognized applyNumericFn"),"applyNumericFn"===e.type?(be("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 Us(e,t){if(!e)return;const i={...e},s=Fs(t);for(const[e,t]of s){const s=t;for(const t of s){const s=Ns(ki(i,e),t);void 0===s?Ei(i,e):Ti(i,e,s)}}return i}function Qs(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 s=t[e].reduce((e,t)=>we(xs(e,t),"Merge result cannot be null"));i.push(s)}return i}const Ls="dataManager_runInTransaction";var $s;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}($s||($s={}));class Gs{constructor(e,i,s,n,o,a,c,u,l){this.documentStore=e,this.mutationSender=i,this.socketManager=s,this.querySubscriptionManager=n,this.queryBuilderFactory=o,this.lockManager=a,this.destructManager=c,this.documentIdentityService=u,this.querySender=l,this.docIdToLocalTimestamp=new Map,this.batchClientRequestIds=new Set,this.docIdToServerTimestamp=new Map,this.pendingIncomingUpdates=new Map,this.pendingOutgoingMutations=new Map,this.pendingOutgoingMutationsChanged=new r,this.outgoingMutationsEmpty=new t(!0),this.knownDirtyDocs=new Set,this.failedDocsToResync=[],this.refreshDocIdToTimestamp=new Map,this.handleIncomingMessagesForTests=!0,this.destructManager.onDestruct(()=>{this.destruct()}),this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.handleNotifications(),this.startDeleteExpiredTimestampsJob(),this.handleOrphanDocs(),this.outgoingMutationsEmpty.subscribe(e=>{this.querySender.safeToSendQueriesToServer.next(e)})}getProperties(e){return this.documentStore.getDocumentOrUndefined(e)}hasSufficientData(e,t){return this.documentStore.hasSufficientData(e,t)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),i=t&&!t.expireTimestamp?t.timestamp:void 0,s=this.docIdToLocalTimestamp.get(e);return!((!s||i)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&s===i)}async executeDetachedQuery(e){const t=this.currentTransactionId,i={query:e,clientRequestId:Me(),subscribe:!1},s=await this.querySender.sendQueryDirect(i);return this.currentTransactionId!==t?this.reRunQueryThroughNormalPipeline(e):this.applyPendingMutationsToQueryResult(s.docs,e)}async reRunQueryThroughNormalPipeline(e){await m(this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)));const t={query:e,clientRequestId:Me(),subscribe:!1};return(await this.querySender.sendQueryDirect(t)).docs}applyPendingMutationsToQueryResult(e,t){const i=new js(t),s=new Map;for(const i of e){const e=ts(i.__docId__,t.collectionName,t.integrationId);s.set(e,i)}for(const[e,n]of this.pendingOutgoingMutations){const r=es(e);if(r.collectionName===t.collectionName&&r.integrationId===t.integrationId)for(const{mutation:t}of n){const n=s.get(e);if("delete"===t.type)s.delete(e);else if("update"===t.type){if(n){const r=Us(n,t);r&&i.documentMatchesQuery(r)?s.set(e,r):s.delete(e)}}else if("insert"===t.type){const n={...t.properties,__docId__:r.docId};i.documentMatchesQuery(n)&&s.set(e,n)}}}const n=Array.from(s.values()),{sortOrder:r}=t;n.sort((e,t)=>{for(const{fieldName:i,asc:s}of r){const n=ji(ki(e,i),ki(t,i));if(0!==n)return s?n:-n}return 0});const o=t.limit<0?2e3:t.limit;return n.slice(0,o)}async runInTransaction(e,t){if(t)return be(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(Ls)?this.lockManager.lockSync(Ls):await this.lockManager.lock(Ls);let i=Hs;const s=()=>i!==Hs;return new Promise(async(t,n)=>{try{let r;this.currentTransactionId=Me();try{r=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(s()?void 0:{resolve:()=>t(r),reject:n})}}catch(e){i=s()?i:e}finally{try{this.lockManager.release(Ls)}catch(e){i=s()?i:e}}s()&&n(i)})}async applyOutgoingMutation(e,t){const i=ts(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(Ls)||(await this.lockManager.lock(Ls),this.lockManager.release(Ls)),this.knownDirtyDocs.delete(i);const s=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(s&&!s.sentToServer)s.mutation=we(Qs([s.mutation,this.removeInternalProperties(e)])[0],"Failed to reduce mutations"),this.outgoingMutationsEmpty.next(!1);else{const t={mutation:this.removeInternalProperties(e),sentToServer:!1},s=this.pendingOutgoingMutations.get(i)||[];s.push(t),this.pendingOutgoingMutations.set(i,s),this.outgoingMutationsEmpty.next(!1),this.pendingOutgoingMutationsChanged.next()}return this.runInTransaction(async()=>{const t=this.documentStore.getDocumentOrUndefined(i),s="delete"===e.type?void 0:"update"===e.type?Us(t,e):{...e.properties};this.updateDocumentFromSnapshot(i,s)&&("insert"===e.type&&this.docIdToLocalTimestamp.set(i,(new Date).getTime()),this.querySubscriptionManager.setClientRequestIdsForLocalDoc(i,s).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 be(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(Ls);try{this.currentTransactionId=Me();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(Ls)}}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(g(e=>"mutations"===e.type),ye(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t={},i=[];for(const s of e){if(!this.querySubscriptionManager.hasOngoingQuery(s.clientRequestId))continue;const e=this.querySubscriptionManager.getQuery(s.clientRequestId),n=null!==e.projectFields&&void 0!==e.projectFields,r=this.querySubscriptionManager.hasSubscription(s.clientRequestId);n&&r?i.push({squidDocId:s.squidDocId,item:{properties:s.doc,timestamp:s.mutationTimestamp,clientRequestId:s.clientRequestId,projectFields:e.projectFields}}):t[s.squidDocId]={properties:s.doc,timestamp:s.mutationTimestamp}}Object.keys(t).length>0&&this.applyIncomingUpdates(t),i.length>0&&this.runInTransactionSync(()=>{this.applyProjectedUpdates(i)})}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId);if(null!==t.projectFields&&void 0!==t.projectFields){const i=[];for(const s of e.docs){const n=ts(s.__docId__,t.collectionName,t.integrationId);i.push({squidDocId:n,item:{properties:s,timestamp:s.__ts__,clientRequestId:e.clientRequestId,projectFields:t.projectFields}})}this.runInTransactionSync(()=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyProjectedUpdates(i)})}else{const i={};for(const s of e.docs){const e=ts(s.__docId__,t.collectionName,t.integrationId);i[e]={properties:s,timestamp:s.__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 s=new Set,n=new Set;for(const[t,r]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>r.timestamp?i=!0:o&&o.timestamp>r.timestamp?(r.properties&&this.documentStore.adoptMissingFields(t,r.properties),n.add(t)):(this.pendingIncomingUpdates.set(t,r),s.add(t))}return this.runInTransactionSync(()=>{for(const e of s)this.maybeApplyIncomingUpdate(e);for(const e of n)this.refreshQueryMapping(e)},t),i}applyProjectedUpdates(e){for(const{squidDocId:t,item:i}of e){const e=we(i.clientRequestId,"clientRequestId required for projected updates"),s=this.pendingOutgoingMutations.get(t);if(s&&s.length)continue;const n=this.docIdToServerTimestamp.get(t);n&&n.timestamp>i.timestamp?(this.querySubscriptionManager.addDocToQuery(t,e),this.batchClientRequestIds.add(e)):(this.acknowledgeDocument(t,i.timestamp,!i.properties),this.docIdToLocalTimestamp.set(t,i.timestamp),i.properties?(this.documentStore.saveProjectedDocument(t,i.properties,i.projectFields),this.querySubscriptionManager.addDocToQuery(t,e)):this.querySubscriptionManager.removeDocFromQuery(t,e),this.batchClientRequestIds.add(e))}}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const i=this.pendingOutgoingMutations.get(e);i&&i.length||(this.updateDocumentFromSnapshot(e,t.properties),this.acknowledgeDocument(e,t.timestamp,!t.properties),this.docIdToLocalTimestamp.set(e,t.timestamp),this.pendingIncomingUpdates.delete(e),this.refreshQueryMapping(e))}refreshQueryMapping(e){const t=this.documentStore.getDocumentOrUndefined(e);this.querySubscriptionManager.setClientRequestIdsForLocalDoc(e,t).forEach(e=>{this.batchClientRequestIds.add(e)}),t&&(this.querySubscriptionManager.findQueriesForDocument(t,e).length||this.forgetDocument(e,!1))}destruct(){this.stopDeleteExpiredTimestampsJob()}stopDeleteExpiredTimestampsJob(){void 0!==this.deleteExpiredTimestampsInterval&&(clearInterval(this.deleteExpiredTimestampsInterval),this.deleteExpiredTimestampsInterval=void 0)}startDeleteExpiredTimestampsJob(){this.deleteExpiredTimestampsInterval=setInterval(()=>{const e=[...this.docIdToServerTimestamp.entries()].filter(([e,t])=>!(!t.expireTimestamp||t.expireTimestamp>Date.now()||this.isTracked(e)));for(const[t]of e)this.docIdToServerTimestamp.delete(t),this.forgetDocument(t,!0)},1e4)}updateDocumentFromSnapshot(e,t){const i=this.documentStore.getDocumentOrUndefined(e);return!(!i&&!t||i===t)&&((!i||!t||xi({...t,__ts__:void 0})!==xi(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 ks.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:i,idResolutionMap:s={},refreshList:n=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(s),n.forEach(e=>{this.refreshDocIdToTimestamp.set(s[e]||e,i)});for(const t of e){let e=this.removeOutgoingMutation(t);s[e]&&(e=s[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=ts(e.mutation.squidDocIdObj),i=we(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}=es(t);this.setExpiration(t,!0);try{const i=e.includes(Zi)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(we(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 s=this.docIdToServerTimestamp.get(t)?.timestamp;s&&s>i||e.push(t)}this.refreshDocIdToTimestamp.clear(),await Promise.allSettled(e.map(e=>this.queryBuilderFactory.getForDocument(e).snapshot()))}groupOutgoingMutationsByIntegrationId(){const e={};for(const[,t]of[...this.pendingOutgoingMutations.entries()]){const i=t[t.length-1];if(i&&!i.sentToServer){const t=i.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(i),i.sentToServer=!0}}return Object.entries(e)}handleOrphanDocs(){this.querySubscriptionManager.onOrphanDocuments.subscribe(e=>{for(const t of e)this.isTracked(t)||this.forgetDocument(t,!1)})}acknowledgeDocument(e,t,i=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,i)}setExpiration(e,t){const i=this.docIdToServerTimestamp.get(e);i&&(i.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),this.pendingIncomingUpdates.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=ts(t.mutation.squidDocIdObj),s=e[i];s&&(t.mutation.squidDocIdObj=es(s))})}),Object.entries(e).forEach(([e,t])=>{Di(this.pendingOutgoingMutations,e,t),Di(this.docIdToLocalTimestamp,e,t),Di(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 Hs=Symbol("undefined");class Ks{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new t(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe(g(Boolean),ye(()=>{}))}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 Ws{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{if(e)return;const t=Object.keys(this.ongoingLocks);t.length>0&&(console.warn(`DistributedLockManager: WebSocket disconnected, releasing ${t.length} lock(s)`),Ji.debug(`DistributedLockManager: released lock(s): [${t.join(", ")}]`)),this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.lockId];t?.release()})}async lock(e,t){"number"==typeof t&&(t={acquisitionTimeoutMillis:t});const i=t?.acquisitionTimeoutMillis??2e3,s=t?.maxHoldTimeMillis;this.socketManager.notifyWebSocketIsNeeded(),be(await m(k(j(this.lockWaitForConnectionThreshold).pipe(ye(()=>!1)),this.socketManager.observeConnectionReady().pipe(g(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const n=Me(),r={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:s,clientRequestId:n}};this.socketManager.postMessage(r);const o=await m(k(j(i+4e3).pipe(O(1),ye(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:n}}))),this.acquireLockMessagesFromServer.pipe(g(e=>e.payload.clientRequestId===n)))),a=o.payload.lockId;be(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),be(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new Vs(a,e,n,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 Vs{constructor(e,t,i,s,r){this.lockId=e,this.resourceId=t,this.clientRequestId=i,this.ongoingLocks=s,this.socketManager=r,this.released=!1,this.onReleaseSubject=new n(1)}async release(){if(this.released)return;this.released=!0,delete this.ongoingLocks[this.lockId];const e={type:"releaseLock",payload:{lockId:this.lockId,clientRequestId:this.clientRequestId}},t=this.socketManager.sendMessage(e),i=await m(k(I(t.then(Js,Js)),this.socketManager.observeConnectionReady().pipe(g(e=>!e),ye(()=>!1))));if(this.onReleaseSubject.next(),!i)return t.catch(()=>{}),void this.onReleaseSubject.complete();try{await t}finally{this.onReleaseSubject.complete()}}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}function Js(){return!0}class zs{constructor(e,i){this.documentStore=e,this.destructManager=i,this.changeNotifier=new t({}),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 Ys{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t,i){if(i)return new us(e,we(this.dataManager,"dataManager not found"),t,i);let s=this.documents.get(e);if(s)return s;s=new us(e,we(this.dataManager,"dataManager not found"),t);const{integrationId:n,collectionName:r}=es(e);this.documents.set(e,s);const o=this.getCollectionKey(n,r),a=this.documentsForCollection.get(o)||[];return this.documentsForCollection.set(o,a.concat(s)),s}setDataManager(e){this.dataManager=e}getDocumentsForCollection(e,t){const i=this.getCollectionKey(e,t);return(this.documentsForCollection.get(i)||[]).filter(e=>e.hasData)}migrateDocIds(e){for(const[,t]of this.documents)t.migrateDocIds(e);Object.entries(e).forEach(([e,t])=>{const i=es(e),s=es(t);Di(this.documents,i.docId,s.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class Xs{constructor(){this.squidDocIdToDoc=new Map,this.squidDocIdToProjectedFields=new Map}saveProjectedDocument(e,t,i){const s=this.squidDocIdToDoc.get(e);if(s){const i=this.mergeDocuments(s,t),n=this.removeInternalProperties(i);this.squidDocIdToDoc.set(e,n)}else{const i=this.removeInternalProperties(t);this.squidDocIdToDoc.set(e,i)}if(i?.length){const t=this.squidDocIdToProjectedFields.get(e);if(void 0!==t)for(const e of i)t.add(e);else s||this.squidDocIdToProjectedFields.set(e,new Set(i))}return this.squidDocIdToDoc.get(e)}mergeDocuments(e,t){const i=Ai(e);for(const e of Object.keys(t)){const s=t[e],n=i[e];null===s||"object"!=typeof s||Array.isArray(s)||null===n||"object"!=typeof n||Array.isArray(n)?i[e]=s:i[e]=this.mergeDocuments(n,s)}return i}adoptMissingFields(e,t){const i=this.squidDocIdToDoc.get(e);if(!i)return;const s=Object.keys(t).filter(e=>"__ts__"!==e&&!(e in i));if(!s.length)return;const n=Ai(i);for(const e of s)n[e]=t[e];this.squidDocIdToDoc.set(e,n);const r=this.squidDocIdToProjectedFields.get(e);if(r)for(const e of s)r.add(e)}deleteDocument(e){this.squidDocIdToDoc.delete(e),this.squidDocIdToProjectedFields.delete(e)}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=Ai(t),s=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,s),this.squidDocIdToProjectedFields.delete(e),s}return this.squidDocIdToDoc.delete(e),void this.squidDocIdToProjectedFields.delete(e)}const s=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,s),this.squidDocIdToProjectedFields.delete(e),s}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}hasSufficientData(e,t){if(!this.squidDocIdToDoc.has(e))return!1;const i=this.squidDocIdToProjectedFields.get(e);return void 0===i||!!t?.length&&t.every(e=>i.has(e))}group(e,t){return Object.values(Ni(e,e=>xi(t.map(t=>ki(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=Array.from(e).map(e=>this.squidDocIdToDoc.get(e)).filter(me),{sortOrder:s,limitBy:n}=t,r=i.sort((e,t)=>this.compareSquidDocs(e,t,s)),o=t.limit<0?2e3:t.limit;let a;if(n){const{limit:e,fields:t,reverseSort:i}=n,s=this.group(r,t);let c;c=i?s.map(t=>t.slice(-e)):s.map(t=>t.slice(0,e)),a=c.flat().slice(0,o)}else a=r.slice(0,o);return null!==t.projectFields&&void 0!==t.projectFields&&(a=a.map(e=>this.projectDocument(e,t.projectFields))),a}projectDocument(e,t){const i={};"__id"in e&&(i.__id=e.__id),"__docId__"in e&&(i.__docId__=e.__docId__);for(const s of t)if(s.includes(".")){const t=ki(e,s);void 0!==t&&Ti(i,s,t)}else s in e&&(i[s]=e[s]);return i}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;Di(this.squidDocIdToDoc,e,t),Di(this.squidDocIdToProjectedFields,e,t);const s=es(t),n=Pi(s.docId);this.saveDocument(t,{...i,...n,__docId__:s.docId})}compareSquidDocs(e,t,i){for(const{fieldName:s,asc:n}of i){const i=ji(ki(e,s),ki(t,s));if(0!==i)return n?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class Zs{constructor(e){this.rpcManager=e}async emit(e){const t={event:e};await this.rpcManager.post("events/emit",t)}}class en{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 tn{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 sn{constructor(e,t,i,s,n){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.ownedJobs=new Set,s.onDestruct(async()=>{this.stopKeepAlive();const e=[...this.ownedJobs];this.ownedJobs.clear(),await Promise.all(e.map(e=>this.resolveJob(e,"failed",void 0,"Client shut down").catch(()=>{})))}),n.isPassiveMode||this.clientIdService.observeClientId().pipe(p(),T(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))Ji.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(t=>{const i=this.listeners[e];i&&(i.error(t),delete this.listeners[e])})})}async startJob(e){await this.rpcManager.post("job/startJob",{jobId:e}),this.ownedJobs.add(e),this.ensureKeepAlive()}async completeJob(e,t){await this.resolveJob(e,"completed",t)}async failJob(e,t){await this.resolveJob(e,"failed",void 0,t)}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new n(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(i=>{t.error(i),delete this.listeners[e]}),m(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe(g(e=>"jobStatus"===e.type)).subscribe(e=>{const t=e.payload,i=t.id,s=this.listeners[i];s&&("completed"===t.status?s.next(t.result):"failed"===t.status?s.error(new Error(t.error||"Job failed")):console.error("Unexpected job status:",t.status,"for jobId:",i),delete this.listeners[i])}))}async resolveJob(e,t,i,s){try{await this.rpcManager.post("job/resolveJob",{jobId:e,status:t,result:i,error:s})}finally{this.ownedJobs.delete(e),this.ownedJobs.size||this.stopKeepAlive()}}ensureKeepAlive(){void 0===this.keepAliveHandle&&(this.keepAliveHandle=setInterval(()=>{if(!this.ownedJobs.size)return void this.stopKeepAlive();const e={jobIds:[...this.ownedJobs]};this.rpcManager.post("job/keepAlive",e).catch(e=>Ji.debug("Job keep-alive failed:",e))},15e3))}stopKeepAlive(){void 0!==this.keepAliveHandle&&(clearInterval(this.keepAliveHandle),this.keepAliveHandle=void 0)}}class nn{constructor(e,t,i){this.graphId=e,this.rpcManager=t,this.jobClient=i}async invoke(e={}){const t=Me();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,jobId:t}),await this.jobClient.awaitJob(t)}async invokeAsync(e={}){const t=Me();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,jobId:t}),t}async resume(e,t){const i=Me();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,jobId:i}),await this.jobClient.awaitJob(i)}async resumeAsync(e,t){const i=Me();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,jobId:i}),i}async getState(e){return this.rpcManager.post("langgraph/getState",{graphId:this.graphId,threadId:e})}async deleteThread(e){await this.rpcManager.post("langgraph/deleteThread",{graphId:this.graphId,threadId:e})}}class rn{constructor(e,t){this.rpcManager=e,this.jobClient=t}graph(e){return new nn(e,this.rpcManager,this.jobClient)}}const on="squid_mgmt_",an="x-squid-traceid",cn="x-squid-client-version";function un(e="n_"){return`${e}${Ee(10).toLowerCase()}`}const ln=e=>e();class dn extends Error{constructor(e,t,i,s,n){super(e),this.statusCode=t,this.url=i,this.headers=s,this.body=n}}const hn="1.0.489";async function pn(e){return In({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage,abortSignal:e.abortSignal})}async function gn(e){return In({...e,method:"GET",files:[],filesFieldName:""})}async function fn(e){return In({...e,method:"PUT"})}async function yn(e){return In({...e,method:"PATCH"})}async function mn(e){return In({...e,method:"DELETE",files:[],filesFieldName:""})}async function In(e){const t=await async function({headers:e,files:t,filesFieldName:i,message:s,url:n,extractErrorMessage:r,method:o,abortSignal:a}){const c=new Headers(e);c.append(an,un("c_")),c.append(cn,hn);const u={method:o,headers:c,body:void 0,signal:a};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const s of t)e.append(i||"files",s,s.name);e.append("body",Bi(s)),u.body=e}else void 0!==s&&(c.append("Content-Type","application/json"),u.body=Bi(s));else"DELETE"===o&&void 0!==s&&(c.append("Content-Type","application/json"),u.body=Bi(s));try{const e=await fetch(n,u),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),s=bn(i);if(!r)throw new dn(i,e.status,n,t,s);let o;try{o="string"==typeof s?s:s?.message||i}catch{}throw o||(o=e.statusText),new dn(o,e.status,n,t,s)}const i=await e.text();return Ji.debug(`received response from url ${n}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw Ji.debug(`Unable to perform fetch request to url: ${n}`,e),e}}(e);return t.body=bn(t.body),t}function bn(e){if(e){try{return Pi(e)}catch{}return e}}class wn{constructor(e){be(e.apiKey.startsWith(on),`Invalid management API key format. Key must start with '${on}'`),this.apiKey=e.apiKey,this.consoleRegion=e.consoleRegion}async createOrganization(e){return this.callApi("POST","organizations",e)}async createApplication(e){return this.callApi("POST","applications",e)}async deleteApplication(e){await this.callApi("DELETE",`applications/${e}`)}async renameOrganization(e){await this.callApi("PATCH",`organizations/${e.organizationId}`,{name:e.name})}async renameApplication(e){await this.callApi("PATCH",`applications/${e.appId}`,{name:e.name})}async callApi(e,t,i){const s=P(this.consoleRegion,"console",`openapi/iac/management/${t}`),n={Authorization:`ManagementKey ${this.apiKey}`};return"POST"===e?(await pn({url:s,headers:n,message:i,files:[],filesFieldName:"",extractErrorMessage:!0})).body:"PATCH"===e?(await yn({url:s,headers:n,message:i,extractErrorMessage:!0})).body:(await mn({url:s,headers:n,message:i,extractErrorMessage:!0})).body}}class vn{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=Qs(e),s=i.map(e=>`sendMutation_${ts(e.squidDocIdObj)}`);await this.lockManager.lock(...s),await this.querySender.waitForAllQueriesToFinish();try{const e={mutations:i,integrationId:t};return await this.rpcManager.post("mutation/mutate",e)}catch(e){throw Ji.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...s)}}async deleteQuery(e){const t=`deleteQuery_${e.integrationId}_${e.collectionName}`;await this.lockManager.lock(t),await this.querySender.waitForAllQueriesToFinish();try{const t={query:e};return await this.rpcManager.post("mutation/deleteQuery",t)}catch(t){throw Ji.debug("Error while deleting query results",{error:t,query:JSON.stringify(e,null,2)}),t}finally{this.lockManager.release(t)}}}class Sn{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class Mn{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"userNotification"===e.type),v(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 kn={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class _n{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!Tn.test(e)||e.length>=En);be(0===i.length,()=>`Tag name is not allowed: ${i.join(",")}`),this.isReporting=!0;const s={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},n=this.rpcManager.post("/observability/metrics",{metrics:[s]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==n),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(n)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...kn,...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:s}=e,n=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:s}){if("align-by-start-time"===s)return e;const n=t-e;let r=t-Math.floor(n/i)*i;return r>e&&(r-=i),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:s}){if("align-by-end-time"===s)return t-i;const n=t-e;let r=e+Math.floor(n/i)*i;return r>=t&&(r-=i),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const i=[];for(let t=0;t<e.groupByTags.length;t++){const s=e.groupByTags[t],n=a[s]?.[0]||"";i.push(n)}t.push({tagValues:i,points:[]})}else"return-result-group-with-default-values"===s&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[i,s]of Object.entries(a)){const n=e.groupByTags.indexOf(i);if(!(n<0))for(let e=0;e<t.length;e++){const i=t[e],r=new Set(s);for(let e=0;e<t.length;e++){const s=t[e];i.tagValues.every((e,t)=>t===n||e===s.tagValues[t])&&r.delete(s.tagValues[n])}if(0!==r.size)for(const e of r){const s={tagValues:[...i.tagValues],points:[]};s.tagValues[n]=e,t.push(s)}}}for(const s of t){if(0!==s.points.length){const e=s.points[0][0],t=s.points[s.points.length-1][0];be(e>=r,()=>`Invalid first point time: ${e}`),be(t<=o,()=>`Invalid last point time: ${t}`)}const t=[];let a=0;const c=e=>"count"===e?0:n,u=Array.isArray(e.fn)?e.fn.map(c):[n];for(let e=r;e<=o;e+=i){const i=s.points[a];i?i[0]===e?(t.push(i),a++):(be(i[0]>e,()=>`Result point has invalid time: ${i[0]}`),t.push([e,...u])):t.push([e,...u])}s.points=t}}(t,i.resultGroups),i}}const Tn=/^[a-zA-Z0-9_-]+$/,En=1e3;async function Dn(e,t,i=500){const s=Date.now(),n=e.paginate({pageSize:i,subscribe:!1});let r=0,o=await n.waitForData();for(;;){for(const e of o.data)r++,await t(e.data);if(!o.hasNext)break;o=await n.next()}return{count:r,time:Date.now()-s}}async function Cn(e,t=500){const i=[],s=e.paginate({pageSize:t,subscribe:!1});let n=await s.waitForData();for(;;){for(const e of n.data){const t=es(e.squidDocId),s=Pi(t.docId),n=t.integrationId===Jt?s.__id:s;i.push(n)}if(!n.hasNext)break;n=await s.next()}return i}function On(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:s}=t,{collectionName:n,integrationId:r}=i;let o=e.collection(n,r).query();return o=qn(o,i),s?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:s,joinConditions:n,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=qn(u,i.query),Object.entries(s).map(([t,i])=>{const{collectionName:s,integrationId:r}=i,{left:o,right:a,leftAlias:c}=n[t];let l=e.collection(s,r).query();l=qn(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),r&&o?u.grouped().dereference():r?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:s,integrationId:n}=An(i[0]),r=i.map(t=>On(e,t));return e.collection(s,n).or(...r)}(e,t)}}function qn(e,t){const{conditions:i,limit:s,sortOrder:n}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");if("docIds"in t)throw new Error("DocId conditions are not supported in query serialization.");const{fieldName:i,operator:s,value:n}=t;e.where(i,s,n)}e.limit(s);for(const{fieldName:t,asc:i}of n)e.sortBy(t,i);return e}function An(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 An(e.queries[0])}}class Rn{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,s=new js(e),n=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>s.documentMatchesQuery(e.data)),r={};return n.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[ts(e.__docId__,i,t)])}}function jn(e,t){return W(function(i,s){var n=0;i.subscribe(ge(s,function(i){return e.call(t,i,n++)&&s.next(i)}))})}class Nn{constructor(e,i,s){this.rpcManager=e,this.destructManager=i,this.webSocketConnectionReady$=s,this.safeToSendQueriesToServer=new t(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new t(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new r,i=m(t);return this.pendingQueryRequests.push({queryRequest:e,responseSubject:t}),this.pendingQueryBatchTimeout&&(clearTimeout(this.pendingQueryBatchTimeout),this.pendingQueryBatchTimeout=void 0),this.pendingQueryRequests.length>=10?(this.processQueryBatch(),i):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.gateForCurrentBatch().subscribe(()=>{this.processQueryBatch()})},0),i)}gateForCurrentBatch(){return this.pendingQueryRequests.some(({queryRequest:e})=>e.subscribe)&&this.webSocketConnectionReady$?o([this.safeToSendQueriesToServer,this.webSocketConnectionReady$]).pipe(jn(([e,t])=>e&&t),O(1),ye(()=>!0)):this.safeToSendQueriesToServer.pipe(jn(Boolean),O(1))}async sendQueryDirect(e){const t=await this.rpcManager.post("query/batchQueries",[e]),i=t.errors[e.clientRequestId];if(i)throw i;return t.results[e.clientRequestId]}async waitForAllQueriesToFinish(){return m(this.inflightQueriesCount.pipe(jn(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:s}of e){const e=t.clientRequestId,n=i.errors[e],r=i.results[e];n?s.error(n):s.next(r)}}catch(e){i.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var Fn={d:(e,t)=>{for(var i in t)Fn.o(t,i)&&!Fn.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function xn(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 Bn(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return Pn(e,t);if(0===t.length)return xn("object"==typeof i&&null!==i&&!Array.isArray(i),()=>`Root state must be a record. Trying to set '${i}', type: ${typeof i}`),i;function s(e){const t=Number(e);return!isNaN(t)&&t>=0&&t!==1/0}let n=e;for(let e=0;e<t.length-1&&void 0!==n;e++){const i=t[e];xn(!Array.isArray(n)||s(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),n=n[i],xn(void 0===n||"object"==typeof n&&null!==n,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===n?"<null>":typeof n}'`)}const r=t[t.length-1];return xn(!Array.isArray(n)||s(r),()=>`Invalid array index Path: '${t}`),(null==n?void 0:n[r])===i?e:Un(e,t,i)}(e,t.path,t.value);case"delete":return Pn(e,t.path);case"batch":return t.actions.reduce((e,t)=>Bn(e,t),e)}}function Pn(e,t){xn(0!==t.length,"Can't delete an empty path");let i=e;for(let s=0;s<t.length-1;s++){const n=t[s];if(i=i[n],void 0===i)return e;xn("object"==typeof i&&null!==i,()=>`Cannot delete a property from a non-record parent. Path: '${t.slice(0,s+1)}', type: ${null===i?"<null>":typeof i}`)}const s=t[t.length-1];return void 0===i[s]?e:Un(e,t,void 0)}function Un(e,t,i){function s(e,i){xn(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const n=Object.assign({},e);let r=n;for(let e=0;e<t.length-1;e++){const n=t[e],o=r[n];xn(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 s(r,n),r;r[n]=a,r=a}const o=t[t.length-1];return void 0===i?s(r,o):r[o]=i,n}function Qn(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(...Qn(t,"as-is"));return"unique-and-sorted"===t?Gn(i):i}function Ln(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 $n(e){const t=[...e];return t.sort((e,t)=>{for(let i=0;i<e.length;i++){if(i===t.length)return 1;const s=e[i].localeCompare(t[i]);if(0!==s)return s}return e.length-t.length}),t}function Gn(e){const t=$n(e),i=t;for(let e=0;e<t.length-1;e++){const s=t[e];for(let n=e+1;n<t.length;n++){const r=t[n];s.length===r.length&&Ln(s,r)&&(i[n]=void 0,e++)}}return i.filter(e=>void 0!==e)}const Hn=(Kn={Observable:()=>s,Subject:()=>r},Wn={},Fn.d(Wn,Kn),Wn);var Kn,Wn;const Vn=(Jn={filter:()=>jn,map:()=>ye},zn={},Fn.d(zn,Jn),zn);var Jn,zn;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 s=t(e);return this._setNodeValue(i,s,void 0===s),s}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 s=this.root,n=t(s.value,i);if(n!==Yn.StopFillToken){this._setNodeValue(s,n,!1);for(let r=0;r<e.length;r++){const o=e[r];i.push(o);let a=s.children.get(o);if(n=t(null==a?void 0:a.value,i),n===Yn.StopFillToken)break;a||(a={children:new Map,parent:s,childrenWithValue:0},s.children.set(o,a)),this._setNodeValue(a,n,!1),s=a}this._runGc(s)}}visitDfs(e,t,i=[]){const s=this.getNode(i);void 0!==s&&this._visitDfs(e,s,t,[...i])}_visitDfs(e,t,i,s){if("pre-order"===e&&!1===i(t.value,s))return!1;for(const[n,r]of t.children){if(s.push(n),!this._visitDfs(e,r,i,s))return!1;s.pop()}return"in-order"!==e||!1!==i(t.value,s)}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 s=e[i];let n=t.children.get(s);n||(n={children:new Map,parent:t,childrenWithValue:0},t.children.set(s,n)),t=n}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 Xn extends Hn.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class Zn{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,Vn.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=Bn(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=Qn(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),s=Gn([...t,...i]),n=new Yn;for(const e of s)n.fillPath(e,()=>!0);n.visitDfs("pre-order",(t,i)=>{const s=this.observersTrie.get(i);if(s){const t=this.get(i),n=s.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;s.next({action:e,value:t,oldValue:n})}})}_observeChanges(e,t=[],i){const s=0===t.length?void 0:new Yn;for(const e of t)null==s||s.set(e,!0);return new Hn.Observable(t=>{const n=this.observersTrie.getOrSet(e,()=>new Xn);n.isAllDetailsMode=n.isAllDetailsMode||"all-details"===i;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=n.pipe((0,Vn.filter)(({action:e})=>void 0===s||Qn(e,"as-is").some(e=>!s.get(e))),(0,Vn.map)(({action:t,value:i,oldValue:s})=>{let r=this.stubForUnusedPaths;if(n.isAllDetailsMode){const i=Qn(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=$n(e),i=t;for(let e=0;e<i.length-1;e++){const s=t[e];for(let n=e+1;n<t.length;n++)Ln(t[n],s)&&(i[n]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>Ln(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:s,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),n.observed||this.observersTrie.delete(e)}})}_get(e,t){let i=e;for(let e=0;e<t.length&&void 0!==i;e++){const s=t[e];i=null==i?void 0:i[s]}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 er(e,t,i=(e,t)=>e>t?1:e<t?-1:0,s=0,n=e.length-1){if(n<s)return-1;const r=Math.trunc((s+n)/2);return 0===i(t,e[r])?r:i(t,e[r])>0?er(e,t,i,r+1,n):er(e,t,i,s,r-1)}function tr(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==er(e,t,i))return;let s;for(s=e.length-1;s>=0&&i(e[s],t)>0;s--)e[s+1]=e[s];e[s+1]=t}function ir(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const s=er(e,t,i);s>-1&&e.splice(s,1)}class sr{setDetachedQueryExecutor(e){this.detachedQueryExecutor=e}constructor(e,t,i,s,n,o,a,c){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=s,this.documentIdentityService=n,this.querySender=o,this.socketManager=a,this.lockManager=c,this.onOrphanDocuments=new r,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new rr,this.queryResultsSubject=new r,this.detachedRecords=new Set,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.clientIdService.observeClientTooOld().subscribe(()=>{this.invalidateOngoingQueryRegistrations()}),this.clientIdService.observeClientReadyToBeRegenerated().subscribe(()=>{this.refreshOngoingQueries()}),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}dumpSubscriptionInfo(){console.log("Ongoing queries:",this.ongoingQueries),console.log("ClientRequestId to local documents:",this.clientRequestIdToLocalDocuments),console.log("Local documents to clientRequestId:",this.localDocumentToClientRequestIds)}observeQueryResults(){return this.queryResultsSubject.asObservable()}hasOngoingQuery(e){return this.ongoingQueries.has(e)}getQuery(e){return we(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:s}=es(t),n=this.queryMappingManager.getMapping(i,s);return n?function(e,t){const i=[...e.unconditional||[]],s=new Map;for(const[i,n]of Object.entries(e.conditional||{})){const e=Pi(i);let r;if(rs(e))if(e.fieldName===ri)r=cs(e.value,t,e.operator,ki);else{const i=ki(t,e.fieldName)??null;r=is(e.value,i,e.operator)}else r=os(e)?as(e,t,ki):nr(e,t);if(r)for(const e of n)s.set(e,(s.get(e)||0)+1)}for(const[t,n]of s.entries())n>=e.queriesMetadata[t].condCount&&i.push(t);return i}(n,e):[]}setClientRequestIdsForLocalDoc(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set,s=new Set(t?this.findQueriesForDocument(t,e).map(e=>function(e){const t=e.split("_");return{clientId:t[0],clientRequestId:t[1]}}(e).clientRequestId):[]),n=new Set([...i,...s]);for(const t of[...i]){if(s.has(t))continue;i.delete(t);const n=this.clientRequestIdToLocalDocuments.get(t);n&&(n.delete(e),n.size||this.clientRequestIdToLocalDocuments.delete(t)),i.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of s){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let s=this.clientRequestIdToLocalDocuments.get(t);s||(s=new Set,this.clientRequestIdToLocalDocuments.set(t,s)),s.add(e)}return[...n]}addDocToQuery(e,t){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let s=this.clientRequestIdToLocalDocuments.get(t);s||(s=new Set,this.clientRequestIdToLocalDocuments.set(t,s)),s.add(e)}removeDocFromQuery(e,t){const i=this.localDocumentToClientRequestIds.get(e);let s=!i;i&&(i.delete(t),i.size||(this.localDocumentToClientRequestIds.delete(e),s=!0));const n=this.clientRequestIdToLocalDocuments.get(t);n&&(n.delete(e),n.size||this.clientRequestIdToLocalDocuments.delete(t)),s&&this.documentStore.deleteDocument(e)}errorOutAllQueries(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of i){const i=this.ongoingQueries.get(e);i&&(this.destructManager.isDestructing?i.dataSubject.complete():i.dataSubject.error(t),i.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const i of e){const e=this.ongoingQueries.get(i);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const s=this.clientRequestIdToLocalDocuments.get(i)||new Set,n=this.documentStore.sortAndLimitDocs(s,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(n,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=we(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case $s.UNKNOWN:e.limitUnderflowState=s.size===e.query.limit+100?$s.ENABLED:$s.DISABLED;break;case $s.DISABLED:break;case $s.ENABLED:if(s.size<e.query.limit+20){e.limitUnderflowState=$s.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}e.dataSubject.next(n)}for(const e of t){const t=this.collectAllObservables(e);we(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new js(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,s,r,a,c){r&&this.socketManager.notifyWebSocketIsNeeded();const u=Object.keys(i).length>0;return r||u||!this.detachedQueryExecutor||this.lockManager.canGetLock(Ls)?d(()=>{const u=this.createOngoingQueryGraph(e,t,i,s,r,!0,{},c);a&&(u.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(u),u.allObservables=new n(1);const l=u.allObservables.pipe(C(e=>o(e).pipe(ye(e=>this.joinResults(e,s,u)))),jn(()=>this.allOngoingQueriesGotInitialResult(u)),E(void 0),M(),jn(([e,t])=>!Oi(e,t)),ye(([,e])=>e),r?R():O(1),f(()=>{u.dataSubject.complete(),u.done=!0,this.completeAllSupportedQueries(u),u.allObservables?.complete()})),d=this.collectAllObservables(u);return u.allObservables.next(d),l}).pipe(_()):I(this.detachedQueryExecutor(e)).pipe(ye(e=>e.map(e=>{const i={[t]:e};return this.detachedRecords.add(i),i})))}hasOngoingQueryForDocId(e){const t=this.localDocumentToClientRequestIds.get(e);return!!t&&!!t.size}unsubscribe(){const e=[...this.ongoingQueries.values()];for(const t of e)t.dataSubject.complete(),t.allObservables?.complete()}hasSubscription(e){return!!this.ongoingQueries.get(e)?.subscribe}isValidParent(e){if(!e.activated||e.isInFlight||e.isEmptyForJoin||e.done||!e.subscribe||!e.gotInitialResponse||!e.dataSubject.value)return!1;const t=-1===e.query.limit?1e3:e.query.limit;return e.dataSubject.value.length<t}findValidParentOfOngoingQuery(e){if(e.forceFetchFromServer)return;const t=new js(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 s of t){const t=we(this.localDocumentToClientRequestIds.get(s));t.delete(e),t.size||(this.localDocumentToClientRequestIds.delete(s),i.push(s))}i.length&&this.onOrphanDocuments.next(i)}registerQueryFinalizer(e){const t=e.clientRequestId,i=ns(this.clientIdService.getClientId(),t);e.dataSubject.pipe(f(async()=>{if(e.unsubscribeBlockerCount.value>0&&await m(k(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(jn(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)}),jn(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,i,s,n,r,o,a={},c){if(a[i])return a[i];const u=o&&c?c:this.clientIdService.generateClientRequestId(),l=[],d={clientRequestId:u,activated:o,alias:i,query:e,subscribe:r,dataSubject:new t(null),supportedQueries:l,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new t(0),queryRegistered:new t(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:r?$s.UNKNOWN:$s.DISABLED};this.registerQueryFinalizer(d),this.ongoingQueries.set(u,d),a[i]=d;for(const[e,t]of Object.entries(n)){const o=t.leftAlias;if(o!==i&&e!==i)continue;const c=o===i?e:o;if(o===i){const e=this.createOngoingQueryGraph(s[c],c,s,n,r,!1,a);e.joinCondition=t,l.push(e)}else d.supportingOngoingQuery=this.createOngoingQueryGraph(s[c],c,s,n,r,!1,a)}return d}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(jn(Boolean),ye(e=>({docs:e,alias:i}))));for(const i of e.supportedQueries)this.collectAllObservables(i,t);return t}joinResults(e,t,i){const s=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let n=s[i.alias].map(e=>({[i.alias]:e}));const r=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<r.length;e++){const i=r[e].alias;o.has(i)||(o.add(i),n=this.join(n,i,s[i],t[i]))}return n}join(e,t,i,s){if(!e.length)return e;const n=Object.keys(e[0]);if(!s||!n.includes(s.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[s.right]);r.has(t)||r.set(t,[]),we(r.get(t)).push(e)}),e.flatMap(e=>{const i=r.get(this.transformKey(e[s.leftAlias]?.[s.left]))||[];return i.length?i.map(i=>({...e,[t]:i})):s.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],i=[e];for(;i.length;){const e=we(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,i){const s=we(i.joinCondition),n=i.query;if(i.activated){if(!i.canExpandForJoin)return!1;const r=we(i.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===i.alias),o=new Set(e.map(e=>e[s.left]??null));for(const e of r)e.query.conditions.filter(rs).filter(e=>e.fieldName===s.right).forEach(e=>{o.delete(e.value)});if(0===o.size)return!1;const a=Ai(n);a.conditions=a.conditions.filter(e=>!rs(e)||e.fieldName!==s.right),[...o].forEach(e=>{a.conditions.push({fieldName:s.right,operator:"==",value:e})});const c={...i,query:a,activated:!0,gotInitialResponse:!1,dataSubject:new t(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(c),this.ongoingQueries.set(c.clientRequestId,c),we(i.supportingOngoingQuery).supportedQueries.push(c),this.sendQueryToServerOrUseParentQuery(c),!0}{if(i.activated=!0,n.conditions.filter(rs).filter(e=>e.fieldName===s.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(i),i.canExpandForJoin=!1,!0;const t=e.map(e=>e[s.left]??null).map(e=>({fieldName:s.right,operator:"==",value:e}));return t.length?(n.conditions.push(...t),this.sendQueryToServerOrUseParentQuery(i)):i.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=we(t.shift());t.push(...e.supportedQueries||[]),await m(e.unsubscribeBlockerCount.pipe(jn(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,s=e.clientRequestId,n=ns(this.clientIdService.getClientId(),s);this.queryMappingManager.addQuery(i,n),this.ongoingQueries.set(s,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},s=new js(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await m(t.queryRegistered.pipe(jn(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 n=k(e.queryRegistered.pipe(jn(Boolean),h(2e3),O(1)),this.destructManager.observeIsDestructing().pipe(O(1)));t.dataSubject.pipe(A(()=>!e.done),q(n),jn(Boolean),R(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),ye(e=>e.filter(e=>s.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(ts(i.__docId__,e.query.collectionName,e.query.integrationId),i);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,i=t>0&&e.subscribe?t+100:t,s={query:{...e.query,limit:i},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(s).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()):(Ji.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}invalidateOngoingQueryRegistrations(){for(const e of this.ongoingQueries.values())e.queryRegistered.next(!1)}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const i of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{i.has(t)&&(i.delete(t),i.add(e[t]))});t.forEach(t=>{Di(this.localDocumentToClientRequestIds,t,e[t])})}}function nr(e,t){for(const i of e.fields){const e=ki(t,i.fieldName)??null;if(is(i.value,e,i.operator))return!0;if(is(i.value,e,"!="))return!1}return!1}class rr{constructor(){this.stateService=new Zn({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const s=new Set;for(const n of e.conditions){if(rs(n)&&["=="].includes(n.operator)){const e=Ui(n.fieldName);s.has(e)||(i++,s.add(e))}else i++;const r=this.getConditionStatePath(e,n),o=[...this.stateService.get(r)||[]];tr(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],s=[...this.stateService.get(i)||[]];tr(s,t),this.stateService.set(i,s)}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 s=this.getConditionStatePath(t,i),n=[...this.stateService.get(s)||[]];ir(n,e),n.length?this.stateService.set(s,n):this.stateService.delete(s)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],s=[...this.stateService.get(i)||[]];ir(s,e),this.stateService.set(i,s)}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,xi(i))];var i}}class or{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 w(o(t).pipe(g(e=>!e.includes(!0)),O(1))),await this.lock(...e)}release(...e){for(const t of e){const e=we(this.locks[t]);e.next(!1),e.complete(),delete this.locks[t]}}canGetLock(...e){return!e.some(e=>this.locks[e]?.value)}lockSync(...e){be(this.canGetLock(...e),"Cannot acquire lock sync");for(const i of e)this.locks[i]=new t(!0)}}class ar{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 s=i.get(t);return s||(s=new ur(e,t,this.rpcManager,this.socketManager),i.set(t,s)),s}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const cr="subscriptionMutex";class ur{constructor(e,t,i,s){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=s,this.messagesSubject=new r,this.subscriberCount=0,this.lockManager=new or}async produce(e){await this.lockManager.lock(cr);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(cr)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),d(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe(f(()=>{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(cr);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 r}finally{this.lockManager.release(cr)}}async performUnsubscribe(){await this.lockManager.lock(cr);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(cr)}}}class lr{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 m(b(10).pipe(g(()=>this.attemptConsume()),y()))}attemptConsume(){return this.refill(),this.tokens>=1&&(this.tokens-=1,!0)}refill(){const e=Date.now(),t=(e-this.lastRefillTimestamp)*this.refillRatePerMs;this.tokens=Math.min(this.tokens+t,this.capacity),this.lastRefillTimestamp=e}}class dr{constructor(e,i,s,n,r,o){this.region=e,this.appId=i,this.authManager=r,this.clientIdService=o,this.staticHeaders={},this.onGoingRpcCounter=new t(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")}),s.onDestruct(async()=>{await this.awaitAllSettled()});const a=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new lr(60*a,5),ai:new lr(20*a,5),secret:new lr(20*a,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 s=`Bearer ${t}`;return i&&(s+=`; IntegrationId ${i}`),{Authorization:s}}async awaitAllSettled(){await m(this.onGoingRpcCounter.pipe(g(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=[],s="files",n={},r){return(await this.rawPost(e,t,i,s,!0,n,r)).body}async rawPost(e,t,i=[],s="files",n=!0,r={},o){return this.runRawRequest(e,r,async r=>{Ji.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const a=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await pn({url:a,headers:r,message:t,files:i,filesFieldName:s,extractErrorMessage:n,abortSignal:o})})}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){return this.runRawRequest(e,{},async s=>{let n=e.startsWith("http://")||e.startsWith("https://")?e:P(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))}),n+=`?${e.toString()}`}return Ji.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await gn({url:n,headers:s,extractErrorMessage:i})})}async put(e,t,i=[],s="files"){return(await this.rawPut(e,t,i,s)).body}async rawPut(e,t,i=[],s="files",n=!0){return this.runRawRequest(e,{},async r=>{Ji.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const o=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await fn({url:o,headers:r,message:t,files:i,filesFieldName:s,extractErrorMessage:n})})}async patch(e,t,i=[],s="files"){return(await this.rawPatch(e,t,i,s)).body}async rawPatch(e,t,i=[],s="files",n=!0){return this.runRawRequest(e,{},async r=>{Ji.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const o=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await yn({url:o,headers:r,message:t,files:i,filesFieldName:s,extractErrorMessage:n})})}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){return this.runRawRequest(e,{},async s=>{Ji.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const n=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await mn({url:n,headers:s,message:t,extractErrorMessage:i})})}async runRawRequest(e,t,i){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const s=await this.getAuthHeaders(),n={...this.staticHeaders,...s,...t};return await i(n)}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?we(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?we(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):we(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}function hr(e){be(!e.isPassiveMode,"This operation is not available in passive mode. Use active mode for real-time features.")}class pr{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 gr(){}const fr="undefined"!=typeof process&&process.versions?.node?x(220):Vi().WebSocket;class yr{constructor(e,i,s,n=ln,o,a,c){this.clientIdService=e,this.region=i,this.appId=s,this.messageNotificationWrapper=n,this.destructManager=o,this.authManager=a,this.runtimeOptions=c,this.webSocketObserver=new r,this.allMessagesObserver=new r,this.connectionReady=new t(!1),this.seenMessageIds=new Set,this.destructSubject=new r,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new t(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe(g(Boolean),O(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe(T(1),g(e=>!e),C(()=>k(j(this.clientTooOldThreshold),this.connectionReady.pipe(g(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?Ji.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(Ji.debug(this.clientIdService.getClientId(),"Client disconnected for a long period - refreshing"),this.refreshClient())}),this.observeConnectionReady().pipe(g(Boolean)).subscribe(()=>{this.clientIdService.isClientTooOld()&&this.clientIdService.notifyClientNotTooOld()}),this.observeNotifications().pipe(g(e=>"clientInfo"===e.type)).subscribe(e=>{console.log("Client info message received",e)})}refreshClient(){this.destructManager.isDestructing?Ji.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?Ji.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(Ji.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),Ji.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(p())}async awaitConnectionReady(){hr(this.runtimeOptions),await m(this.observeConnectionReady().pipe(g(Boolean)))}notifyWebSocketIsNeeded(){hr(this.runtimeOptions),this.webSocketNeededSubject.next(!0)}postMessage(e){this.sendMessageImpl(e)}sendMessage(e){return this.sendMessageImpl(e)}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(Ji.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded();try{await m(k(this.connectionReady.pipe(g(Boolean)),j(12e4).pipe(R(()=>{throw new Error("WebSocket connection not ready within 2 minutes")}))).pipe(q(this.destructSubject)))}catch(e){if(this.destructManager.isDestructing)return;throw e}const t=await this.authManager.getToken();if(this.connectionReady.value)try{be(this.socket,"Socket is undefined in sendMessageAsync");const i=Bi({message:e,authToken:t});Ji.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(Bi({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=P(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();Ji.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,s=0,n=1;const r={connected:!1,closeCalled:!1,open(){i=new(fr?.WebSocket??fr)(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.")}:gr,i.onopen=function(e){r.connected=!0,(t.onopen||gr)(e),s=0},i.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return Ji.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||gr)(e),void r.reconnect(e);(t.onclose||gr)(e)},i.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||gr)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;n&&s++<i?n=setTimeout(function(){(t.onreconnect||gr)(e),Ji.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||gr)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(n),n=void 0,i.close(e,t)}catch(e){}}};return r.open(),r}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{Ji.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{Ji.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Ji.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{Ji.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):Ji.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 Ji.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=Pi(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),Ji.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new r;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe(R(e=>t.push(e)),u(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await m(j(0)),this.connectionReady.next(!1),await m(j(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function mr(e){var t,i;i="Invalid application ID",be(function(e){return"string"==typeof e}(t=e),()=>Se(i,"Not a string",t));const s=e.split("-");be(s.length<4,`Invalid application ID: ${e}`);const[n,r,o]=s;return{appId:n,environmentId:r??"prod",squidDeveloperId:o}}function Ir(e,t){return`${mr(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function br(e,t,i){return`${Ir(e,t)}${i?`-${i}`:""}`}function wr(e){const t=mr(e);return Ir(t.appId,t.environmentId)}class vr{constructor(e="built_in_storage",t){this.integrationId=e,this.rpcManager=t}async uploadFile(e,t,i){const s={integrationId:this.integrationId,dirPathInBucket:e,expirationInSeconds:i};await this.rpcManager.post("storage/uploadFile",s,[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 Sr{constructor(e,t,i,s,n){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=s,this.consoleRegion=n}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e,t,i){return await this.rpcManager.post("web/aiSearch",{query:e,allowedDomains:i},[],"files",{},t)}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e){be(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shorten",i,"create short URL","json")}async createShortUrls(e){be(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shortenMany",i,"create short URLs","json")}async deleteShortUrl(e){be(this.apiKey,"API key is required to delete a short URL");const t={id:e,appId:this.appId};await this.postShortUrlApi("delete",t,"delete short URL","ignore")}async deleteShortUrls(e){be(this.apiKey,"API key is required to delete a short URL");const t={ids:e,appId:this.appId};await this.postShortUrlApi("deleteMany",t,"delete short URLs","ignore")}async postShortUrlApi(e,t,i,s){const n=U(this.region,this.consoleRegion,`openapi/sqd/${e}`),r=await fetch(n,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(t)});if("ignore"===s)return void be(r.ok,`Failed to ${i} (${r.status}): ${r.statusText}`);const o=await r.text();return be(r.ok,`Failed to ${i} (${r.status}): ${o}`),JSON.parse(o)}}class Mr{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:s={},body:n,files:r=[]}=t,o=await this.rpcManager.getAuthHeaders(),a={...this.rpcManager.getStaticHeaders(),...o,...i};let c=P(this.region,this.appId,`webhooks/${encodeURIComponent(e)}`);if(s&&Object.keys(s).length>0){const e=new URLSearchParams;Object.entries(s).forEach(([t,i])=>{e.append(t,String(i))}),c+=`?${e.toString()}`}const u=new Headers(a);let l;if(u.append(an,un("c_")),u.append(cn,hn),r&&r.length>0){const e=new FormData;for(const t of r)e.append("file",t,t.name);n&&"object"==typeof n&&Object.entries(n).forEach(([t,i])=>{e.append(t,String(i))}),l=e}else u.append("Content-Type","application/json"),l=Bi(n||{});const d=await fetch(c,{method:"POST",headers:u,body:l}),h={};if(d.headers.forEach((e,t)=>{h[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 dn(i,d.status,c,h,t)}const p=await d.text();let g;try{g=JSON.parse(p)}catch{g=p}return g}getWebhookUrl(e){return P(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class kr{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Ks,be(e.appId,"APP_ID_MUST_BE_PROVIDED"),this.runtimeOptions={isPassiveMode:e.isPassiveMode??!1};for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,i=br(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new zi(this.destructManager),Ji.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new Si(e.apiKey,e.authProvider),this.socketManager=new yr(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new dr(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new Mn(this.socketManager,this.rpcManager),this.jobClient=new sn(this.socketManager,this.rpcManager,this.clientIdService,this.destructManager,this.runtimeOptions),this.langGraphClient=new rn(this.rpcManager,this.jobClient),this.backendFunctionManager=new Ki(this.rpcManager),this.aiClient=new bi(this.socketManager,this.rpcManager,this.jobClient,this.clientIdService,this.backendFunctionManager,()=>this.metricAnnotations),this.apiClient=new vi(this.rpcManager),this.eventsClient=new Zs(this.rpcManager),this.documentStore=new Xs,this.lockManager=new or,this.distributedLockManager=new Ws(this.socketManager,this.destructManager),this.documentIdentityService=new zs(this.documentStore,this.destructManager),this.documentReferenceFactory=new Ys(this.documentIdentityService),this.querySender=new Nn(this.rpcManager,this.destructManager,this.socketManager.observeConnectionReady()),this.observabilityClient=new _n(this.rpcManager),this.schedulerClient=new pr(this.rpcManager),this._appId=i,this.querySubscriptionManager=new sr(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager,this.lockManager),this.localQueryManager=new Rn(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const s=new vn(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new ds(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService,s),this.dataManager=new Gs(this.documentStore,s,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new Ss(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.querySubscriptionManager.setDetachedQueryExecutor(e=>this.dataManager.executeDetachedQuery(e)),this.webhookManager=new Mr(this.rpcManager,e.region,i),this.nativeQueryManager=new Sn(this.rpcManager),this._connectionDetails=new Ms(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new ar(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new H(this.rpcManager,this.options.region,wr(i),this.options.consoleRegion),this.webClient=new Sr(this.rpcManager,this.options.region,wr(i),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}get isDestructed(){return this.destructManager.isDestructing}static getInstance(e){const t=xi(e);let i=kr.squidInstancesMap[t];return i||(i=new kr(e),kr.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(kr.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Jt){return this._validateNotDestructed(),this.collectionReferenceFactory.get(e,t)}runInTransaction(e){return this._validateNotDestructed(),this.dataManager.runInTransaction(e)}executeFunction(e,...t){return this._validateNotDestructed(),this.backendFunctionManager.executeFunction(e,...t)}executeFunctionWithHeaders(e,t,...i){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...i)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}getWebhookUrl(e){return this._validateNotDestructed(),this.webhookManager.getWebhookUrl(e)}executeNativeRelationalQuery(e,t,i={}){const s={type:"relational",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}executeNativePureQuery(e,t,i={}){const s={type:"pure",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}executeNativeMongoQuery(e,t,i){const s={type:"mongo",collectionName:t,aggregationPipeline:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}executeNativeElasticQuery(e,t,i,s="_search",n="GET"){const r={type:"elasticsearch",index:t,endpoint:s,method:n,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}setMetricAnnotations(e){this.metricAnnotations=e?{...e}:void 0}job(){return this._validateNotDestructed(),this.jobClient}langGraph(e){return this._validateNotDestructed(),this.langGraphClient.graph(e)}api(){return this._validateNotDestructed(),this.apiClient}admin(){return this._validateNotDestructed(),this.adminClient}web(){return this._validateNotDestructed(),this.webClient}storage(e="built_in_storage"){return this._validateNotDestructed(),new vr(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new en(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new tn(this.rpcManager)}events(){return this._validateNotDestructed(),this.eventsClient}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t,i){const s=await this.acquireLock(e,i);try{return await t(s)}finally{s.release()}}queue(e,t=zt){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(kr.squidInstancesMap).find(([,e])=>e===this);e&&delete kr.squidInstancesMap[e[0]]})}connectionDetails(){return this._validateNotDestructed(),this._connectionDetails}getNotificationClient(){return this._validateNotDestructed(),this.notificationClient}async _unsubscribe(){this.querySubscriptionManager.unsubscribe(),await this.rpcManager.awaitAllSettled()}internal(){const{rpcManager:e}=this;return{getApplicationUrl:(e,t,i)=>P(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>br(e,t,i)}}_validateNotDestructed(){be(!this.destructManager.isDestructing,"The client was already destructed.")}}const _r=18,Tr=100,Er=50,Dr=200,Cr=500,Or=500,qr=20,Ar=2e4;export{We as AGENT_STATUS_TITLE_ACCESSING_KB,Ke as AGENT_STATUS_TITLE_AGENT_RESPONSE,Ve as AGENT_STATUS_TITLE_CALLING_AI_FUNCTION,Ye as AGENT_STATUS_TITLE_GREPPING_KB,Je as AGENT_STATUS_TITLE_INSPECTING_KB_METADATA,ze as AGENT_STATUS_TITLE_QUERYING_KB_GRAPH,Xe as AGENT_STATUS_TITLE_QUERYING_SPREADSHEET,Qt as AI_AGENTS_INTEGRATION_ID,Tt as AI_AUDIO_CREATE_SPEECH_MODEL_NAMES,_t as AI_AUDIO_TRANSCRIPTION_MODEL_NAMES,Ze as AI_CHAT_MESSAGE_SOURCE,ft as AI_EMBEDDINGS_MODEL_NAMES,nt as AI_FILE_PROVIDER_TYPES,kt as AI_IMAGE_MODEL_NAMES,Dt as AI_MODEL_SOURCES,st as AI_PROVIDER_TYPES,ai as ALL_OPERATORS,ut as ANTHROPIC_CHAT_MODEL_NAMES,Nt as API_INJECTION_FIELD_TYPES,oi as ARRAY_OPERATORS,Gt as AUTH_INTEGRATION_TYPES,H as AdminClient,Ne as AiAgentClient,Re as AiAgentReference,xe as AiAudioClient,bi as AiClient,Be as AiFilesClient,Pe as AiImageClient,$e as AiKnowledgeBaseClient,Le as AiKnowledgeBaseReference,Ge as AiMatchMakingClient,vi as ApiClient,G as ApiKeysSecretClient,Si as AuthManager,gt as BEDROCK_EMBEDDING_MODEL_NAMES,Bt as BUILT_IN_AGENT_ID,Jt as BUILT_IN_DB_INTEGRATION_ID,zt as BUILT_IN_QUEUE_INTEGRATION_ID,Yt as BUILT_IN_STORAGE_INTEGRATION_ID,Rt as BULK_INGESTION_MAX_MULTIPART_FILE_BYTES,Ki as BackendFunctionManager,hs as BaseQueryBuilder,ui as CLIENT_CONNECTION_STATES,Yi as CLIENT_ID_GENERATOR_KEY,Xi as CLIENT_REQUEST_ID_GENERATOR_KEY,Pt as CONNECTOR_IDS,fs as Changes,zi as ClientIdService,ws as CollectionReference,Ss as CollectionReferenceFactory,Ms as ConnectionDetails,Q as ConnectorClient,$t as DATA_INTEGRATION_TYPES,tt as DEFAULT_PII_CLASSIFIER_MODEL,et as DEFAULT_PII_ENTITY_TYPES,_r as DEFAULT_SHORT_ID_LENGTH,ri as DOC_ID_FIELD,Gs as DataManager,ms as DereferencedJoin,Ks as DestructManager,Vs as DistributedLockImpl,Ws as DistributedLockManager,us as DocumentReference,Ys as DocumentReferenceFactory,Xs as DocumentStore,Fe as EMPTY_CHAT_ID,xt as ENVIRONMENT_IDS,Zs as EventsClient,en as ExternalAuthClient,tn as ExtractionClient,Tr as FETCH_BEYOND_LIMIT,Mt as FLUX_MODEL_NAMES,At as FOLDER_PATH_METADATA_FIELD_NAME,Ot as FUNCTION_AFFINITY_SCOPES,at as GEMINI_CHAT_MODEL_NAMES,Kt as GRAPHQL_INTEGRATION_TYPES,Er as GREP_KNOWLEDGE_BASE_DEFAULT_MAX_MATCHES,Dr as GREP_KNOWLEDGE_BASE_MAX_MATCHES,Cr as GREP_KNOWLEDGE_BASE_MAX_MATCH_LINE_CHARS,Or as GREP_KNOWLEDGE_BASE_MAX_PATTERN_CHARS,ct as GROK_CHAT_MODEL_NAMES,bs as GroupedJoin,Wt as HTTP_INTEGRATION_TYPES,Ut as HttpStatus,Vt as INTEGRATION_SCHEMA_TYPES,Lt as INTEGRATION_TYPES,L as IntegrationClient,sn as JobClient,ys as JoinQueryBuilder,rn as LangGraphClient,nn as LangGraphReference,$i as LastUsedValueExecuteFunctionCache,$s as LimitUnderflowState,Rn as LocalQueryManager,Ht as MCP_OAUTH_INTEGRATION_TYPES,ii as METRIC_DOMAIN,ti as METRIC_FUNCTIONS,si as METRIC_INTERVAL_ALIGNMENT,ni as METRIC_NO_DATA_BEHAVIOR,wn as ManagementClient,He as MatchMaker,vn as MutationSender,ln as NOOP_FN,Sn as NativeQueryManager,Mn as NotificationClient,wt as OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES,vt as OPENAI_AUDIO_MODEL_NAMES,bt as OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES,ot as OPENAI_CHAT_MODEL_NAMES,ht as OPENAI_EMBEDDINGS_MODEL_NAMES,It as OPENAI_IMAGE_MODEL_NAMES,Et as OPEN_AI_CREATE_SPEECH_FORMATS,_n as ObservabilityClient,ls as Pagination,gs as QueryBuilder,ds as QueryBuilderFactory,Nn as QuerySender,sr as QuerySubscriptionManager,ar as QueueManagerFactory,ur as QueueManagerImpl,jt as RAG_TYPES,it as RERANK_PROVIDERS,Ls as RUN_IN_TRANSACTION_MUTEX,lr as RateLimiter,dr as RpcManager,di as SOURCE_CODE_ANALYZER_MODELS,li as SOURCE_CODE_ANALYZE_FUNCTION_ID,pi as SOURCE_CODE_INTEGRATION_TYPES,qr as SOURCE_CODE_MAX_REPOSITORIES,Ar as SOURCE_CODE_MAX_SUPPLEMENTAL_INSTRUCTIONS_LENGTH,hi as SOURCE_CONTROL_PROVIDERS,Xt as SQUID_BUILT_IN_INTEGRATION_IDS,ei as SQUID_METRIC_NAMES,ci as SQUID_REGIONS,St as STABLE_DIFFUSION_MODEL_NAMES,pr as SchedulerClient,$ as SecretClient,yr as SocketManager,kr as Squid,dn as SquidClientError,vr as StorageClient,qt as VECTOR_DB_TYPES,lt as VENDOR_AI_CHAT_MODEL_NAMES,pt as VOYAGE_EMBEDDING_MODEL_NAMES,Sr as WebClient,Mr as WebhookManager,hr as assertNotPassiveMode,Qi as compareArgsByReference,Li as compareArgsBySerializedValue,On as deserializeQuery,_e as generateId,Ee as generateShortId,De as generateShortIds,Me as generateUUID,ke as generateUUIDPolyfill,U as getConsoleUrl,Wi as getCustomizationFlag,yt as isAiEmbeddingsModelName,Zt as isBuiltInIntegrationId,rt as isFileCapableProviderType,mt as isIntegrationEmbeddingModelSpec,Ct as isIntegrationModelSpec,Ft as isPlaceholderParam,dt as isVendorAiChatModelName,Cn as loadQueryResultDocIds,fi as normalizeBitbucketRepositorySelection,gi as normalizeGitHubRepositorySelection,Ae as observeAiStatusUpdates,mn as rawSquidHttpDelete,gn as rawSquidHttpGet,yn as rawSquidHttpPatch,pn as rawSquidHttpPost,fn as rawSquidHttpPut,Gi as transformFileArgs,bn as tryDeserializing,Dn as visitQueryResults};
|
|
1
|
+
import*as e from"ws";import{BehaviorSubject as t,NEVER as i,Observable as n,ReplaySubject as s,Subject as r,combineLatest as o,combineLatestWith as a,concatMap as c,debounceTime as u,defaultIfEmpty as l,defer as d,delay as h,distinctUntilChanged as p,filter as g,finalize as f,first as y,firstValueFrom as m,from as I,interval as b,lastValueFrom as w,map as v,of as S,pairwise as M,race as k,share as _,skip as T,startWith as E,switchAll as C,switchMap as D,take as O,takeUntil as q,takeWhile as A,tap as R,timer as j}from"rxjs";var N={273(e,t){Object.defineProperty(t,"__esModule",{value:!0})},150(e,t,i){var n=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,s)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||n(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0});const r=i(642);t.default=r.PromisePool,s(i(273),t),s(i(642),t),s(i(837),t),s(i(426),t),s(i(858),t),s(i(172),t)},837(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class i extends Error{constructor(e,t){super(),this.raw=e,this.item=t,this.name=this.constructor.name,this.message=this.messageFrom(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e,t){return new this(e,t)}messageFrom(e){return e instanceof Error||"object"==typeof e?e.message:"string"==typeof e||"number"==typeof e?e.toString():""}}t.PromisePoolError=i},234(e,t,i){t.PromisePoolExecutor=void 0;const n=i(642),s=i(172),r=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],processedItemsCounter:0,taskTimeout:0,shouldStoreProcessedItems:!0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw s.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}storeProcessedItems(e=!0){return this.meta.shouldStoreProcessedItems=e,this}shouldStoreProcessedItems(){return this.meta.shouldStoreProcessedItems}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}flushProcessedItems(){this.meta.processedItems=[]}incrementProcessedItemsCounter(){this.meta.processedItemsCounter+=1}processedCount(){return this.meta.processedItemsCounter}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw s.ValidationError.createFrom("The first parameter for the .process(fn) method must be a function");const e=this.taskTimeout();if(!(null==e||"number"==typeof e&&e>=0))throw s.ValidationError.createFrom(`"timeout" must be undefined or a number. A number must be 0 or up. Received "${String(e)}" (${typeof e})`);if(!this.areItemsValid())throw s.ValidationError.createFrom(`"items" must be an array, an iterable or an async iterable. Received "${typeof this.items()}"`);if(this.errorHandler&&"function"!=typeof this.errorHandler)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof e}"`)}),this}areItemsValid(){const e=this.items();return Array.isArray(e)||"function"==typeof e[Symbol.iterator]||"function"==typeof e[Symbol.asyncIterator]}prepareResultsArray(){const e=this.items();return Array.isArray(e)&&this.shouldUseCorrespondingResults()&&(this.meta.results=Array(e.length).fill(n.PromisePool.notRun)),this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=n.PromisePool.notRun),this.startProcessing(t,e),e+=1,await this.waitForProcessingSlot()}return await this.drained()}async waitForProcessingSlot(){for(;this.hasReachedConcurrencyLimit();)await this.waitForActiveTaskToFinish()}async waitForActiveTaskToFinish(){await Promise.race(this.tasks())}startProcessing(e,t){const i=this.createTaskFor(e,t).then(e=>{this.save(e,t).removeActive(i)}).catch(async n=>{await this.handleErrorFor(n,e,t),this.removeActive(i)}).finally(()=>{this.shouldStoreProcessedItems()&&this.processedItems().push(e),this.incrementProcessedItemsCounter(),this.runOnTaskFinishedHandlers(e)});this.tasks().push(i),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[i,n]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),i()]).finally(n)}createTaskTimeout(e){let t;return[async()=>new Promise((i,n)=>{t=setTimeout(()=>{n(new r.PromisePoolError(`Task in promise pool timed out after ${this.taskTimeout()}ms`,e))},this.taskTimeout())}),()=>clearTimeout(t)]}save(e,t){return this.shouldUseCorrespondingResults()?this.results()[t]=e:this.results().push(e),this}removeActive(e){return this.tasks().splice(this.tasks().indexOf(e),1),this}async handleErrorFor(e,t,i){if(this.shouldUseCorrespondingResults()&&(this.results()[i]=n.PromisePool.failed),!this.isStoppingThePoolError(e)){if(this.isValidationError(e))throw this.markAsStopped(),e;this.hasErrorHandler()?await this.runErrorHandlerFor(e,t):this.saveErrorFor(e,t)}}isStoppingThePoolError(e){return e instanceof o.StopThePromisePoolError}isValidationError(e){return e instanceof s.ValidationError}async runErrorHandlerFor(e,t){try{await(this.errorHandler?.(e,t,this))}catch(e){this.rethrowIfNotStoppingThePool(e)}}runOnTaskStartedHandlers(e){this.onTaskStartedHandlers.forEach(t=>{t(e,this)})}runOnTaskFinishedHandlers(e){this.onTaskFinishedHandlers.forEach(t=>{t(e,this)})}rethrowIfNotStoppingThePool(e){if(!this.isStoppingThePoolError(e))throw e}saveErrorFor(e,t){this.errors().push(r.PromisePoolError.createFrom(e,t))}async drained(){return await this.drainActiveTasks(),{errors:this.errors(),results:this.results()}}async drainActiveTasks(){await Promise.all(this.tasks())}}},642(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const n=i(234);class s{constructor(e){this.shouldStoreProcessedItems=!0,this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new s(e).withConcurrency(this.concurrency);return"function"==typeof this.errorHandler&&t.handleError(this.errorHandler),"number"==typeof this.timeout?t.withTaskTimeout(this.timeout):t}static for(e){return(new this).for(e)}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers.push(e),this}dontStoreProcessedItems(){return this.shouldStoreProcessedItems=!1,this}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new n.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).storeProcessedItems(this.shouldStoreProcessedItems).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=s,s.notRun=Symbol("notRun"),s.failed=Symbol("failed")},426(e,t){Object.defineProperty(t,"__esModule",{value:!0})},858(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i},172(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class i extends Error{constructor(e){super(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e){return new this(e)}}t.ValidationError=i},220(t){t.exports=e}};const F={};function x(e){const t=F[e];if(void 0!==t)return t.exports;const i=F[e]={exports:{}};return N[e].call(i.exports,i,i.exports,x),i.exports}x.d=(e,t)=>{if(Array.isArray(t))for(var i=0;i<t.length;){var n=t[i++],s=t[i++];x.o(e,n)?0===s&&i++:0===s?Object.defineProperty(e,n,{enumerable:!0,value:t[i++]}):Object.defineProperty(e,n,{enumerable:!0,get:s})}else for(var n in t)x.o(t,n)&&!x.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},x.o=(e,t)=>Object.hasOwn(e,t);const B=["application","mutation","query"];function P(e,t,i,n,s,r){let o="https",a=`${n||t}.${s||e}.${new URL("https://squid.cloud").host}`,c="";/^local/.test(e)&&(o="http",c=r||function(e){const t=e.replace(/^\/+/,"").split("/")[0]||"";return B.includes(t)}(i)?"8001":"8000",/android$/.test(e)?a="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(a="localhost"));const u=o+"://"+a+(c?`:${c}`:""),l=i.replace(/^\/+/,"");return l?`${u}/${l}`:u}function U(e,t,i=""){return P(function(e,t){return t||(e.includes("sandbox")?"squidai.westus3.azure.sandbox":e.includes("local")?"local":e.includes("staging")?"squidai.westus3.azure.staging":"us-east-1.aws")}(e,t),"console",i)}class Q{constructor(e,t,i,n){this.rpcManager=e,this.iacBaseUrl=U(t,n,`openapi/iac/applications/${i}/connectors`)}async list(){return await this.rpcManager.get(this.iacBaseUrl)??[]}async connect(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e}`,{})}async disconnect(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}}const L="Agent Response",$="Accessing Knowledge Base",G="Calling AI Function",H="Inspecting Knowledge Base Metadata",K="Querying Knowledge Base Graph",W="Searching Knowledge Base Text",V="Querying Spreadsheet",z=["user","ai"],J=["email","phoneNumber","creditCard","ssn","iban","passport"],Y="gpt-5.6-luna",X=["cohere","voyage","none"],Z=["anthropic","bedrock","claude-code","codex","cohere","flux","gemini","openai","openai-compatible","grok","stability","voyage","mistral","textract","azure_document_intelligence","vertex","external"],ee=["openai","gemini","anthropic","grok"];function te(e){return ee.includes(e)}const ie=["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra"],ne=["gemini-3.1-pro","gemini-3.8-flash","gemini-3.5-flash-lite"],se=["grok-4.6","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],re=["claude-fable-5","claude-fable-5-1","claude-haiku-4-5-20251001","claude-opus-5","claude-sonnet-5"],oe=[...ie,...re,...ne,...se];function ae(e){return oe.includes(e)}const ce=["text-embedding-3-small"],ue=["voyage-3-large","voyage-4-large","voyage-4"],le=["titan-embed-text-v2"],de=[...ce,...ue,...le];function he(e){return de.includes(e)}function pe(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e&&"dimensions"in e}const ge=["gpt-image-1","gpt-image-1-mini","gpt-image-1.5","gpt-image-2","gpt-image-2-2026-04-21","chatgpt-image-latest"],fe=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],ye=["tts-1","tts-1-hd","gpt-4o-mini-tts"],me=[...fe,...ye],Ie=["stable-diffusion-core"],be=["flux-pro-1.1","flux-kontext-pro"],we=[...ge,...Ie,...be],ve=[...fe],Se=[...ye],Me=["mp3","opus","aac","flac","wav","pcm"],ke=["vendor","connector","custom"];function _e(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const Te=["pod","worker"],Ee=["postgres","mongoAtlas"],Ce=["none","enforced"],De="folderPath",Oe={name:De,dataType:"string",required:!1,llmExtraction:!1},qe=104857600,Ae=524288e3,Re=["text-embedding-3-small","voyage-3-large","voyage-4-large","voyage-4"];function je(e){return Re.includes(e)}const Ne=["contextual","basic"],Fe=["secret","regular"];function xe(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const Be=["dev","prod"],Pe="built_in_agent",Ue=["bitbucket","confluence","cotomi","essentials","freshdesk","generic_site_ingester","github","google_calendar","google_drive","hubspot","sharepoint","jira","jira_jsm","linear","mail","onedrive","outlook","salesforce","servicenow_csm","slack","teams","ticketmind_companion","zendesk"],Qe={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,MOVED_TEMPORARILY:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,REQUEST_TOO_LONG:413,REQUEST_URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,REQUESTED_RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,INSUFFICIENT_SPACE_ON_RESOURCE:419,METHOD_FAILURE:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,INSUFFICIENT_STORAGE:507,NETWORK_AUTHENTICATION_REQUIRED:511},Le="ai_agents",$e=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_blob","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","bitbucket","built_in_azure_blob","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","azure-entra-external-id","azure-entra-id","dynamodb","elasticsearch","firebase_auth","firestore","gcs","generic_site_ingester","github","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jira_jsm","jwt_hmac","jwt_rsa","kafka","keycloak","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","outlook","oracledb","pinecone","postgres","redis","s3","salesforce","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","mcp","a2a","legend","teams","openai_compatible","openai_compatible_embedding","sharepoint","vertex"],Ge=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","snowflake","elasticsearch","legend"],He=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth","azure-entra-external-id","azure-entra-id"],Ke=["auth0"],We=["graphql"],Ve=["api"],ze=["data","api","graphql"],Je="built_in_db",Ye="built_in_queue",Xe="built_in_storage";function Ze(e){return!1===e.enabled}const et=[Je,Ye,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"],st=["user","squid"],rt=["align-by-start-time","align-by-end-time"],ot=["return-no-result-groups","return-result-group-with-default-values"],at="__docId__",ct=["in","not in","array_includes_some","array_includes_all","array_not_includes"],ut=[...ct,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],lt=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],dt=["CONNECTED","DISCONNECTED","REMOVED"];function ht(e){return null!=e}let pt=e=>new Error(e);function gt(e,t,...i){e||function(e,...t){const i=yt(e);if("object"==typeof i)throw i;throw pt(i||"Assertion error",...t)}(t,...i)}function ft(e,t,...i){return gt(e,t,...i),e}function yt(e){return void 0===e?"":"string"==typeof e?e:e()}function mt(e,t,i){const n=yt(e);if("object"==typeof n)throw n;return`${n?`${n}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(i)}`}const It="analyzeCode",bt=["claude-code","codex"],wt=["reuse","recreate"],vt=["read-only","write"],St=["github","bitbucket"],Mt=["github","bitbucket"];function kt(e){const t=function(e){const t=new Set,i=new Set;for(const n of e){gt(Number.isSafeInteger(n.id)&&n.id>0,"GITHUB_REPOSITORY_ID_INVALID"),gt(!t.has(n.id),"GITHUB_REPOSITORY_IDS_MUST_BE_UNIQUE"),t.add(n.id),gt(Tt(n.fullName),"GITHUB_REPOSITORY_NAME_INVALID");const e=n.fullName.toLowerCase();gt(!i.has(e),"GITHUB_REPOSITORIES_MUST_BE_UNIQUE"),i.add(e),gt(n.defaultBranch.trim(),"GITHUB_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),Et(n.cloneUrl,n.fullName,!0),Et(n.htmlUrl,n.fullName,!1)}return e}(e.repositories??[]),i=0===t.length?e.repository:void 0,n=t.map(e=>e.fullName);gt(t.length>0||i,"GITHUB_REPOSITORIES_REQUIRED"),gt(t.length<=20,"GITHUB_REPOSITORY_LIMIT_EXCEEDED");const s=e.defaultRepository??n[0]??i;return gt(s,"GITHUB_DEFAULT_REPOSITORY_REQUIRED"),gt(n.some(e=>e.toLowerCase()===s.toLowerCase())||i?.toLowerCase()===s.toLowerCase(),"GITHUB_DEFAULT_REPOSITORY_NOT_ALLOWED"),{...i?{legacyRepository:i}:{},repositories:t,defaultRepository:s}}function _t(e){const t=e.workspace;gt(t.trim()===t&&/^[A-Za-z0-9_-]+$/.test(t),"BITBUCKET_WORKSPACE_INVALID");const i=e.repositories;gt(i.length>0,"BITBUCKET_REPOSITORIES_REQUIRED"),gt(i.length<=20,"BITBUCKET_REPOSITORY_LIMIT_EXCEEDED");const n=new Set,s=new Set;for(const e of i){const i=e.uuid.trim();gt(i===e.uuid&&i.length>0,"BITBUCKET_REPOSITORY_ID_INVALID");const r=i.toLowerCase();gt(!n.has(r),"BITBUCKET_REPOSITORY_IDS_MUST_BE_UNIQUE"),n.add(r);const o=`${t}/`;gt(e.fullName.toLowerCase().startsWith(o.toLowerCase())&&e.fullName.length>o.length&&!e.fullName.slice(o.length).includes("/")&&!/\s/.test(e.fullName),"BITBUCKET_REPOSITORY_WORKSPACE_MISMATCH");const a=e.fullName.toLowerCase();gt(!s.has(a),"BITBUCKET_REPOSITORIES_MUST_BE_UNIQUE"),s.add(a),gt(e.defaultBranch.trim(),"BITBUCKET_REPOSITORY_DEFAULT_BRANCH_REQUIRED"),Ct(e.cloneUrl,e.fullName,!0),Ct(e.webUrl,e.fullName,!1)}const r=e.defaultRepository;return gt(r&&i.some(e=>e.fullName.toLowerCase()===r.toLowerCase()),"BITBUCKET_DEFAULT_REPOSITORY_NOT_ALLOWED"),{repositories:i,defaultRepository:r}}function Tt(e){return/^[^/\s]+\/[^/\s]+$/.test(e)}function Et(e,t,i){let n;try{n=new URL(e)}catch{throw new Error("GITHUB_REPOSITORY_URL_INVALID")}const s=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?github\.com:\d+(?:\/|$)/i.test(e);gt(!("https:"!==n.protocol||"github.com"!==n.hostname||r||n.username||n.password||n.search||n.hash||n.pathname!==s),"GITHUB_REPOSITORY_URL_INVALID")}function Ct(e,t,i){let n;try{n=new URL(e)}catch{throw new Error("BITBUCKET_REPOSITORY_URL_INVALID")}const s=`/${t}${i?".git":""}`,r=/^https:\/\/(?:[^/@]+@)?bitbucket\.org:\d+(?:\/|$)/i.test(e);gt(!("https:"!==n.protocol||"bitbucket.org"!==n.hostname||r||n.username||n.password||n.search||n.hash||n.pathname!==s),"BITBUCKET_REPOSITORY_URL_INVALID")}class Dt{constructor(e,t,i,n){this.rpcManager=e,this.iacBaseUrl=U(t,n,`openapi/iac/applications/${i}/integrations`)}async list(e,t){return(await this.rpcManager.get(this.iacBaseUrl)).filter(i=>(!e||i.type===e)&&(t?.includeDisabled||!Ze(i)))}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async enable(e){await this.setEnabled(e,!0)}async disable(e){await this.setEnabled(e,!1)}async setEnabled(e,t){const i=await this.get(e);if(!i)throw new Error(`Integration not found: ${e}`);await this.upsertIntegration({...i,enabled:t})}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}async discoverSourceRepositories(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-source-repositories`,{})}async discoverSourceRepositoriesFromDraft(e){return await this.rpcManager.post(`${this.iacBaseUrl}/discover-source-repositories`,e)}async generateAiDescriptionsForDataSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions`,t)}async generateAiDescriptionsForAssociations(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-associations`,t)}async generateAiDescriptionsForStoredProcedures(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-stored-procedures`,t)}async generateAiDescriptionsForEndpoints(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-endpoints`,t)}async discoverDataConnectionSchema(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-schema`,{})}async testDataConnection(e){return await this.rpcManager.post(`${this.iacBaseUrl}/test-connection`,e)}async discoverGraphQLConnectionSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-graphql-schema`,t)}async discoverOpenApiSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema`,t)}async discoverOpenApiSchemaFromFile(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema-from-file`,{})}}class Ot{constructor(e){this.rpcManager=e}get apiKeys(){return new qt(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 qt{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 At{constructor(e,t,i,n){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=n,this.integrationClient=new Dt(this.rpcManager,this.region,this.appId,this.consoleRegion),this.connectorClient=new Q(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new Ot(this.rpcManager)}integrations(){return this.integrationClient}connectors(){return this.connectorClient}secrets(){return this.secretClient}}function Rt(e){return"function"==typeof e}function jt(e){return function(t){if(function(e){return Rt(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 Nt=function(e,t){return Nt=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])},Nt(e,t)};function Ft(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}Nt(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function xt(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 Bt(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,s,r=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(e){s={error:e}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return o}function Pt(e,t,i){if(i||2===arguments.length)for(var n,s=0,r=t.length;s<r;s++)!n&&s in t||(n||(n=Array.prototype.slice.call(t,0,s)),n[s]=t[s]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var Ut,Qt=((Ut=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),Ut.prototype.constructor=Ut,Ut);function Lt(e,t){if(e){var i=e.indexOf(t);0<=i&&e.splice(i,1)}}var $t=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,i,n,s;if(!this.closed){this.closed=!0;var r=this._parentage;if(r)if(this._parentage=null,Array.isArray(r))try{for(var o=xt(r),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else r.remove(this);var c=this.initialTeardown;if(Rt(c))try{c()}catch(e){s=e instanceof Qt?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=xt(u),d=l.next();!d.done;d=l.next()){var h=d.value;try{Gt(h)}catch(e){s=null!=s?s:[],e instanceof Qt?s=Pt(Pt([],Bt(s)),Bt(e.errors)):s.push(e)}}}catch(e){i={error:e}}finally{try{d&&!d.done&&(n=l.return)&&n.call(l)}finally{if(i)throw i.error}}}if(s)throw new Qt(s)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)Gt(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)&&Lt(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&Lt(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function Gt(e){Rt(e)?e():e.unsubscribe()}$t.EMPTY;var Ht={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];var s=Ht.delegate;return(null==s?void 0:s.setTimeout)?s.setTimeout.apply(s,Pt([e,t],Bt(i))):setTimeout.apply(void 0,Pt([e,t],Bt(i)))},clearTimeout:function(e){var t=Ht.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function Kt(){}var Wt=Vt("C",void 0,void 0);function Vt(e,t,i){return{kind:e,value:t,error:i}}var zt=function(e){function t(t){var i,n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,((i=t)instanceof $t||i&&"closed"in i&&Rt(i.remove)&&Rt(i.add)&&Rt(i.unsubscribe))&&t.add(n)):n.destination=ei,n}return Ft(t,e),t.create=function(e,t,i){return new Yt(e,t,i)},t.prototype.next=function(e){this.isStopped?Zt(function(e){return Vt("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Zt(Vt("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Zt(Wt,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}($t);Function.prototype.bind;var Jt=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){Xt(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Xt(e)}else Xt(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Xt(e)}},e}(),Yt=function(e){function t(t,i,n){var s,r=e.call(this)||this;return s=Rt(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=n?n:void 0}:t,r.destination=new Jt(s),r}return Ft(t,e),t}(zt);function Xt(e){!function(e){Ht.setTimeout(function(){throw e})}(e)}function Zt(e,t){var i=null;i&&Ht.setTimeout(function(){return i(e,t)})}var ei={closed:!0,next:Kt,error:function(e){throw e},complete:Kt};function ti(e,t,i,n,s){return new ii(e,t,i,n,s)}var ii=function(e){function t(t,i,n,s,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=s?function(e){try{s(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=n?function(){try{n()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return Ft(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}(zt);function ni(e,t){return jt(function(i,n){var s=0;i.subscribe(ti(n,function(i){n.next(e.call(t,i,s++))}))})}function si(){return"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():ri()}function ri(){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 oi(){return si()}function ai(){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()))}function ci(e=18,t="",i=""){gt(t.length<e,"ID prefix is too long"),gt(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let n="";for(let t=0;t<e;t++)n+=ai();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)+ai()+n.substring(t.length+1);return n}function ui({count:e,length:t,prefix:i}){gt(e>=0,`Invalid IDs count: ${e}`);const n=new Set;for(;n.size<e;)n.add(ci(t||18,i||""));return[...n]}const li=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function di(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)di(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)di(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(li.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${li.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 hi(e,t,i){const n=atob(e),s=new Uint8Array(n.length);for(let e=0;e<n.length;e++)s[e]=n.charCodeAt(e);return new File([s],t,{type:i||"application/octet-stream"})}function pi(e,t){const{agentId:i,jobId:n}=t;return e.notifyWebSocketIsNeeded(),e.observeNotifications().pipe(g(e=>"aiStatus"===e.type&&(void 0===i||e.agentId===i)),g(e=>!n||e.jobId===n),v(e=>({agentId:e.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.payload.statusUpdateId??e.messageId})))}class gi{constructor(e,t,i,n,s,r,o,a=()=>{}){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=n,this.socketManager=s,this.jobClient=r,this.backendFunctionManager=o,this.getMetricAnnotations=a}async get(){const e=await this.post("ai/agent/getAgent",{agentId:this.agentId});return e?.agent}async upsert(e){await this.post("ai/agent/upsertAgent",{...e,id:this.agentId})}async delete(){await this.post("ai/agent/deleteAgent",{agentId:this.agentId})}async updateInstructions(e){await this.setAgentOptionInPath("instructions",e)}async updateModel(e){await this.setAgentOptionInPath("model",e)}async updateConnectedAgents(e){await this.setAgentOptionInPath("connectedAgents",e)}async updateGuardrails(e){const t=await this.get();gt(t,"Agent not found");const i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}async updatePii(e){const t=await this.get();gt(t,"Agent not found");const i={onDetect:"off",...t.options?.pii,...e};await this.setAgentOptionInPath("pii",i)}async updateMcpServer(e){await this.post("ai/agent/setMcpServer",{agentId:this.agentId,mcpServer:e})}async generateMcpDescriptions(){return await this.post("ai/agent/generateMcpDescriptions",{agentId:this.agentId})}async updateCustomGuardrails(e){await this.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}async regenerateApiKey(){return await this.post("ai/agent/regenerateApiKey",{agentId:this.agentId})}async getApiKey(){return await this.post("ai/agent/getApiKey",{agentId:this.agentId})}async listRevisions(){return await this.post("ai/agent/listRevisions",{agentId:this.agentId})}async restoreRevision(e){await this.post("ai/agent/restoreRevision",{agentId:this.agentId,revisionNumber:e})}async deleteRevision(e){await this.post("ai/agent/deleteRevision",{agentId:this.agentId,revisionNumber:e})}chat(e,t,i){return this.chatInternal(e,t,i).responseStream}async transcribeAndChat(e,t,i){const n=this.chatInternal(e,t,i),s=await ft(n.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:n.responseStream,transcribedPrompt:s.transcribedPrompt}}async ask(e,t,i){const n=await this.askInternal(e,!1,t,i);return this.replaceFileTags(n.responseString,n.annotations)}async 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:this.withMetricAnnotations(i),jobId:t};await this.post("ai/chatbot/askAsync",n)}observeStatusUpdates(e){return pi(this.socketManager,{agentId:this.agentId,jobId:e})}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,i){return await this.askInternal(e,!1,t,i)}async transcribeAndAskWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,transcribedPrompt:n.transcribedPrompt,voiceResponseFile:hi(s.base64File,`voice.${s.extension}`,s.mimeType)}}async askWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,voiceResponseFile:hi(s.base64File,`voice.${s.extension}`,s.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}async addConnectedIntegration(e){await this.post("ai/agent/addConnectedIntegration",{agentId:this.agentId,integrationId:e.integrationId,integrationType:e.integrationType,description:e.description??""})}async addConnectedAgent(e){await this.post("ai/agent/addConnectedAgent",{agentId:this.agentId,connectedAgentId:e.agentId,description:e.description})}async addConnectedKnowledgeBase(e){await this.post("ai/agent/addConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e.knowledgeBaseId,description:e.description,includeMetadata:e.includeMetadata})}async addFunction(e){await this.post("ai/agent/addFunction",{agentId:this.agentId,functionId:e})}async removeConnectedAgent(e){await this.post("ai/agent/removeConnectedAgent",{agentId:this.agentId,connectedAgentId:e})}async removeConnectedIntegration(e){await this.post("ai/agent/removeConnectedIntegration",{agentId:this.agentId,integrationId:e})}async removeConnectedKnowledgeBase(e){await this.post("ai/agent/removeConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e})}async removeFunction(e){await this.post("ai/agent/removeFunction",{agentId:this.agentId,functionId:e})}async setAgentDescription(e){await this.post("ai/agent/setAgentDescription",{agentId:this.agentId,description:e})}async provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}async build(e,t,i){const n={agentId:this.agentId,request:e,memoryId:t,options:i};return await this.backendFunctionManager.executeFunction("buildAgent",n)}replaceFileTags(e,t={}){let i=e;for(const[e,n]of Object.entries(t)){let t="";const s=n.aiFileUrl.fileName?n.aiFileUrl.fileName:n.aiFileUrl.url;switch(n.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${s}](${n.aiFileUrl.url})`}const r=`\${id:${e}}`;i=i.replaceAll("`"+r+"`",t).replaceAll(r,t)}return i}async askInternal(e,t,i,n){if(i?.contextMetadataFilter&&di(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)di(i.contextMetadataFilterForKnowledgeBase[e]);n=n||si(),i=this.withMetricAnnotations({...fi,...i||{}});const s="string"==typeof e;let r="ai/chatbot/";r+=s||t?!s&&t?"transcribeAndAskWithVoiceResponse":s&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const o={agentId:this.agentId,prompt:s?e:void 0,options:i,jobId:n},a=s?void 0:[e];return await this.post(r,o,a,"file"),await this.jobClient.awaitJob(n)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&di(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)di(t.contextMetadataFilterForKnowledgeBase[e]);const n=si(),s=void 0===(t=this.withMetricAnnotations({...fi,...t||{}})).smoothTyping||t.smoothTyping;let o="";const a=new r,u=new r;this.ongoingChatSequences[n]=u;let l=-1;u.pipe(R(({tokenIndex:e})=>{void 0!==e&&e<l&&console.warn("Received token index out of order",e,l),void 0!==e&&(l=e)}),c(({value:e,complete:t,annotations:i})=>t?S({value:e,complete:t,annotations:i}):S(e).pipe((()=>{const e=globalThis.document,t="object"==typeof e&&null!==e&&!0===e.hidden;return s&&!t})()?h(0):R(),ni(e=>({value:e,complete:!1,annotations:void 0})))),A(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{o+=e,t&&i&&(o=this.replaceFileTags(o,i)),a.next(o)},error:e=>{console.error(e)},complete:()=>{a.complete()}});const d="string"==typeof e;i=i||si();const p={agentId:this.agentId,jobId:i,prompt:d?e:void 0,options:t,clientRequestId:n},g={responseStream:a.pipe(f(()=>{delete this.ongoingChatSequences[n]}),_())};let y;return y=d?this.post("ai/chatbot/chat",p).catch(e=>{a.error(e),a.complete()}):this.post("ai/chatbot/transcribeAndChat",p,[e],"file").catch(e=>{throw a.error(e),a.complete(),e}),g.serverResponse=y.then(()=>this.jobClient.awaitJob(i)).catch(e=>{a.error(e),a.complete()}),g}withMetricAnnotations(e){const t=this.getMetricAnnotations();return t?{...e||{},metricAnnotations:{...t,...e?.metricAnnotations}}:e}async post(e,t,i=[],n="files"){const s={};return this.agentApiKey&&(s["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,n,s)}}const fi={smoothTyping:!0,responseFormat:"text"};class yi{constructor(e,t,i,n,s=()=>{}){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=n,this.getMetricAnnotations=s,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe(g(e=>"aiChatbot"===e.type),ni(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new gi(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:i,complete:n,tokenIndex:s,annotations:r}=e.payload;if(n&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:n,tokenIndex:void 0===s?void 0:s,annotations:r});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:n&&e===i.length-1,tokenIndex:void 0===s?void 0:s,annotations:r})}}const mi="__squid_empty_chat_id";class Ii{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 hi(n.base64File,`audio.${n.extension}`,n.mimeType)}}class bi{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 wi{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 vi(e){for(const t in e){const i=e[t];gt("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),gt(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}const Si=new Set(["completed","failed","cancelled"]);class Mi{constructor(e,t,i,n,s){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i,this.socketManager=n,this.clientIdService=s}async getKnowledgeBase(){return(await this.rpcManager.post("ai/knowledge-base/getKnowledgeBase",{knowledgeBaseId:this.knowledgeBaseId})).knowledgeBase}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async upsertKnowledgeBase(e){await this.rpcManager.post("ai/knowledge-base/upsertKnowledgeBase",{knowledgeBase:{id:this.knowledgeBaseId,...e}})}async generateMetadataFieldDescriptions(e){return this.rpcManager.post("ai/knowledge-base/generateMetadataFieldDescriptions",{knowledgeBaseId:this.knowledgeBaseId,fieldNames:e?.fieldNames,overwriteExisting:e?.overwriteExisting})}async delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextsPage(e){return this.rpcManager.post("ai/knowledge-base/listContextsPage",{id:this.knowledgeBaseId,truncateTextAfter:e?.truncateTextAfter,offset:e?.offset,limit:e?.limit,search:e?.search})}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e,t){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e,truncateTextAfter:t?.truncateTextAfter})).context}async deleteContext(e){await this.deleteContexts([e])}async deleteContexts(e){await this.rpcManager.post("ai/knowledge-base/deleteContexts",{knowledgeBaseId:this.knowledgeBaseId,contextIds:e})}async setContextScopes(e,t){const{updatedChunkCount:i}=await this.rpcManager.post("ai/knowledge-base/setContextScopes",{knowledgeBaseId:this.knowledgeBaseId,contextId:e,scopes:t});return i}async upsertContext(e,t){const{failures:i,contextIds:n,graphIndexingSkippedContextIds:s,imageFailures:r}=await this.upsertContexts([e],t?[t]:void 0);if(i.length>0)return{failure:i[0]};const o=n?.[0],a=void 0!==o&&(s?.includes(o)??!1),c=r?.find(e=>e.contextId===o);return{...a?{graphIndexingSkipped:a}:{},...c?{imageFailures:c.imageFailures,imageFailureCount:c.imageFailureCount}:{}}}async upsertContexts(e,t,i){for(const t of e)t.metadata&&vi(t.metadata);const n=si();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:n},t),i?.onUploaded?.(),await this.jobClient.awaitJob(n)}async bulkUpsertContexts(e,t){return this.rpcManager.post("ai/knowledge-base/bulk/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contexts:e},t)}async createBulkUploadUrls(e){return this.rpcManager.post("ai/knowledge-base/bulk/createUploadUrls",{files:e.map(e=>({fileName:e}))})}async getBulkIngestionJob(e){return this.rpcManager.post("ai/knowledge-base/bulk/getJob",{jobId:e})}async cancelBulkIngestionJob(e){await this.rpcManager.post("ai/knowledge-base/bulk/cancelJob",{jobId:e})}observeBulkIngestionJob(e){return new n(t=>{const i=()=>{this.rpcManager.post("ai/knowledge-base/bulk/subscribeToJob",{jobId:e}).catch(e=>t.error(e))};t.add(this.socketManager.observeNotifications().pipe(g(e=>"bulkIngestionStatus"===e.type),g(t=>t.payload.jobId===e)).subscribe(e=>{t.next(e.payload),Si.has(e.payload.state)&&t.complete()})),t.add(this.clientIdService.observeClientId().pipe(p(),T(1)).subscribe(()=>i())),this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.awaitConnectionReady().then(i).catch(e=>t.error(e))})}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchWithGraphContext(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return this.rpcManager.post("ai/knowledge-base/search",t)}async grep(e,t){return this.rpcManager.post("ai/knowledge-base/grep",{knowledgeBaseId:this.knowledgeBaseId,pattern:e,options:t})}async queryGraph(e){return this.rpcManager.post("ai/knowledge-base/queryGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async getGraphStatus(){return this.rpcManager.post("ai/knowledge-base/getGraphStatus",{knowledgeBaseId:this.knowledgeBaseId})}async rebuildGraph(e){await this.rpcManager.post("ai/knowledge-base/rebuildGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async exploreGraph(e){return this.rpcManager.post("ai/knowledge-base/exploreGraph",{...e,knowledgeBaseId:this.knowledgeBaseId})}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class ki{constructor(e,t,i,n){this.rpcManager=e,this.jobClient=t,this.socketManager=i,this.clientIdService=n}knowledgeBase(e){return new Mi(e,this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async delete(e){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:e})}}class _i{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new Ti(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new Ti(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class Ti{constructor(e,t){this.matchMaker=e,this.rpcManager=t,this.id=e.id}async insertEntity(e){await this.rpcManager.post("matchMaking/insertEntity",{matchMakerId:this.id,entity:e})}async insertManyEntities(e){await this.rpcManager.post("matchMaking/insertEntities",{matchMakerId:this.id,entities:e})}async delete(){await this.rpcManager.post("matchMaking/deleteMatchMaker",{matchMakerId:this.id})}async deleteEntity(e){await this.rpcManager.post("matchMaking/deleteEntity",{entityId:e,matchMakerId:this.id})}async findMatches(e,t={}){return(await this.rpcManager.post("matchMaking/findMatches",{matchMakerId:this.id,entityId:e,options:t})).matches}async findMatchesForEntity(e,t={}){return(await this.rpcManager.post("matchMaking/findMatchesForEntity",{matchMakerId:this.id,entity:e,options:t})).matches}async listEntities(e,t={}){return await this.rpcManager.post("matchMaking/listEntities",{categoryId:e,options:t,matchMakerId:this.id})}async getEntity(e){return(await this.rpcManager.post("matchMaking/getEntity",{matchMakerId:this.id,entityId:e})).entity}getMatchMakerDetails(){return this.matchMaker}}class Ei{constructor(e,t,i,n,s,r=()=>{}){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.clientIdService=n,this.backendFunctionManager=s,this.getMetricAnnotations=r}agent(e=Pe,t=void 0){return this.getAiAgentClient().agent(e,t)}knowledgeBase(e){return this.getAiKnowledgeBaseClient().knowledgeBase(e)}async listAgents(){return this.getAiAgentClient().listAgents()}async listKnowledgeBases(){return this.getAiKnowledgeBaseClient().listKnowledgeBases()}async listFunctions(){const e=await this.rpcManager.post("/application/getBundleMetadata",{});return Object.values(e.aiFunctions||{})}async listChatModels(e){return(await this.rpcManager.post("ai/settings/listChatModels",e??{})).models}image(){return new wi(this.rpcManager)}audio(){return new Ii(this.rpcManager)}matchMaking(){return new _i(this.rpcManager)}files(e){return new bi(e,this.rpcManager)}executeAiQuery(e,t,i,n){const s={integrationId:e,prompt:t,options:i};return this.rpcManager.post("ai/query/executeDataQuery",s,[],"files",{},n)}executeAiApiCall(e,t,i,n){const s={integrationId:e,prompt:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeApiQuery",s)}executeAiSpreadsheetQuery(e,t,i,n){const s={prompt:e,files:t,options:i,sessionContext:n};return this.rpcManager.post("ai/query/executeSpreadsheetQuery",s)}async getApplicationAiSettings(){return(await this.rpcManager.post("ai/settings/getApplicationAiSettings",{})).settings}async setApplicationAiSettings(e){const t={settings:e};await this.rpcManager.post("ai/settings/setApplicationAiSettings",t)}async setAiProviderApiKeySecret(e,t){const i={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",i)).settings}observeStatusUpdates(e){return pi(this.socketManager,{jobId:e})}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new yi(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new ki(this.rpcManager,this.jobClient,this.socketManager,this.clientIdService)),this.aiKnowledgeBaseClient}}const Ci={headers:{},queryParams:{},pathParams:{}};class Di{constructor(e){this.rpcManager=e}async get(e,t,i){return this.request(e,t,void 0,i,"get")}async post(e,t,i,n){return this.request(e,t,i,n,"post")}async delete(e,t,i,n){return this.request(e,t,i,n,"delete")}async patch(e,t,i,n){return this.request(e,t,i,n,"patch")}async put(e,t,i,n){return this.request(e,t,i,n,"put")}async request(e,t,i,n,s){const r={integrationId:e,endpointId:t,body:i,options:{...Ci,...this.convertOptionsToStrings(n||{})},overrideMethod:s};return await this.rpcManager.rawPost("api/callApi",r,void 0,void 0,!1)}convertOptionsToStrings(e){return{headers:this.convertToStrings(e.headers),queryParams:this.convertToStrings(e.queryParams),pathParams:this.convertToStrings(e.pathParams)}}convertToStrings(e){if(!e)return{};const t=Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,String(t)]);return Object.fromEntries(t)}}class Oi{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 qi=/[.\[\]]/;function Ai(e,t){if(!e)return;const i=t.split(qi);let n,s=e;for(;s&&i.length;){const e=i.shift();if(e){if("object"!=typeof s||!(e in s))return;n=s[e],s=n}}return n}function Ri(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function ji(e,t,i,n="."){const s=t.split(n);let r=e;for(;s.length;){const e=ft(s.shift());if(s.length){const t=r[e],i=Ri(t)?Qi(t)??{}:{};r[e]=i,r=i}else r[e]=i}}function Ni(e,t,i="."){const n=t.split(i);let s=e;for(;n.length;){const e=ft(n.shift());if(n.length){const t=Ri(s[e])?Qi(s[e])??{}:{};s[e]=t,s=t}else delete s[e]}}function Fi(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function xi(e){return null==e}function Bi(e,t){if(e===t)return!0;if(null===e||null===t)return!1;const i=typeof e;if(i!==typeof t)return!1;if("object"!==i)return e===t;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(const i of n)if(!s.includes(i)||!Bi(e[i],t[i]))return!1;return!0}function Pi(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=Ui(e[n],t);return i}function Ui(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 Pi(e,t);if(e instanceof Map)return new Map(Pi(Array.from(e),t));if(e instanceof Set)return new Set(Pi(Array.from(e),t));if(ArrayBuffer.isView(e))return n=e,"undefined"!=typeof Buffer&&n instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length);var n;const s={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(s[i]=Ui(e[i],t));return s}function Qi(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 Li(e,t){if(e===t||xi(e)&&xi(t))return 0;if(xi(e))return-1;if(xi(t))return 1;const i=typeof e,n=typeof t;return i!==n?i<n?-1:1:"number"==typeof e?(gt("number"==typeof t),isNaN(e)&&isNaN(t)?0:isNaN(e)?-1:isNaN(t)?1:e<t?-1:1):"boolean"==typeof e?(gt("boolean"==typeof t),e<t?-1:1):"bigint"==typeof e?(gt("bigint"==typeof t),e<t?-1:1):"string"==typeof e?(gt("string"==typeof t),e<t?-1:1):e instanceof Date&&t instanceof Date?Math.sign(e.getTime()-t.getTime()):0}function $i(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function Gi(e){if(Array.isArray(e))return e.map(e=>Gi(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]=Gi(e[t])}),i}function Hi(e){return Ki(Gi(e))}function Ki(e){if(void 0===e)return null;const t=Ui(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function Wi(e){return Ui(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 Vi(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=Ki(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 zi=(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},Ji=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(Ki(e[i])!==Ki(t[i]))return!1;return!0};class Yi{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||zi,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 Xi(e){const t=[],i=[];let n=0;for(const s of e)if("undefined"!=typeof File)if(s instanceof File){i.push(s);const e={type:"file",__squid_placeholder__:!0,fileIndex:n++};t.push(e)}else if(Zi(s)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:s.map((e,t)=>(i.push(s[t]),n++))};t.push(e)}else t.push(s);else t.push(s);return{argsArray:t,fileArray:i}}function Zi(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class en{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:n,fileArray:s}=Xi(i),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(n);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?zi:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,n));if(t)return t.promise}const u=this.createExecuteCallPromise(r,n,s,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:n,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,n,s={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:Ki(t)},a=Wi((await this.rpcManager.post(r,o,i.length>0?i:[],"files",s)).payload);if(a?.__isSquidBase64File__){const e=a;return hi(e.base64,e.filename,e.mimetype)}return n&&n.set(t,a),a}}function tn(e){if("undefined"!=typeof globalThis)return globalThis[e]}function nn(){if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}void 0===nn()?.SQUID_LOG_DEBUG_ENABLED&&function(e=!0){nn().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 sn{static debug(...e){(function(){const e=nn();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=nn();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class rn{constructor(e){this.destructManager=e,this.clientTooOldSubject=new t(!1),this.isTenant=!0===nn().squidTenant,this.clientIdSubject=new t(this.generateClientId()),this.destructManager.onDestruct(()=>{this.clientTooOldSubject.complete(),this.clientIdSubject.complete()})}observeClientId(){return this.clientIdSubject}observeClientTooOld(){return this.clientTooOldSubject.pipe(g(e=>e),v(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe(T(1),g(e=>!e),v(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=nn()[an];return e?e():si()}generateClientId(){const e=nn()[on];if(e)return e();let t=`${this.isTenant?"tenant-":""}${si()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const on="SQUID_CLIENT_ID_GENERATOR",an="SQUID_CLIENT_REQUEST_ID_GENERATOR",cn="__squidId";function un(e){return Wi(e)}function ln(...e){const[t,i,n]=e,s="object"==typeof t?t:{docId:t,collectionName:i,integrationId:n};return s.integrationId||(s.integrationId=void 0),Hi(s)}function dn(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return Bi(e,t);if("!="===i)return!Bi(e,t);switch(i){case"<":return!xi(e)&&(!!xi(t)||t<e);case"<=":return!!xi(t)||!xi(e)&&t<=e;case">":return!xi(t)&&(!!xi(e)||t>e);case">=":return!!xi(e)||!xi(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&hn(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&hn(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&hn(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&hn(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>ft(i,"VALUE_CANNOT_BE_NULL").some(t=>Bi(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>ft(i,"VALUE_CANNOT_BE_NULL").some(t=>Bi(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!ft(i,"VALUE_CANNOT_BE_NULL").some(t=>Bi(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function hn(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 pn(e,t){return`${e}_${t}`}function gn(e){return"fieldName"in e}function fn(e){return"docIds"in e}function yn(e,t,i){const n=e.docIds.some(e=>Object.entries(e).every(([e,n])=>dn(n,i(t,e)??null,"==")));switch(e.operator){case"==":case"in":return n;case"!=":case"not in":return!n}}function mn(e,t,i,n){const s=e,r=n(t,at);if("string"!=typeof r)return dn(s,r??null,i);let o;try{o=Wi(r)}catch{return dn(s,r,i)}if(!o||"object"!=typeof o||Array.isArray(o))return dn(s,r,i);const a=Object.keys(o);if(1===a.length&&"__id"===a[0]){const e=o.__id,t=function(e){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const t=Object.keys(e);return 1===t.length&&"__id"===t[0]?e.__id:Hi(e)}if("string"==typeof e)try{const t=Wi(e);if(t&&"object"==typeof t&&!Array.isArray(t)){const e=Object.keys(t);if(1===e.length&&"__id"===e[0])return t.__id}}catch{}return e}(s);return dn(t,e,i)}if(1===a.length){const e=function(e,t){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const i=Object.keys(e);if(1===i.length&&i[0]===t)return e[t]}if("string"==typeof e)try{const i=Wi(e);if(i&&"object"==typeof i&&!Array.isArray(i)){const e=Object.keys(i);if(1===e.length&&e[0]===t)return i[t]}}catch{}return e}(s,a[0]);return dn(e,o[a[0]],i)}return"object"!=typeof s||null===s||Array.isArray(s)?dn(s,r,i):dn(Hi(s),r,i)}class In{constructor(e,t,i,n){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.projectFields=n,this.refId=si()}setInMemoryData(e){this.inMemoryData=e}get squidDocId(){return this._squidDocId}get data(){return Ui(this.dataRef)}get dataRef(){if(void 0!==this.inMemoryData)return this.inMemoryData;const e=ft(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=un(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`});return this.projectFields?this.applyProjection(e):e}get hasData(){return this.dataManager.hasSufficientData(this.squidDocId,this.projectFields)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return ft(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(v(e=>(ft(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:un(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:Ui(t)},i)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,i){const n={type:"applyNumericFn",fn:"increment",value:t},s={type:"update",squidDocIdObj:un(this.squidDocId),properties:{[e]:[n]}};return this.dataManager.applyOutgoingMutation(s,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async upsert(e,t){const i=un(this.squidDocId),n=i.integrationId;let s=Wi(i.docId);if(s[cn]&&(s={}),n===Je&&s.__id)try{const e=Wi(s.__id);s={...s,...e}}catch{}const r={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...s}};return this.dataManager.applyOutgoingMutation(r,t)}async insert(e,t){return this.upsert(e,t)}async delete(e){const t={type:"delete",squidDocIdObj:un(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}applyProjection(e){const t={},i=ft(this.projectFields,"applyProjection called without projectFields"),{integrationId:n}=un(this.squidDocId);"__id"in e&&(t.__id=e.__id),"__docId__"in e&&(t.__docId__=e.__docId__);const s=n===Je?"__id":"__docId__";if(s in e){const i=e[s];if("string"==typeof i&&i.startsWith("{"))try{const e=Wi(i);if("object"==typeof e&&null!==e)for(const[i,n]of Object.entries(e))i in t||(t[i]=n)}catch{}}for(const n of i)if(n.includes(".")){const i=Ai(e,n);void 0!==i&&ji(t,n,i)}else n in e&&(t[n]=e[n]);return t}hasSquidPlaceholderId(){const e=Wi(this._squidDocId);if("object"==typeof e&&e.docId){const t=Wi(e.docId);if("object"==typeof t&&Object.keys(t).includes(cn))return!0}return!1}}class bn{constructor(e,i={}){this.internalStateObserver=new t(null),this.firstElement=null,this.isDestroyed=new t(!1),this.snapshotSubject=new r,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,gt(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe(C()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...i},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(g(e=>null!==e),v(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(v(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||xi(e)&&xi(t))return 0;if(xi(e))return-1;if(xi(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:s}of i){const i=Li(Ai(e,n),Ai(t,n));if(0!==i)return s?i:-i}return 0}async dataReceived(e){const t=e.map(e=>this.templateSnapshotEmitter.extractData(e));if(0===e.length)return void(this.onFirstPage?this.internalStateObserver.next({numBefore:0,numAfter:0,data:e,extractedData:t}):this.goToFirstPage());if(null===this.firstElement)if(null!==this.lastElement){const i=t.filter(e=>1===this.compareObjects(e,this.lastElement)).length;this.firstElement=t[e.length-i-this.paginateOptions.pageSize],this.lastElement=null}else this.navigatingToLastPage&&(this.firstElement=t[e.length-this.paginateOptions.pageSize],this.navigatingToLastPage=!1);const i=t.filter(e=>-1===this.compareObjects(e,this.firstElement)).length,n=Math.max(0,e.length-i-this.paginateOptions.pageSize);i!==e.length?this.internalStateObserver.next({numBefore:i,numAfter:n,data:e,extractedData:t}):this.prevInternal({numBefore:i,numAfter:n,data:e,extractedData:t})}doNewQuery(e,t){if(this.onFirstPage=!1,t){const t=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).flipSortOrder();e&&t.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(t=>({fieldName:t.fieldName,operator:t.asc?"<=":">=",value:Ai(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe(v(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:Ai(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe))}}async waitForInternalState(){const e=this.internalStateObserver.value;return null!==e?e:await m(k(this.isDestroyed.pipe(g(Boolean),v(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe(g(e=>null!==e),O(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:n,extractedData:s}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(s[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:n>0,hasPrev:i>0}}prevInternal(e){const{numBefore:t,numAfter:i,extractedData:n}=e;this.firstElement=null,this.lastElement=n[t-1],this.internalStateObserver.next(null),this.doNewQuery(n[n.length-i-1],!0)}}Error;class wn{constructor(e,t,i,n,s){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=n,this.mutationSender=s}getForDocument(e){const{collectionName:t,integrationId:i,docId:n}=un(e),s=Wi(n),r=this.get(t,i);for(const[e,t]of Object.entries(s))r.where(e,"==",t);return r}get(e,t){return new Mn(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService,this.mutationSender)}}class vn{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}docId(e){return this.eq(at,e)}docIds(e){return this.in(at,e)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"like_cs":"like",t)}notLike(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"not like_cs":"not like",t)}arrayIncludesSome(e,t){return this.where(e,"array_includes_some",t)}arrayIncludesAll(e,t){return this.where(e,"array_includes_all",t)}arrayNotIncludes(e,t){return this.where(e,"array_not_includes",t)}throwIfInvalidLikePattern(e){if(/\\(?![%_\\])/.test(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class Sn{constructor(e){this.queryBuilder=e}peek(){return this.queryBuilder.peek().map(e=>e.data)}snapshot(){return m(this.snapshots(!1).pipe(l([])))}snapshots(e){return this.queryBuilder.snapshots(e).pipe(ni(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new Sn(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}projectFields(e){const t=this.queryBuilder.projectFields(e);return new Sn(t)}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new bn(this,e)}}class Mn extends vn{constructor(e,t,i,n,s,r,o,a){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=n,this.documentReferenceFactory=s,this.queryBuilderFactory=r,this.documentIdentityService=o,this.mutationSender=a,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return Vi(this.build())}where(e,t,i){if(gt(ut.includes(t),`Invalid operator: ${t}`),this.query.projectFields&&e!==at&&!this.query.projectFields.includes(e))throw new Error(`Cannot filter by field '${e}' that is not included in projectFields.`);if("in"===t||"not in"===t){const n=Array.isArray(i)?[...i]:[i];"in"===t&&0===n.length&&(this.containsEmptyInCondition=!0);for(const i of n)this.query.conditions.push({fieldName:e,operator:"in"===t?"==":"!=",value:i});return this}return this.query.conditions.push({fieldName:e,operator:t,value:i}),this}limit(e){return function(e){var t;gt(function(e){return"number"==typeof e}(t=e),()=>mt("Limit needs to be a number","Not a number",t)),-1!==e&&(gt(e>0,"query limit has to be greater than 0"),gt(Math.floor(e)===e,"query limit has to be an integer"),gt(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 gt(Bi(t.sort(),i.slice(0,t.length).sort()),"All fields in limitBy must be appear in the first fields in the sortBy list."),this.query.limitBy={limit:e,fields:t,reverseSort:!1},this}sortBy(e,t=!0){const i={asc:t,fieldName:e};if(function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,n,s,r;gt((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"),gt((s=t.asc,r="boolean",Array.isArray(s)?s.every(e=>typeof e===r):typeof s===r),"Asc needs to be boolean")}(i),gt(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.projectFields&&e!==at&&!this.query.projectFields.includes(e))throw new Error(`Cannot sort by field '${e}' that is not included in projectFields.`);return this.query.sortOrder.push(i),this}projectFields(e){if(0===e.length&&"built_in_db"!==this.integrationId)throw new Error(`Empty projectFields is only allowed for built_in_db integration. For '${this.integrationId}', you must specify at least one field to project.`);if(this.query.projectFields)for(const t of e)if(!this.query.projectFields.includes(t))throw new Error(`Cannot project field '${t}' that is not in the existing projection. Subsequent projectFields calls must be subsets of the previous projection.`);const t=e;for(const e of this.query.sortOrder)if(e.fieldName!==at&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including sort field '${e.fieldName}'.`);for(const e of this.query.conditions)if(gn(e)){if(e.fieldName!==at&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including filter field '${e.fieldName}'.`)}else if(fn(e));else for(const i of e.fields)if(i.fieldName!==at&&!t.includes(i.fieldName))throw new Error(`Cannot set projectFields without including filter field '${i.fieldName}'.`);const i=this.clone();return i.query.projectFields=[...e],i}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return m(this.snapshots(!1).pipe(l([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new t([]);const i=this.build(),n=i.projectFields;return this.querySubscriptionManager.processQuery(i,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(ni(e=>e.map(e=>{gt(1===Object.keys(e).length);const t=e[this.collectionName],i=ln(ft(t).__docId__,this.collectionName,this.integrationId),s=this.documentReferenceFactory.create(i,this.queryBuilderFactory,n);return this.querySubscriptionManager.detachedRecords.delete(e)&&s.setInMemoryData(t),s})))}changes(){let e,t=new Set;return this.snapshots().pipe(a(this.documentIdentityService.observeChanges().pipe(D(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)}),i)),E({}))),ni(([i])=>{let n=[];const s=[],r=[];if(e){for(const r of i){const i=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){s.push(r);const n=e[i];delete e[i],t.delete(n)}else n.push(r)}for(const e of t)r.push(e)}else n=i;e={},t=new Set;for(const n of i){const i=n.dataRef;e[n.squidDocId]=i,t.add(i)}return new kn(n,s,r)}))}async delete(){return this.validateQueryDeleteModifiers(),this.containsEmptyInCondition?{deletedCount:0}:(gt(this.mutationSender,"Query delete is not available on this query builder."),this.mutationSender.deleteQuery(this.build()))}dereference(){return new Sn(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new Mn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService,this.mutationSender);return e.query=Ui(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){if(!e.length)return this;if(this.query.projectFields)for(const t of e)if(t.fieldName!==at&&!this.query.projectFields.includes(t.fieldName))throw new Error(`Cannot filter by field '${t.fieldName}' that is not included in projectFields.`);return this.query.conditions.push({fields:e}),this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new bn(this,e)}validateQueryDeleteModifiers(){gt(0===this.query.sortOrder.length&&-1===this.query.limit&&!this.query.limitBy,"query.delete() does not currently support sortBy, limit, or limitBy.")}mergeConditions(){const e=[],t=$i(this.query.conditions.filter(gn)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=$i(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)=>Li(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!gn(e)),...e]}}class kn{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class _n extends vn{constructor(e,t,i,n,s,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=n,this.queryBuilderFactory=s,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,i){return this.queryBuilder.where(e,t,i),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}projectFields(e){throw new Error("projectFields is not yet supported for join queries")}join(e,t,i,n){const s=n?.leftAlias??this.latestAlias,r={...i,leftAlias:s,isInner:n?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[s].push(t),new _n(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:r},this.queryBuilder)}snapshot(){return m(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new t([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,Ui(this.joins),Ui(this.joinConditions),e,!1).pipe(ni(e=>e.map(e=>{const t={};for(const[i,n]of Object.entries(e)){const e=i===this.rootAlias?this.collectionName:this.joins[i].collectionName,s=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,r=n?ln(n.__docId__,e,s):void 0;t[i]=r?this.documentReferenceFactory.create(r,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new Cn(this)}dereference(){return new Tn(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new _n(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,Ui(this.leftToRight),Ui(this.joins),Ui(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 bn(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class Tn{constructor(e){this.joinQueryBuilder=e}grouped(){return this.joinQueryBuilder.grouped().dereference()}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(ni(e=>e.map(e=>function(e,t){const i={},n=Object.keys(e);for(const s of n){const n=e[s];i[s]=t(n)}return i}(e,e=>e?.data))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Tn(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 bn(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class En{constructor(e){this.groupedJoin=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(ni(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 En(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 bn(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 Cn{constructor(e){this.joinQueryBuilder=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(ni(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new En(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Cn(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 bn(this,e)}groupData(e,t){const i=$i(e,e=>e[t]?.squidDocId);return Object.values(i).filter(e=>void 0!==e[0][t]).map(e=>{const i=this.joinQueryBuilder.leftToRight[t],n=e[0][t];if(0===i.length)return n;const s={[t]:n};for(const t of i)s[t]=this.groupData(e,t);return s})}}class Dn{constructor(e,t,i,n,s,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=n,this.querySubscriptionManager=s,this.dataManager=r,this.refId=si()}doc(e){if(e&&"string"!=typeof e&&"object"!=typeof e&&!Array.isArray(e))throw new Error("Invalid doc id. Can be only object or string.");if(this.integrationId!==Je)if(e){if("object"!=typeof e)throw new Error("Invalid doc id. String doc ids are only supported for the built_in_db integration. For all other integrations, the doc id must be an object.")}else e={[cn]:si()};else e=e&&"string"!=typeof e?{__id:Hi(e)}:{__id:e||si()};const t=ln(Hi(e),this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)}async insertMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)await this.doc(i.id).upsert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof In?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new _n(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new On(...e)}}class On{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 m(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 On(...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 bn(this,e)}or(e,...t){return o([...t]).pipe(v(t=>{const i=new Set,n=t.flat(),s=[];for(const e of n)i.has(this.extractData(e))||(i.add(this.extractData(e)),s.push(e));return s.sort((t,i)=>{for(const{fieldName:n,asc:s}of e){const e=Ai(this.extractData(t),n),r=Ai(this.extractData(i),n);if(!dn(e,r,"=="))return dn(r,e,"<")?s?-1:1:s?1:-1}return 0}).slice(0,this.getLimit())}))}}class qn{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 Dn(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class An{constructor(e,t,i){this.clientIdService=e,this.socketManager=t,this.runtimeOptions=i,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var Rn=x(150);const jn={"in:in":(e,t)=>e.every(e=>t.includes(e)),"in:not in":(e,t)=>e.every(e=>!t.includes(e)),"not in:not in":(e,t)=>t.every(t=>e.includes(t)),">:not in":(e,t)=>t.every(t=>e>=t),">=:not in":(e,t)=>t.every(t=>e>t),"<:not in":(e,t)=>t.every(t=>e<=t),"<=:not in":(e,t)=>t.every(t=>e<t),">:>":(e,t)=>e>=t,">=:>":(e,t)=>e>t,"in:>":(e,t)=>e.every(e=>e>t),">:>=":(e,t)=>e>=t,">=:>=":(e,t)=>e>=t,"in:>=":(e,t)=>e.every(e=>e>=t),"<:<":(e,t)=>e<=t,"<=:<":(e,t)=>e<t,"in:<":(e,t)=>e.every(e=>e<t),"<:<=":(e,t)=>e<=t,"<=:<=":(e,t)=>e<=t,"in:<=":(e,t)=>e.every(e=>e<=t),"like:like":(e,t)=>Nn(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>Nn(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>Nn(e,t)&&xn(t),"like_cs:like_cs":(e,t)=>Nn(e,t),"like:not like":(e,t)=>!Fn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!Fn(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!Fn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!Fn(e,t),"not like:like":(e,t)=>Pn(e,t),"not like_cs:like":(e,t)=>Pn(e,t),"not like:like_cs":(e,t)=>Pn(e,t),"not like_cs:like_cs":(e,t)=>Pn(e,t),"not like:not like":(e,t)=>Nn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>Nn(t,e)&&xn(e),"not like:not like_cs":(e,t)=>Nn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>Nn(t,e),"in:like":(e,t)=>e.every(e=>dn(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>dn(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>dn(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>dn(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&&Bn(e)||Un(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&Bn(e)||Un(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&Bn(t)||Un(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&Bn(t)||Un(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=>dn(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>dn(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>dn(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>dn(e,t,"like_cs")),"array_includes_some:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_all:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_not_includes":(e,t)=>t.every(t=>e.includes(t)),"array_includes_some:array_not_includes":(e,t)=>e.every(e=>!t.includes(e)),"array_not_includes:array_includes_some":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_some:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_includes_all":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_not_includes":(e,t)=>e.every(e=>!t.includes(e))};function Nn(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return Bn(t.substring(n));const s=e[i],r=t[n];return"%"===s&&"%"===r?Nn(e,t,i+1,n+1)||Nn(e,t,i+1,n):"%"!==s&&("%"===r?Nn(e,t,i,n+1)||Nn(e,t,i+1,n):(s===r||"_"===r)&&Nn(e,t,i+1,n+1))}function Fn(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return Bn(t.substring(n));if(n>=t.length)return Bn(e.substring(i));const s=i<e.length?e[i]:"",r=n<t.length?t[n]:"";return"%"===s&&"%"===r?Fn(e,t,i+1,n+1)||Fn(e,t,i,n+1)||Fn(e,t,i+1,n):"%"===s||"%"===r?Fn(e,t,i,n+1)||Fn(e,t,i+1,n):(s===r||"_"===s||"_"===r)&&Fn(e,t,i+1,n+1)}function xn(e){return!/[a-zA-Z]/.test(e)}function Bn(e){return e.split("").every(e=>"%"===e)}function Pn(e,t){return e.length>0&&Bn(e)||t.length>0&&Bn(t)||Un(e)&&0===t.length}function Un(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}function Qn(e,t){const i=Object.keys(e),n=Object.keys(t);if(i.length!==n.length)return!1;for(const n of i){if(!Object.prototype.hasOwnProperty.call(t,n))return!1;if(!Bi(e[n],t[n]))return!1}return!0}function Ln(e,t){return t.every(t=>{const i=Object.keys(t).sort();if(i.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(i[t]!==e[t])return!1;return!0})}class $n{constructor(e){this.query=e,this.query=e;const t=this.query.conditions.filter(gn),i=this.query.conditions.filter(fn),n=i.flatMap(e=>function(e){if("=="!==e.operator&&"in"!==e.operator)return[];if(0===e.docIds.length)return[];const t=[],i=e.docIds[0];for(const n of Object.keys(i)){const s=i[n];e.docIds.every(e=>Object.prototype.hasOwnProperty.call(e,n)&&Bi(e[n],s))&&t.push({fieldName:n,operator:"==",value:s})}return t}(e));this.exactSimpleConditions=this.parseConditions(t),this.exactDocIdConditions=i,this.subqueryConditions=this.parseConditions([...t,...n])}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}get projectFields(){return this.query.projectFields}sortedBy(e){return!e.find((e,t)=>!Bi(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,i){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:i})}isSubqueryOfCondition(e){return!!this.subqueryConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;for(const t of e.conditions.filter(fn))if(!this.childImpliesParentDocIdCondition(t))return!1;const t=e.conditions.filter(gn),i=this.isSubqueryOfConditions(t),n=this.sortedBy(e.sortOrder),s=-1===e.limit||this.limit>-1&&this.limit<e.limit,r=this.isProjectFieldsSubset(this.query.projectFields,e.projectFields);return i&&n&&s&&r}childImpliesParentDocIdCondition(e){const t=e.docIds;if(0===t.length)return!1;const i="=="===e.operator||"in"===e.operator,n=Object.keys(t[0]).sort(),s=[];for(const e of this.query.conditions)fn(e)&&s.push(...e.docIds);if(!Ln(n,t)||!Ln(n,s))return!1;const r=this.buildChildEffectiveTupleSet();return i?void 0!==r.allowed&&r.allowed.every(e=>t.some(t=>Qn(e,t))):void 0!==r.allowed?r.allowed.every(e=>!t.some(t=>Qn(e,t))):t.every(e=>r.excluded.some(t=>Qn(e,t)))}buildChildEffectiveTupleSet(){let e;const t=[];for(const i of this.query.conditions)if(fn(i))if("=="===i.operator||"in"===i.operator)e=void 0===e?[...i.docIds]:e.filter(e=>i.docIds.some(t=>Qn(e,t)));else for(const e of i.docIds)t.some(t=>Qn(t,e))||t.push(e);return void 0!==e&&t.length>0&&(e=e.filter(e=>!t.some(t=>Qn(e,t)))),{allowed:e,excluded:t}}isProjectFieldsSubset(e,t){if(!t)return!0;if(!e)return!1;const i=new Set(t);return e.every(e=>i.has(e))}getConditionsFor(...e){return this.subqueryConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.subqueryConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.exactSimpleConditions){const i=t.fieldName,n=t.operator;if(i===at){const i=t.value;if("in"===n||"not in"===n){const t=(Array.isArray(i)?i:[i]).some(t=>mn(t,e,"==",Ai));if(!("in"===n?t:!t))return!1;continue}if(!mn(i,e,n,Ai))return!1;continue}const s=Ai(e,i);if("in"===n){if(t.value.includes(s))continue;return!1}if("not in"!==n){if(!dn(t.value,s,n))return!1}else if(t.value.includes(s))return!1}for(const t of this.exactDocIdConditions)if(!yn(t,e,Ai))return!1;return!0}evaluateSubset(e,t){const{operator:i,value:n}=e,{operator:s,value:r}=this.parseConditions([t])[0],o=jn[`${i}:${s}`];return!!o&&o(n,r)}parseConditions(e){const t=[],i=new Map,n=new Map;return e.forEach(e=>{switch(e.operator){case"==":case"in":i.set(e.fieldName,(i.get(e.fieldName)||[]).concat(e.value));break;case"!=":case"not in":n.set(e.fieldName,(n.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),i.forEach((e,i)=>{t.push({fieldName:i,operator:"in",value:e})}),n.forEach((e,i)=>{t.push({fieldName:i,operator:"not in",value:e})}),t}}function Gn(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?Ui(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function Hn(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function Kn(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if(gt("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=Ui(e);t=Ui(t);for(const[e]of Hn(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 Hn(t))i.properties[e]=Wn([...i.properties[e]||[],...n]);return i}(e,t);const i=Ui(e);for(const[e,n]of Hn(t)){const t=n;for(const n of t){const t=Gn(Ai(i.properties,e),n);void 0===t?Ni(i.properties,e):ji(i.properties,e,t)}}return i}function Wn(e){let t=0;for(;t+1<e.length;){const i=Vn(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function Vn(e,t){return"removeProperty"===t.type||"update"===t.type?t:"applyNumericFn"===t.type?(gt("increment"===t.fn,"Unrecognized applyNumericFn"),"applyNumericFn"===e.type?(gt("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 zn(e,t){if(!e)return;const i={...e},n=Hn(t);for(const[e,t]of n){const n=t;for(const t of n){const n=Gn(Ai(i,e),t);void 0===n?Ni(i,e):ji(i,e,n)}}return i}function Jn(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)=>ft(Kn(e,t),"Merge result cannot be null"));i.push(n)}return i}const Yn="dataManager_runInTransaction";var Xn;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(Xn||(Xn={}));class Zn{constructor(e,i,n,s,o,a,c,u,l){this.documentStore=e,this.mutationSender=i,this.socketManager=n,this.querySubscriptionManager=s,this.queryBuilderFactory=o,this.lockManager=a,this.destructManager=c,this.documentIdentityService=u,this.querySender=l,this.docIdToLocalTimestamp=new Map,this.batchClientRequestIds=new Set,this.docIdToServerTimestamp=new Map,this.pendingIncomingUpdates=new Map,this.pendingOutgoingMutations=new Map,this.pendingOutgoingMutationsChanged=new r,this.outgoingMutationsEmpty=new t(!0),this.knownDirtyDocs=new Set,this.failedDocsToResync=[],this.refreshDocIdToTimestamp=new Map,this.handleIncomingMessagesForTests=!0,this.destructManager.onDestruct(()=>{this.destruct()}),this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.handleNotifications(),this.startDeleteExpiredTimestampsJob(),this.handleOrphanDocs(),this.outgoingMutationsEmpty.subscribe(e=>{this.querySender.safeToSendQueriesToServer.next(e)})}getProperties(e){return this.documentStore.getDocumentOrUndefined(e)}hasSufficientData(e,t){return this.documentStore.hasSufficientData(e,t)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),i=t&&!t.expireTimestamp?t.timestamp:void 0,n=this.docIdToLocalTimestamp.get(e);return!((!n||i)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&n===i)}async executeDetachedQuery(e){const t=this.currentTransactionId,i={query:e,clientRequestId:si(),subscribe:!1},n=await this.querySender.sendQueryDirect(i);return this.currentTransactionId!==t?this.reRunQueryThroughNormalPipeline(e):this.applyPendingMutationsToQueryResult(n.docs,e)}async reRunQueryThroughNormalPipeline(e){await m(this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)));const t={query:e,clientRequestId:si(),subscribe:!1};return(await this.querySender.sendQueryDirect(t)).docs}applyPendingMutationsToQueryResult(e,t){const i=new $n(t),n=new Map;for(const i of e){const e=ln(i.__docId__,t.collectionName,t.integrationId);n.set(e,i)}for(const[e,s]of this.pendingOutgoingMutations){const r=un(e);if(r.collectionName===t.collectionName&&r.integrationId===t.integrationId)for(const{mutation:t}of s){const s=n.get(e);if("delete"===t.type)n.delete(e);else if("update"===t.type){if(s){const r=zn(s,t);r&&i.documentMatchesQuery(r)?n.set(e,r):n.delete(e)}}else if("insert"===t.type){const s={...t.properties,__docId__:r.docId};i.documentMatchesQuery(s)&&n.set(e,s)}}}const s=Array.from(n.values()),{sortOrder:r}=t;s.sort((e,t)=>{for(const{fieldName:i,asc:n}of r){const s=Li(Ai(e,i),Ai(t,i));if(0!==s)return n?s:-s}return 0});const o=t.limit<0?2e3:t.limit;return s.slice(0,o)}async runInTransaction(e,t){if(t)return gt(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(Yn)?this.lockManager.lockSync(Yn):await this.lockManager.lock(Yn);let i=es;const n=()=>i!==es;return new Promise(async(t,s)=>{try{let r;this.currentTransactionId=si();try{r=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(n()?void 0:{resolve:()=>t(r),reject:s})}}catch(e){i=n()?i:e}finally{try{this.lockManager.release(Yn)}catch(e){i=n()?i:e}}n()&&s(i)})}async applyOutgoingMutation(e,t){const i=ln(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(Yn)||(await this.lockManager.lock(Yn),this.lockManager.release(Yn)),this.knownDirtyDocs.delete(i);const n=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(n&&!n.sentToServer)n.mutation=ft(Jn([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?zn(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 gt(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(Yn);try{this.currentTransactionId=si();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(Yn)}}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(g(e=>"mutations"===e.type),ni(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t={},i=[];for(const n of e){if(!this.querySubscriptionManager.hasOngoingQuery(n.clientRequestId))continue;const e=this.querySubscriptionManager.getQuery(n.clientRequestId),s=null!==e.projectFields&&void 0!==e.projectFields,r=this.querySubscriptionManager.hasSubscription(n.clientRequestId);s&&r?i.push({squidDocId:n.squidDocId,item:{properties:n.doc,timestamp:n.mutationTimestamp,clientRequestId:n.clientRequestId,projectFields:e.projectFields}}):t[n.squidDocId]={properties:n.doc,timestamp:n.mutationTimestamp}}Object.keys(t).length>0&&this.applyIncomingUpdates(t),i.length>0&&this.runInTransactionSync(()=>{this.applyProjectedUpdates(i)})}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId);if(null!==t.projectFields&&void 0!==t.projectFields){const i=[];for(const n of e.docs){const s=ln(n.__docId__,t.collectionName,t.integrationId);i.push({squidDocId:s,item:{properties:n,timestamp:n.__ts__,clientRequestId:e.clientRequestId,projectFields:t.projectFields}})}this.runInTransactionSync(()=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyProjectedUpdates(i)})}else{const i={};for(const n of e.docs){const e=ln(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,s=new Set;for(const[t,r]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>r.timestamp?i=!0:o&&o.timestamp>r.timestamp?(r.properties&&this.documentStore.adoptMissingFields(t,r.properties),s.add(t)):(this.pendingIncomingUpdates.set(t,r),n.add(t))}return this.runInTransactionSync(()=>{for(const e of n)this.maybeApplyIncomingUpdate(e);for(const e of s)this.refreshQueryMapping(e)},t),i}applyProjectedUpdates(e){for(const{squidDocId:t,item:i}of e){const e=ft(i.clientRequestId,"clientRequestId required for projected updates"),n=this.pendingOutgoingMutations.get(t);if(n&&n.length)continue;const s=this.docIdToServerTimestamp.get(t);s&&s.timestamp>i.timestamp?(this.querySubscriptionManager.addDocToQuery(t,e),this.batchClientRequestIds.add(e)):(this.acknowledgeDocument(t,i.timestamp,!i.properties),this.docIdToLocalTimestamp.set(t,i.timestamp),i.properties?(this.documentStore.saveProjectedDocument(t,i.properties,i.projectFields),this.querySubscriptionManager.addDocToQuery(t,e)):this.querySubscriptionManager.removeDocFromQuery(t,e),this.batchClientRequestIds.add(e))}}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const i=this.pendingOutgoingMutations.get(e);i&&i.length||(this.updateDocumentFromSnapshot(e,t.properties),this.acknowledgeDocument(e,t.timestamp,!t.properties),this.docIdToLocalTimestamp.set(e,t.timestamp),this.pendingIncomingUpdates.delete(e),this.refreshQueryMapping(e))}refreshQueryMapping(e){const t=this.documentStore.getDocumentOrUndefined(e);this.querySubscriptionManager.setClientRequestIdsForLocalDoc(e,t).forEach(e=>{this.batchClientRequestIds.add(e)}),t&&(this.querySubscriptionManager.findQueriesForDocument(t,e).length||this.forgetDocument(e,!1))}destruct(){this.stopDeleteExpiredTimestampsJob()}stopDeleteExpiredTimestampsJob(){void 0!==this.deleteExpiredTimestampsInterval&&(clearInterval(this.deleteExpiredTimestampsInterval),this.deleteExpiredTimestampsInterval=void 0)}startDeleteExpiredTimestampsJob(){this.deleteExpiredTimestampsInterval=setInterval(()=>{const e=[...this.docIdToServerTimestamp.entries()].filter(([e,t])=>!(!t.expireTimestamp||t.expireTimestamp>Date.now()||this.isTracked(e)));for(const[t]of e)this.docIdToServerTimestamp.delete(t),this.forgetDocument(t,!0)},1e4)}updateDocumentFromSnapshot(e,t){const i=this.documentStore.getDocumentOrUndefined(e);return!(!i&&!t||i===t)&&((!i||!t||Hi({...t,__ts__:void 0})!==Hi(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 Rn.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:i,idResolutionMap:n={},refreshList:s=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(n),s.forEach(e=>{this.refreshDocIdToTimestamp.set(n[e]||e,i)});for(const t of e){let e=this.removeOutgoingMutation(t);n[e]&&(e=n[e]),this.acknowledgeDocument(e,i),this.isTracked(e)||(this.setExpiration(e,!0),this.forgetDocument(e,!1))}}catch(t){for(const t of e){const e=this.removeOutgoingMutation(t);this.forgetDocument(e,!1),(this.hasBeenAcknowledged(e)||"insert"===t.mutation.type)&&this.failedDocsToResync.push(e)}throw t}}removeOutgoingMutation(e){const t=ln(e.mutation.squidDocIdObj),i=ft(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}=un(t);this.setExpiration(t,!0);try{const i=e.includes(cn)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(ft(i.length<=1,"Got more than one doc for the same id:"+t),!i.length){this.forgetDocument(t,!1);const e=this.querySubscriptionManager.setClientRequestIdsForLocalDoc(t,void 0);this.querySubscriptionManager.notifyAllSubscriptions(e)}}catch(e){this.querySubscriptionManager.errorOutAllQueries(t,e)}}}async refreshUpdatedDocuments(){const e=[];for(const[t,i]of this.refreshDocIdToTimestamp.entries()){const n=this.docIdToServerTimestamp.get(t)?.timestamp;n&&n>i||e.push(t)}this.refreshDocIdToTimestamp.clear(),await Promise.allSettled(e.map(e=>this.queryBuilderFactory.getForDocument(e).snapshot()))}groupOutgoingMutationsByIntegrationId(){const e={};for(const[,t]of[...this.pendingOutgoingMutations.entries()]){const i=t[t.length-1];if(i&&!i.sentToServer){const t=i.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(i),i.sentToServer=!0}}return Object.entries(e)}handleOrphanDocs(){this.querySubscriptionManager.onOrphanDocuments.subscribe(e=>{for(const t of e)this.isTracked(t)||this.forgetDocument(t,!1)})}acknowledgeDocument(e,t,i=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,i)}setExpiration(e,t){const i=this.docIdToServerTimestamp.get(e);i&&(i.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),this.pendingIncomingUpdates.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=ln(t.mutation.squidDocIdObj),n=e[i];n&&(t.mutation.squidDocIdObj=un(n))})}),Object.entries(e).forEach(([e,t])=>{Fi(this.pendingOutgoingMutations,e,t),Fi(this.docIdToLocalTimestamp,e,t),Fi(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 es=Symbol("undefined");class ts{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new t(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe(g(Boolean),ni(()=>{}))}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 is{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{if(e)return;const t=Object.keys(this.ongoingLocks);t.length>0&&(console.warn(`DistributedLockManager: WebSocket disconnected, releasing ${t.length} lock(s)`),sn.debug(`DistributedLockManager: released lock(s): [${t.join(", ")}]`)),this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.lockId];t?.release()})}async lock(e,t){"number"==typeof t&&(t={acquisitionTimeoutMillis:t});const i=t?.acquisitionTimeoutMillis??2e3,n=t?.maxHoldTimeMillis;this.socketManager.notifyWebSocketIsNeeded(),gt(await m(k(j(this.lockWaitForConnectionThreshold).pipe(ni(()=>!1)),this.socketManager.observeConnectionReady().pipe(g(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const s=si(),r={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:n,clientRequestId:s}};this.socketManager.postMessage(r);const o=await m(k(j(i+4e3).pipe(O(1),ni(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:s}}))),this.acquireLockMessagesFromServer.pipe(g(e=>e.payload.clientRequestId===s)))),a=o.payload.lockId;gt(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),gt(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new ns(a,e,s,this.ongoingLocks,this.socketManager);return this.ongoingLocks[a]=c,c}releaseAllLocks(){for(const[e,t]of Object.entries(this.ongoingLocks))t.release(),delete this.ongoingLocks[e]}}class ns{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 s(1)}async release(){if(this.released)return;this.released=!0,delete this.ongoingLocks[this.lockId];const e={type:"releaseLock",payload:{lockId:this.lockId,clientRequestId:this.clientRequestId}},t=this.socketManager.sendMessage(e),i=await m(k(I(t.then(ss,ss)),this.socketManager.observeConnectionReady().pipe(g(e=>!e),ni(()=>!1))));if(this.onReleaseSubject.next(),!i)return t.catch(()=>{}),void this.onReleaseSubject.complete();try{await t}finally{this.onReleaseSubject.complete()}}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}function ss(){return!0}class rs{constructor(e,i){this.documentStore=e,this.destructManager=i,this.changeNotifier=new t({}),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 os{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t,i){if(i)return new In(e,ft(this.dataManager,"dataManager not found"),t,i);let n=this.documents.get(e);if(n)return n;n=new In(e,ft(this.dataManager,"dataManager not found"),t);const{integrationId:s,collectionName:r}=un(e);this.documents.set(e,n);const o=this.getCollectionKey(s,r),a=this.documentsForCollection.get(o)||[];return this.documentsForCollection.set(o,a.concat(n)),n}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=un(e),n=un(t);Fi(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class as{constructor(){this.squidDocIdToDoc=new Map,this.squidDocIdToProjectedFields=new Map}saveProjectedDocument(e,t,i){const n=this.squidDocIdToDoc.get(e);if(n){const i=this.mergeDocuments(n,t),s=this.removeInternalProperties(i);this.squidDocIdToDoc.set(e,s)}else{const i=this.removeInternalProperties(t);this.squidDocIdToDoc.set(e,i)}if(i?.length){const t=this.squidDocIdToProjectedFields.get(e);if(void 0!==t)for(const e of i)t.add(e);else n||this.squidDocIdToProjectedFields.set(e,new Set(i))}return this.squidDocIdToDoc.get(e)}mergeDocuments(e,t){const i=Ui(e);for(const e of Object.keys(t)){const n=t[e],s=i[e];null===n||"object"!=typeof n||Array.isArray(n)||null===s||"object"!=typeof s||Array.isArray(s)?i[e]=n:i[e]=this.mergeDocuments(s,n)}return i}adoptMissingFields(e,t){const i=this.squidDocIdToDoc.get(e);if(!i)return;const n=Object.keys(t).filter(e=>"__ts__"!==e&&!(e in i));if(!n.length)return;const s=Ui(i);for(const e of n)s[e]=t[e];this.squidDocIdToDoc.set(e,s);const r=this.squidDocIdToProjectedFields.get(e);if(r)for(const e of n)r.add(e)}deleteDocument(e){this.squidDocIdToDoc.delete(e),this.squidDocIdToProjectedFields.delete(e)}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=Ui(t),n=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}return this.squidDocIdToDoc.delete(e),void this.squidDocIdToProjectedFields.delete(e)}const n=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}hasSufficientData(e,t){if(!this.squidDocIdToDoc.has(e))return!1;const i=this.squidDocIdToProjectedFields.get(e);return void 0===i||!!t?.length&&t.every(e=>i.has(e))}group(e,t){return Object.values($i(e,e=>Hi(t.map(t=>Ai(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=Array.from(e).map(e=>this.squidDocIdToDoc.get(e)).filter(ht),{sortOrder:n,limitBy:s}=t,r=i.sort((e,t)=>this.compareSquidDocs(e,t,n)),o=t.limit<0?2e3:t.limit;let a;if(s){const{limit:e,fields:t,reverseSort:i}=s,n=this.group(r,t);let c;c=i?n.map(t=>t.slice(-e)):n.map(t=>t.slice(0,e)),a=c.flat().slice(0,o)}else a=r.slice(0,o);return null!==t.projectFields&&void 0!==t.projectFields&&(a=a.map(e=>this.projectDocument(e,t.projectFields))),a}projectDocument(e,t){const i={};"__id"in e&&(i.__id=e.__id),"__docId__"in e&&(i.__docId__=e.__docId__);for(const n of t)if(n.includes(".")){const t=Ai(e,n);void 0!==t&&ji(i,n,t)}else n in e&&(i[n]=e[n]);return i}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;Fi(this.squidDocIdToDoc,e,t),Fi(this.squidDocIdToProjectedFields,e,t);const n=un(t),s=Wi(n.docId);this.saveDocument(t,{...i,...s,__docId__:n.docId})}compareSquidDocs(e,t,i){for(const{fieldName:n,asc:s}of i){const i=Li(Ai(e,n),Ai(t,n));if(0!==i)return s?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class cs{constructor(e){this.rpcManager=e}async emit(e){const t={event:e};await this.rpcManager.post("events/emit",t)}}class us{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 ls{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 ds{constructor(e,t,i,n,s){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.ownedJobs=new Set,n.onDestruct(async()=>{this.stopKeepAlive();const e=[...this.ownedJobs];this.ownedJobs.clear(),await Promise.all(e.map(e=>this.resolveJob(e,"failed",void 0,"Client shut down").catch(()=>{})))}),s.isPassiveMode||this.clientIdService.observeClientId().pipe(p(),T(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))sn.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(t=>{const i=this.listeners[e];i&&(i.error(t),delete this.listeners[e])})})}async startJob(e){await this.rpcManager.post("job/startJob",{jobId:e}),this.ownedJobs.add(e),this.ensureKeepAlive()}async completeJob(e,t){await this.resolveJob(e,"completed",t)}async failJob(e,t){await this.resolveJob(e,"failed",void 0,t)}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new s(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(i=>{t.error(i),delete this.listeners[e]}),m(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe(g(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])}))}async resolveJob(e,t,i,n){try{await this.rpcManager.post("job/resolveJob",{jobId:e,status:t,result:i,error:n})}finally{this.ownedJobs.delete(e),this.ownedJobs.size||this.stopKeepAlive()}}ensureKeepAlive(){void 0===this.keepAliveHandle&&(this.keepAliveHandle=setInterval(()=>{if(!this.ownedJobs.size)return void this.stopKeepAlive();const e={jobIds:[...this.ownedJobs]};this.rpcManager.post("job/keepAlive",e).catch(e=>sn.debug("Job keep-alive failed:",e))},15e3))}stopKeepAlive(){void 0!==this.keepAliveHandle&&(clearInterval(this.keepAliveHandle),this.keepAliveHandle=void 0)}}class hs{constructor(e,t,i){this.graphId=e,this.rpcManager=t,this.jobClient=i}async invoke(e={}){const t=si();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,jobId:t}),await this.jobClient.awaitJob(t)}async invokeAsync(e={}){const t=si();return await this.rpcManager.post("langgraph/invoke",{graphId:this.graphId,threadId:e.threadId,input:e.input,jobId:t}),t}async resume(e,t){const i=si();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,jobId:i}),await this.jobClient.awaitJob(i)}async resumeAsync(e,t){const i=si();return await this.rpcManager.post("langgraph/resume",{graphId:this.graphId,threadId:e,resumePayload:t,jobId:i}),i}async getState(e){return this.rpcManager.post("langgraph/getState",{graphId:this.graphId,threadId:e})}async deleteThread(e){await this.rpcManager.post("langgraph/deleteThread",{graphId:this.graphId,threadId:e})}}class ps{constructor(e,t){this.rpcManager=e,this.jobClient=t}graph(e){return new hs(e,this.rpcManager,this.jobClient)}}const gs="squid_mgmt_",fs="x-squid-traceid",ys="x-squid-client-version";function ms(e="n_"){return`${e}${ci(10).toLowerCase()}`}const Is=e=>e();class bs extends Error{constructor(e,t,i,n,s){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=s}}const ws="1.0.491";async function vs(e){return Ts({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage,abortSignal:e.abortSignal})}async function Ss(e){return Ts({...e,method:"GET",files:[],filesFieldName:""})}async function Ms(e){return Ts({...e,method:"PUT"})}async function ks(e){return Ts({...e,method:"PATCH"})}async function _s(e){return Ts({...e,method:"DELETE",files:[],filesFieldName:""})}async function Ts(e){const t=await async function({headers:e,files:t,filesFieldName:i,message:n,url:s,extractErrorMessage:r,method:o,abortSignal:a}){const c=new Headers(e);c.append(fs,ms("c_")),c.append(ys,ws);const u={method:o,headers:c,body:void 0,signal:a};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const n of t)e.append(i||"files",n,n.name);e.append("body",Ki(n)),u.body=e}else void 0!==n&&(c.append("Content-Type","application/json"),u.body=Ki(n));else"DELETE"===o&&void 0!==n&&(c.append("Content-Type","application/json"),u.body=Ki(n));try{const e=await fetch(s,u),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),n=Es(i);if(!r)throw new bs(i,e.status,s,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new bs(o,e.status,s,t,n)}const i=await e.text();return sn.debug(`received response from url ${s}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw sn.debug(`Unable to perform fetch request to url: ${s}`,e),e}}(e);return t.body=Es(t.body),t}function Es(e){if(e){try{return Wi(e)}catch{}return e}}class Cs{constructor(e){gt(e.apiKey.startsWith(gs),`Invalid management API key format. Key must start with '${gs}'`),this.apiKey=e.apiKey,this.consoleRegion=e.consoleRegion}async createOrganization(e){return this.callApi("POST","organizations",e)}async createApplication(e){return this.callApi("POST","applications",e)}async deleteApplication(e){await this.callApi("DELETE",`applications/${e}`)}async renameOrganization(e){await this.callApi("PATCH",`organizations/${e.organizationId}`,{name:e.name})}async renameApplication(e){await this.callApi("PATCH",`applications/${e.appId}`,{name:e.name})}async callApi(e,t,i){const n=P(this.consoleRegion,"console",`openapi/iac/management/${t}`),s={Authorization:`ManagementKey ${this.apiKey}`};return"POST"===e?(await vs({url:n,headers:s,message:i,files:[],filesFieldName:"",extractErrorMessage:!0})).body:"PATCH"===e?(await ks({url:n,headers:s,message:i,extractErrorMessage:!0})).body:(await _s({url:n,headers:s,message:i,extractErrorMessage:!0})).body}}class Ds{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=Jn(e),n=i.map(e=>`sendMutation_${ln(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 sn.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}async deleteQuery(e){const t=`deleteQuery_${e.integrationId}_${e.collectionName}`;await this.lockManager.lock(t),await this.querySender.waitForAllQueriesToFinish();try{const t={query:e};return await this.rpcManager.post("mutation/deleteQuery",t)}catch(t){throw sn.debug("Error while deleting query results",{error:t,query:JSON.stringify(e,null,2)}),t}finally{this.lockManager.release(t)}}}class Os{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class qs{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"userNotification"===e.type),v(e=>e.payload))}async publishNotification(e,t){return await this.rpcManager.post("/notification/publishNotification",{clientIds:t,payload:e})}async publishSystemNotification(e,t){return await this.rpcManager.post("/notification/publishSystemNotification",{clientIds:t,payload:e})}}const As={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class Rs{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!js.test(e)||e.length>=Ns);gt(0===i.length,()=>`Tag name is not allowed: ${i.join(",")}`),this.isReporting=!0;const n={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},s=this.rpcManager.post("/observability/metrics",{metrics:[n]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==s),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(s)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...As,...e,fn:Array.isArray(e.fn)?e.fn:[e.fn]};t.pointIntervalSeconds||(t.pointIntervalSeconds=t.periodEndSeconds-t.periodStartSeconds);const i=await this.rpcManager.post("/observability/metrics/query",t);return function(e,t){const{pointIntervalSeconds:i,noDataBehavior:n}=e,s=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-start-time"===n)return e;const s=t-e;let r=t-Math.floor(s/i)*i;return r>e&&(r-=i),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-end-time"===n)return t-i;const s=t-e;let r=e+Math.floor(s/i)*i;return r>=t&&(r-=i),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const i=[];for(let t=0;t<e.groupByTags.length;t++){const n=e.groupByTags[t],s=a[n]?.[0]||"";i.push(s)}t.push({tagValues:i,points:[]})}else"return-result-group-with-default-values"===n&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[i,n]of Object.entries(a)){const s=e.groupByTags.indexOf(i);if(!(s<0))for(let e=0;e<t.length;e++){const i=t[e],r=new Set(n);for(let e=0;e<t.length;e++){const n=t[e];i.tagValues.every((e,t)=>t===s||e===n.tagValues[t])&&r.delete(n.tagValues[s])}if(0!==r.size)for(const e of r){const n={tagValues:[...i.tagValues],points:[]};n.tagValues[s]=e,t.push(n)}}}for(const n of t){if(0!==n.points.length){const e=n.points[0][0],t=n.points[n.points.length-1][0];gt(e>=r,()=>`Invalid first point time: ${e}`),gt(t<=o,()=>`Invalid last point time: ${t}`)}const t=[];let a=0;const c=e=>"count"===e?0:s,u=Array.isArray(e.fn)?e.fn.map(c):[s];for(let e=r;e<=o;e+=i){const i=n.points[a];i?i[0]===e?(t.push(i),a++):(gt(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 js=/^[a-zA-Z0-9_-]+$/,Ns=1e3;async function Fs(e,t,i=500,n){const s=Date.now(),r=e.paginate({pageSize:i,subscribe:!1});let o=0,a=0,c=await r.waitForData();for(n?.({pageIndex:a,documentCount:c.data.length,totalLoaded:o+c.data.length});;){for(const e of c.data)o++,await t(e.data);if(!c.hasNext)break;c=await r.next(),a++,n?.({pageIndex:a,documentCount:c.data.length,totalLoaded:o+c.data.length})}return{count:o,time:Date.now()-s}}async function xs(e,t=500,i){const n=[],s=e.paginate({pageSize:t,subscribe:!1});let r=0,o=await s.waitForData();for(i?.({pageIndex:r,documentCount:o.data.length,totalLoaded:n.length+o.data.length});;){for(const e of o.data){const t=un(e.squidDocId),i=Wi(t.docId),s=t.integrationId===Je?i.__id:i;n.push(s)}if(!o.hasNext)break;o=await s.next(),r++,i?.({pageIndex:r,documentCount:o.data.length,totalLoaded:n.length+o.data.length})}return n}function Bs(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:n}=t,{collectionName:s,integrationId:r}=i;let o=e.collection(s,r).query();return o=Ps(o,i),n?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:n,joinConditions:s,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=Ps(u,i.query),Object.entries(n).map(([t,i])=>{const{collectionName:n,integrationId:r}=i,{left:o,right:a,leftAlias:c}=s[t];let l=e.collection(n,r).query();l=Ps(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),r&&o?u.grouped().dereference():r?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:n,integrationId:s}=Us(i[0]),r=i.map(t=>Bs(e,t));return e.collection(n,s).or(...r)}(e,t)}}function Ps(e,t){const{conditions:i,limit:n,sortOrder:s}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");if("docIds"in t)throw new Error("DocId conditions are not supported in query serialization.");const{fieldName:i,operator:n,value:s}=t;e.where(i,n,s)}e.limit(n);for(const{fieldName:t,asc:i}of s)e.sortBy(t,i);return e}function Us(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 Us(e.queries[0])}}class Qs{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 $n(e),s=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>n.documentMatchesQuery(e.data)),r={};return s.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[ln(e.__docId__,i,t)])}}function Ls(e,t){return jt(function(i,n){var s=0;i.subscribe(ti(n,function(i){return e.call(t,i,s++)&&n.next(i)}))})}class $s{constructor(e,i,n){this.rpcManager=e,this.destructManager=i,this.webSocketConnectionReady$=n,this.safeToSendQueriesToServer=new t(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new t(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new r,i=m(t);return this.pendingQueryRequests.push({queryRequest:e,responseSubject:t}),this.pendingQueryBatchTimeout&&(clearTimeout(this.pendingQueryBatchTimeout),this.pendingQueryBatchTimeout=void 0),this.pendingQueryRequests.length>=10?(this.processQueryBatch(),i):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.gateForCurrentBatch().subscribe(()=>{this.processQueryBatch()})},0),i)}gateForCurrentBatch(){return this.pendingQueryRequests.some(({queryRequest:e})=>e.subscribe)&&this.webSocketConnectionReady$?o([this.safeToSendQueriesToServer,this.webSocketConnectionReady$]).pipe(Ls(([e,t])=>e&&t),O(1),ni(()=>!0)):this.safeToSendQueriesToServer.pipe(Ls(Boolean),O(1))}async sendQueryDirect(e){const t=await this.rpcManager.post("query/batchQueries",[e]),i=t.errors[e.clientRequestId];if(i)throw i;return t.results[e.clientRequestId]}async waitForAllQueriesToFinish(){return m(this.inflightQueriesCount.pipe(Ls(e=>0===e))).then(()=>{})}async processQueryBatch(){const e=this.pendingQueryRequests.splice(0);if(!e.length)return;const t=Array.from(e.map(({queryRequest:e})=>e).reduce((e,t)=>(e.set(t.clientRequestId,t),e),new Map).values()),i=e.map(({responseSubject:e})=>e);this.inflightQueriesCount.next(this.inflightQueriesCount.value+t.length);try{const i=await this.rpcManager.post("query/batchQueries",t);for(const{queryRequest:t,responseSubject:n}of e){const e=t.clientRequestId,s=i.errors[e],r=i.results[e];s?n.error(s):n.next(r)}}catch(e){i.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var Gs={d:(e,t)=>{for(var i in t)Gs.o(t,i)&&!Gs.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function Hs(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 Ks(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return Ws(e,t);if(0===t.length)return Hs("object"==typeof i&&null!==i&&!Array.isArray(i),()=>`Root state must be a record. Trying to set '${i}', type: ${typeof i}`),i;function n(e){const t=Number(e);return!isNaN(t)&&t>=0&&t!==1/0}let s=e;for(let e=0;e<t.length-1&&void 0!==s;e++){const i=t[e];Hs(!Array.isArray(s)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),s=s[i],Hs(void 0===s||"object"==typeof s&&null!==s,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===s?"<null>":typeof s}'`)}const r=t[t.length-1];return Hs(!Array.isArray(s)||n(r),()=>`Invalid array index Path: '${t}`),(null==s?void 0:s[r])===i?e:Vs(e,t,i)}(e,t.path,t.value);case"delete":return Ws(e,t.path);case"batch":return t.actions.reduce((e,t)=>Ks(e,t),e)}}function Ws(e,t){Hs(0!==t.length,"Can't delete an empty path");let i=e;for(let n=0;n<t.length-1;n++){const s=t[n];if(i=i[s],void 0===i)return e;Hs("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:Vs(e,t,void 0)}function Vs(e,t,i){function n(e,i){Hs(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const s=Object.assign({},e);let r=s;for(let e=0;e<t.length-1;e++){const s=t[e],o=r[s];Hs(void 0===o||"object"==typeof o&&null!==o,()=>`Internal error: sub-path has an invalid type and can't be patched: '${t.slice(0,e+1)}', type: '${null===o?null:typeof o}'`);const a=void 0===o?void 0===i?void 0:{}:Array.isArray(o)?[...o]:Object.assign({},o);if(void 0===a)return n(r,s),r;r[s]=a,r=a}const o=t[t.length-1];return void 0===i?n(r,o):r[o]=i,s}function zs(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(...zs(t,"as-is"));return"unique-and-sorted"===t?Xs(i):i}function Js(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 Ys(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 Xs(e){const t=Ys(e),i=t;for(let e=0;e<t.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++){const r=t[s];n.length===r.length&&Js(n,r)&&(i[s]=void 0,e++)}}return i.filter(e=>void 0!==e)}const Zs=(er={Observable:()=>n,Subject:()=>r},tr={},Gs.d(tr,er),tr);var er,tr;const ir=(nr={filter:()=>Ls,map:()=>ni},sr={},Gs.d(sr,nr),sr);var nr,sr;class rr{constructor(){this.root={children:new Map,childrenWithValue:0}}get(e){var t;return null===(t=this.getNode(e))||void 0===t?void 0:t.value}getOrSet(e,t){const i=this._buildPath(e);if(void 0!==i.value)return i.value;const n=t(e);return this._setNodeValue(i,n,void 0===n),n}set(e,t){const i=void 0===t?this._findNode(e):this._buildPath(e);i&&this._setNodeValue(i,t,!0)}delete(e){const t=this._findNode(e);if(void 0===t)return;if(void 0===t.parent){if(t!==this.root)throw new Error("Only root node can have no parent.");return this.root.value=void 0,this.root.children.clear(),void(this.root.childrenWithValue=0)}const i=(void 0===t.value?0:1)+t.childrenWithValue;i>0&&this._updateChildrenWithValue(t,-i),t.parent.children.delete(e[e.length-1]),this._runGc(t.parent)}clear(){this.delete([])}count(e=[],t="node-and-children"){const i=this.getNode(e);return void 0===i?0:i.childrenWithValue+("node-and-children"===t&&void 0!==i.value?1:0)}get isEmpty(){return 0===this.count()}fillPath(e,t){const i=[];let n=this.root,s=t(n.value,i);if(s!==rr.StopFillToken){this._setNodeValue(n,s,!1);for(let r=0;r<e.length;r++){const o=e[r];i.push(o);let a=n.children.get(o);if(s=t(null==a?void 0:a.value,i),s===rr.StopFillToken)break;a||(a={children:new Map,parent:n,childrenWithValue:0},n.children.set(o,a)),this._setNodeValue(a,s,!1),n=a}this._runGc(n)}}visitDfs(e,t,i=[]){const n=this.getNode(i);void 0!==n&&this._visitDfs(e,n,t,[...i])}_visitDfs(e,t,i,n){if("pre-order"===e&&!1===i(t.value,n))return!1;for(const[s,r]of t.children){if(n.push(s),!this._visitDfs(e,r,i,n))return!1;n.pop()}return"in-order"!==e||!1!==i(t.value,n)}getNode(e){return this._getNode(e)}_getNode(e){let t=this.root;for(const i of e)if(t=t.children.get(i),!t)return;return t}_findNode(e){let t=this.root;for(let i=0;i<e.length&&t;i++)t=t.children.get(e[i]);return t}_buildPath(e){let t=this.root;for(let i=0;i<e.length;i++){const n=e[i];let s=t.children.get(n);s||(s={children:new Map,parent:t,childrenWithValue:0},t.children.set(n,s)),t=s}return t}_setNodeValue(e,t,i){if(e.value!==t){const i=void 0===t?-1:void 0===e.value?1:0;e.value=t,this._updateChildrenWithValue(e,i)}i&&this._runGc(e)}_updateChildrenWithValue(e,t){if(0!==t)for(let i=e.parent;i;i=i.parent)if(i.childrenWithValue+=t,i.childrenWithValue<0)throw new Error("Internal error: negative counter value!")}_runGc(e){void 0===e.value&&(0===e.childrenWithValue&&e.children.clear(),e.parent&&this._runGc(e.parent))}}rr.StopFillToken=Symbol("Trie.StopFillToken");class or extends Zs.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class ar{constructor(e){this.rootState=e,this.observersTrie=new rr,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,ir.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=Ks(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=zs(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=Xs([...t,...i]),s=new rr;for(const e of n)s.fillPath(e,()=>!0);s.visitDfs("pre-order",(t,i)=>{const n=this.observersTrie.get(i);if(n){const t=this.get(i),s=n.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;n.next({action:e,value:t,oldValue:s})}})}_observeChanges(e,t=[],i){const n=0===t.length?void 0:new rr;for(const e of t)null==n||n.set(e,!0);return new Zs.Observable(t=>{const s=this.observersTrie.getOrSet(e,()=>new or);s.isAllDetailsMode=s.isAllDetailsMode||"all-details"===i;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=s.pipe((0,ir.filter)(({action:e})=>void 0===n||zs(e,"as-is").some(e=>!n.get(e))),(0,ir.map)(({action:t,value:i,oldValue:n})=>{let r=this.stubForUnusedPaths;if(s.isAllDetailsMode){const i=zs(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=Ys(e),i=t;for(let e=0;e<i.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++)Js(t[s],n)&&(i[s]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>Js(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:n,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),s.observed||this.observersTrie.delete(e)}})}_get(e,t){let i=e;for(let e=0;e<t.length&&void 0!==i;e++){const n=t[e];i=null==i?void 0:i[n]}return i}selectChildPathsWithObservers(e){const t=[];for(const i of e)this.observersTrie.count(i,"children-only")>0&&this.observersTrie.visitDfs("pre-order",(e,i)=>{e&&t.push([...i])},i);return t}}function cr(e,t,i=(e,t)=>e>t?1:e<t?-1:0,n=0,s=e.length-1){if(s<n)return-1;const r=Math.trunc((n+s)/2);return 0===i(t,e[r])?r:i(t,e[r])>0?cr(e,t,i,r+1,s):cr(e,t,i,n,r-1)}function ur(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==cr(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 lr(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=cr(e,t,i);n>-1&&e.splice(n,1)}class dr{setDetachedQueryExecutor(e){this.detachedQueryExecutor=e}constructor(e,t,i,n,s,o,a,c){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=n,this.documentIdentityService=s,this.querySender=o,this.socketManager=a,this.lockManager=c,this.onOrphanDocuments=new r,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new pr,this.queryResultsSubject=new r,this.detachedRecords=new Set,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.clientIdService.observeClientTooOld().subscribe(()=>{this.invalidateOngoingQueryRegistrations()}),this.clientIdService.observeClientReadyToBeRegenerated().subscribe(()=>{this.refreshOngoingQueries()}),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}dumpSubscriptionInfo(){console.log("Ongoing queries:",this.ongoingQueries),console.log("ClientRequestId to local documents:",this.clientRequestIdToLocalDocuments),console.log("Local documents to clientRequestId:",this.localDocumentToClientRequestIds)}observeQueryResults(){return this.queryResultsSubject.asObservable()}hasOngoingQuery(e){return this.ongoingQueries.has(e)}getQuery(e){return ft(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}=un(t),s=this.queryMappingManager.getMapping(i,n);return s?function(e,t){const i=[...e.unconditional||[]],n=new Map;for(const[i,s]of Object.entries(e.conditional||{})){const e=Wi(i);let r;if(gn(e))if(e.fieldName===at)r=mn(e.value,t,e.operator,Ai);else{const i=Ai(t,e.fieldName)??null;r=dn(e.value,i,e.operator)}else r=fn(e)?yn(e,t,Ai):hr(e,t);if(r)for(const e of s)n.set(e,(n.get(e)||0)+1)}for(const[t,s]of n.entries())s>=e.queriesMetadata[t].condCount&&i.push(t);return i}(s,e):[]}setClientRequestIdsForLocalDoc(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set,n=new Set(t?this.findQueriesForDocument(t,e).map(e=>function(e){const t=e.split("_");return{clientId:t[0],clientRequestId:t[1]}}(e).clientRequestId):[]),s=new Set([...i,...n]);for(const t of[...i]){if(n.has(t))continue;i.delete(t);const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),i.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of n){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}return[...s]}addDocToQuery(e,t){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}removeDocFromQuery(e,t){const i=this.localDocumentToClientRequestIds.get(e);let n=!i;i&&(i.delete(t),i.size||(this.localDocumentToClientRequestIds.delete(e),n=!0));const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),n&&this.documentStore.deleteDocument(e)}errorOutAllQueries(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of i){const i=this.ongoingQueries.get(e);i&&(this.destructManager.isDestructing?i.dataSubject.complete():i.dataSubject.error(t),i.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const i of e){const e=this.ongoingQueries.get(i);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const n=this.clientRequestIdToLocalDocuments.get(i)||new Set,s=this.documentStore.sortAndLimitDocs(n,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(s,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=ft(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case Xn.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+100?Xn.ENABLED:Xn.DISABLED;break;case Xn.DISABLED:break;case Xn.ENABLED:if(n.size<e.query.limit+20){e.limitUnderflowState=Xn.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}e.dataSubject.next(s)}for(const e of t){const t=this.collectAllObservables(e);ft(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new $n(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,n,r,a,c){r&&this.socketManager.notifyWebSocketIsNeeded();const u=Object.keys(i).length>0;return r||u||!this.detachedQueryExecutor||this.lockManager.canGetLock(Yn)?d(()=>{const u=this.createOngoingQueryGraph(e,t,i,n,r,!0,{},c);a&&(u.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(u),u.allObservables=new s(1);const l=u.allObservables.pipe(D(e=>o(e).pipe(ni(e=>this.joinResults(e,n,u)))),Ls(()=>this.allOngoingQueriesGotInitialResult(u)),E(void 0),M(),Ls(([e,t])=>!Bi(e,t)),ni(([,e])=>e),r?R():O(1),f(()=>{u.dataSubject.complete(),u.done=!0,this.completeAllSupportedQueries(u),u.allObservables?.complete()})),d=this.collectAllObservables(u);return u.allObservables.next(d),l}).pipe(_()):I(this.detachedQueryExecutor(e)).pipe(ni(e=>e.map(e=>{const i={[t]:e};return this.detachedRecords.add(i),i})))}hasOngoingQueryForDocId(e){const t=this.localDocumentToClientRequestIds.get(e);return!!t&&!!t.size}unsubscribe(){const e=[...this.ongoingQueries.values()];for(const t of e)t.dataSubject.complete(),t.allObservables?.complete()}hasSubscription(e){return!!this.ongoingQueries.get(e)?.subscribe}isValidParent(e){if(!e.activated||e.isInFlight||e.isEmptyForJoin||e.done||!e.subscribe||!e.gotInitialResponse||!e.dataSubject.value)return!1;const t=-1===e.query.limit?1e3:e.query.limit;return e.dataSubject.value.length<t}findValidParentOfOngoingQuery(e){if(e.forceFetchFromServer)return;const t=new $n(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=ft(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=pn(this.clientIdService.getClientId(),t);e.dataSubject.pipe(f(async()=>{if(e.unsubscribeBlockerCount.value>0&&await m(k(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(Ls(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)}),Ls(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,i,n,s,r,o,a={},c){if(a[i])return a[i];const u=o&&c?c:this.clientIdService.generateClientRequestId(),l=[],d={clientRequestId:u,activated:o,alias:i,query:e,subscribe:r,dataSubject:new t(null),supportedQueries:l,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new t(0),queryRegistered:new t(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:r?Xn.UNKNOWN:Xn.DISABLED};this.registerQueryFinalizer(d),this.ongoingQueries.set(u,d),a[i]=d;for(const[e,t]of Object.entries(s)){const o=t.leftAlias;if(o!==i&&e!==i)continue;const c=o===i?e:o;if(o===i){const e=this.createOngoingQueryGraph(n[c],c,n,s,r,!1,a);e.joinCondition=t,l.push(e)}else d.supportingOngoingQuery=this.createOngoingQueryGraph(n[c],c,n,s,r,!1,a)}return d}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(Ls(Boolean),ni(e=>({docs:e,alias:i}))));for(const i of e.supportedQueries)this.collectAllObservables(i,t);return t}joinResults(e,t,i){const n=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let s=n[i.alias].map(e=>({[i.alias]:e}));const r=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<r.length;e++){const i=r[e].alias;o.has(i)||(o.add(i),s=this.join(s,i,n[i],t[i]))}return s}join(e,t,i,n){if(!e.length)return e;const s=Object.keys(e[0]);if(!n||!s.includes(n.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[n.right]);r.has(t)||r.set(t,[]),ft(r.get(t)).push(e)}),e.flatMap(e=>{const i=r.get(this.transformKey(e[n.leftAlias]?.[n.left]))||[];return i.length?i.map(i=>({...e,[t]:i})):n.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],i=[e];for(;i.length;){const e=ft(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,i){const n=ft(i.joinCondition),s=i.query;if(i.activated){if(!i.canExpandForJoin)return!1;const r=ft(i.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===i.alias),o=new Set(e.map(e=>e[n.left]??null));for(const e of r)e.query.conditions.filter(gn).filter(e=>e.fieldName===n.right).forEach(e=>{o.delete(e.value)});if(0===o.size)return!1;const a=Ui(s);a.conditions=a.conditions.filter(e=>!gn(e)||e.fieldName!==n.right),[...o].forEach(e=>{a.conditions.push({fieldName:n.right,operator:"==",value:e})});const c={...i,query:a,activated:!0,gotInitialResponse:!1,dataSubject:new t(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(c),this.ongoingQueries.set(c.clientRequestId,c),ft(i.supportingOngoingQuery).supportedQueries.push(c),this.sendQueryToServerOrUseParentQuery(c),!0}{if(i.activated=!0,s.conditions.filter(gn).filter(e=>e.fieldName===n.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(i),i.canExpandForJoin=!1,!0;const t=e.map(e=>e[n.left]??null).map(e=>({fieldName:n.right,operator:"==",value:e}));return t.length?(s.conditions.push(...t),this.sendQueryToServerOrUseParentQuery(i)):i.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=ft(t.shift());t.push(...e.supportedQueries||[]),await m(e.unsubscribeBlockerCount.pipe(Ls(e=>0===e))),e.dataSubject.complete()}}transformKey(e){return e instanceof Date?`DATE AS string KEY: ${e.toISOString()}`:e}preDestruct(){this.unsubscribe()}sendQueryToServerOrUseParentQuery(e,t=!1){if(this.destructManager.isDestructing)return;const i=e.query,n=e.clientRequestId,s=pn(this.clientIdService.getClientId(),n);this.queryMappingManager.addQuery(i,s),this.ongoingQueries.set(n,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},n=new $n(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await m(t.queryRegistered.pipe(Ls(Boolean)))}catch(t){return this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(e.dataSubject.error(t),e.queryRegistered.error(t)),void(e.done=!0)}if(this.destructManager.isDestructing)return;if(e.done)return;this.rpcManager.post("query/register",i).then(()=>{e.isInFlight=!1,e.queryRegistered.next(!0)}).catch(i=>{e.isInFlight=!1,this.destructManager.isDestructing?e.dataSubject.complete():(console.error("Query error",e.query,t.query,i),e.dataSubject.error(i)),e.done=!0}).finally(()=>{t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value-1)});const s=k(e.queryRegistered.pipe(Ls(Boolean),h(2e3),O(1)),this.destructManager.observeIsDestructing().pipe(O(1)));t.dataSubject.pipe(A(()=>!e.done),q(s),Ls(Boolean),R(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),ni(e=>e.filter(e=>n.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(ln(i.__docId__,e.query.collectionName,e.query.integrationId),i);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,i=t>0&&e.subscribe?t+100:t,n={query:{...e.query,limit:i},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(n).then(t=>{e.isInFlight=!1,e.queryRegistered.next(!0),this.queryResultsSubject.next(t)}).catch(t=>{e.isInFlight=!1,this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(sn.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}invalidateOngoingQueryRegistrations(){for(const e of this.ongoingQueries.values())e.queryRegistered.next(!1)}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const i of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{i.has(t)&&(i.delete(t),i.add(e[t]))});t.forEach(t=>{Fi(this.localDocumentToClientRequestIds,t,e[t])})}}function hr(e,t){for(const i of e.fields){const e=Ai(t,i.fieldName)??null;if(dn(i.value,e,i.operator))return!0;if(dn(i.value,e,"!="))return!1}return!1}class pr{constructor(){this.stateService=new ar({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const s of e.conditions){if(gn(s)&&["=="].includes(s.operator)){const e=Vi(s.fieldName);n.has(e)||(i++,n.add(e))}else i++;const r=this.getConditionStatePath(e,s),o=[...this.stateService.get(r)||[]];ur(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];ur(n,t),this.stateService.set(i,n)}this.stateService.set([...this.getQueryMetadataStatePath(e,t),"condCount"],i)}),this.querySubscriptionIdToQuery[t]=e}async removeQuery(e){const t=this.querySubscriptionIdToQuery[e];if(t)return this.stateService.runInBatch(()=>{for(const i of t.conditions){const n=this.getConditionStatePath(t,i),s=[...this.stateService.get(n)||[]];lr(s,e),s.length?this.stateService.set(n,s):this.stateService.delete(n)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];lr(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,Hi(i))];var i}}class gr{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 w(o(t).pipe(g(e=>!e.includes(!0)),O(1))),await this.lock(...e)}release(...e){for(const t of e){const e=ft(this.locks[t]);e.next(!1),e.complete(),delete this.locks[t]}}canGetLock(...e){return!e.some(e=>this.locks[e]?.value)}lockSync(...e){gt(this.canGetLock(...e),"Cannot acquire lock sync");for(const i of e)this.locks[i]=new t(!0)}}class fr{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 mr(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const yr="subscriptionMutex";class mr{constructor(e,t,i,n){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=n,this.messagesSubject=new r,this.subscriberCount=0,this.lockManager=new gr}async produce(e){await this.lockManager.lock(yr);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(yr)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),d(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe(f(()=>{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(yr);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 r}finally{this.lockManager.release(yr)}}async performUnsubscribe(){await this.lockManager.lock(yr);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(yr)}}}class Ir{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 m(b(10).pipe(g(()=>this.attemptConsume()),y()))}attemptConsume(){return this.refill(),this.tokens>=1&&(this.tokens-=1,!0)}refill(){const e=Date.now(),t=(e-this.lastRefillTimestamp)*this.refillRatePerMs;this.tokens=Math.min(this.tokens+t,this.capacity),this.lastRefillTimestamp=e}}class br{constructor(e,i,n,s,r,o){this.region=e,this.appId=i,this.authManager=r,this.clientIdService=o,this.staticHeaders={},this.onGoingRpcCounter=new t(0);for(const[e,t]of Object.entries(s))this.setStaticHeader(e,t);this.clientIdService.observeClientId().subscribe(e=>{e?this.setStaticHeader("x-squid-clientid",e):this.deleteStaticHeader("x-squid-clientid")}),n.onDestruct(async()=>{await this.awaitAllSettled()});const a=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new Ir(60*a,5),ai:new Ir(20*a,5),secret:new Ir(20*a,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 m(this.onGoingRpcCounter.pipe(g(e=>0===e)))}setStaticHeader(e,t){this.staticHeaders[e]=t}deleteStaticHeader(e){delete this.staticHeaders[e]}getStaticHeaders(){return this.staticHeaders}async post(e,t,i=[],n="files",s={},r){return(await this.rawPost(e,t,i,n,!0,s,r)).body}async rawPost(e,t,i=[],n="files",s=!0,r={},o){return this.runRawRequest(e,r,async r=>{sn.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const a=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await vs({url:a,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s,abortSignal:o})})}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){return this.runRawRequest(e,{},async n=>{let s=e.startsWith("http://")||e.startsWith("https://")?e:P(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))}),s+=`?${e.toString()}`}return sn.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await Ss({url:s,headers:n,extractErrorMessage:i})})}async put(e,t,i=[],n="files"){return(await this.rawPut(e,t,i,n)).body}async rawPut(e,t,i=[],n="files",s=!0){return this.runRawRequest(e,{},async r=>{sn.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const o=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await Ms({url:o,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s})})}async patch(e,t,i=[],n="files"){return(await this.rawPatch(e,t,i,n)).body}async rawPatch(e,t,i=[],n="files",s=!0){return this.runRawRequest(e,{},async r=>{sn.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const o=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await ks({url:o,headers:r,message:t,files:i,filesFieldName:n,extractErrorMessage:s})})}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){return this.runRawRequest(e,{},async n=>{sn.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const s=e.startsWith("http://")||e.startsWith("https://")?e:P(this.region,this.appId,e);return await _s({url:s,headers:n,message:t,extractErrorMessage:i})})}async runRawRequest(e,t,i){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),s={...this.staticHeaders,...n,...t};return await i(s)}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?ft(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?ft(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):ft(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}function wr(e){gt(!e.isPassiveMode,"This operation is not available in passive mode. Use active mode for real-time features.")}class vr{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 Sr(){}const Mr="undefined"!=typeof process&&process.versions?.node?x(220):nn().WebSocket;class kr{constructor(e,i,n,s=Is,o,a,c){this.clientIdService=e,this.region=i,this.appId=n,this.messageNotificationWrapper=s,this.destructManager=o,this.authManager=a,this.runtimeOptions=c,this.webSocketObserver=new r,this.allMessagesObserver=new r,this.connectionReady=new t(!1),this.seenMessageIds=new Set,this.destructSubject=new r,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new t(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe(g(Boolean),O(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe(T(1),g(e=>!e),D(()=>k(j(this.clientTooOldThreshold),this.connectionReady.pipe(g(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?sn.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(sn.debug(this.clientIdService.getClientId(),"Client disconnected for a long period - refreshing"),this.refreshClient())}),this.observeConnectionReady().pipe(g(Boolean)).subscribe(()=>{this.clientIdService.isClientTooOld()&&this.clientIdService.notifyClientNotTooOld()}),this.observeNotifications().pipe(g(e=>"clientInfo"===e.type)).subscribe(e=>{console.log("Client info message received",e)})}refreshClient(){this.destructManager.isDestructing?sn.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?sn.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(sn.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),sn.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(p())}async awaitConnectionReady(){wr(this.runtimeOptions),await m(this.observeConnectionReady().pipe(g(Boolean)))}notifyWebSocketIsNeeded(){wr(this.runtimeOptions),this.webSocketNeededSubject.next(!0)}postMessage(e){this.sendMessageImpl(e)}sendMessage(e){return this.sendMessageImpl(e)}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(sn.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded();try{await m(k(this.connectionReady.pipe(g(Boolean)),j(12e4).pipe(R(()=>{throw new Error("WebSocket connection not ready within 2 minutes")}))).pipe(q(this.destructSubject)))}catch(e){if(this.destructManager.isDestructing)return;throw e}const t=await this.authManager.getToken();if(this.connectionReady.value)try{gt(this.socket,"Socket is undefined in sendMessageAsync");const i=Ki({message:e,authToken:t});sn.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(Ki({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=P(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();sn.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,n=0,s=1;const r={connected:!1,closeCalled:!1,open(){i=new(Mr?.WebSocket??Mr)(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.")}:Sr,i.onopen=function(e){r.connected=!0,(t.onopen||Sr)(e),n=0},i.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return sn.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Sr)(e),void r.reconnect(e);(t.onclose||Sr)(e)},i.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||Sr)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;s&&n++<i?s=setTimeout(function(){(t.onreconnect||Sr)(e),sn.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||Sr)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(s),s=void 0,i.close(e,t)}catch(e){}}};return r.open(),r}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{sn.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{sn.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):sn.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{sn.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):sn.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 sn.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=Wi(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),sn.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new r;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe(R(e=>t.push(e)),u(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await m(j(0)),this.connectionReady.next(!1),await m(j(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function _r(e){var t,i;i="Invalid application ID",gt(function(e){return"string"==typeof e}(t=e),()=>mt(i,"Not a string",t));const n=e.split("-");gt(n.length<4,`Invalid application ID: ${e}`);const[s,r,o]=n;return{appId:s,environmentId:r??"prod",squidDeveloperId:o}}function Tr(e,t){return`${_r(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Er(e,t,i){return`${Tr(e,t)}${i?`-${i}`:""}`}function Cr(e){const t=_r(e);return Tr(t.appId,t.environmentId)}class Dr{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 Or{constructor(e,t,i,n,s){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=n,this.consoleRegion=s}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e,t,i){return await this.rpcManager.post("web/aiSearch",{query:e,allowedDomains:i},[],"files",{},t)}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e){gt(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shorten",i,"create short URL","json")}async createShortUrls(e){gt(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension};return await this.postShortUrlApi("shortenMany",i,"create short URLs","json")}async deleteShortUrl(e){gt(this.apiKey,"API key is required to delete a short URL");const t={id:e,appId:this.appId};await this.postShortUrlApi("delete",t,"delete short URL","ignore")}async deleteShortUrls(e){gt(this.apiKey,"API key is required to delete a short URL");const t={ids:e,appId:this.appId};await this.postShortUrlApi("deleteMany",t,"delete short URLs","ignore")}async postShortUrlApi(e,t,i,n){const s=U(this.region,this.consoleRegion,`openapi/sqd/${e}`),r=await fetch(s,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(t)});if("ignore"===n)return void gt(r.ok,`Failed to ${i} (${r.status}): ${r.statusText}`);const o=await r.text();return gt(r.ok,`Failed to ${i} (${r.status}): ${o}`),JSON.parse(o)}}class qr{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:n={},body:s,files:r=[]}=t,o=await this.rpcManager.getAuthHeaders(),a={...this.rpcManager.getStaticHeaders(),...o,...i};let c=P(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))}),c+=`?${e.toString()}`}const u=new Headers(a);let l;if(u.append(fs,ms("c_")),u.append(ys,ws),r&&r.length>0){const e=new FormData;for(const t of r)e.append("file",t,t.name);s&&"object"==typeof s&&Object.entries(s).forEach(([t,i])=>{e.append(t,String(i))}),l=e}else u.append("Content-Type","application/json"),l=Ki(s||{});const d=await fetch(c,{method:"POST",headers:u,body:l}),h={};if(d.headers.forEach((e,t)=>{h[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 bs(i,d.status,c,h,t)}const p=await d.text();let g;try{g=JSON.parse(p)}catch{g=p}return g}getWebhookUrl(e){return P(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class Ar{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new ts,gt(e.appId,"APP_ID_MUST_BE_PROVIDED"),this.runtimeOptions={isPassiveMode:e.isPassiveMode??!1};for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,i=Er(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new rn(this.destructManager),sn.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new Oi(e.apiKey,e.authProvider),this.socketManager=new kr(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new br(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new qs(this.socketManager,this.rpcManager),this.jobClient=new ds(this.socketManager,this.rpcManager,this.clientIdService,this.destructManager,this.runtimeOptions),this.langGraphClient=new ps(this.rpcManager,this.jobClient),this.backendFunctionManager=new en(this.rpcManager),this.aiClient=new Ei(this.socketManager,this.rpcManager,this.jobClient,this.clientIdService,this.backendFunctionManager,()=>this.metricAnnotations),this.apiClient=new Di(this.rpcManager),this.eventsClient=new cs(this.rpcManager),this.documentStore=new as,this.lockManager=new gr,this.distributedLockManager=new is(this.socketManager,this.destructManager),this.documentIdentityService=new rs(this.documentStore,this.destructManager),this.documentReferenceFactory=new os(this.documentIdentityService),this.querySender=new $s(this.rpcManager,this.destructManager,this.socketManager.observeConnectionReady()),this.observabilityClient=new Rs(this.rpcManager),this.schedulerClient=new vr(this.rpcManager),this._appId=i,this.querySubscriptionManager=new dr(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager,this.lockManager),this.localQueryManager=new Qs(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new Ds(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new wn(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService,n),this.dataManager=new Zn(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new qn(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.querySubscriptionManager.setDetachedQueryExecutor(e=>this.dataManager.executeDetachedQuery(e)),this.webhookManager=new qr(this.rpcManager,e.region,i),this.nativeQueryManager=new Os(this.rpcManager),this._connectionDetails=new An(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new fr(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new At(this.rpcManager,this.options.region,Cr(i),this.options.consoleRegion),this.webClient=new Or(this.rpcManager,this.options.region,Cr(i),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}get isDestructed(){return this.destructManager.isDestructing}static getInstance(e){const t=Hi(e);let i=Ar.squidInstancesMap[t];return i||(i=new Ar(e),Ar.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(Ar.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Je){return this._validateNotDestructed(),this.collectionReferenceFactory.get(e,t)}runInTransaction(e){return this._validateNotDestructed(),this.dataManager.runInTransaction(e)}executeFunction(e,...t){return this._validateNotDestructed(),this.backendFunctionManager.executeFunction(e,...t)}executeFunctionWithHeaders(e,t,...i){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...i)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}getWebhookUrl(e){return this._validateNotDestructed(),this.webhookManager.getWebhookUrl(e)}executeNativeRelationalQuery(e,t,i={}){const n={type:"relational",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativePureQuery(e,t,i={}){const n={type:"pure",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeMongoQuery(e,t,i){const n={type:"mongo",collectionName:t,aggregationPipeline:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeElasticQuery(e,t,i,n="_search",s="GET"){const r={type:"elasticsearch",index:t,endpoint:n,method:s,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}setMetricAnnotations(e){this.metricAnnotations=e?{...e}:void 0}job(){return this._validateNotDestructed(),this.jobClient}langGraph(e){return this._validateNotDestructed(),this.langGraphClient.graph(e)}api(){return this._validateNotDestructed(),this.apiClient}admin(){return this._validateNotDestructed(),this.adminClient}web(){return this._validateNotDestructed(),this.webClient}storage(e="built_in_storage"){return this._validateNotDestructed(),new Dr(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new us(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new ls(this.rpcManager)}events(){return this._validateNotDestructed(),this.eventsClient}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t,i){const n=await this.acquireLock(e,i);try{return await t(n)}finally{n.release()}}queue(e,t=Ye){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(Ar.squidInstancesMap).find(([,e])=>e===this);e&&delete Ar.squidInstancesMap[e[0]]})}connectionDetails(){return this._validateNotDestructed(),this._connectionDetails}getNotificationClient(){return this._validateNotDestructed(),this.notificationClient}async _unsubscribe(){this.querySubscriptionManager.unsubscribe(),await this.rpcManager.awaitAllSettled()}internal(){const{rpcManager:e}=this;return{getApplicationUrl:(e,t,i)=>P(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>Er(e,t,i)}}_validateNotDestructed(){gt(!this.destructManager.isDestructing,"The client was already destructed.")}}const Rr=18,jr=100,Nr=50,Fr=200,xr=500,Br=500,Pr=20,Ur=2e4;export{$ as AGENT_STATUS_TITLE_ACCESSING_KB,L as AGENT_STATUS_TITLE_AGENT_RESPONSE,G as AGENT_STATUS_TITLE_CALLING_AI_FUNCTION,W as AGENT_STATUS_TITLE_GREPPING_KB,H as AGENT_STATUS_TITLE_INSPECTING_KB_METADATA,K as AGENT_STATUS_TITLE_QUERYING_KB_GRAPH,V as AGENT_STATUS_TITLE_QUERYING_SPREADSHEET,Le as AI_AGENTS_INTEGRATION_ID,Se as AI_AUDIO_CREATE_SPEECH_MODEL_NAMES,ve as AI_AUDIO_TRANSCRIPTION_MODEL_NAMES,z as AI_CHAT_MESSAGE_SOURCE,de as AI_EMBEDDINGS_MODEL_NAMES,ee as AI_FILE_PROVIDER_TYPES,we as AI_IMAGE_MODEL_NAMES,Ce as AI_KB_ACCESS_CONTROL_MODES,ke as AI_MODEL_SOURCES,Z as AI_PROVIDER_TYPES,ut as ALL_OPERATORS,re as ANTHROPIC_CHAT_MODEL_NAMES,Fe as API_INJECTION_FIELD_TYPES,ct as ARRAY_OPERATORS,He as AUTH_INTEGRATION_TYPES,At as AdminClient,yi as AiAgentClient,gi as AiAgentReference,Ii as AiAudioClient,Ei as AiClient,bi as AiFilesClient,wi as AiImageClient,ki as AiKnowledgeBaseClient,Mi as AiKnowledgeBaseReference,_i as AiMatchMakingClient,Di as ApiClient,qt as ApiKeysSecretClient,Oi as AuthManager,le as BEDROCK_EMBEDDING_MODEL_NAMES,Pe as BUILT_IN_AGENT_ID,Je as BUILT_IN_DB_INTEGRATION_ID,Ye as BUILT_IN_QUEUE_INTEGRATION_ID,Xe as BUILT_IN_STORAGE_INTEGRATION_ID,Re as BULK_INGESTION_EMBEDDING_MODELS,qe as BULK_INGESTION_MAX_MULTIPART_FILE_BYTES,en as BackendFunctionManager,vn as BaseQueryBuilder,dt as CLIENT_CONNECTION_STATES,on as CLIENT_ID_GENERATOR_KEY,an as CLIENT_REQUEST_ID_GENERATOR_KEY,Ue as CONNECTOR_IDS,kn as Changes,rn as ClientIdService,Dn as CollectionReference,qn as CollectionReferenceFactory,An as ConnectionDetails,Q as ConnectorClient,Ge as DATA_INTEGRATION_TYPES,Y as DEFAULT_PII_CLASSIFIER_MODEL,J as DEFAULT_PII_ENTITY_TYPES,Rr as DEFAULT_SHORT_ID_LENGTH,at as DOC_ID_FIELD,Zn as DataManager,Tn as DereferencedJoin,ts as DestructManager,ns as DistributedLockImpl,is as DistributedLockManager,In as DocumentReference,os as DocumentReferenceFactory,as as DocumentStore,mi as EMPTY_CHAT_ID,Be as ENVIRONMENT_IDS,cs as EventsClient,us as ExternalAuthClient,ls as ExtractionClient,jr as FETCH_BEYOND_LIMIT,be as FLUX_MODEL_NAMES,Oe as FOLDER_PATH_METADATA_FIELD,De as FOLDER_PATH_METADATA_FIELD_NAME,Te as FUNCTION_AFFINITY_SCOPES,ne as GEMINI_CHAT_MODEL_NAMES,We as GRAPHQL_INTEGRATION_TYPES,Nr as GREP_KNOWLEDGE_BASE_DEFAULT_MAX_MATCHES,Fr as GREP_KNOWLEDGE_BASE_MAX_MATCHES,xr as GREP_KNOWLEDGE_BASE_MAX_MATCH_LINE_CHARS,Br as GREP_KNOWLEDGE_BASE_MAX_PATTERN_CHARS,se as GROK_CHAT_MODEL_NAMES,Cn as GroupedJoin,Ve as HTTP_INTEGRATION_TYPES,Qe as HttpStatus,ze as INTEGRATION_SCHEMA_TYPES,$e as INTEGRATION_TYPES,Dt as IntegrationClient,ds as JobClient,_n as JoinQueryBuilder,ps as LangGraphClient,hs as LangGraphReference,Yi as LastUsedValueExecuteFunctionCache,Xn as LimitUnderflowState,Qs as LocalQueryManager,Ae as MAX_UPLOAD_FILE_BYTES,Ke as MCP_OAUTH_INTEGRATION_TYPES,st as METRIC_DOMAIN,nt as METRIC_FUNCTIONS,rt as METRIC_INTERVAL_ALIGNMENT,ot as METRIC_NO_DATA_BEHAVIOR,Cs as ManagementClient,Ti as MatchMaker,Ds as MutationSender,Is as NOOP_FN,Os as NativeQueryManager,qs as NotificationClient,ye as OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES,me as OPENAI_AUDIO_MODEL_NAMES,fe as OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES,ie as OPENAI_CHAT_MODEL_NAMES,ce as OPENAI_EMBEDDINGS_MODEL_NAMES,ge as OPENAI_IMAGE_MODEL_NAMES,Me as OPEN_AI_CREATE_SPEECH_FORMATS,Rs as ObservabilityClient,bn as Pagination,Mn as QueryBuilder,wn as QueryBuilderFactory,$s as QuerySender,dr as QuerySubscriptionManager,fr as QueueManagerFactory,mr as QueueManagerImpl,Ne as RAG_TYPES,X as RERANK_PROVIDERS,Yn as RUN_IN_TRANSACTION_MUTEX,Ir as RateLimiter,br as RpcManager,bt as SOURCE_CODE_ANALYZER_MODELS,It as SOURCE_CODE_ANALYZE_FUNCTION_ID,wt as SOURCE_CODE_CACHE_STRATEGIES,vt as SOURCE_CODE_EXECUTION_MODES,Mt as SOURCE_CODE_INTEGRATION_TYPES,Pr as SOURCE_CODE_MAX_REPOSITORIES,Ur as SOURCE_CODE_MAX_SUPPLEMENTAL_INSTRUCTIONS_LENGTH,St as SOURCE_CONTROL_PROVIDERS,et as SQUID_BUILT_IN_INTEGRATION_IDS,it as SQUID_METRIC_NAMES,lt as SQUID_REGIONS,Ie as STABLE_DIFFUSION_MODEL_NAMES,vr as SchedulerClient,Ot as SecretClient,kr as SocketManager,Ar as Squid,bs as SquidClientError,Dr as StorageClient,Ee as VECTOR_DB_TYPES,oe as VENDOR_AI_CHAT_MODEL_NAMES,ue as VOYAGE_EMBEDDING_MODEL_NAMES,Or as WebClient,qr as WebhookManager,wr as assertNotPassiveMode,zi as compareArgsByReference,Ji as compareArgsBySerializedValue,Bs as deserializeQuery,oi as generateId,ci as generateShortId,ui as generateShortIds,si as generateUUID,ri as generateUUIDPolyfill,U as getConsoleUrl,tn as getCustomizationFlag,he as isAiEmbeddingsModelName,tt as isBuiltInIntegrationId,je as isBulkIngestionEmbeddingModel,te as isFileCapableProviderType,Ze as isIntegrationDisabled,pe as isIntegrationEmbeddingModelSpec,_e as isIntegrationModelSpec,xe as isPlaceholderParam,ae as isVendorAiChatModelName,xs as loadQueryResultDocIds,_t as normalizeBitbucketRepositorySelection,kt as normalizeGitHubRepositorySelection,pi as observeAiStatusUpdates,_s as rawSquidHttpDelete,Ss as rawSquidHttpGet,ks as rawSquidHttpPatch,vs as rawSquidHttpPost,Ms as rawSquidHttpPut,Xi as transformFileArgs,Es as tryDeserializing,Fs as visitQueryResults};
|