@squidcloud/client 1.0.412 → 1.0.414
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 +20 -18
- package/dist/internal-common/src/public-types/ai-common.public-types.d.ts +8 -0
- package/dist/internal-common/src/public-types/integration.public-types.d.ts +2 -2
- package/dist/typescript-client/src/agent/ai-agent-client-reference.d.ts +19 -6
- package/dist/typescript-client/src/agent/ai-agent-client.d.ts +12 -1
- package/dist/typescript-client/src/ai-client.d.ts +2 -1
- package/dist/typescript-client/src/distributed-lock.manager.d.ts +6 -2
- package/dist/typescript-client/src/squid.d.ts +2 -0
- package/dist/typescript-client/src/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/internal-common/src/metric-name.d.ts +0 -9
- package/dist/internal-common/src/public-types-backend/api-call.public-context.d.ts +0 -30
- package/dist/internal-common/src/public-types-backend/mutation.public-context.d.ts +0 -148
- package/dist/internal-common/src/public-types-backend/native-query.public-context.d.ts +0 -72
- package/dist/internal-common/src/public-types-backend/query.public-context.d.ts +0 -177
- package/dist/internal-common/src/types/ai-agent.types.d.ts +0 -168
- package/dist/internal-common/src/types/ai-assistant.types.d.ts +0 -1
- package/dist/internal-common/src/types/ai-knowledge-base.types.d.ts +0 -202
- package/dist/internal-common/src/types/ai-matchmaking.types.d.ts +0 -59
- package/dist/internal-common/src/types/backend-function.types.d.ts +0 -1
- package/dist/internal-common/src/types/communication.types.d.ts +0 -1
- package/dist/internal-common/src/types/document.types.d.ts +0 -1
- package/dist/internal-common/src/types/file.types.d.ts +0 -6
- package/dist/internal-common/src/types/headers.types.d.ts +0 -17
- package/dist/internal-common/src/types/mutation.types.d.ts +0 -1
- package/dist/internal-common/src/types/notification.types.d.ts +0 -5
- package/dist/internal-common/src/types/observability.types.d.ts +0 -78
- package/dist/internal-common/src/types/query.types.d.ts +0 -13
- package/dist/internal-common/src/types/secret.types.d.ts +0 -2
- package/dist/internal-common/src/types/socket.types.d.ts +0 -1
- package/dist/internal-common/src/types/stage.d.ts +0 -9
- package/dist/internal-common/src/types/time-units.d.ts +0 -1
- package/dist/internal-common/src/types/url-shortener.types.d.ts +0 -41
- package/dist/internal-common/src/utils/array.d.ts +0 -7
- package/dist/internal-common/src/utils/e2e-test-utils.d.ts +0 -2
- package/dist/internal-common/src/utils/global.utils.d.ts +0 -1
- package/dist/internal-common/src/utils/http.d.ts +0 -5
- package/dist/internal-common/src/utils/lock.manager.d.ts +0 -14
- package/dist/internal-common/src/utils/metric-utils.d.ts +0 -4
- package/dist/internal-common/src/utils/metrics.types.d.ts +0 -7
- package/dist/internal-common/src/utils/object.d.ts +0 -58
- package/dist/internal-common/src/utils/serialization.d.ts +0 -17
- package/dist/internal-common/src/utils/squid.constants.d.ts +0 -1
- package/dist/internal-common/src/utils/trace-id-generator.d.ts +0 -1
- package/dist/internal-common/src/utils/validation.d.ts +0 -19
- package/dist/internal-common/src/websocket.impl.d.ts +0 -26
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"ws";import{BehaviorSubject as t,NEVER as n,Observable as i,ReplaySubject as s,Subject as r,combineLatest as o,combineLatestWith as a,concatMap as c,debounceTime as u,defaultIfEmpty as l,defer as h,delay as d,distinctUntilChanged as p,filter as g,finalize as f,first as y,firstValueFrom as m,from as b,interval as I,lastValueFrom as v,map as w,of as S,pairwise as M,race as k,share as T,skip as C,startWith as O,switchAll as _,switchMap as E,take as q,takeUntil as D,takeWhile as A,tap as R,timer as N}from"rxjs";var F={150:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var s=Object.getOwnPropertyDescriptor(t,n);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,s)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0});const r=n(642);t.default=r.PromisePool,s(n(273),t),s(n(642),t),s(n(837),t),s(n(426),t),s(n(858),t),s(n(172),t)},172:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class n 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=n},220:t=>{t.exports=e},234:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolExecutor=void 0;const i=n(642),s=n(172),r=n(837),o=n(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],taskTimeout:0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw s.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}processedCount(){return this.processedItems().length}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw 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(i.PromisePool.notRun),this):this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=i.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 n=this.createTaskFor(e,t).then(e=>{this.save(e,t).removeActive(n)}).catch(async i=>{await this.handleErrorFor(i,e,t),this.removeActive(n)}).finally(()=>{this.processedItems().push(e),this.runOnTaskFinishedHandlers(e)});this.tasks().push(n),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[n,i]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),n()]).finally(i)}createTaskTimeout(e){let t;return[async()=>new Promise((n,i)=>{t=setTimeout(()=>{i(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,n){if(this.shouldUseCorrespondingResults()&&(this.results()[n]=i.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())}}},273:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},426:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},642:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const i=n(234);class s{constructor(e){this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new 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}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new i.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=s,s.notRun=Symbol("notRun"),s.failed=Symbol("failed")},837:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class n 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=n},858:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class n extends Error{}t.StopThePromisePoolError=n}},x={};function j(e){var t=x[e];if(void 0!==t)return t.exports;var n=x[e]={exports:{}};return F[e].call(n.exports,n,n.exports,j),n.exports}j.d=(e,t)=>{for(var n in t)j.o(t,n)&&!j.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const P=["aiData","api","application","application-kotlin","auth","backend-function","connector","integration","internal-storage","internalCodeExecutor","mutation","native-query","observability","openapi","query","queue","quota","scheduler","secret","storage","webhooks","ws","personalStorage","internal-extraction","notification"];function B(e,t,n,i,s,r){let o="https",a=`${i||t}.${s||e}.${new URL("https://squid.cloud").host}`,c="";/^local/.test(e)&&(o="http",c=P.includes(n.replace(/^\//,"").split("/")[0]||"")||r?"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=n.replace(/^\/+/,"");return l?`${u}/${l}`:u}function Q(e,t,n=""){return B(function(e,t){return t||(e.includes("sandbox")?"us-east-1.aws.sandbox":e.includes("local")?"local":e.includes("staging")?"us-central1.gcp.staging":"us-east-1.aws")}(e,t),"console",n)}class L{constructor(e,t,n,i){this.rpcManager=e,this.iacBaseUrl=Q(t,i,`openapi/iac/applications/${n}/integrations`)}async list(e){const t=await this.rpcManager.get(this.iacBaseUrl);return e?t.filter(t=>t.type===e):t}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}}class U{constructor(e){this.rpcManager=e}get apiKeys(){return new $(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 n={keys:[e],force:t};return this.rpcManager.post("secret/delete",n)}async deleteMany(e,t=!1){if(0===e.length)return;const n={keys:e,force:t};return this.rpcManager.post("secret/delete",n)}}class ${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 G{constructor(e,t,n,i){this.rpcManager=e,this.region=t,this.appId=n,this.consoleRegion=i,this.integrationClient=new L(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new U(this.rpcManager)}integrations(){return this.integrationClient}secrets(){return this.secretClient}}function H(e){return"function"==typeof e}function W(e){return function(t){if(function(e){return H(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 n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},V(e,t)};function K(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}V(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function z(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function J(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,s,r=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=r.next()).done;)o.push(i.value)}catch(e){s={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(s)throw s.error}}return o}function Y(e,t,n){if(n||2===arguments.length)for(var i,s=0,r=t.length;s<r;s++)!i&&s in t||(i||(i=Array.prototype.slice.call(t,0,s)),i[s]=t[s]);return e.concat(i||Array.prototype.slice.call(t))}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var Z,X=((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 ee(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var te=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,n,i,s;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(H(c))try{c()}catch(e){s=e instanceof X?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=z(u),h=l.next();!h.done;h=l.next()){var d=h.value;try{ne(d)}catch(e){s=null!=s?s:[],e instanceof X?s=Y(Y([],J(s)),J(e.errors)):s.push(e)}}}catch(e){n={error:e}}finally{try{h&&!h.done&&(i=l.return)&&i.call(l)}finally{if(n)throw n.error}}}if(s)throw new X(s)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)ne(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).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)&&ee(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&ee(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function ne(e){H(e)?e():e.unsubscribe()}te.EMPTY;var ie={setTimeout:function(e,t){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var s=ie.delegate;return(null==s?void 0:s.setTimeout)?s.setTimeout.apply(s,Y([e,t],J(n))):setTimeout.apply(void 0,Y([e,t],J(n)))},clearTimeout:function(e){var t=ie.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function se(){}var re=oe("C",void 0,void 0);function oe(e,t,n){return{kind:e,value:t,error:n}}var ae=function(e){function t(t){var n,i=e.call(this)||this;return i.isStopped=!1,t?(i.destination=t,((n=t)instanceof te||n&&"closed"in n&&H(n.remove)&&H(n.add)&&H(n.unsubscribe))&&t.add(i)):i.destination=de,i}return K(t,e),t.create=function(e,t,n){return new ue(e,t,n)},t.prototype.next=function(e){this.isStopped?he(function(e){return oe("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?he(oe("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?he(re,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}(te);Function.prototype.bind;var ce=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){le(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){le(e)}else le(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){le(e)}},e}(),ue=function(e){function t(t,n,i){var s,r=e.call(this)||this;return s=H(t)||!t?{next:null!=t?t:void 0,error:null!=n?n:void 0,complete:null!=i?i:void 0}:t,r.destination=new ce(s),r}return K(t,e),t}(ae);function le(e){!function(e){ie.setTimeout(function(){throw e})}(e)}function he(e,t){var n=null;n&&ie.setTimeout(function(){return n(e,t)})}var de={closed:!0,next:se,error:function(e){throw e},complete:se};function pe(e,t,n,i,s){return new ge(e,t,n,i,s)}var ge=function(e){function t(t,n,i,s,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=n?function(e){try{n(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=i?function(){try{i()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return K(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(ae);function fe(e,t){return W(function(n,i){var s=0;n.subscribe(pe(i,function(n){i.next(e.call(t,n,s++))}))})}function ye(e){return null!=e}let me=e=>new Error(e);function be(e,t,...n){e||function(e,...t){const n=ve(e);if("object"==typeof n)throw n;throw me(n||"Assertion error",...t)}(t,...n)}function Ie(e,t,...n){return be(e,t,...n),e}function ve(e){return void 0===e?"":"string"==typeof e?e:e()}function we(e,t,n){const i=ve(e);if("object"==typeof i)throw i;return`${i?`${i}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(n)}`}const Se=["dev","prod"],Me="built_in_agent";function ke(){return globalThis.crypto.randomUUID()}function Te(){return ke()}const Ce=18;function Oe(e=18,t=""){be(t.length<e,"ID prefix is too long");let n="";for(let t=0;t<e;t++)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()));return t.length>0&&(n=t+n.substring(t.length)),n}function _e({count:e,length:t,prefix:n}){be(e>=0,`Invalid IDs count: ${e}`);const i=new Set;for(;i.size<e;)i.add(Oe(t||18,n||""));return[...i]}const Ee=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function qe(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)qe(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)qe(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(Ee.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${Ee.join(", ")}`);const n=e[t];if("object"!=typeof n&&"string"!=typeof n&&"number"!=typeof n&&"boolean"!=typeof n)throw new Error(`Invalid metadata filter value for key ${t} - cannot be of type ${typeof n}`)}}function De(e,t,n){const i=atob(e),s=new Uint8Array(i.length);for(let e=0;e<i.length;e++)s[e]=i.charCodeAt(e);return new File([s],t,{type:n||"application/octet-stream"})}class Ae{constructor(e,t,n,i,s,r){this.agentId=e,this.ongoingChatSequences=t,this.rpcManager=n,this.socketManager=i,this.jobClient=s,this.backendFunctionManager=r}async get(){const e=await this.rpcManager.post("ai/agent/getAgent",{agentId:this.agentId});return e?.agent}async upsert(e){await this.rpcManager.post("ai/agent/upsertAgent",{...e,id:this.agentId})}async delete(){await this.rpcManager.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 n={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",n)}async updateCustomGuardrails(e){await this.rpcManager.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.rpcManager.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}chat(e,t,n){return this.chatInternal(e,t,n).responseStream}async transcribeAndChat(e,t,n){const i=this.chatInternal(e,t,n),s=await Ie(i.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:i.responseStream,transcribedPrompt:s.transcribedPrompt}}async search(e){be(this.agentId!==Me,"Cannot search the built-in agent");const t={options:e,agentId:this.agentId};return(await this.rpcManager.post("ai/chatbot/search",t)).chunks}async ask(e,t,n){const i=await this.askInternal(e,!1,t,n);return this.replaceFileTags(i.responseString,i.annotations)}async askWithAnnotations(e,t,n){const i=await this.askInternal(e,!1,t,n);return{responseString:i.responseString,annotations:i.annotations}}async askAsync(e,t,n){const i={agentId:this.agentId,prompt:e,options:n,jobId:t};await this.rpcManager.post("ai/chatbot/askAsync",i)}observeStatusUpdates(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"aiStatus"===e.type&&e.agentId===this.agentId),fe(e=>({agentId:this.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,messageId:e.messageId})))}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.rpcManager.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,n){return await this.askInternal(e,!1,t,n)}async transcribeAndAskWithVoiceResponse(e,t,n){const i=await this.askInternal(e,!0,t,n),s=i.voiceResponse;return{responseString:i.responseString,transcribedPrompt:i.transcribedPrompt,voiceResponseFile:De(s.base64File,`voice.${s.extension}`,s.mimeType)}}async askWithVoiceResponse(e,t,n){const i=await this.askInternal(e,!0,t,n),s=i.voiceResponse;return{responseString:i.responseString,voiceResponseFile:De(s.base64File,`voice.${s.extension}`,s.mimeType)}}async setAgentOptionInPath(e,t){await this.rpcManager.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}async provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}replaceFileTags(e,t={}){let n=e;for(const[e,i]of Object.entries(t)){let t="";const s=i.aiFileUrl.fileName?i.aiFileUrl.fileName:i.aiFileUrl.url;switch(i.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${s}](${i.aiFileUrl.url})`}n=n.replace(`\${id:${e}}`,t)}return n}async askInternal(e,t,n,i){if(n?.contextMetadataFilter&&qe(n.contextMetadataFilter),n?.contextMetadataFilterForKnowledgeBase)for(const e in n.contextMetadataFilterForKnowledgeBase)qe(n.contextMetadataFilterForKnowledgeBase[e]);i=i||ke(),n={...Re,...n||{}};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:n,jobId:i},a=s?void 0:[e];return await this.rpcManager.post(r,o,a,"file"),await this.jobClient.awaitJob(i)}chatInternal(e,t,n){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&qe(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)qe(t.contextMetadataFilterForKnowledgeBase[e]);const i=ke(),s=void 0===(t={...Re,...t||{}}).smoothTyping||t.smoothTyping;let o="";const a=new r,u=new r;this.ongoingChatSequences[i]=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:n})=>t?S({value:e,complete:t,annotations:n}):S(e).pipe(s?d(0):R(),fe(e=>({value:e,complete:!1,annotations:void 0})))),A(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:n})=>{o+=e,t&&n&&(o=this.replaceFileTags(o,n)),a.next(o)},error:e=>{console.error(e)},complete:()=>{a.complete()}});const h="string"==typeof e;n=n||ke();const p={agentId:this.agentId,jobId:n,prompt:h?e:void 0,options:t,clientRequestId:i},g={responseStream:a.pipe(f(()=>{delete this.ongoingChatSequences[i]}),T())};return h?this.rpcManager.post("ai/chatbot/chat",p).catch(e=>{a.error(e),a.complete()}):this.rpcManager.post("ai/chatbot/transcribeAndChat",p,[e],"file").catch(e=>{throw a.error(e),a.complete(),e}),g.serverResponse=this.jobClient.awaitJob(n).catch(e=>{a.error(e),a.complete()}),g}}const Re={smoothTyping:!0,responseFormat:"text"};class Ne{constructor(e,t,n,i){this.rpcManager=e,this.socketManager=t,this.jobClient=n,this.backendFunctionManager=i,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe(g(e=>"aiChatbot"===e.type),fe(e=>e)).subscribe(e=>{this.handleChatResponse(e).then()})}agent(e){return new Ae(e,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:n,complete:i,tokenIndex:s,annotations:r}=e.payload;if(i&&!n.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(n.match(/\[.*?]\((.*?)\)/g))t.next({value:n,complete:i,tokenIndex:void 0===s?void 0:s,annotations:r});else for(let e=0;e<n.length;e++)t.next({value:n[e],complete:i&&e===n.length-1,tokenIndex:void 0===s?void 0:s,annotations:r})}}const Fe="__squid_empty_chat_id";class xe{constructor(e){this.rpcManager=e}async createAssistant(e,t,n,i){const s={name:e,instructions:t,functions:n,toolTypes:i};return(await this.rpcManager.post("ai/assistant/createAssistant",s)).assistantId}async deleteAssistant(e){const t={assistantId:e};await this.rpcManager.post("ai/assistant/deleteAssistant",t)}async createThread(e){const t={assistantId:e};return(await this.rpcManager.post("ai/assistant/createThread",t)).threadId}async deleteThread(e){const t={threadId:e};await this.rpcManager.post("ai/assistant/deleteThread",t)}async queryAssistant(e,t,n,i,s){const r={assistantId:e,threadId:t,prompt:n,fileIds:i,options:s};return(await this.rpcManager.post("ai/assistant/queryAssistant",r)).answer}async addFileToAssistant(e,t){const n={assistantId:e};return(await this.rpcManager.post("ai/assistant/addFileToAssistant",n,[t],"file")).fileId}async removeFileFromAssistant(e,t){const n={assistantId:e,fileId:t};await this.rpcManager.post("ai/assistant/removeFileFromAssistant",n)}async addFileToThread(e,t){const n={threadId:e};return(await this.rpcManager.post("ai/assistant/addFileToThread",n,[t],"file")).fileId}}class je{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 n={input:e,options:t},i=await this.rpcManager.post("ai/audio/createSpeech",n);return De(i.base64File,`audio.${i.extension}`,i.mimeType)}}class Pe{constructor(e){this.rpcManager=e}async generate(e,t){const n={prompt:e,options:t};return await this.rpcManager.post("ai/image/generate",n)}async removeBackground(e){return await this.rpcManager.post("ai/image/removeBackground",{},[e])}}function Be(e){for(const t in e){const n=e[t];be("string"==typeof n||"number"==typeof n||"boolean"==typeof n||void 0===n,`Invalid metadata value for key ${t} - cannot be of type ${typeof n}`),be(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}class Qe{constructor(e,t,n){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=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 delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e})).context}async deleteContext(e){await this.deleteContexts([e])}async deleteContexts(e){await this.rpcManager.post("ai/knowledge-base/deleteContexts",{knowledgeBaseId:this.knowledgeBaseId,contextIds:e})}async upsertContext(e,t){const{failures:n}=await this.upsertContexts([e],t?[t]:void 0);return n.length>0?{failure:n[0]}:{}}async upsertContexts(e,t){for(const t of e)t.metadata&&Be(t.metadata);const n=ke();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:n},t),await this.jobClient.awaitJob(n)}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class Le{constructor(e,t){this.rpcManager=e,this.jobClient=t}knowledgeBase(e){return new Qe(e,this.rpcManager,this.jobClient)}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async delete(e){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:e})}}class Ue{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new $e(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new $e(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class $e{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 Ge=["user","ai"],He="parent",We="result",Ve=["cohere","none"],Ke=["anthropic","flux","gemini","openai","grok","stability","voyage","external"],ze=["o1","o3","o3-mini","o4-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","gpt-4o","gpt-4o-mini"],Je=["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite"],Ye=["grok-3","grok-3-fast","grok-3-mini","grok-3-mini-fast","grok-4","grok-4-fast-reasoning","grok-4-fast-non-reasoning"],Ze=["claude-3-7-sonnet-latest","claude-haiku-4-5-20251001","claude-opus-4-20250514","claude-opus-4-1-20250805","claude-sonnet-4-20250514","claude-sonnet-4-5-20250929"],Xe=[...ze,...Ze,...Je,...Ye];function et(e){return Xe.includes(e)}const tt=["text-embedding-3-small"],nt=["voyage-3-large"],it=[...tt,...nt],st=["dall-e-3"],rt=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],ot=["tts-1","tts-1-hd","gpt-4o-mini-tts"],at=[...rt,...ot],ct=["stable-diffusion-core"],ut=["flux-pro-1.1","flux-kontext-pro"],lt=[...st,...ct,...ut],ht=[...rt],dt=[...ot],pt=["mp3","opus","aac","flac","wav","pcm"],gt=["contextual","basic"],ft=["secret","regular"];function yt(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const mt={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},bt="ai_agents",It=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","dynamodb","elasticsearch","firebase_auth","firestore","gcs","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jwt_hmac","jwt_rsa","kafka","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","oracledb","pinecone","postgres","redis","s3","salesforce_crm","sap_hana","sentry","servicenow","snowflake","spanner","xata","zendesk","mail","slack","mcp","a2a","legend"],vt=["bigquery","built_in_db","clickhouse","cockroach","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],wt=["auth0","jwt_rsa","jwt_hmac","cognito","okta","descope","firebase_auth"],St=["graphql","linear"],Mt=["api"],kt=["data","api","graphql"],Tt="built_in_db",Ct="built_in_queue",Ot="built_in_storage",_t=[Tt,Ct,Ot];function Et(e){return _t.includes(e)}const qt=["squid_functionExecution_count","squid_functionExecution_time"],Dt=["sum","max","min","average","median","p95","p99","count"],At=["user","squid"],Rt=["align-by-start-time","align-by-end-time"],Nt=["in","not in","array_includes_some","array_includes_all","array_not_includes"],Ft=[...Nt,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],xt=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],jt=["CONNECTED","DISCONNECTED","REMOVED"];class Pt{constructor(e,t,n,i){this.socketManager=e,this.rpcManager=t,this.jobClient=n,this.backendFunctionManager=i,this.aiAssistantClient=new xe(this.rpcManager)}agent(e=Me){return this.getAiAgentClient().agent(e)}knowledgeBase(e){return this.getAiKnowledgeBaseClient().knowledgeBase(e)}async listAgents(){return this.getAiAgentClient().listAgents()}async listKnowledgeBases(){return this.getAiKnowledgeBaseClient().listKnowledgeBases()}assistant(){return this.aiAssistantClient}image(){return new Pe(this.rpcManager)}audio(){return new je(this.rpcManager)}matchMaking(){return new Ue(this.rpcManager)}executeAiQuery(e,t,n){const i={integrationId:e,prompt:t,options:n};return this.rpcManager.post("ai/query/executeDataQuery",i)}executeAiApiCall(e,t,n,i){const s={integrationId:e,prompt:t,allowedEndpoints:n,provideExplanation:i};return this.rpcManager.post("ai/query/executeApiQuery",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 n={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",n)).settings}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new Ne(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new Le(this.rpcManager,this.jobClient)),this.aiKnowledgeBaseClient}}const Bt={headers:{},queryParams:{},pathParams:{}};class Qt{constructor(e){this.rpcManager=e}async get(e,t,n){return this.request(e,t,void 0,n,"get")}async post(e,t,n,i){return this.request(e,t,n,i,"post")}async delete(e,t,n,i){return this.request(e,t,n,i,"delete")}async patch(e,t,n,i){return this.request(e,t,n,i,"patch")}async put(e,t,n,i){return this.request(e,t,n,i,"put")}async request(e,t,n,i,s){const r={integrationId:e,endpointId:t,body:n,options:{...Bt,...this.convertOptionsToStrings(i||{})},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 Lt{constructor(e,t){this.apiKey=e,this.authProvider=t}setAuthProvider(e){this.authProvider=e}async getAuthData(){return{token:await this.getTokenFromAuthProvider(),integrationId:this.authProvider?.integrationId}}getApiKey(){return this.apiKey}async getToken(){if(this.apiKey)return{type:"ApiKey",token:this.apiKey};const e=await this.getTokenFromAuthProvider();return e?{type:"Bearer",token:e,integrationId:this.authProvider?.integrationId}:void 0}async getTokenFromAuthProvider(){const e=this.authProvider?.getToken();return"object"==typeof e?await e:e}}const Ut=/[.\[\]]/;function $t(e,t){if(!e)return;const n=t.split(Ut);let i,s=e;for(;s&&n.length;){const e=n.shift();if(e){if("object"!=typeof s||!(e in s))return;i=s[e],s=i}}return i}function Gt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Ht(e,t,n,i="."){const s=t.split(i);let r=e;for(;s.length;){const e=Ie(s.shift());if(s.length){const t=r[e],n=Gt(t)?Zt(t)??{}:{};r[e]=n,r=n}else r[e]=n}}function Wt(e,t,n="."){const i=t.split(n);let s=e;for(;i.length;){const e=Ie(i.shift());if(i.length){const t=Gt(s[e])?Zt(s[e])??{}:{};s[e]=t,s=t}else delete s[e]}}function Vt(e,t,n){if(e.has(t)){const i=e.get(t);e.delete(t),e.set(n,i)}}function Kt(e){return null==e}function zt(e,t){if(e===t)return!0;if(null===e||null===t)return!1;const n=typeof e;if(n!==typeof t)return!1;if("object"!==n)return e===t;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();const i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(const n of i)if(!s.includes(n)||!zt(e[n],t[n]))return!1;return!0}function Jt(e,t){const n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=Yt(e[i],t);return n}function Yt(e,t){const n=t?t(e):void 0;if(void 0!==n)return n;if("object"!=typeof e||null===e)return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return Jt(e,t);if(e instanceof Map)return new Map(Jt(Array.from(e),t));if(e instanceof Set)return new Set(Jt(Array.from(e),t));if(ArrayBuffer.isView(e))return(i=e)instanceof Buffer?Buffer.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length);var i;const s={};for(const n in e)Object.hasOwnProperty.call(e,n)&&(s[n]=Yt(e[n],t));return s}function Zt(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 Xt(e,t){if(e===t||Kt(e)&&Kt(t))return 0;if(Kt(e))return-1;if(Kt(t))return 1;const n=typeof e,i=typeof t;return n!==i?n<i?-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 en(e,t){return e.reduce((e,n)=>{const i=t(n);return e[i]?e[i].push(n):e[i]=[n],e},{})}function tn(e){if(Array.isArray(e))return e.map(e=>tn(e));if("object"!=typeof e||null===e||e instanceof Date)return e;const t=Object.keys(e),n={};return t.sort().forEach(t=>{n[t]=tn(e[t])}),n}function nn(e){return sn(tn(e))}function sn(e){if(void 0===e)return null;const t=Yt(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function rn(e){return Yt(JSON.parse(e),e=>{if(null===e||"object"!=typeof e)return;const t=e,n=t.$date;return n&&1===Object.keys(t).length?new Date(n):void 0})}function on(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=sn(e);if("undefined"!=typeof Buffer)return Buffer.from(t,"utf8").toString("base64");{const e=(new TextEncoder).encode(t);let n="";for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return btoa(n)}}const an=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0},cn=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(sn(e[n])!==sn(t[n]))return!1;return!0};class un{constructor(e){this.options=e}get(e){const t=this.cachedEntry,n=this.options.argsComparator||an,i=this.options.valueExpirationMillis||1/0;return t&&Date.now()<t.cacheTimeMillis+i&&n(t.args,e)?{found:!0,value:t.result}:{found:!1}}set(e,t){this.cachedEntry={args:e,result:t,cacheTimeMillis:Date.now()}}}function ln(e){const t=[],n=[];let i=0;for(const s of e)if("undefined"!=typeof File)if(s instanceof File){n.push(s);const e={type:"file",__squid_placeholder__:!0,fileIndex:i++};t.push(e)}else if(hn(s)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:s.map((e,t)=>(n.push(s[t]),i++))};t.push(e)}else t.push(s);else t.push(s);return{argsArray:t,fileArray:n}}function hn(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class dn{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...n){const{argsArray:i,fileArray:s}=ln(n),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(i);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?an:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,i));if(t)return t.promise}const u=this.createExecuteCallPromise(r,i,s,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:i,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}createExecuteCallPromise(e,t,n,i,s={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:sn(t)};return m(k(b(this.rpcManager.post(r,o,n.length>0?n:[],"files",s)).pipe(fe(e=>{if(!e.success)throw new Error(e.payload);const n=rn(e.payload);if(n?.__isSquidBase64File__){const e=n;return De(e.base64,e.filename,e.mimetype)}return i&&i.set(t,n),n}))))}}function pn(e){if("undefined"!=typeof globalThis)return globalThis[e]}function gn(){if("undefined"!=typeof window)return window;if(void 0!==j.g)return j.g;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}!function(e=!0){gn().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 fn{static debug(...e){(function(){const e=gn();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=gn();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class yn{constructor(e){this.destructManager=e,this.clientTooOldSubject=new t(!1),this.isTenant=!0===gn().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),w(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe(C(1),g(e=>!e),w(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=gn()[bn];return e?e():ke()}generateClientId(){const e=gn()[mn];if(e)return e();let t=`${this.isTenant?"tenant-":""}${ke()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const mn="SQUID_CLIENT_ID_GENERATOR",bn="SQUID_CLIENT_REQUEST_ID_GENERATOR",In="__squidId";function vn(e){return rn(e)}function wn(...e){const[t,n,i]=e,s="object"==typeof t?t:{docId:t,collectionName:n,integrationId:i};return s.integrationId||(s.integrationId=void 0),nn(s)}function Sn(e,t,n){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===n)return zt(e,t);if("!="===n)return!zt(e,t);switch(n){case"<":return!Kt(e)&&(!!Kt(t)||t<e);case"<=":return!!Kt(t)||!Kt(e)&&t<=e;case">":return!Kt(t)&&(!!Kt(e)||t>e);case">=":return!!Kt(e)||!Kt(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Mn(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Mn(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Mn(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Mn(t,e,!0));case"array_includes_some":{const n=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>Ie(n,"VALUE_CANNOT_BE_NULL").some(t=>zt(t,e)))}case"array_includes_all":{const n=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>Ie(n,"VALUE_CANNOT_BE_NULL").some(t=>zt(t,e)))}case"array_not_includes":{const n=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!Ie(n,"VALUE_CANNOT_BE_NULL").some(t=>zt(t,e)))}default:throw new Error(`Unsupported operator comparison: ${n}`)}}function Mn(e,t,n){n||(e=e.toLowerCase(),t=t.toLowerCase());const i=function(e){let t="";for(let n=0;n<e.length;++n)"\\"===e[n]?n+1<e.length&&["%","_"].includes(e[n+1])?(t+=e[n+1],n++):n+1<e.length&&"\\"===e[n+1]?(t+="\\\\",n++):t+="\\":"%"===e[n]?t+="[\\s\\S]*":"_"===e[n]?t+="[\\s\\S]":("/-\\^$*+?.()[]{}|".includes(e[n])&&(t+="\\"),t+=e[n]);return t}(t);return new RegExp(`^${i}$`).test(e)}function kn(e,t){return`${e}_${t}`}function Tn(e){return"fieldName"in e}class Cn{constructor(e,t,n){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=n,this.refId=ke()}get squidDocId(){return this._squidDocId}get data(){return Yt(this.dataRef)}get dataRef(){return Ie(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:n}=vn(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:n,collectionName:e,integrationId:t},null,2)}`})}get hasData(){return!!this.dataManager.getProperties(this.squidDocId)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return Ie(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(w(e=>(Ie(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 n={};Object.entries(e).forEach(([e,t])=>{const i=void 0!==t?{type:"update",value:t}:{type:"removeProperty"};n[e]=[i]});const i={type:"update",squidDocIdObj:vn(this.squidDocId),properties:n};return this.dataManager.applyOutgoingMutation(i,t)}async setInPath(e,t,n){return this.update({[e]:Yt(t)},n)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,n){const i={type:"applyNumericFn",fn:"increment",value:t},s={type:"update",squidDocIdObj:vn(this.squidDocId),properties:{[e]:[i]}};return this.dataManager.applyOutgoingMutation(s,n)}decrementInPath(e,t,n){return this.incrementInPath(e,-t,n)}async insert(e,t){const n=vn(this.squidDocId),i=n.integrationId;let s=rn(n.docId);if(s[In]&&(s={}),i===Tt&&s.__id)try{const e=rn(s.__id);s={...s,...e}}catch{}const r={type:"insert",squidDocIdObj:n,properties:{...e,__docId__:n.docId,...s}};return this.dataManager.applyOutgoingMutation(r,t)}async delete(e){const t={type:"delete",squidDocIdObj:vn(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}hasSquidPlaceholderId(){const e=rn(this._squidDocId);if("object"==typeof e&&e.docId){const t=rn(e.docId);if("object"==typeof t&&Object.keys(t).includes(In))return!0}return!1}}class On{constructor(e,n={}){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(_()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...n},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),w(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(w(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||Kt(e)&&Kt(t))return 0;if(Kt(e))return-1;if(Kt(t))return 1;const n=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:i,asc:s}of n){const n=Xt($t(e,i),$t(t,i));if(0!==n)return s?n:-n}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 n=t.filter(e=>1===this.compareObjects(e,this.lastElement)).length;this.firstElement=t[e.length-n-this.paginateOptions.pageSize],this.lastElement=null}else this.navigatingToLastPage&&(this.firstElement=t[e.length-this.paginateOptions.pageSize],this.navigatingToLastPage=!1);const n=t.filter(e=>-1===this.compareObjects(e,this.firstElement)).length,i=Math.max(0,e.length-n-this.paginateOptions.pageSize);n!==e.length?this.internalStateObserver.next({numBefore:n,numAfter:i,data:e,extractedData:t}):this.prevInternal({numBefore:n,numAfter:i,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:$t(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe(w(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:$t(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),w(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe(g(e=>null!==e),q(1))))}internalStateToState(e){const{data:t,numBefore:n,numAfter:i,extractedData:s}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(s[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:i>0,hasPrev:n>0}}prevInternal(e){const{numBefore:t,numAfter:n,extractedData:i}=e;this.firstElement=null,this.lastElement=i[t-1],this.internalStateObserver.next(null),this.doNewQuery(i[i.length-n-1],!0)}}Error;class _n{constructor(e,t,n,i){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=n,this.documentIdentityService=i}getForDocument(e){const{collectionName:t,integrationId:n,docId:i}=vn(e),s=rn(i),r=this.get(t,n);for(const[e,t]of Object.entries(s))r.where(e,"==",t);return r}get(e,t){return new Dn(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService)}}class En{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,n){return this.throwIfInvalidLikePattern(t),this.where(e,n?"like_cs":"like",t)}notLike(e,t,n){return this.throwIfInvalidLikePattern(t),this.where(e,n?"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 qn{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(fe(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new qn(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new On(this,e)}}class Dn extends En{constructor(e,t,n,i,s,r,o){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=n,this.localQueryManager=i,this.documentReferenceFactory=s,this.queryBuilderFactory=r,this.documentIdentityService=o,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return on(this.build())}where(e,t,n){if(be(Ft.includes(t),`Invalid operator: ${t}`),"in"===t||"not in"===t){const i=Array.isArray(n)?[...n]:[n];"in"===t&&0===i.length&&(this.containsEmptyInCondition=!0);for(const n of i)this.query.conditions.push({fieldName:e,operator:"in"===t?"==":"!=",value:n});return this}return this.query.conditions.push({fieldName:e,operator:t,value:n}),this}limit(e){return function(e){var t;be(function(e){return"number"==typeof e}(t=e),()=>we("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 n=this.query.sortOrder.map(e=>e.fieldName);return be(zt(t.sort(),n.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 n={asc:t,fieldName:e};return function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var n,i,s,r;be((n=t,i=["fieldName","asc"],!Array.isArray(n)&&[...Object.keys(n)].every(e=>i.includes(e))),"Field sort should only contain a fieldName and asc"),be((s=t.asc,r="boolean",Array.isArray(s)?s.every(e=>typeof e===r):typeof s===r),"Asc needs to be boolean")}(n),be(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.sortOrder.push(n),this}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 n=this.build();return this.querySubscriptionManager.processQuery(n,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(fe(e=>e.map(e=>{be(1===Object.keys(e).length);const t=wn(Ie(e[this.collectionName]).__docId__,this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)})))}changes(){let e,t=new Set;return this.snapshots().pipe(a(this.documentIdentityService.observeChanges().pipe(E(t=>(Object.entries(t).forEach(([t,n])=>{!function(e,t,n){const i=e[t];void 0!==i&&(e[n]=i,delete e[t])}(e||{},t,n)}),n)),O({}))),fe(([n])=>{let i=[];const s=[],r=[];if(e){for(const r of n){const n=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[n],t.delete(o);else if(e[n]){s.push(r);const i=e[n];delete e[n],t.delete(i)}else i.push(r)}for(const e of t)r.push(e)}else i=n;e={},t=new Set;for(const i of n){const n=i.dataRef;e[i.squidDocId]=n,t.add(n)}return new An(i,s,r)}))}dereference(){return new qn(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new Dn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService);return e.query=Yt(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){return e.length?(this.query.conditions.push({fields:e}),this):this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new On(this,e)}mergeConditions(){const e=[],t=en(this.query.conditions.filter(Tn)||[],e=>e.fieldName);for(const n of Object.values(t)){const t=en(n,e=>e.operator);for(const[n,i]of Object.entries(t)){if("=="===n||"!="===n){e.push(...i);continue}const t=[...i];t.sort((e,t)=>Xt(e.value,t.value)),">"===n||">="===n?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!Tn(e)),...e]}}class An{constructor(e,t,n){this.inserts=e,this.updates=t,this.deletes=n}}class Rn extends En{constructor(e,t,n,i,s,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=n,this.documentReferenceFactory=i,this.queryBuilderFactory=s,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,n){return this.queryBuilder.where(e,t,n),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}join(e,t,n,i){const s=i?.leftAlias??this.latestAlias,r={...n,leftAlias:s,isInner:i?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[s].push(t),new Rn(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,Yt(this.joins),Yt(this.joinConditions),e,!1).pipe(fe(e=>e.map(e=>{const t={};for(const[n,i]of Object.entries(e)){const e=n===this.rootAlias?this.collectionName:this.joins[n].collectionName,s=n===this.rootAlias?this.integrationId:this.joins[n].integrationId,r=i?wn(i.__docId__,e,s):void 0;t[n]=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 xn(this)}dereference(){return new Nn(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new Rn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,Yt(this.leftToRight),Yt(this.joins),Yt(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 On(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class Nn{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(fe(e=>e.map(e=>function(e,t){const n={},i=Object.keys(e);for(const s of i){const i=e[s];n[s]=t(i)}return n}(e,e=>e?.data))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Nn(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 On(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class Fn{constructor(e){this.groupedJoin=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(fe(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 Fn(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 On(this,e)}dereference(e,t){const n=this.groupedJoin.joinQueryBuilder.leftToRight[t];if(n.length){const i={[t]:e[t].data};for(const t of n)i[t]=e[t].map(e=>this.dereference(e,t));return i}return e.data}}class xn{constructor(e){this.joinQueryBuilder=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(fe(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new Fn(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new xn(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 On(this,e)}groupData(e,t){const n=en(e,e=>e[t]?.squidDocId);return Object.values(n).filter(e=>void 0!==e[0][t]).map(e=>{const n=this.joinQueryBuilder.leftToRight[t],i=e[0][t];if(0===n.length)return i;const s={[t]:i};for(const t of n)s[t]=this.groupData(e,t);return s})}}class jn{constructor(e,t,n,i,s,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=n,this.queryBuilderFactory=i,this.querySubscriptionManager=s,this.dataManager=r,this.refId=ke()}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!==Tt)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={[In]:ke()};else e=e&&"string"!=typeof e?{__id:nn(e)}:{__id:e||ke()};const t=wn(nn(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 n of e)await this.doc(n.id).insert(n.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const n of e)n instanceof Cn?await n.delete(t):await this.doc(n).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new Rn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new Pn(...e)}}class Pn{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 n=this.snapshotEmitters[0].getSortOrders();for(const e of this.snapshotEmitters){const t=e.getSortOrders();if(t.length!==n.length)throw new Error("All the queries must have the same sort order");for(let e=0;e<n.length;e++)if(t[e].fieldName!==n[e].fieldName||t[e].asc!==n[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 Pn(...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 On(this,e)}or(e,...t){return o([...t]).pipe(w(t=>{const n=new Set,i=t.flat(),s=[];for(const e of i)n.has(this.extractData(e))||(n.add(this.extractData(e)),s.push(e));return s.sort((t,n)=>{for(const{fieldName:i,asc:s}of e){const e=$t(this.extractData(t),i),r=$t(this.extractData(n),i);if(!Sn(e,r,"=="))return Sn(r,e,"<")?s?-1:1:s?1:-1}return 0}).slice(0,this.getLimit())}))}}class Bn{constructor(e,t,n,i){this.documentReferenceFactory=e,this.queryBuilderFactory=t,this.querySubscriptionManager=n,this.dataManager=i,this.collections=new Map}get(e,t){let n=this.collections.get(t);n||(n=new Map,this.collections.set(t,n));let i=n.get(e);return i||(i=new jn(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),n.set(e,i)),i}}class Qn{constructor(e,t){this.clientIdService=e,this.socketManager=t,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var Ln=j(150);function Un(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?Yt(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function $n(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function Gn(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if(be("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const n=Yt(e);t=Yt(t);for(const[e]of $n(n)){const i=e.split(".").length;Object.entries(t.properties).some(([t])=>e.startsWith(t+".")&&i>t.split(".").length)&&delete n.properties[e]}for(const[e,i]of $n(t))n.properties[e]=Hn([...n.properties[e]||[],...i]);return n}(e,t);const n=Yt(e);for(const[e,i]of $n(t)){const t=i;for(const i of t){const t=Un($t(n.properties,e),i);void 0===t?Wt(n.properties,e):Ht(n.properties,e,t)}}return n}function Hn(e){let t=0;for(;t+1<e.length;){const n=Wn(e[t],e[t+1]);n?e.splice(t,2,n):++t}return e}function Wn(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 Vn(e){const t={};for(const n of e){const e=`${n.squidDocIdObj.integrationId}/${n.squidDocIdObj.collectionName}/${n.squidDocIdObj.docId}`;t[e]||(t[e]=[]),t[e].push(n)}const n=[];for(const e in t){const i=t[e].reduce((e,t)=>Ie(Gn(e,t),"Merge result cannot be null"));n.push(i)}return n}const Kn="dataManager_runInTransaction";class zn{constructor(e,n,i,s,o,a,c,u,l){this.documentStore=e,this.mutationSender=n,this.socketManager=i,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)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),n=t&&!t.expireTimestamp?t.timestamp:void 0,i=this.docIdToLocalTimestamp.get(e);return!((!i||n)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&i===n)}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(Kn)?this.lockManager.lockSync(Kn):await this.lockManager.lock(Kn);let n=Jn;const i=()=>n!==Jn;return new Promise(async(t,s)=>{try{let r;this.currentTransactionId=ke();try{r=await e(this.currentTransactionId)}catch(e){n=e}finally{this.finishTransaction(i()?void 0:{resolve:()=>t(r),reject:s})}}catch(e){n=i()?n:e}finally{try{this.lockManager.release(Kn)}catch(e){n=i()?n:e}}i()&&s(n)})}async applyOutgoingMutation(e,t){const n=wn(e.squidDocIdObj);this.knownDirtyDocs.add(n),t||this.lockManager.canGetLock(Kn)||(await this.lockManager.lock(Kn),this.lockManager.release(Kn)),this.knownDirtyDocs.delete(n);const i=this.pendingOutgoingMutations.get(n)?.slice(-1)[0];if(i&&!i.sentToServer)i.mutation=Ie(Vn([i.mutation,this.removeInternalProperties(e)])[0],"Failed to reduce mutations"),this.outgoingMutationsEmpty.next(!1);else{const t={mutation:this.removeInternalProperties(e),sentToServer:!1},i=this.pendingOutgoingMutations.get(n)||[];i.push(t),this.pendingOutgoingMutations.set(n,i),this.outgoingMutationsEmpty.next(!1),this.pendingOutgoingMutationsChanged.next()}return this.runInTransaction(async()=>{const t=this.documentStore.getDocumentOrUndefined(n),i="delete"===e.type?void 0:"update"===e.type?function(e,t){if(!e)return;const n={...e},i=$n(t);for(const[e,t]of i){const i=t;for(const t of i){const i=Un($t(n,e),t);void 0===i?Wt(n,e):Ht(n,e,i)}}return n}(t,e):{...e.properties};this.updateDocumentFromSnapshot(n,i)&&("insert"===e.type&&this.docIdToLocalTimestamp.set(n,(new Date).getTime()),this.querySubscriptionManager.setClientRequestIdsForLocalDoc(n,i).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(Kn);try{this.currentTransactionId=ke();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(Kn)}}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),fe(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),q(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),q(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t=e.reduce((e,t)=>this.querySubscriptionManager.hasOngoingQuery(t.clientRequestId)?(e[t.squidDocId]={properties:t.doc,timestamp:t.mutationTimestamp},e):e,{});this.applyIncomingUpdates(t)}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId),n={};for(const i of e.docs){const e=wn(i.__docId__,t.collectionName,t.integrationId);n[e]={properties:i,timestamp:i.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyIncomingUpdates(n,t)&&this.querySubscriptionManager.hasSubscription(e.clientRequestId)&&this.batchClientRequestIds.delete(e.clientRequestId)}).then()}applyIncomingUpdates(e,t){let n=!1;const i=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?n=!0:o&&o.timestamp>r.timestamp?s.add(t):(this.pendingIncomingUpdates.set(t,r),i.add(t))}return this.runInTransactionSync(()=>{for(const e of i)this.maybeApplyIncomingUpdate(e);for(const e of s)this.refreshQueryMapping(e)},t).then(),n}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const n=this.pendingOutgoingMutations.get(e);n&&n.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 n=this.documentStore.getDocumentOrUndefined(e);return!(!n&&!t||n===t)&&((!n||!t||nn({...t,__ts__:void 0})!==nn(n))&&(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).then()}async sendAllUnsentOutgoingMutations(e){const t=this.groupOutgoingMutationsByIntegrationId();try{await Ln.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),this.hasPendingSentMutations()?(await m(this.pendingOutgoingMutationsChanged.pipe(g(()=>!this.hasPendingSentMutations()))),e?.resolve()):e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:n,idResolutionMap:i={},refreshList:s=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(i),s.forEach(e=>{this.refreshDocIdToTimestamp.set(i[e]||e,n)});for(const t of e){let e=this.removeOutgoingMutation(t);i[e]&&(e=i[e]),this.acknowledgeDocument(e,n),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=wn(e.mutation.squidDocIdObj),n=Ie(this.pendingOutgoingMutations.get(t));return n.splice(n.indexOf(e),1),n.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}=vn(t);this.setExpiration(t,!0);try{const n=e.includes(In)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(Ie(n.length<=1,"Got more than one doc for the same id:"+t),!n.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,n]of this.refreshDocIdToTimestamp.entries()){const i=this.docIdToServerTimestamp.get(t)?.timestamp;i&&i>n||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 n=t[t.length-1];if(n&&!n.sentToServer){const t=n.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(n),n.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,n=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,n)}setExpiration(e,t){const n=this.docIdToServerTimestamp.get(e);n&&(n.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const n=wn(t.mutation.squidDocIdObj),i=e[n];i&&(t.mutation.squidDocIdObj=vn(i))})}),Object.entries(e).forEach(([e,t])=>{Vt(this.pendingOutgoingMutations,e,t),Vt(this.docIdToLocalTimestamp,e,t),Vt(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 Jn=Symbol("undefined");class Yn{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new t(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe(g(Boolean),fe(()=>{}))}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 Zn{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=>{e||this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.clientRequestId];void 0!==t&&t.release()})}async lock(e,t=2e3){if(this.socketManager.notifyWebSocketIsNeeded(),!await m(k(N(this.lockWaitForConnectionThreshold).pipe(fe(()=>!1)),this.socketManager.observeConnectionReady().pipe(g(Boolean)),this.destructManager.observeIsDestructing())))return Promise.reject("CLIENT_NOT_CONNECTED");const n=ke(),i={type:"acquireLock",payload:{mutex:e,timeoutMillis:t,clientRequestId:n}};this.socketManager.sendMessage(i);const s=await m(k(N(t+4e3).pipe(q(1),fe(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0}}))),this.acquireLockMessagesFromServer.pipe(g(e=>e.payload.clientRequestId===n))));if(this.destructManager.isDestructing)throw new Error("Destructing");if(!s.payload.lockId)throw new Error(`Failed to acquire lock: ${s.payload.error}`);const r=s.payload.lockId,o=new Xn(r,n,this.ongoingLocks,this.socketManager);return this.ongoingLocks[r]=o,o}releaseAllLocks(){for(const[e,t]of Object.entries(this.ongoingLocks))t.release(),delete this.ongoingLocks[e]}}class Xn{constructor(e,t,n,i){this.lockId=e,this.clientRequestId=t,this.ongoingLocks=n,this.socketManager=i,this.released=!1,this.onReleaseSubject=new r}release(){if(this.released)return;this.released=!0,delete this.ongoingLocks[this.lockId];const e={type:"releaseLock",payload:{lockId:this.lockId,clientRequestId:this.clientRequestId}};this.socketManager.sendMessage(e),this.onReleaseSubject.next()}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}class ei{constructor(e,n){this.documentStore=e,this.destructManager=n,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 ti{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t){let n=this.documents.get(e);if(n)return n;n=new Cn(e,Ie(this.dataManager,"dataManager not found"),t);const{integrationId:i,collectionName:s}=vn(e);this.documents.set(e,n);const r=this.getCollectionKey(i,s),o=this.documentsForCollection.get(r)||[];return this.documentsForCollection.set(r,o.concat(n)),n}setDataManager(e){this.dataManager=e}getDocumentsForCollection(e,t){const n=this.getCollectionKey(e,t);return(this.documentsForCollection.get(n)||[]).filter(e=>e.hasData)}migrateDocIds(e){for(const[,t]of this.documents)t.migrateDocIds(e);Object.entries(e).forEach(([e,t])=>{const n=vn(e),i=vn(t);Vt(this.documents,n.docId,i.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class ni{constructor(){this.squidDocIdToDoc=new Map}saveDocument(e,t){const n=this.squidDocIdToDoc.get(e);if(void 0===n&&!t)return;if(void 0!==n){if(t){const n=Yt(t),i=this.removeInternalProperties(n);return this.squidDocIdToDoc.set(e,i),i}return void this.squidDocIdToDoc.delete(e)}const i=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,i),t}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocument(e){return Ie(this.getDocumentOrUndefined(e))}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}group(e,t){return Object.values(en(e,e=>nn(t.map(t=>$t(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const n=[...e].map(e=>this.squidDocIdToDoc.get(e)).filter(ye),{sortOrder:i,limitBy:s}=t,r=n.sort((e,t)=>this.compareSquidDocs(e,t,i)),o=t.limit<0?2e3:t.limit;if(!s)return r.slice(0,o);const{limit:a,fields:c,reverseSort:u}=s,l=this.group(r,c);let h;return h=u?l.map(e=>e.slice(-a)):l.map(e=>e.slice(0,a)),h.flat().slice(0,o)}migrateDocId(e,t){const n=this.getDocumentOrUndefined(e);if(!n)return;Vt(this.squidDocIdToDoc,e,t);const i=vn(t),s=rn(i.docId);this.saveDocument(t,{...n,...s,__docId__:i.docId})}compareSquidDocs(e,t,n){for(const{fieldName:i,asc:s}of n){const n=Xt($t(e,i),$t(t,i));if(0!==n)return s?n:-n}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class ii{constructor(e){this.rpcManager=e}async extractDataFromDocumentFile(e,t){t||(t={});const n={options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentFile",n,[e],"file")}async extractDataFromDocumentUrl(e,t){t||(t={});const n={url:e,options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentUrl",n)}async createPdf(e){return await this.rpcManager.post("extraction/createPdf",e)}}class si{constructor(e,t,n){this.socketManager=e,this.rpcManager=t,this.clientIdService=n,this.isListening=!1,this.listeners={},this.clientIdService.observeClientId().pipe(p(),C(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))fn.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e})})}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new s(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId: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,n=t.id,i=this.listeners[n];i&&("completed"===t.status?i.next(t.result):"failed"===t.status?i.error(new Error(t.error||"Job failed")):console.error("Unexpected job status:",t.status,"for jobId:",n),delete this.listeners[n])}))}}class ri{constructor(e,t,n){this.rpcManager=e,this.lockManager=t,this.querySender=n}async sendMutations(e,t){const n=Vn(e),i=n.map(e=>`sendMutation_${wn(e.squidDocIdObj)}`);await this.lockManager.lock(...i),await this.querySender.waitForAllQueriesToFinish();try{const e={mutations:n,integrationId:t};return await this.rpcManager.post("mutation/mutate",e)}catch(e){throw fn.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(n,null,2)}),e}finally{this.lockManager.release(...i)}}}class oi{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class ai{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.observeNotifications().pipe(g(e=>"userNotification"===e.type),w(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 ci={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class ui{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},n=Object.keys(t).filter(e=>!li.test(e)||e.length>=hi);be(0===n.length,()=>`Tag name is not allowed: ${n.join(",")}`),this.isReporting=!0;const i={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},s=this.rpcManager.post("/observability/metrics",{metrics:[i]}).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={...ci,...e,fn:Array.isArray(e.fn)?e.fn:[e.fn]};t.pointIntervalSeconds||(t.pointIntervalSeconds=t.periodEndSeconds-t.periodStartSeconds);const n=await this.rpcManager.post("/observability/metrics/query",t);return function(e,t){const{pointIntervalSeconds:n,noDataBehavior:i}=e,s=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:n,pointIntervalAlignment:i}){if("align-by-start-time"===i)return e;const s=t-e;let r=t-Math.floor(s/n)*n;return r>e&&(r-=n),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:n,pointIntervalAlignment:i}){if("align-by-end-time"===i)return t-n;const s=t-e;let r=e+Math.floor(s/n)*n;return r>=t&&(r-=n),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const n=[];for(let t=0;t<e.groupByTags.length;t++){const i=e.groupByTags[t],s=a[i]?.[0]||"";n.push(s)}t.push({tagValues:n,points:[]})}else"return-result-group-with-default-values"===i&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[n,i]of Object.entries(a)){const s=e.groupByTags.indexOf(n);if(!(s<0))for(let e=0;e<t.length;e++){const n=t[e],r=new Set(i);for(let e=0;e<t.length;e++){const i=t[e];n.tagValues.every((e,t)=>t===s||e===i.tagValues[t])&&r.delete(i.tagValues[s])}if(0!==r.size)for(const e of r){const i={tagValues:[...n.tagValues],points:[]};i.tagValues[s]=e,t.push(i)}}}for(const i of t){if(0!==i.points.length){const e=i.points[0][0],t=i.points[i.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:s,u=Array.isArray(e.fn)?e.fn.map(c):[s];for(let e=r;e<=o;e+=n){const n=i.points[a];n?n[0]===e?(t.push(n),a++):(be(n[0]>e,()=>`Result point has invalid time: ${n[0]}`),t.push([e,...u])):t.push([e,...u])}i.points=t}}(t,n.resultGroups),n}}const li=/^[a-zA-Z0-9_-]+$/,hi=1e3;class di{constructor(e,t){this.integrationId=e,this.rpcManager=t}async saveAuthCode(e,t){const n={authCode:e,personalStorageConfig:{identifier:t,integrationId:this.integrationId}};return await this.rpcManager.post("personalStorage/saveAuthCode",n)}async getAccessToken(e){const t={personalStorageConfig:{identifier:e,integrationId:this.integrationId}};return await this.rpcManager.post("personalStorage/getAccessToken",t)}async indexDocumentOrFolder(e,t,n,i){const s={documentOrFolderId:e,metadata:i,personalStorageConfig:{identifier:t,integrationId:this.integrationId},agentId:n};await this.rpcManager.post("personalStorage/indexDocumentOrFolder",s)}async listIndexedDocuments(e,t,n){const i={personalStorageConfig:{identifier:e,integrationId:this.integrationId},agentId:t,type:n};return(await this.rpcManager.post("personalStorage/listIndexedDocuments",i)).documents}async unindexDocument(e,t,n){const i={documentId:e,personalStorageConfig:{identifier:t,integrationId:this.integrationId},agentId:n};await this.rpcManager.post("personalStorage/unindexDocument",i)}}async function pi(e,t,n=500){const i=Date.now(),s=e.paginate({pageSize:n,subscribe:!1});let r=0,o=await s.waitForData();for(;;){for(const e of o.data)r++,await t(e.data);if(!o.hasNext)break;o=await s.next()}return{count:r,time:Date.now()-i}}function gi(e,t){switch(t.type){case"simple":return function(e,t){const{query:n,dereference:i}=t,{collectionName:s,integrationId:r}=n;let o=e.collection(s,r).query();return o=fi(o,n),i?o.dereference():o}(e,t);case"join":return function(e,t){const{root:n,joins:i,joinConditions:s,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=n.query;let u=e.collection(a,c).joinQuery(n.alias);return u=fi(u,n.query),Object.entries(i).map(([t,n])=>{const{collectionName:i,integrationId:r}=n,{left:o,right:a,leftAlias:c}=s[t];let l=e.collection(i,r).query();l=fi(l,n),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:n}=t,{collectionName:i,integrationId:s}=yi(n[0]),r=n.map(t=>gi(e,t));return e.collection(i,s).or(...r)}(e,t)}}function fi(e,t){const{conditions:n,limit:i,sortOrder:s}=t;for(const t of n){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");const{fieldName:n,operator:i,value:s}=t;e.where(n,i,s)}e.limit(i);for(const{fieldName:t,asc:n}of s)e.sortBy(t,n);return e}function yi(e){switch(e.type){case"simple":{const{collectionName:t,integrationId:n}=e.query;return{collectionName:t,integrationId:n}}case"join":{const{collectionName:t,integrationId:n}=e.root.query;return{collectionName:t,integrationId:n}}case"merged":return yi(e.queries[0])}}const mi={"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)=>bi(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>bi(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>bi(e,t)&&vi(t),"like_cs:like_cs":(e,t)=>bi(e,t),"like:not like":(e,t)=>!Ii(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!Ii(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!Ii(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!Ii(e,t),"not like:like":(e,t)=>Si(e,t),"not like_cs:like":(e,t)=>Si(e,t),"not like:like_cs":(e,t)=>Si(e,t),"not like_cs:like_cs":(e,t)=>Si(e,t),"not like:not like":(e,t)=>bi(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>bi(t,e)&&vi(e),"not like:not like_cs":(e,t)=>bi(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>bi(t,e),"in:like":(e,t)=>e.every(e=>Sn(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Sn(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>Sn(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>Sn(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&&wi(e)||Mi(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&wi(e)||Mi(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&wi(t)||Mi(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&wi(t)||Mi(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=>Sn(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Sn(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Sn(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Sn(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 bi(e,t,n=0,i=0){if(i>=t.length)return n>=e.length;if(n>=e.length)return wi(t.substring(i));const s=e[n],r=t[i];return"%"===s&&"%"===r?bi(e,t,n+1,i+1)||bi(e,t,n+1,i):"%"!==s&&("%"===r?bi(e,t,n,i+1)||bi(e,t,n+1,i):(s===r||"_"===r)&&bi(e,t,n+1,i+1))}function Ii(e,t,n=0,i=0){if(n>=e.length&&i>=t.length)return!0;if(n>=e.length)return wi(t.substring(i));if(i>=t.length)return wi(e.substring(n));const s=n<e.length?e[n]:"",r=i<t.length?t[i]:"";return"%"===s&&"%"===r?Ii(e,t,n+1,i+1)||Ii(e,t,n,i+1)||Ii(e,t,n+1,i):"%"===s||"%"===r?Ii(e,t,n,i+1)||Ii(e,t,n+1,i):(s===r||"_"===s||"_"===r)&&Ii(e,t,n+1,i+1)}function vi(e){return!/[a-zA-Z]/.test(e)}function wi(e){return e.split("").every(e=>"%"===e)}function Si(e,t){return e.length>0&&wi(e)||t.length>0&&wi(t)||Mi(e)&&0===t.length}function Mi(e){let t=!1,n=!1;for(const i of e)switch(i){case"%":t=!0;break;case"_":if(n)return!1;n=!0;break;default:return!1}return t&&n}class ki{constructor(e){this.query=e,this.query=e,this.parsedConditions=this.parseConditions(this.query.conditions.filter(Tn))}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}sortedBy(e){return!e.find((e,t)=>!zt(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,n){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:n})}isSubqueryOfCondition(e){return!!this.parsedConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;const t=e.conditions.filter(Tn),n=this.isSubqueryOfConditions(t),i=this.sortedBy(e.sortOrder),s=-1===e.limit||this.limit>-1&&this.limit<e.limit;return n&&i&&s}getConditionsFor(...e){return this.parsedConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.parsedConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.parsedConditions){const n=t.fieldName,i=t.operator,s=$t(e,n);if("in"===i){if(t.value.includes(s))continue;return!1}if("not in"!==i){if(!Sn(t.value,s,i))return!1}else if(t.value.includes(s))return!1}return!0}evaluateSubset(e,t){const{operator:n,value:i}=e,{operator:s,value:r}=this.parseConditions([t])[0],o=mi[`${n}:${s}`];return!!o&&o(i,r)}parseConditions(e){const t=[],n=new Map,i=new Map;return e.forEach(e=>{switch(e.operator){case"==":case"in":n.set(e.fieldName,(n.get(e.fieldName)||[]).concat(e.value));break;case"!=":case"not in":i.set(e.fieldName,(i.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),n.forEach((e,n)=>{t.push({fieldName:n,operator:"in",value:e})}),i.forEach((e,n)=>{t.push({fieldName:n,operator:"not in",value:e})}),t}}class Ti{constructor(e,t,n){this.documentStore=e,this.documentReferenceFactory=t,this.querySubscriptionManager=n}peek(e){if(!this.querySubscriptionManager.findValidParentOfQuery(e))return[];const{integrationId:t,collectionName:n}=e,i=new ki(e),s=this.documentReferenceFactory.getDocumentsForCollection(t,n).filter(e=>i.documentMatchesQuery(e.data)),r={};return s.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[wn(e.__docId__,n,t)])}}function Ci(e,t){return W(function(n,i){var s=0;n.subscribe(pe(i,function(n){return e.call(t,n,s++)&&i.next(n)}))})}class Oi{constructor(e,n){this.rpcManager=e,this.destructManager=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,n=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(),n):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.safeToSendQueriesToServer.pipe(Ci(Boolean),q(1)).subscribe(()=>{this.processQueryBatch()})},0),n)}async waitForAllQueriesToFinish(){return m(this.inflightQueriesCount.pipe(Ci(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()),n=e.map(({responseSubject:e})=>e);this.inflightQueriesCount.next(this.inflightQueriesCount.value+t.length);try{const n=await this.rpcManager.post("query/batchQueries",t);for(const{queryRequest:t,responseSubject:i}of e){const e=t.clientRequestId,s=n.errors[e],r=n.results[e];s?i.error(s):i.next(r)}}catch(e){n.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var _i={d:(e,t)=>{for(var n in t)_i.o(t,n)&&!_i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function Ei(e,t,...n){e||function(e,...t){const n=function(e){return void 0===e?"":"string"==typeof e?e:e()}(e);if("object"==typeof n)throw n;throw(e=>new Error(e))(n||"Assertion error",...t)}(t,...n)}function qi(e,t){switch(t.type){case"set":return function(e,t,n){if(void 0===n)return Di(e,t);if(0===t.length)return Ei("object"==typeof n&&null!==n&&!Array.isArray(n),()=>`Root state must be a record. Trying to set '${n}', type: ${typeof n}`),n;function i(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 n=t[e];Ei(!Array.isArray(s)||i(n),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${n}'`),s=s[n],Ei(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 Ei(!Array.isArray(s)||i(r),()=>`Invalid array index Path: '${t}`),(null==s?void 0:s[r])===n?e:Ai(e,t,n)}(e,t.path,t.value);case"delete":return Di(e,t.path);case"batch":return t.actions.reduce((e,t)=>qi(e,t),e)}}function Di(e,t){Ei(0!==t.length,"Can't delete an empty path");let n=e;for(let i=0;i<t.length-1;i++){const s=t[i];if(n=n[s],void 0===n)return e;Ei("object"==typeof n&&null!==n,()=>`Cannot delete a property from a non-record parent. Path: '${t.slice(0,i+1)}', type: ${null===n?"<null>":typeof n}`)}const i=t[t.length-1];return void 0===n[i]?e:Ai(e,t,void 0)}function Ai(e,t,n){function i(e,n){Ei(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[n]}const s=Object.assign({},e);let r=s;for(let e=0;e<t.length-1;e++){const s=t[e],o=r[s];Ei(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===n?void 0:{}:Array.isArray(o)?[...o]:Object.assign({},o);if(void 0===a)return i(r,s),r;r[s]=a,r=a}const o=t[t.length-1];return void 0===n?i(r,o):r[o]=n,s}function Ri(e,t){const n=[];if("set"===e.type||"delete"===e.type)n.push(e.path);else if("batch"===e.type)for(const t of e.actions)n.push(...Ri(t,"as-is"));return"unique-and-sorted"===t?xi(n):n}function Ni(e,t){if(e.length<t.length)return!1;for(let n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function Fi(e){const t=[...e];return t.sort((e,t)=>{for(let n=0;n<e.length;n++){if(n===t.length)return 1;const i=e[n].localeCompare(t[n]);if(0!==i)return i}return e.length-t.length}),t}function xi(e){const t=Fi(e),n=t;for(let e=0;e<t.length-1;e++){const i=t[e];for(let s=e+1;s<t.length;s++){const r=t[s];i.length===r.length&&Ni(i,r)&&(n[s]=void 0,e++)}}return n.filter(e=>void 0!==e)}const ji=(Pi={Observable:()=>i,Subject:()=>r},Bi={},_i.d(Bi,Pi),Bi);var Pi,Bi;const Qi=(Li={filter:()=>Ci,map:()=>fe},Ui={},_i.d(Ui,Li),Ui);var Li,Ui,$i;class Gi{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 n=this._buildPath(e);if(void 0!==n.value)return n.value;const i=t(e);return this._setNodeValue(n,i,void 0===i),i}set(e,t){const n=void 0===t?this._findNode(e):this._buildPath(e);n&&this._setNodeValue(n,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 n=(void 0===t.value?0:1)+t.childrenWithValue;n>0&&this._updateChildrenWithValue(t,-n),t.parent.children.delete(e[e.length-1]),this._runGc(t.parent)}clear(){this.delete([])}count(e=[],t="node-and-children"){const n=this.getNode(e);return void 0===n?0:n.childrenWithValue+("node-and-children"===t&&void 0!==n.value?1:0)}get isEmpty(){return 0===this.count()}fillPath(e,t){const n=[];let i=this.root,s=t(i.value,n);if(s!==Gi.StopFillToken){this._setNodeValue(i,s,!1);for(let r=0;r<e.length;r++){const o=e[r];n.push(o);let a=i.children.get(o);if(s=t(null==a?void 0:a.value,n),s===Gi.StopFillToken)break;a||(a={children:new Map,parent:i,childrenWithValue:0},i.children.set(o,a)),this._setNodeValue(a,s,!1),i=a}this._runGc(i)}}visitDfs(e,t,n=[]){const i=this.getNode(n);void 0!==i&&this._visitDfs(e,i,t,[...n])}_visitDfs(e,t,n,i){if("pre-order"===e&&!1===n(t.value,i))return!1;for(const[s,r]of t.children){if(i.push(s),!this._visitDfs(e,r,n,i))return!1;i.pop()}return"in-order"!==e||!1!==n(t.value,i)}getNode(e){return this._getNode(e)}_getNode(e){let t=this.root;for(const n of e)if(t=t.children.get(n),!t)return;return t}_findNode(e){let t=this.root;for(let n=0;n<e.length&&t;n++)t=t.children.get(e[n]);return t}_buildPath(e){let t=this.root;for(let n=0;n<e.length;n++){const i=e[n];let s=t.children.get(i);s||(s={children:new Map,parent:t,childrenWithValue:0},t.children.set(i,s)),t=s}return t}_setNodeValue(e,t,n){if(e.value!==t){const n=void 0===t?-1:void 0===e.value?1:0;e.value=t,this._updateChildrenWithValue(e,n)}n&&this._runGc(e)}_updateChildrenWithValue(e,t){if(0!==t)for(let n=e.parent;n;n=n.parent)if(n.childrenWithValue+=t,n.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))}}Gi.StopFillToken=Symbol("Trie.StopFillToken");class Hi extends ji.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class Wi{constructor(e){this.rootState=e,this.observersTrie=new Gi,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,Qi.map)(e=>e.value))}observeChanges(e,t=[]){return this._observeChanges(e,t,"all-details")}set(e,t,n){(null==n?void 0:n(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=qi(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=Ri(e,"unique-and-sorted"),n=this.selectChildPathsWithObservers(t),i=xi([...t,...n]),s=new Gi;for(const e of i)s.fillPath(e,()=>!0);s.visitDfs("pre-order",(t,n)=>{const i=this.observersTrie.get(n);if(i){const t=this.get(n),s=i.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,n):void 0;i.next({action:e,value:t,oldValue:s})}})}_observeChanges(e,t=[],n){const i=0===t.length?void 0:new Gi;for(const e of t)null==i||i.set(e,!0);return new ji.Observable(t=>{const s=this.observersTrie.getOrSet(e,()=>new Hi);s.isAllDetailsMode=s.isAllDetailsMode||"all-details"===n;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=s.pipe((0,Qi.filter)(({action:e})=>void 0===i||Ri(e,"as-is").some(e=>!i.get(e))),(0,Qi.map)(({action:t,value:n,oldValue:i})=>{let r=this.stubForUnusedPaths;if(s.isAllDetailsMode){const n=Ri(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=Fi(e),n=t;for(let e=0;e<n.length-1;e++){const i=t[e];for(let s=e+1;s<t.length;s++)Ni(t[s],i)&&(n[s]=void 0,e++)}return n.filter(e=>void 0!==e)}(e.length>0?n.filter(t=>Ni(t,e)).map(t=>t.slice(e.length)):n)}return{value:n,oldValue:i,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),s.observed||this.observersTrie.delete(e)}})}_get(e,t){let n=e;for(let e=0;e<t.length&&void 0!==n;e++){const i=t[e];n=null==n?void 0:n[i]}return n}selectChildPathsWithObservers(e){const t=[];for(const n of e)this.observersTrie.count(n,"children-only")>0&&this.observersTrie.visitDfs("pre-order",(e,n)=>{e&&t.push([...n])},n);return t}}function Vi(e,t,n=(e,t)=>e>t?1:e<t?-1:0,i=0,s=e.length-1){if(s<i)return-1;const r=Math.trunc((i+s)/2);return 0===n(t,e[r])?r:n(t,e[r])>0?Vi(e,t,n,r+1,s):Vi(e,t,n,i,r-1)}function Ki(e,t,n=(e,t)=>e>t?1:e<t?-1:0){if(-1!==Vi(e,t,n))return;let i;for(i=e.length-1;i>=0&&n(e[i],t)>0;i--)e[i+1]=e[i];e[i+1]=t}function zi(e,t,n=(e,t)=>e>t?1:e<t?-1:0){const i=Vi(e,t,n);i>-1&&e.splice(i,1)}!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}($i||($i={}));const Ji=100;class Yi{constructor(e,t,n,i,s,o,a){this.rpcManager=e,this.clientIdService=t,this.documentStore=n,this.destructManager=i,this.documentIdentityService=s,this.querySender=o,this.socketManager=a,this.onOrphanDocuments=new r,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new Xi,this.queryResultsSubject=new r,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.clientIdService.observeClientReadyToBeRegenerated().subscribe(()=>{this.refreshOngoingQueries()}),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}dumpSubscriptionInfo(){console.log("Ongoing queries:",this.ongoingQueries),console.log("ClientRequestId to local documents:",this.clientRequestIdToLocalDocuments),console.log("Local documents to clientRequestId:",this.localDocumentToClientRequestIds)}observeQueryResults(){return this.queryResultsSubject.asObservable()}hasOngoingQuery(e){return this.ongoingQueries.has(e)}getQuery(e){return Ie(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:n,integrationId:i}=vn(t),s=this.queryMappingManager.getMapping(n,i);return s?function(e,t){const n=[...e.unconditional||[]],i=new Map;for(const[n,s]of Object.entries(e.conditional||{})){const e=rn(n);let r;if(Tn(e)){const n=$t(t,e.fieldName)??null;r=Sn(e.value,n,e.operator)}else r=Zi(e,t);if(r)for(const e of s)i.set(e,(i.get(e)||0)+1)}for(const[t,s]of i.entries())s>=e.queriesMetadata[t].condCount&&n.push(t);return n}(s,e):[]}setClientRequestIdsForLocalDoc(e,t){const n=this.localDocumentToClientRequestIds.get(e)||new Set,i=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([...n,...i]);for(const t of[...n]){if(i.has(t))continue;n.delete(t);const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),n.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of i){let n=this.localDocumentToClientRequestIds.get(e);n||(n=new Set,this.localDocumentToClientRequestIds.set(e,n)),n.add(t);let i=this.clientRequestIdToLocalDocuments.get(t);i||(i=new Set,this.clientRequestIdToLocalDocuments.set(t,i)),i.add(e)}return[...s]}errorOutAllQueries(e,t){const n=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of n){const n=this.ongoingQueries.get(e);n&&(this.destructManager.isDestructing?n.dataSubject.complete():n.dataSubject.error(t),n.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const n of e){const e=this.ongoingQueries.get(n);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const i=this.clientRequestIdToLocalDocuments.get(n)||new Set,s=this.documentStore.sortAndLimitDocs(i,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(s,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=Ie(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case $i.UNKNOWN:e.limitUnderflowState=i.size===e.query.limit+100?$i.ENABLED:$i.DISABLED;break;case $i.DISABLED:break;case $i.ENABLED:if(i.size<e.query.limit+20){e.limitUnderflowState=$i.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}e.dataSubject.next(s)}for(const e of t){const t=this.collectAllObservables(e);Ie(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new ki(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,n,i,r,a){return r&&this.socketManager.notifyWebSocketIsNeeded(),h(()=>{const c=this.createOngoingQueryGraph(e,t,n,i,r,!0);a&&(c.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(c),c.allObservables=new s(1);const u=c.allObservables.pipe(E(e=>o(e).pipe(fe(e=>this.joinResults(e,i,c)))),Ci(()=>this.allOngoingQueriesGotInitialResult(c)),O(void 0),M(),Ci(([e,t])=>!zt(e,t)),fe(([,e])=>e),r?R():q(1),f(()=>{c.dataSubject.complete(),c.done=!0,this.completeAllSupportedQueries(c).then(),c.allObservables?.complete()})),l=this.collectAllObservables(c);return c.allObservables.next(l),u}).pipe(T())}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 ki(e.query);for(const n of this.ongoingQueries.values()){if(e===n)return;if(this.isValidParent(n)&&t.isSubqueryOfQuery(n.query))return n}}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const n=[];for(const i of t){const t=Ie(this.localDocumentToClientRequestIds.get(i));t.delete(e),t.size||(this.localDocumentToClientRequestIds.delete(i),n.push(i))}n.length&&this.onOrphanDocuments.next(n)}registerQueryFinalizer(e){const t=e.clientRequestId,n=kn(this.clientIdService.getClientId(),t);e.dataSubject.pipe(f(async()=>{if(e.unsubscribeBlockerCount.value>0&&await m(k(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(Ci(e=>0===e)))),this.queryMappingManager.removeQuery(n).then(),this.ongoingQueries.delete(t),e.subscribe&&!e.isEmptyForJoin&&e.activated){const n={clientRequestId:t};this.rpcManager.post("query/unsubscribe",n).catch(t=>{this.destructManager.isDestructing||console.error("Got error while unsubscribing from query",e.query,t)})}this.removeClientRequestIdMapping(t),this.ongoingQueries.delete(t)}),Ci(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,n,i,s,r,o,a={}){if(a[n])return a[n];const c=this.clientIdService.generateClientRequestId(),u=[],l={clientRequestId:c,activated:o,alias:n,query:e,subscribe:r,dataSubject:new t(null),supportedQueries:u,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?$i.UNKNOWN:$i.DISABLED};this.registerQueryFinalizer(l),this.ongoingQueries.set(c,l),a[n]=l;for(const[e,t]of Object.entries(s)){const o=t.leftAlias;if(o!==n&&e!==n)continue;const c=o===n?e:o;if(o===n){const e=this.createOngoingQueryGraph(i[c],c,i,s,r,!1,a);e.joinCondition=t,u.push(e)}else l.supportingOngoingQuery=this.createOngoingQueryGraph(i[c],c,i,s,r,!1,a)}return l}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const n=e.alias;t.push(e.dataSubject.pipe(Ci(Boolean),fe(e=>({docs:e,alias:n}))));for(const n of e.supportedQueries)this.collectAllObservables(n,t);return t}joinResults(e,t,n){const i=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let s=i[n.alias].map(e=>({[n.alias]:e}));const r=this.getOngoingQueriesBfs(n),o=new Set;for(let e=1;e<r.length;e++){const n=r[e].alias;o.has(n)||(o.add(n),s=this.join(s,n,i[n],t[n]))}return s}join(e,t,n,i){if(!e.length)return e;const s=Object.keys(e[0]);if(!i||!s.includes(i.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(n||[]).forEach(e=>{const t=this.transformKey(e[i.right]);r.has(t)||r.set(t,[]),Ie(r.get(t)).push(e)}),e.flatMap(e=>{const n=r.get(this.transformKey(e[i.leftAlias]?.[i.left]))||[];return n.length?n.map(n=>({...e,[t]:n})):i.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],n=[e];for(;n.length;){const e=Ie(n.shift());e.isEmptyForJoin||(t.push(e),n.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,n){const i=Ie(n.joinCondition),s=n.query;if(n.activated){if(!n.canExpandForJoin)return!1;const r=Ie(n.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===n.alias),o=new Set(e.map(e=>e[i.left]??null));for(const e of r)e.query.conditions.filter(Tn).filter(e=>e.fieldName===i.right).forEach(e=>{o.delete(e.value)});if(0===o.size)return!1;const a=Yt(s);a.conditions=a.conditions.filter(e=>!Tn(e)||e.fieldName!==i.right),[...o].forEach(e=>{a.conditions.push({fieldName:i.right,operator:"==",value:e})});const c={...n,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),Ie(n.supportingOngoingQuery).supportedQueries.push(c),this.sendQueryToServerOrUseParentQuery(c),!0}{if(n.activated=!0,s.conditions.filter(Tn).filter(e=>e.fieldName===i.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(n),n.canExpandForJoin=!1,!0;const t=e.map(e=>e[i.left]??null).map(e=>({fieldName:i.right,operator:"==",value:e}));return t.length?(s.conditions.push(...t),this.sendQueryToServerOrUseParentQuery(n)):n.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=Ie(t.shift());t.push(...e.supportedQueries||[]),await m(e.unsubscribeBlockerCount.pipe(Ci(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 n=e.query,i=e.clientRequestId,s=kn(this.clientIdService.getClientId(),i);this.queryMappingManager.addQuery(n,s),this.ongoingQueries.set(i,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r).then():this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const n={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},i=new ki(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await m(t.queryRegistered.pipe(Ci(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",n).then(()=>{e.isInFlight=!1,e.queryRegistered.next(!0)}).catch(n=>{e.isInFlight=!1,this.destructManager.isDestructing?e.dataSubject.complete():(console.error("Query error",e.query,t.query,n),e.dataSubject.error(n)),e.done=!0}).finally(()=>{t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value-1)});const s=k(e.queryRegistered.pipe(Ci(Boolean),d(2e3),q(1)),this.destructManager.observeIsDestructing().pipe(q(1)));t.dataSubject.pipe(A(()=>!e.done),D(s),Ci(Boolean),R(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),fe(e=>e.filter(e=>i.documentMatchesQuery(e)))).subscribe({next:t=>{for(const n of t)this.setClientRequestIdsForLocalDoc(wn(n.__docId__,e.query.collectionName,e.query.integrationId),n);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,n=t>0&&e.subscribe?t+100:t,i={query:{...e.query,limit:n},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(i).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()):(fn.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const n of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{n.has(t)&&(n.delete(t),n.add(e[t]))});t.forEach(t=>{Vt(this.localDocumentToClientRequestIds,t,e[t])})}}function Zi(e,t){for(const n of e.fields){const e=$t(t,n.fieldName)??null;if(Sn(n.value,e,n.operator))return!0;if(Sn(n.value,e,"!="))return!1}return!1}class Xi{constructor(){this.stateService=new Wi({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let n=0;const i=new Set;for(const s of e.conditions){if(Tn(s)&&["=="].includes(s.operator)){const e=on(s.fieldName);i.has(e)||(n++,i.add(e))}else n++;const r=this.getConditionStatePath(e,s),o=[...this.stateService.get(r)||[]];Ki(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const n=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],i=[...this.stateService.get(n)||[]];Ki(i,t),this.stateService.set(n,i)}this.stateService.set([...this.getQueryMetadataStatePath(e,t),"condCount"],n)}),this.querySubscriptionIdToQuery[t]=e}async removeQuery(e){const t=this.querySubscriptionIdToQuery[e];if(t)return this.stateService.runInBatch(()=>{for(const n of t.conditions){const i=this.getConditionStatePath(t,n),s=[...this.stateService.get(i)||[]];zi(s,e),s.length?this.stateService.set(i,s):this.stateService.delete(i)}if(!t.conditions.length){const n=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],i=[...this.stateService.get(n)||[]];zi(i,e),this.stateService.set(n,i)}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",(n=t,nn(n))];var n}}class es{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 v(o(t).pipe(g(e=>!e.includes(!0)),q(1))),await this.lock(...e)}release(...e){for(const t of e){const e=Ie(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 n of e)this.locks[n]=new t(!0)}}class ts{constructor(e,t,n){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)}),n.onPreDestruct(()=>{for(const e of this.queueManagers.values())for(const t of e.values())t.destruct()})}get(e,t){let n=this.queueManagers.get(e);n||(n=new Map,this.queueManagers.set(e,n));let i=n.get(t);return i||(i=new is(e,t,this.rpcManager,this.socketManager),n.set(t,i)),i}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const ns="subscriptionMutex";class is{constructor(e,t,n,i){this.integrationId=e,this.topicName=t,this.rpcManager=n,this.socketManager=i,this.messagesSubject=new r,this.subscriberCount=0,this.lockManager=new es}async produce(e){await this.lockManager.lock(ns);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(ns)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),h(()=>(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(ns);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(ns)}}async performUnsubscribe(){await this.lockManager.lock(ns);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(ns)}}}class ss{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(I(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}}const rs="x-squid-traceid",os="x-squid-client-version";function as(e="n_"){return`${e}${Oe(10).toLowerCase()}`}const cs=e=>e();class us extends Error{constructor(e,t,n,i,s){super(e),this.statusCode=t,this.url=n,this.headers=i,this.body=s}}const ls="1.0.412";async function hs(e){const t=await ys({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=ms(t.body),t}async function ds(e){const t=await ys({...e,method:"GET",files:[],filesFieldName:""});return t.body=ms(t.body),t}async function ps(e){const t=await ys({...e,method:"PUT"});return t.body=ms(t.body),t}async function gs(e){const t=await ys({...e,method:"PATCH"});return t.body=ms(t.body),t}async function fs(e){const t=await ys({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=ms(t.body),t}async function ys({headers:e,files:t,filesFieldName:n,message:i,url:s,extractErrorMessage:r,method:o}){const a=new Headers(e);a.append(rs,as("c_")),a.append(os,ls);const c={method:o,headers:a,body:void 0};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const i of t)e.append(n||"files",i,i.name);e.append("body",sn(i)),c.body=e}else void 0!==i&&(a.append("Content-Type","application/json"),c.body=sn(i));else"DELETE"===o&&void 0!==i&&(a.append("Content-Type","application/json"),c.body=sn(i));try{const e=await fetch(s,c),t={};if(e.headers.forEach((e,n)=>{t[n]=e}),!e.ok){const n=await e.text(),i=ms(n);if(!r)throw new us(n,e.status,s,t,i);let o;try{o="string"==typeof i?i:i?.message||n}catch{}throw o||(o=e.statusText),new us(o,e.status,s,t,i)}const n=await e.text();return fn.debug(`received response from url ${s}: ${JSON.stringify(n)}`),{body:n,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw fn.debug(`Unable to perform fetch request to url: ${s}`,e),e}}function ms(e){if(e){try{return rn(e)}catch{}return e}}class bs{constructor(e,n,i,s,r,o){this.region=e,this.appId=n,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")}),i.onDestruct(async()=>{await this.awaitAllSettled()});const a=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new ss(60*a,5),ai:new ss(20*a,5),secret:new ss(20*a,5)}}async getAuthHeaders(){const e=this.authManager.getApiKey();if(e)return{Authorization:`ApiKey ${e}`};const{token:t,integrationId:n}=await this.authManager.getAuthData();if(!t)return{};let i=`Bearer ${t}`;return n&&(i+=`; IntegrationId ${n}`),{Authorization:i}}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,n=[],i="files",s={}){return(await this.rawPost(e,t,n,i,!0,s)).body}async rawPost(e,t,n=[],i="files",s=!0,r={}){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const o=await this.getAuthHeaders(),a={...this.staticHeaders,...o,...r};fn.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const c=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await hs({url:c,headers:a,message:t,files:n,filesFieldName:i,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async get(e,t,n=!0){return(await this.rawGet(e,t,n)).body}async rawGet(e,t,n=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const i=await this.getAuthHeaders(),s={...this.staticHeaders,...i};let r=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);if(t&&Object.keys(t).length>0){const e=new URLSearchParams;Object.entries(t).forEach(([t,n])=>{e.append(t,String(n))}),r+=`?${e.toString()}`}return fn.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await ds({url:r,headers:s,extractErrorMessage:n})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async put(e,t,n=[],i="files"){return(await this.rawPut(e,t,n,i)).body}async rawPut(e,t,n=[],i="files",s=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};fn.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const a=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await ps({url:a,headers:o,message:t,files:n,filesFieldName:i,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async patch(e,t,n=[],i="files"){return(await this.rawPatch(e,t,n,i)).body}async rawPatch(e,t,n=[],i="files",s=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};fn.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const a=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await gs({url:a,headers:o,message:t,files:n,filesFieldName:i,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async delete(e,t,n=!0){return(await this.rawDelete(e,t,n)).body}async rawDelete(e,t,n=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const i=await this.getAuthHeaders(),s={...this.staticHeaders,...i};fn.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const r=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await fs({url:r,headers:s,message:t,extractErrorMessage:n})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?Ie(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?Ie(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):Ie(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}class Is{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 vs(){}const ws="undefined"!=typeof process&&process.versions?.node?j(220):gn().WebSocket;class Ss{constructor(e,n,i,s=cs,o,a){this.clientIdService=e,this.region=n,this.appId=i,this.messageNotificationWrapper=s,this.destructManager=o,this.authManager=a,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),q(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe(C(1),g(e=>!e),E(()=>k(N(this.clientTooOldThreshold),this.connectionReady.pipe(g(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?fn.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(fn.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?fn.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?fn.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(fn.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),fn.debug(this.clientIdService.getClientId(),"Client too old. Reconnecting..."),this.connect())}getClientInfo(){this.sendMessage({type:"getClientInfo"})}observeNotifications(){return this.webSocketObserver.asObservable()}observeConnectionReady(){return this.connectionReady.asObservable().pipe(p())}async awaitConnectionReady(){await m(this.observeConnectionReady().pipe(g(Boolean)))}notifyWebSocketIsNeeded(){this.webSocketNeededSubject.next(!0)}sendMessage(e){this.sendMessageAsync(e).then()}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(fn.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageAsync(e){this.webSocketNeededSubject.next(!0),await m(this.connectionReady.pipe(g(Boolean)));const t=await this.authManager.getToken();if(this.connectionReady.value)try{be(this.socket,"Socket is undefined in sendMessageAsync");const n=sn({message:e,authToken:t});fn.debug(this.clientIdService.getClientId(),"Sending message to socket: ",n),this.socket.send(n)}catch(t){this.socket?.connected?console.error("Websocket message is ignored due to a non-recoverable error",t):(this.connectionReady.next(!1),await this.sendMessageAsync(e))}else await this.sendMessageAsync(e)}sendKillMessage(){this.socket?.connected&&this.socket.send(sn({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=B(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();fn.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const n=`${e}?clientId=${t}`;this.socket=function(e,t={}){let n,i=0,s=1;const r={connected:!1,closeCalled:!1,open(){n=new(ws?.WebSocket??ws)(e,t.protocols||[]),n.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.")}:vs,n.onopen=function(e){r.connected=!0,(t.onopen||vs)(e),i=0},n.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return fn.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||vs)(e),void r.reconnect(e);(t.onclose||vs)(e)},n.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||vs)(e)}},reconnect(e){const n=void 0!==t.maxAttempts?t.maxAttempts:1/0;s&&i++<n?s=setTimeout(function(){(t.onreconnect||vs)(e),fn.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||vs)(e)},json(e){n.send(JSON.stringify(e))},send(e){n.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(s),s=void 0,n.close(e,t)}catch(e){}}};return r.open(),r}(n,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{fn.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{fn.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):fn.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{fn.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):fn.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.sendMessage({type:"catchup"}):this.connectedAtLeastOnce=!0}onMessage(e){if("connectionReady"===e)return fn.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=rn(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),fn.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.sendMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await m(N(0)),this.connectionReady.next(!1),await m(N(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function Ms(e){var t,n;n="Invalid application ID",be(function(e){return"string"==typeof e}(t=e),()=>we(n,"Not a string",t));const[i,s,r,o]=e.split("-");return be(!o,`Invalid application ID: ${e}`),{appId:i,environmentId:s??"prod",squidDeveloperId:r}}function ks(e,t){return`${Ms(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Ts(e,t,n){return`${ks(e,t)}${n?`-${n}`:""}`}function Cs(e){const t=Ms(e);return ks(t.appId,t.environmentId)}class Os{constructor(e="built_in_storage",t){this.integrationId=e,this.rpcManager=t}async uploadFile(e,t,n){const i={integrationId:this.integrationId,dirPathInBucket:e,expirationInSeconds:n};await this.rpcManager.post("storage/uploadFile",i,[t])}async getFileMetadata(e){const t={integrationId:this.integrationId,filePathInBucket:e};return await this.rpcManager.post("storage/getFileMetadata",t)}async getDownloadUrl(e,t){const n={integrationId:this.integrationId,filePathInBucket:e,urlExpirationInSeconds:t};return await this.rpcManager.post("storage/getDownloadUrl",n)}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 _s{constructor(e,t,n,i,s){this.rpcManager=e,this.region=t,this.appId=n,this.apiKey=i,this.consoleRegion=s}async aiSearch(e){return await this.rpcManager.post("web/aiSearch",{query:e})}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e,t){be(this.apiKey,"API key is required to create a short URL");const n=Q(this.region,this.consoleRegion,"openapi/sqd/shorten"),i={url:e,appId:this.appId,secondsToLive:t},s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(i)});if(!s.ok)throw console.error("Error making POST request to shorten endpoint",s.statusText),new Error(`${s.statusText}: ${s.text}`);return await s.json()}async createShortUrls(e,t){be(this.apiKey,"API key is required to create a short URL");const n=Q(this.region,this.consoleRegion,"openapi/sqd/shortenMany"),i={urls:e,appId:this.appId,secondsToLive:t},s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(i)});if(!s.ok)throw console.error("Error making POST request to shortenMany endpoint",s.statusText),new Error(`${s.statusText}: ${s.text}`);return await s.json()}async deleteShortUrl(e){be(this.apiKey,"API key is required to delete a short URL");const t=Q(this.region,this.consoleRegion,"openapi/sqd/delete"),n={id:e,appId:this.appId},i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(n)});if(!i.ok)throw console.error("Error making POST request to delete endpoint",i.statusText),new Error(i.statusText)}async deleteShortUrls(e){be(this.apiKey,"API key is required to delete a short URL");const t=Q(this.region,this.consoleRegion,"openapi/sqd/deleteMany"),n={ids:e,appId:this.appId},i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(n)});if(!i.ok)throw console.error("Error making POST request to delete endpoint",i.statusText),new Error(i.statusText)}}class Es{constructor(e,t,n){this.rpcManager=e,this.region=t,this.appId=n}async executeWebhook(e,t={}){const{headers:n={},queryParams:i={},body:s,files:r=[]}=t,o=await this.rpcManager.getAuthHeaders(),a={...this.rpcManager.getStaticHeaders(),...o,...n};let c=B(this.region,this.appId,`webhooks/${encodeURIComponent(e)}`);if(i&&Object.keys(i).length>0){const e=new URLSearchParams;Object.entries(i).forEach(([t,n])=>{e.append(t,String(n))}),c+=`?${e.toString()}`}const u=new Headers(a);let l;if(u.append(rs,as("c_")),u.append(os,ls),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,n])=>{e.append(t,String(n))}),l=e}else u.append("Content-Type","application/json"),l=sn(s||{});const h=await fetch(c,{method:"POST",headers:u,body:l}),d={};if(h.headers.forEach((e,t)=>{d[t]=e}),!h.ok){const e=await h.text();let t;try{t=JSON.parse(e)}catch{t=e}const n="string"==typeof t?t:t?.message||h.statusText;throw new us(n,h.status,c,d,t)}const p=await h.text();let g;try{g=JSON.parse(p)}catch{g=p}return g}}class qs{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Yn,be(e.appId,"APP_ID_MUST_BE_PROVIDED");for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,n=Ts(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new yn(this.destructManager),fn.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new Lt(e.apiKey,e.authProvider),this.socketManager=new Ss(this.clientIdService,e.region,n,e.messageNotificationWrapper,this.destructManager,this.authManager),this.rpcManager=new bs(e.region,n,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new ai(this.socketManager,this.rpcManager),this.jobClient=new si(this.socketManager,this.rpcManager,this.clientIdService),this.backendFunctionManager=new dn(this.rpcManager),this.aiClient=new Pt(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager),this.apiClient=new Qt(this.rpcManager),this.documentStore=new ni,this.lockManager=new es,this.distributedLockManager=new Zn(this.socketManager,this.destructManager),this.documentIdentityService=new ei(this.documentStore,this.destructManager),this.documentReferenceFactory=new ti(this.documentIdentityService),this.querySender=new Oi(this.rpcManager,this.destructManager),this.observabilityClient=new ui(this.rpcManager),this.schedulerClient=new Is(this.rpcManager),this._appId=n,this.querySubscriptionManager=new Yi(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager),this.localQueryManager=new Ti(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const i=new ri(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new _n(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService),this.dataManager=new zn(this.documentStore,i,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new Bn(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.webhookManager=new Es(this.rpcManager,e.region,n),this.nativeQueryManager=new oi(this.rpcManager),this._connectionDetails=new Qn(this.clientIdService,this.socketManager),this.queueManagerFactory=new ts(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new G(this.rpcManager,this.options.region,Cs(n),this.options.consoleRegion),this.webClient=new _s(this.rpcManager,this.options.region,Cs(n),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}static getInstance(e){const t=nn(e);let n=qs.squidInstancesMap[t];return n||(n=new qs(e),qs.squidInstancesMap[t]=n,n)}static getInstances(){return Object.values(qs.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Tt){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,...n){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...n)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}executeNativeRelationalQuery(e,t,n={}){const i={type:"relational",query:t,params:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(i)}executeNativePureQuery(e,t,n={}){const i={type:"pure",query:t,params:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(i)}executeNativeMongoQuery(e,t,n){const i={type:"mongo",collectionName:t,aggregationPipeline:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(i)}executeNativeElasticQuery(e,t,n,i="_search",s="GET"){const r={type:"elasticsearch",index:t,endpoint:i,method:s,body:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}job(){return this._validateNotDestructed(),this.jobClient}api(){return this._validateNotDestructed(),this.apiClient}admin(){return this._validateNotDestructed(),this.adminClient}web(){return this._validateNotDestructed(),this.webClient}storage(e="built_in_storage"){return this._validateNotDestructed(),new Os(e,this.rpcManager)}personalStorage(e){return this._validateNotDestructed(),new di(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new ii(this.rpcManager)}acquireLock(e){return this._validateNotDestructed(),this.distributedLockManager.lock(e)}async withLock(e,t){const n=await this.acquireLock(e);try{return await t(n)}finally{n.release()}}queue(e,t=Ct){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(qs.squidInstancesMap).find(([,e])=>e===this);e&&delete qs.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,n)=>B(e,t,n),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,n)=>Ts(e,t,n)}}_validateNotDestructed(){be(!this.destructManager.isDestructing,"The client was already destructed.")}}export{bt as AI_AGENTS_INTEGRATION_ID,dt as AI_AUDIO_CREATE_SPEECH_MODEL_NAMES,ht as AI_AUDIO_TRANSCRIPTION_MODEL_NAMES,Ge as AI_CHAT_MESSAGE_SOURCE,it as AI_EMBEDDINGS_MODEL_NAMES,lt as AI_IMAGE_MODEL_NAMES,Ke as AI_PROVIDER_TYPES,He as AI_STATUS_MESSAGE_PARENT_MESSAGE_ID_TAG,We as AI_STATUS_MESSAGE_RESULT_TAG,Ft as ALL_OPERATORS,Ze as ANTHROPIC_CHAT_MODEL_NAMES,ft as API_INJECTION_FIELD_TYPES,Nt as ARRAY_OPERATORS,wt as AUTH_INTEGRATION_TYPES,G as AdminClient,Ne as AiAgentClient,Ae as AiAgentReference,xe as AiAssistantClient,je as AiAudioClient,Pt as AiClient,Pe as AiImageClient,Le as AiKnowledgeBaseClient,Qe as AiKnowledgeBaseReference,Ue as AiMatchMakingClient,Qt as ApiClient,$ as ApiKeysSecretClient,Lt as AuthManager,Me as BUILT_IN_AGENT_ID,Tt as BUILT_IN_DB_INTEGRATION_ID,Ct as BUILT_IN_QUEUE_INTEGRATION_ID,Ot as BUILT_IN_STORAGE_INTEGRATION_ID,dn as BackendFunctionManager,En as BaseQueryBuilder,jt as CLIENT_CONNECTION_STATES,mn as CLIENT_ID_GENERATOR_KEY,bn as CLIENT_REQUEST_ID_GENERATOR_KEY,An as Changes,yn as ClientIdService,jn as CollectionReference,Bn as CollectionReferenceFactory,Qn as ConnectionDetails,vt as DATA_INTEGRATION_TYPES,Ce as DEFAULT_SHORT_ID_LENGTH,zn as DataManager,Nn as DereferencedJoin,Yn as DestructManager,Xn as DistributedLockImpl,Zn as DistributedLockManager,Cn as DocumentReference,ti as DocumentReferenceFactory,ni as DocumentStore,Fe as EMPTY_CHAT_ID,Se as ENVIRONMENT_IDS,ii as ExtractionClient,Ji as FETCH_BEYOND_LIMIT,ut as FLUX_MODEL_NAMES,Je as GEMINI_CHAT_MODEL_NAMES,St as GRAPHQL_INTEGRATION_TYPES,Ye as GROK_CHAT_MODEL_NAMES,xn as GroupedJoin,Mt as HTTP_INTEGRATION_TYPES,mt as HttpStatus,kt as INTEGRATION_SCHEMA_TYPES,It as INTEGRATION_TYPES,L as IntegrationClient,si as JobClient,Rn as JoinQueryBuilder,un as LastUsedValueExecuteFunctionCache,$i as LimitUnderflowState,Ti as LocalQueryManager,At as METRIC_DOMAIN,Dt as METRIC_FUNCTIONS,Rt as METRIC_INTERVAL_ALIGNMENT,$e as MatchMaker,ri as MutationSender,cs as NOOP_FN,oi as NativeQueryManager,ai as NotificationClient,ot as OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES,at as OPENAI_AUDIO_MODEL_NAMES,rt as OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES,ze as OPENAI_CHAT_MODEL_NAMES,tt as OPENAI_EMBEDDINGS_MODEL_NAMES,st as OPENAI_IMAGE_MODEL_NAMES,pt as OPEN_AI_CREATE_SPEECH_FORMATS,ui as ObservabilityClient,On as Pagination,di as PersonalStorageClient,Dn as QueryBuilder,_n as QueryBuilderFactory,Oi as QuerySender,Yi as QuerySubscriptionManager,ts as QueueManagerFactory,is as QueueManagerImpl,gt as RAG_TYPES,Ve as RERANK_PROVIDERS,ss as RateLimiter,bs as RpcManager,_t as SQUID_BUILT_IN_INTEGRATION_IDS,qt as SQUID_METRIC_NAMES,xt as SQUID_REGIONS,ct as STABLE_DIFFUSION_MODEL_NAMES,Is as SchedulerClient,U as SecretClient,Ss as SocketManager,qs as Squid,us as SquidClientError,Os as StorageClient,Xe as VENDOR_AI_CHAT_MODEL_NAMES,nt as VOYAGE_EMBEDDING_MODEL_NAMES,_s as WebClient,Es as WebhookManager,De as base64ToFile,an as compareArgsByReference,cn as compareArgsBySerializedValue,gi as deserializeQuery,Te as generateId,Oe as generateShortId,_e as generateShortIds,ke as generateUUID,Q as getConsoleUrl,pn as getCustomizationFlag,Et as isBuiltInIntegrationId,yt as isPlaceholderParam,et as isVendorAiChatModelName,fs as rawSquidHttpDelete,ds as rawSquidHttpGet,gs as rawSquidHttpPatch,hs as rawSquidHttpPost,ps as rawSquidHttpPut,ln as transformFileArgs,ms as tryDeserializing,pi as visitQueryResults};
|
|
1
|
+
import*as e from"ws";import{BehaviorSubject as t,NEVER as n,Observable as i,ReplaySubject as s,Subject as r,combineLatest as o,combineLatestWith as a,concatMap as c,debounceTime as u,defaultIfEmpty as l,defer as h,delay as d,distinctUntilChanged as p,filter as g,finalize as f,first as y,firstValueFrom as m,from as b,interval as I,lastValueFrom as v,map as w,of as S,pairwise as M,race as k,share as T,skip as C,startWith as O,switchAll as _,switchMap as E,take as q,takeUntil as D,takeWhile as A,tap as R,timer as N}from"rxjs";var x={150:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var s=Object.getOwnPropertyDescriptor(t,n);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,s)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),s=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0});const r=n(642);t.default=r.PromisePool,s(n(273),t),s(n(642),t),s(n(837),t),s(n(426),t),s(n(858),t),s(n(172),t)},172:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class n 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=n},220:t=>{t.exports=e},234:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolExecutor=void 0;const i=n(642),s=n(172),r=n(837),o=n(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],taskTimeout:0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw s.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}processedCount(){return this.processedItems().length}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw 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(i.PromisePool.notRun),this):this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=i.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 n=this.createTaskFor(e,t).then(e=>{this.save(e,t).removeActive(n)}).catch(async i=>{await this.handleErrorFor(i,e,t),this.removeActive(n)}).finally(()=>{this.processedItems().push(e),this.runOnTaskFinishedHandlers(e)});this.tasks().push(n),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[n,i]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),n()]).finally(i)}createTaskTimeout(e){let t;return[async()=>new Promise((n,i)=>{t=setTimeout(()=>{i(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,n){if(this.shouldUseCorrespondingResults()&&(this.results()[n]=i.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())}}},273:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},426:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},642:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const i=n(234);class s{constructor(e){this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new 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}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new i.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=s,s.notRun=Symbol("notRun"),s.failed=Symbol("failed")},837:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class n 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=n},858:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class n extends Error{}t.StopThePromisePoolError=n}},F={};function j(e){var t=F[e];if(void 0!==t)return t.exports;var n=F[e]={exports:{}};return x[e].call(n.exports,n,n.exports,j),n.exports}j.d=(e,t)=>{for(var n in t)j.o(t,n)&&!j.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const P=["aiData","api","application","application-kotlin","auth","backend-function","connector","integration","internal-storage","internalCodeExecutor","mutation","native-query","observability","openapi","query","queue","quota","scheduler","secret","storage","webhooks","ws","personalStorage","internal-extraction","notification"];function B(e,t,n,i,s,r){let o="https",a=`${i||t}.${s||e}.${new URL("https://squid.cloud").host}`,c="";/^local/.test(e)&&(o="http",c=P.includes(n.replace(/^\//,"").split("/")[0]||"")||r?"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=n.replace(/^\/+/,"");return l?`${u}/${l}`:u}function Q(e,t,n=""){return B(function(e,t){return t||(e.includes("sandbox")?"us-east-1.aws.sandbox":e.includes("local")?"local":e.includes("staging")?"us-central1.gcp.staging":"us-east-1.aws")}(e,t),"console",n)}class L{constructor(e,t,n,i){this.rpcManager=e,this.iacBaseUrl=Q(t,i,`openapi/iac/applications/${n}/integrations`)}async list(e){const t=await this.rpcManager.get(this.iacBaseUrl);return e?t.filter(t=>t.type===e):t}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}}class U{constructor(e){this.rpcManager=e}get apiKeys(){return new $(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 n={keys:[e],force:t};return this.rpcManager.post("secret/delete",n)}async deleteMany(e,t=!1){if(0===e.length)return;const n={keys:e,force:t};return this.rpcManager.post("secret/delete",n)}}class ${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 G{constructor(e,t,n,i){this.rpcManager=e,this.region=t,this.appId=n,this.consoleRegion=i,this.integrationClient=new L(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new U(this.rpcManager)}integrations(){return this.integrationClient}secrets(){return this.secretClient}}function H(e){return"function"==typeof e}function W(e){return function(t){if(function(e){return H(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 n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},V(e,t)};function K(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}V(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function z(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function J(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,s,r=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=r.next()).done;)o.push(i.value)}catch(e){s={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(s)throw s.error}}return o}function Y(e,t,n){if(n||2===arguments.length)for(var i,s=0,r=t.length;s<r;s++)!i&&s in t||(i||(i=Array.prototype.slice.call(t,0,s)),i[s]=t[s]);return e.concat(i||Array.prototype.slice.call(t))}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var Z,X=((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 ee(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var te=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,n,i,s;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(H(c))try{c()}catch(e){s=e instanceof X?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=z(u),h=l.next();!h.done;h=l.next()){var d=h.value;try{ne(d)}catch(e){s=null!=s?s:[],e instanceof X?s=Y(Y([],J(s)),J(e.errors)):s.push(e)}}}catch(e){n={error:e}}finally{try{h&&!h.done&&(i=l.return)&&i.call(l)}finally{if(n)throw n.error}}}if(s)throw new X(s)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)ne(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).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)&&ee(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&ee(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function ne(e){H(e)?e():e.unsubscribe()}te.EMPTY;var ie={setTimeout:function(e,t){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var s=ie.delegate;return(null==s?void 0:s.setTimeout)?s.setTimeout.apply(s,Y([e,t],J(n))):setTimeout.apply(void 0,Y([e,t],J(n)))},clearTimeout:function(e){var t=ie.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function se(){}var re=oe("C",void 0,void 0);function oe(e,t,n){return{kind:e,value:t,error:n}}var ae=function(e){function t(t){var n,i=e.call(this)||this;return i.isStopped=!1,t?(i.destination=t,((n=t)instanceof te||n&&"closed"in n&&H(n.remove)&&H(n.add)&&H(n.unsubscribe))&&t.add(i)):i.destination=de,i}return K(t,e),t.create=function(e,t,n){return new ue(e,t,n)},t.prototype.next=function(e){this.isStopped?he(function(e){return oe("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?he(oe("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?he(re,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}(te);Function.prototype.bind;var ce=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){le(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){le(e)}else le(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){le(e)}},e}(),ue=function(e){function t(t,n,i){var s,r=e.call(this)||this;return s=H(t)||!t?{next:null!=t?t:void 0,error:null!=n?n:void 0,complete:null!=i?i:void 0}:t,r.destination=new ce(s),r}return K(t,e),t}(ae);function le(e){!function(e){ie.setTimeout(function(){throw e})}(e)}function he(e,t){var n=null;n&&ie.setTimeout(function(){return n(e,t)})}var de={closed:!0,next:se,error:function(e){throw e},complete:se};function pe(e,t,n,i,s){return new ge(e,t,n,i,s)}var ge=function(e){function t(t,n,i,s,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=n?function(e){try{n(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=i?function(){try{i()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return K(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(ae);function fe(e,t){return W(function(n,i){var s=0;n.subscribe(pe(i,function(n){i.next(e.call(t,n,s++))}))})}function ye(e){return null!=e}let me=e=>new Error(e);function be(e,t,...n){e||function(e,...t){const n=ve(e);if("object"==typeof n)throw n;throw me(n||"Assertion error",...t)}(t,...n)}function Ie(e,t,...n){return be(e,t,...n),e}function ve(e){return void 0===e?"":"string"==typeof e?e:e()}function we(e,t,n){const i=ve(e);if("object"==typeof i)throw i;return`${i?`${i}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(n)}`}function Se(){return"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():Me()}function Me(){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 ke(){return Se()}const Te=18;function Ce(e=18,t=""){be(t.length<e,"ID prefix is too long");let n="";for(let t=0;t<e;t++)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()));return t.length>0&&(n=t+n.substring(t.length)),n}function Oe({count:e,length:t,prefix:n}){be(e>=0,`Invalid IDs count: ${e}`);const i=new Set;for(;i.size<e;)i.add(Ce(t||18,n||""));return[...i]}const _e=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Ee(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Ee(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Ee(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(_e.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${_e.join(", ")}`);const n=e[t];if("object"!=typeof n&&"string"!=typeof n&&"number"!=typeof n&&"boolean"!=typeof n)throw new Error(`Invalid metadata filter value for key ${t} - cannot be of type ${typeof n}`)}}function qe(e,t,n){const i=atob(e),s=new Uint8Array(i.length);for(let e=0;e<i.length;e++)s[e]=i.charCodeAt(e);return new File([s],t,{type:n||"application/octet-stream"})}class De{constructor(e,t,n,i,s,r,o){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=n,this.rpcManager=i,this.socketManager=s,this.jobClient=r,this.backendFunctionManager=o}async get(){const e=await this.post("ai/agent/getAgent",{agentId:this.agentId});return e?.agent}async upsert(e){await this.post("ai/agent/upsertAgent",{...e,id:this.agentId})}async delete(){await this.post("ai/agent/deleteAgent",{agentId:this.agentId})}async updateInstructions(e){await this.setAgentOptionInPath("instructions",e)}async updateModel(e){await this.setAgentOptionInPath("model",e)}async updateConnectedAgents(e){await this.setAgentOptionInPath("connectedAgents",e)}async updateGuardrails(e){const t=await this.get();be(t,"Agent not found");const n={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",n)}async updateCustomGuardrails(e){await this.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}async regenerateApiKey(){return await this.post("ai/agent/regenerateApiKey",{agentId:this.agentId})}async getApiKey(){return await this.post("ai/agent/getApiKey",{agentId:this.agentId})}chat(e,t,n){return this.chatInternal(e,t,n).responseStream}async transcribeAndChat(e,t,n){const i=this.chatInternal(e,t,n),s=await Ie(i.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:i.responseStream,transcribedPrompt:s.transcribedPrompt}}async ask(e,t,n){const i=await this.askInternal(e,!1,t,n);return this.replaceFileTags(i.responseString,i.annotations)}async askWithAnnotations(e,t,n){const i=await this.askInternal(e,!1,t,n);return{responseString:i.responseString,annotations:i.annotations}}async askAsync(e,t,n){const i={agentId:this.agentId,prompt:e,options:n,jobId:t};await this.post("ai/chatbot/askAsync",i)}observeStatusUpdates(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"aiStatus"===e.type&&e.agentId===this.agentId),fe(e=>({agentId:this.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,messageId:e.messageId})))}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,n){return await this.askInternal(e,!1,t,n)}async transcribeAndAskWithVoiceResponse(e,t,n){const i=await this.askInternal(e,!0,t,n),s=i.voiceResponse;return{responseString:i.responseString,transcribedPrompt:i.transcribedPrompt,voiceResponseFile:qe(s.base64File,`voice.${s.extension}`,s.mimeType)}}async askWithVoiceResponse(e,t,n){const i=await this.askInternal(e,!0,t,n),s=i.voiceResponse;return{responseString:i.responseString,voiceResponseFile:qe(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 provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}replaceFileTags(e,t={}){let n=e;for(const[e,i]of Object.entries(t)){let t="";const s=i.aiFileUrl.fileName?i.aiFileUrl.fileName:i.aiFileUrl.url;switch(i.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${s}](${i.aiFileUrl.url})`}n=n.replace(`\${id:${e}}`,t)}return n}async askInternal(e,t,n,i){if(n?.contextMetadataFilter&&Ee(n.contextMetadataFilter),n?.contextMetadataFilterForKnowledgeBase)for(const e in n.contextMetadataFilterForKnowledgeBase)Ee(n.contextMetadataFilterForKnowledgeBase[e]);i=i||Se(),n={...Ae,...n||{}};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:n,jobId:i},a=s?void 0:[e];return await this.post(r,o,a,"file"),await this.jobClient.awaitJob(i)}chatInternal(e,t,n){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Ee(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Ee(t.contextMetadataFilterForKnowledgeBase[e]);const i=Se(),s=void 0===(t={...Ae,...t||{}}).smoothTyping||t.smoothTyping;let o="";const a=new r,u=new r;this.ongoingChatSequences[i]=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:n})=>t?S({value:e,complete:t,annotations:n}):S(e).pipe(s?d(0):R(),fe(e=>({value:e,complete:!1,annotations:void 0})))),A(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:n})=>{o+=e,t&&n&&(o=this.replaceFileTags(o,n)),a.next(o)},error:e=>{console.error(e)},complete:()=>{a.complete()}});const h="string"==typeof e;n=n||Se();const p={agentId:this.agentId,jobId:n,prompt:h?e:void 0,options:t,clientRequestId:i},g={responseStream:a.pipe(f(()=>{delete this.ongoingChatSequences[i]}),T())};return h?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=this.jobClient.awaitJob(n).catch(e=>{a.error(e),a.complete()}),g}async post(e,t,n=[],i="files"){const s={};return this.agentApiKey&&(s["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,n,i,s)}}const Ae={smoothTyping:!0,responseFormat:"text"};class Re{constructor(e,t,n,i){this.rpcManager=e,this.socketManager=t,this.jobClient=n,this.backendFunctionManager=i,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe(g(e=>"aiChatbot"===e.type),fe(e=>e)).subscribe(e=>{this.handleChatResponse(e).then()})}agent(e,t=void 0){return new De(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:n,complete:i,tokenIndex:s,annotations:r}=e.payload;if(i&&!n.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(n.match(/\[.*?]\((.*?)\)/g))t.next({value:n,complete:i,tokenIndex:void 0===s?void 0:s,annotations:r});else for(let e=0;e<n.length;e++)t.next({value:n[e],complete:i&&e===n.length-1,tokenIndex:void 0===s?void 0:s,annotations:r})}}const Ne="__squid_empty_chat_id";class xe{constructor(e){this.rpcManager=e}async createAssistant(e,t,n,i){const s={name:e,instructions:t,functions:n,toolTypes:i};return(await this.rpcManager.post("ai/assistant/createAssistant",s)).assistantId}async deleteAssistant(e){const t={assistantId:e};await this.rpcManager.post("ai/assistant/deleteAssistant",t)}async createThread(e){const t={assistantId:e};return(await this.rpcManager.post("ai/assistant/createThread",t)).threadId}async deleteThread(e){const t={threadId:e};await this.rpcManager.post("ai/assistant/deleteThread",t)}async queryAssistant(e,t,n,i,s){const r={assistantId:e,threadId:t,prompt:n,fileIds:i,options:s};return(await this.rpcManager.post("ai/assistant/queryAssistant",r)).answer}async addFileToAssistant(e,t){const n={assistantId:e};return(await this.rpcManager.post("ai/assistant/addFileToAssistant",n,[t],"file")).fileId}async removeFileFromAssistant(e,t){const n={assistantId:e,fileId:t};await this.rpcManager.post("ai/assistant/removeFileFromAssistant",n)}async addFileToThread(e,t){const n={threadId:e};return(await this.rpcManager.post("ai/assistant/addFileToThread",n,[t],"file")).fileId}}class Fe{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 n={input:e,options:t},i=await this.rpcManager.post("ai/audio/createSpeech",n);return qe(i.base64File,`audio.${i.extension}`,i.mimeType)}}class je{constructor(e){this.rpcManager=e}async generate(e,t){const n={prompt:e,options:t};return await this.rpcManager.post("ai/image/generate",n)}async removeBackground(e){return await this.rpcManager.post("ai/image/removeBackground",{},[e])}}function Pe(e){for(const t in e){const n=e[t];be("string"==typeof n||"number"==typeof n||"boolean"==typeof n||void 0===n,`Invalid metadata value for key ${t} - cannot be of type ${typeof n}`),be(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}class Be{constructor(e,t,n){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=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 delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e})).context}async deleteContext(e){await this.deleteContexts([e])}async deleteContexts(e){await this.rpcManager.post("ai/knowledge-base/deleteContexts",{knowledgeBaseId:this.knowledgeBaseId,contextIds:e})}async upsertContext(e,t){const{failures:n}=await this.upsertContexts([e],t?[t]:void 0);return n.length>0?{failure:n[0]}:{}}async upsertContexts(e,t){for(const t of e)t.metadata&&Pe(t.metadata);const n=Se();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:n},t),await this.jobClient.awaitJob(n)}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class Qe{constructor(e,t){this.rpcManager=e,this.jobClient=t}knowledgeBase(e){return new Be(e,this.rpcManager,this.jobClient)}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async delete(e){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:e})}}class Le{constructor(e){this.rpcManager=e}async createMatchMaker(e){const t=await this.rpcManager.post("matchMaking/createMatchMaker",{matchMaker:e});return new Ue(t,this.rpcManager)}async getMatchMaker(e){const t=(await this.rpcManager.post("matchMaking/getMatchMaker",{matchMakerId:e})).matchMaker;if(t)return new Ue(t,this.rpcManager)}async listMatchMakers(){return await this.rpcManager.post("matchMaking/listMatchMakers",{})}}class Ue{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 $e=["user","ai"],Ge="parent",He="result",We=["cohere","none"],Ve=["anthropic","flux","gemini","openai","grok","stability","voyage","external"],Ke=["o1","o3","o3-mini","o4-mini","gpt-5","gpt-5-mini","gpt-5-nano","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","gpt-4o","gpt-4o-mini"],ze=["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite"],Je=["grok-3","grok-3-fast","grok-3-mini","grok-3-mini-fast","grok-4","grok-4-fast-reasoning","grok-4-fast-non-reasoning"],Ye=["claude-3-7-sonnet-latest","claude-haiku-4-5-20251001","claude-opus-4-20250514","claude-opus-4-1-20250805","claude-sonnet-4-20250514","claude-sonnet-4-5-20250929"],Ze=[...Ke,...Ye,...ze,...Je];function Xe(e){return Ze.includes(e)}const et=["text-embedding-3-small"],tt=["voyage-3-large"],nt=[...et,...tt],it=["dall-e-3"],st=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],rt=["tts-1","tts-1-hd","gpt-4o-mini-tts"],ot=[...st,...rt],at=["stable-diffusion-core"],ct=["flux-pro-1.1","flux-kontext-pro"],ut=[...it,...at,...ct],lt=[...st],ht=[...rt],dt=["mp3","opus","aac","flac","wav","pcm"];function pt(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const gt=["contextual","basic"],ft=["secret","regular"];function yt(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const mt=["dev","prod"],bt="built_in_agent",It={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},vt="ai_agents",wt=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","dynamodb","elasticsearch","firebase_auth","firestore","gcs","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jwt_hmac","jwt_rsa","kafka","keycloak","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","oracledb","pinecone","postgres","redis","s3","salesforce_crm","sap_hana","sentry","servicenow","snowflake","spanner","xata","zendesk","mail","slack","mcp","a2a","legend","ollama"],St=["bigquery","built_in_db","clickhouse","cockroach","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],Mt=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth"],kt=["graphql","linear"],Tt=["api"],Ct=["data","api","graphql"],Ot="built_in_db",_t="built_in_queue",Et="built_in_storage",qt=[Ot,_t,Et];function Dt(e){return qt.includes(e)}const At=["squid_functionExecution_count","squid_functionExecution_time"],Rt=["sum","max","min","average","median","p95","p99","count"],Nt=["user","squid"],xt=["align-by-start-time","align-by-end-time"],Ft=["in","not in","array_includes_some","array_includes_all","array_not_includes"],jt=[...Ft,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],Pt=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],Bt=["CONNECTED","DISCONNECTED","REMOVED"];class Qt{constructor(e,t,n,i){this.socketManager=e,this.rpcManager=t,this.jobClient=n,this.backendFunctionManager=i,this.aiAssistantClient=new xe(this.rpcManager)}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()}assistant(){return this.aiAssistantClient}image(){return new je(this.rpcManager)}audio(){return new Fe(this.rpcManager)}matchMaking(){return new Le(this.rpcManager)}executeAiQuery(e,t,n){const i={integrationId:e,prompt:t,options:n};return this.rpcManager.post("ai/query/executeDataQuery",i)}executeAiApiCall(e,t,n,i){const s={integrationId:e,prompt:t,allowedEndpoints:n,provideExplanation:i};return this.rpcManager.post("ai/query/executeApiQuery",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 n={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",n)).settings}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new Re(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new Qe(this.rpcManager,this.jobClient)),this.aiKnowledgeBaseClient}}const Lt={headers:{},queryParams:{},pathParams:{}};class Ut{constructor(e){this.rpcManager=e}async get(e,t,n){return this.request(e,t,void 0,n,"get")}async post(e,t,n,i){return this.request(e,t,n,i,"post")}async delete(e,t,n,i){return this.request(e,t,n,i,"delete")}async patch(e,t,n,i){return this.request(e,t,n,i,"patch")}async put(e,t,n,i){return this.request(e,t,n,i,"put")}async request(e,t,n,i,s){const r={integrationId:e,endpointId:t,body:n,options:{...Lt,...this.convertOptionsToStrings(i||{})},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 $t{constructor(e,t){this.apiKey=e,this.authProvider=t}setAuthProvider(e){this.authProvider=e}async getAuthData(){return{token:await this.getTokenFromAuthProvider(),integrationId:this.authProvider?.integrationId}}getApiKey(){return this.apiKey}async getToken(){if(this.apiKey)return{type:"ApiKey",token:this.apiKey};const e=await this.getTokenFromAuthProvider();return e?{type:"Bearer",token:e,integrationId:this.authProvider?.integrationId}:void 0}async getTokenFromAuthProvider(){const e=this.authProvider?.getToken();return"object"==typeof e?await e:e}}const Gt=/[.\[\]]/;function Ht(e,t){if(!e)return;const n=t.split(Gt);let i,s=e;for(;s&&n.length;){const e=n.shift();if(e){if("object"!=typeof s||!(e in s))return;i=s[e],s=i}}return i}function Wt(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Vt(e,t,n,i="."){const s=t.split(i);let r=e;for(;s.length;){const e=Ie(s.shift());if(s.length){const t=r[e],n=Wt(t)?en(t)??{}:{};r[e]=n,r=n}else r[e]=n}}function Kt(e,t,n="."){const i=t.split(n);let s=e;for(;i.length;){const e=Ie(i.shift());if(i.length){const t=Wt(s[e])?en(s[e])??{}:{};s[e]=t,s=t}else delete s[e]}}function zt(e,t,n){if(e.has(t)){const i=e.get(t);e.delete(t),e.set(n,i)}}function Jt(e){return null==e}function Yt(e,t){if(e===t)return!0;if(null===e||null===t)return!1;const n=typeof e;if(n!==typeof t)return!1;if("object"!==n)return e===t;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();const i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(const n of i)if(!s.includes(n)||!Yt(e[n],t[n]))return!1;return!0}function Zt(e,t){const n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=Xt(e[i],t);return n}function Xt(e,t){const n=t?t(e):void 0;if(void 0!==n)return n;if("object"!=typeof e||null===e)return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return Zt(e,t);if(e instanceof Map)return new Map(Zt(Array.from(e),t));if(e instanceof Set)return new Set(Zt(Array.from(e),t));if(ArrayBuffer.isView(e))return(i=e)instanceof Buffer?Buffer.from(i):new i.constructor(i.buffer.slice(),i.byteOffset,i.length);var i;const s={};for(const n in e)Object.hasOwnProperty.call(e,n)&&(s[n]=Xt(e[n],t));return s}function en(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 tn(e,t){if(e===t||Jt(e)&&Jt(t))return 0;if(Jt(e))return-1;if(Jt(t))return 1;const n=typeof e,i=typeof t;return n!==i?n<i?-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 nn(e,t){return e.reduce((e,n)=>{const i=t(n);return e[i]?e[i].push(n):e[i]=[n],e},{})}function sn(e){if(Array.isArray(e))return e.map(e=>sn(e));if("object"!=typeof e||null===e||e instanceof Date)return e;const t=Object.keys(e),n={};return t.sort().forEach(t=>{n[t]=sn(e[t])}),n}function rn(e){return on(sn(e))}function on(e){if(void 0===e)return null;const t=Xt(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function an(e){return Xt(JSON.parse(e),e=>{if(null===e||"object"!=typeof e)return;const t=e,n=t.$date;return n&&1===Object.keys(t).length?new Date(n):void 0})}function cn(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=on(e);if("undefined"!=typeof Buffer)return Buffer.from(t,"utf8").toString("base64");{const e=(new TextEncoder).encode(t);let n="";for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return btoa(n)}}const un=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0},ln=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(on(e[n])!==on(t[n]))return!1;return!0};class hn{constructor(e){this.options=e}get(e){const t=this.cachedEntry,n=this.options.argsComparator||un,i=this.options.valueExpirationMillis||1/0;return t&&Date.now()<t.cacheTimeMillis+i&&n(t.args,e)?{found:!0,value:t.result}:{found:!1}}set(e,t){this.cachedEntry={args:e,result:t,cacheTimeMillis:Date.now()}}}function dn(e){const t=[],n=[];let i=0;for(const s of e)if("undefined"!=typeof File)if(s instanceof File){n.push(s);const e={type:"file",__squid_placeholder__:!0,fileIndex:i++};t.push(e)}else if(pn(s)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:s.map((e,t)=>(n.push(s[t]),i++))};t.push(e)}else t.push(s);else t.push(s);return{argsArray:t,fileArray:n}}function pn(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class gn{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...n){const{argsArray:i,fileArray:s}=dn(n),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(i);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?un:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,i));if(t)return t.promise}const u=this.createExecuteCallPromise(r,i,s,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:i,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}createExecuteCallPromise(e,t,n,i,s={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:on(t)};return m(k(b(this.rpcManager.post(r,o,n.length>0?n:[],"files",s)).pipe(fe(e=>{if(!e.success)throw new Error(e.payload);const n=an(e.payload);if(n?.__isSquidBase64File__){const e=n;return qe(e.base64,e.filename,e.mimetype)}return i&&i.set(t,n),n}))))}}function fn(e){if("undefined"!=typeof globalThis)return globalThis[e]}function yn(){if("undefined"!=typeof window)return window;if(void 0!==j.g)return j.g;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}!function(e=!0){yn().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 mn{static debug(...e){(function(){const e=yn();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=yn();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class bn{constructor(e){this.destructManager=e,this.clientTooOldSubject=new t(!1),this.isTenant=!0===yn().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),w(()=>{}))}notifyClientTooOld(){this.clientTooOldSubject.next(!0),this.clientIdSubject.next(this.generateClientId())}notifyClientNotTooOld(){this.clientTooOldSubject.next(!1)}observeClientReadyToBeRegenerated(){return this.clientTooOldSubject.pipe(C(1),g(e=>!e),w(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=yn()[vn];return e?e():Se()}generateClientId(){const e=yn()[In];if(e)return e();let t=`${this.isTenant?"tenant-":""}${Se()}`;return"object"==typeof navigator&&!0===navigator.userAgent?.toLowerCase()?.includes("playwright")&&(t=`e2e${t.substring(3)}`),t}}const In="SQUID_CLIENT_ID_GENERATOR",vn="SQUID_CLIENT_REQUEST_ID_GENERATOR",wn="__squidId";function Sn(e){return an(e)}function Mn(...e){const[t,n,i]=e,s="object"==typeof t?t:{docId:t,collectionName:n,integrationId:i};return s.integrationId||(s.integrationId=void 0),rn(s)}function kn(e,t,n){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===n)return Yt(e,t);if("!="===n)return!Yt(e,t);switch(n){case"<":return!Jt(e)&&(!!Jt(t)||t<e);case"<=":return!!Jt(t)||!Jt(e)&&t<=e;case">":return!Jt(t)&&(!!Jt(e)||t>e);case">=":return!!Jt(e)||!Jt(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Tn(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Tn(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Tn(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Tn(t,e,!0));case"array_includes_some":{const n=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>Ie(n,"VALUE_CANNOT_BE_NULL").some(t=>Yt(t,e)))}case"array_includes_all":{const n=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>Ie(n,"VALUE_CANNOT_BE_NULL").some(t=>Yt(t,e)))}case"array_not_includes":{const n=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!Ie(n,"VALUE_CANNOT_BE_NULL").some(t=>Yt(t,e)))}default:throw new Error(`Unsupported operator comparison: ${n}`)}}function Tn(e,t,n){n||(e=e.toLowerCase(),t=t.toLowerCase());const i=function(e){let t="";for(let n=0;n<e.length;++n)"\\"===e[n]?n+1<e.length&&["%","_"].includes(e[n+1])?(t+=e[n+1],n++):n+1<e.length&&"\\"===e[n+1]?(t+="\\\\",n++):t+="\\":"%"===e[n]?t+="[\\s\\S]*":"_"===e[n]?t+="[\\s\\S]":("/-\\^$*+?.()[]{}|".includes(e[n])&&(t+="\\"),t+=e[n]);return t}(t);return new RegExp(`^${i}$`).test(e)}function Cn(e,t){return`${e}_${t}`}function On(e){return"fieldName"in e}class _n{constructor(e,t,n){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=n,this.refId=Se()}get squidDocId(){return this._squidDocId}get data(){return Xt(this.dataRef)}get dataRef(){return Ie(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:n}=Sn(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:n,collectionName:e,integrationId:t},null,2)}`})}get hasData(){return!!this.dataManager.getProperties(this.squidDocId)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return Ie(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(w(e=>(Ie(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 n={};Object.entries(e).forEach(([e,t])=>{const i=void 0!==t?{type:"update",value:t}:{type:"removeProperty"};n[e]=[i]});const i={type:"update",squidDocIdObj:Sn(this.squidDocId),properties:n};return this.dataManager.applyOutgoingMutation(i,t)}async setInPath(e,t,n){return this.update({[e]:Xt(t)},n)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,n){const i={type:"applyNumericFn",fn:"increment",value:t},s={type:"update",squidDocIdObj:Sn(this.squidDocId),properties:{[e]:[i]}};return this.dataManager.applyOutgoingMutation(s,n)}decrementInPath(e,t,n){return this.incrementInPath(e,-t,n)}async insert(e,t){const n=Sn(this.squidDocId),i=n.integrationId;let s=an(n.docId);if(s[wn]&&(s={}),i===Ot&&s.__id)try{const e=an(s.__id);s={...s,...e}}catch{}const r={type:"insert",squidDocIdObj:n,properties:{...e,__docId__:n.docId,...s}};return this.dataManager.applyOutgoingMutation(r,t)}async delete(e){const t={type:"delete",squidDocIdObj:Sn(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}hasSquidPlaceholderId(){const e=an(this._squidDocId);if("object"==typeof e&&e.docId){const t=an(e.docId);if("object"==typeof t&&Object.keys(t).includes(wn))return!0}return!1}}class En{constructor(e,n={}){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(_()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...n},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),w(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(w(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||Jt(e)&&Jt(t))return 0;if(Jt(e))return-1;if(Jt(t))return 1;const n=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:i,asc:s}of n){const n=tn(Ht(e,i),Ht(t,i));if(0!==n)return s?n:-n}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 n=t.filter(e=>1===this.compareObjects(e,this.lastElement)).length;this.firstElement=t[e.length-n-this.paginateOptions.pageSize],this.lastElement=null}else this.navigatingToLastPage&&(this.firstElement=t[e.length-this.paginateOptions.pageSize],this.navigatingToLastPage=!1);const n=t.filter(e=>-1===this.compareObjects(e,this.firstElement)).length,i=Math.max(0,e.length-n-this.paginateOptions.pageSize);n!==e.length?this.internalStateObserver.next({numBefore:n,numAfter:i,data:e,extractedData:t}):this.prevInternal({numBefore:n,numAfter:i,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:Ht(e,t.fieldName)||null}))),this.snapshotSubject.next(t.snapshots(this.paginateOptions.subscribe).pipe(w(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:Ht(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),w(()=>({data:[],extractedData:[],numBefore:0,numAfter:0}))),this.internalStateObserver.pipe(g(e=>null!==e),q(1))))}internalStateToState(e){const{data:t,numBefore:n,numAfter:i,extractedData:s}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(s[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:i>0,hasPrev:n>0}}prevInternal(e){const{numBefore:t,numAfter:n,extractedData:i}=e;this.firstElement=null,this.lastElement=i[t-1],this.internalStateObserver.next(null),this.doNewQuery(i[i.length-n-1],!0)}}Error;class qn{constructor(e,t,n,i){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=n,this.documentIdentityService=i}getForDocument(e){const{collectionName:t,integrationId:n,docId:i}=Sn(e),s=an(i),r=this.get(t,n);for(const[e,t]of Object.entries(s))r.where(e,"==",t);return r}get(e,t){return new Rn(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService)}}class Dn{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,n){return this.throwIfInvalidLikePattern(t),this.where(e,n?"like_cs":"like",t)}notLike(e,t,n){return this.throwIfInvalidLikePattern(t),this.where(e,n?"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 An{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(fe(e=>e.map(e=>e.data)))}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new An(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new En(this,e)}}class Rn extends Dn{constructor(e,t,n,i,s,r,o){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=n,this.localQueryManager=i,this.documentReferenceFactory=s,this.queryBuilderFactory=r,this.documentIdentityService=o,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return cn(this.build())}where(e,t,n){if(be(jt.includes(t),`Invalid operator: ${t}`),"in"===t||"not in"===t){const i=Array.isArray(n)?[...n]:[n];"in"===t&&0===i.length&&(this.containsEmptyInCondition=!0);for(const n of i)this.query.conditions.push({fieldName:e,operator:"in"===t?"==":"!=",value:n});return this}return this.query.conditions.push({fieldName:e,operator:t,value:n}),this}limit(e){return function(e){var t;be(function(e){return"number"==typeof e}(t=e),()=>we("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 n=this.query.sortOrder.map(e=>e.fieldName);return be(Yt(t.sort(),n.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 n={asc:t,fieldName:e};return function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var n,i,s,r;be((n=t,i=["fieldName","asc"],!Array.isArray(n)&&[...Object.keys(n)].every(e=>i.includes(e))),"Field sort should only contain a fieldName and asc"),be((s=t.asc,r="boolean",Array.isArray(s)?s.every(e=>typeof e===r):typeof s===r),"Asc needs to be boolean")}(n),be(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.sortOrder.push(n),this}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 n=this.build();return this.querySubscriptionManager.processQuery(n,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(fe(e=>e.map(e=>{be(1===Object.keys(e).length);const t=Mn(Ie(e[this.collectionName]).__docId__,this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)})))}changes(){let e,t=new Set;return this.snapshots().pipe(a(this.documentIdentityService.observeChanges().pipe(E(t=>(Object.entries(t).forEach(([t,n])=>{!function(e,t,n){const i=e[t];void 0!==i&&(e[n]=i,delete e[t])}(e||{},t,n)}),n)),O({}))),fe(([n])=>{let i=[];const s=[],r=[];if(e){for(const r of n){const n=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[n],t.delete(o);else if(e[n]){s.push(r);const i=e[n];delete e[n],t.delete(i)}else i.push(r)}for(const e of t)r.push(e)}else i=n;e={},t=new Set;for(const i of n){const n=i.dataRef;e[i.squidDocId]=n,t.add(n)}return new Nn(i,s,r)}))}dereference(){return new An(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new Rn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService);return e.query=Xt(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){return e.length?(this.query.conditions.push({fields:e}),this):this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new En(this,e)}mergeConditions(){const e=[],t=nn(this.query.conditions.filter(On)||[],e=>e.fieldName);for(const n of Object.values(t)){const t=nn(n,e=>e.operator);for(const[n,i]of Object.entries(t)){if("=="===n||"!="===n){e.push(...i);continue}const t=[...i];t.sort((e,t)=>tn(e.value,t.value)),">"===n||">="===n?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!On(e)),...e]}}class Nn{constructor(e,t,n){this.inserts=e,this.updates=t,this.deletes=n}}class xn extends Dn{constructor(e,t,n,i,s,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=n,this.documentReferenceFactory=i,this.queryBuilderFactory=s,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,n){return this.queryBuilder.where(e,t,n),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}join(e,t,n,i){const s=i?.leftAlias??this.latestAlias,r={...n,leftAlias:s,isInner:i?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[s].push(t),new xn(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,Xt(this.joins),Xt(this.joinConditions),e,!1).pipe(fe(e=>e.map(e=>{const t={};for(const[n,i]of Object.entries(e)){const e=n===this.rootAlias?this.collectionName:this.joins[n].collectionName,s=n===this.rootAlias?this.integrationId:this.joins[n].integrationId,r=i?Mn(i.__docId__,e,s):void 0;t[n]=r?this.documentReferenceFactory.create(r,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new Pn(this)}dereference(){return new Fn(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new xn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,Xt(this.leftToRight),Xt(this.joins),Xt(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 En(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class Fn{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(fe(e=>e.map(e=>function(e,t){const n={},i=Object.keys(e);for(const s of i){const i=e[s];n[s]=t(i)}return n}(e,e=>e?.data))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Fn(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 En(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class jn{constructor(e){this.groupedJoin=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.groupedJoin.snapshots(e).pipe(fe(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 jn(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 En(this,e)}dereference(e,t){const n=this.groupedJoin.joinQueryBuilder.leftToRight[t];if(n.length){const i={[t]:e[t].data};for(const t of n)i[t]=e[t].map(e=>this.dereference(e,t));return i}return e.data}}class Pn{constructor(e){this.joinQueryBuilder=e}snapshot(){return m(this.snapshots(!1))}snapshots(e){return this.joinQueryBuilder.snapshots(e).pipe(fe(e=>this.groupData(e,this.joinQueryBuilder.rootAlias)))}peek(){throw new Error("peek is not currently supported for join queries")}dereference(){return new jn(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Pn(this.joinQueryBuilder.clone())}addCompositeCondition(e){return this.joinQueryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.joinQueryBuilder.flipSortOrder(),this}limit(e){return this.joinQueryBuilder.limit(e),this}getLimit(){return this.joinQueryBuilder.getLimit()}extractData(e){return Object.keys(this.joinQueryBuilder.leftToRight).length>1?e[this.joinQueryBuilder.rootAlias].dataRef:e.dataRef}serialize(){return{...this.joinQueryBuilder.serialize(),grouped:!0}}paginate(e){if(this.joinQueryBuilder.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new En(this,e)}groupData(e,t){const n=nn(e,e=>e[t]?.squidDocId);return Object.values(n).filter(e=>void 0!==e[0][t]).map(e=>{const n=this.joinQueryBuilder.leftToRight[t],i=e[0][t];if(0===n.length)return i;const s={[t]:i};for(const t of n)s[t]=this.groupData(e,t);return s})}}class Bn{constructor(e,t,n,i,s,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=n,this.queryBuilderFactory=i,this.querySubscriptionManager=s,this.dataManager=r,this.refId=Se()}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!==Ot)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={[wn]:Se()};else e=e&&"string"!=typeof e?{__id:rn(e)}:{__id:e||Se()};const t=Mn(rn(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 n of e)await this.doc(n.id).insert(n.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const n of e)n instanceof _n?await n.delete(t):await this.doc(n).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new xn(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new Qn(...e)}}class Qn{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 n=this.snapshotEmitters[0].getSortOrders();for(const e of this.snapshotEmitters){const t=e.getSortOrders();if(t.length!==n.length)throw new Error("All the queries must have the same sort order");for(let e=0;e<n.length;e++)if(t[e].fieldName!==n[e].fieldName||t[e].asc!==n[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 Qn(...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 En(this,e)}or(e,...t){return o([...t]).pipe(w(t=>{const n=new Set,i=t.flat(),s=[];for(const e of i)n.has(this.extractData(e))||(n.add(this.extractData(e)),s.push(e));return s.sort((t,n)=>{for(const{fieldName:i,asc:s}of e){const e=Ht(this.extractData(t),i),r=Ht(this.extractData(n),i);if(!kn(e,r,"=="))return kn(r,e,"<")?s?-1:1:s?1:-1}return 0}).slice(0,this.getLimit())}))}}class Ln{constructor(e,t,n,i){this.documentReferenceFactory=e,this.queryBuilderFactory=t,this.querySubscriptionManager=n,this.dataManager=i,this.collections=new Map}get(e,t){let n=this.collections.get(t);n||(n=new Map,this.collections.set(t,n));let i=n.get(e);return i||(i=new Bn(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),n.set(e,i)),i}}class Un{constructor(e,t){this.clientIdService=e,this.socketManager=t,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var $n=j(150);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?Xt(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 Wn(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 n=Xt(e);t=Xt(t);for(const[e]of Hn(n)){const i=e.split(".").length;Object.entries(t.properties).some(([t])=>e.startsWith(t+".")&&i>t.split(".").length)&&delete n.properties[e]}for(const[e,i]of Hn(t))n.properties[e]=Vn([...n.properties[e]||[],...i]);return n}(e,t);const n=Xt(e);for(const[e,i]of Hn(t)){const t=i;for(const i of t){const t=Gn(Ht(n.properties,e),i);void 0===t?Kt(n.properties,e):Vt(n.properties,e,t)}}return n}function Vn(e){let t=0;for(;t+1<e.length;){const n=Kn(e[t],e[t+1]);n?e.splice(t,2,n):++t}return e}function Kn(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 zn(e){const t={};for(const n of e){const e=`${n.squidDocIdObj.integrationId}/${n.squidDocIdObj.collectionName}/${n.squidDocIdObj.docId}`;t[e]||(t[e]=[]),t[e].push(n)}const n=[];for(const e in t){const i=t[e].reduce((e,t)=>Ie(Wn(e,t),"Merge result cannot be null"));n.push(i)}return n}const Jn="dataManager_runInTransaction";class Yn{constructor(e,n,i,s,o,a,c,u,l){this.documentStore=e,this.mutationSender=n,this.socketManager=i,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)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),n=t&&!t.expireTimestamp?t.timestamp:void 0,i=this.docIdToLocalTimestamp.get(e);return!((!i||n)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&i===n)}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(Jn)?this.lockManager.lockSync(Jn):await this.lockManager.lock(Jn);let n=Zn;const i=()=>n!==Zn;return new Promise(async(t,s)=>{try{let r;this.currentTransactionId=Se();try{r=await e(this.currentTransactionId)}catch(e){n=e}finally{this.finishTransaction(i()?void 0:{resolve:()=>t(r),reject:s})}}catch(e){n=i()?n:e}finally{try{this.lockManager.release(Jn)}catch(e){n=i()?n:e}}i()&&s(n)})}async applyOutgoingMutation(e,t){const n=Mn(e.squidDocIdObj);this.knownDirtyDocs.add(n),t||this.lockManager.canGetLock(Jn)||(await this.lockManager.lock(Jn),this.lockManager.release(Jn)),this.knownDirtyDocs.delete(n);const i=this.pendingOutgoingMutations.get(n)?.slice(-1)[0];if(i&&!i.sentToServer)i.mutation=Ie(zn([i.mutation,this.removeInternalProperties(e)])[0],"Failed to reduce mutations"),this.outgoingMutationsEmpty.next(!1);else{const t={mutation:this.removeInternalProperties(e),sentToServer:!1},i=this.pendingOutgoingMutations.get(n)||[];i.push(t),this.pendingOutgoingMutations.set(n,i),this.outgoingMutationsEmpty.next(!1),this.pendingOutgoingMutationsChanged.next()}return this.runInTransaction(async()=>{const t=this.documentStore.getDocumentOrUndefined(n),i="delete"===e.type?void 0:"update"===e.type?function(e,t){if(!e)return;const n={...e},i=Hn(t);for(const[e,t]of i){const i=t;for(const t of i){const i=Gn(Ht(n,e),t);void 0===i?Kt(n,e):Vt(n,e,i)}}return n}(t,e):{...e.properties};this.updateDocumentFromSnapshot(n,i)&&("insert"===e.type&&this.docIdToLocalTimestamp.set(n,(new Date).getTime()),this.querySubscriptionManager.setClientRequestIdsForLocalDoc(n,i).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(Jn);try{this.currentTransactionId=Se();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(Jn)}}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),fe(e=>e)).subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),q(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),q(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t=e.reduce((e,t)=>this.querySubscriptionManager.hasOngoingQuery(t.clientRequestId)?(e[t.squidDocId]={properties:t.doc,timestamp:t.mutationTimestamp},e):e,{});this.applyIncomingUpdates(t)}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId),n={};for(const i of e.docs){const e=Mn(i.__docId__,t.collectionName,t.integrationId);n[e]={properties:i,timestamp:i.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyIncomingUpdates(n,t)&&this.querySubscriptionManager.hasSubscription(e.clientRequestId)&&this.batchClientRequestIds.delete(e.clientRequestId)}).then()}applyIncomingUpdates(e,t){let n=!1;const i=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?n=!0:o&&o.timestamp>r.timestamp?s.add(t):(this.pendingIncomingUpdates.set(t,r),i.add(t))}return this.runInTransactionSync(()=>{for(const e of i)this.maybeApplyIncomingUpdate(e);for(const e of s)this.refreshQueryMapping(e)},t).then(),n}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const n=this.pendingOutgoingMutations.get(e);n&&n.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 n=this.documentStore.getDocumentOrUndefined(e);return!(!n&&!t||n===t)&&((!n||!t||rn({...t,__ts__:void 0})!==rn(n))&&(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).then()}async sendAllUnsentOutgoingMutations(e){const t=this.groupOutgoingMutationsByIntegrationId();try{await $n.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),this.hasPendingSentMutations()?(await m(this.pendingOutgoingMutationsChanged.pipe(g(()=>!this.hasPendingSentMutations()))),e?.resolve()):e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:n,idResolutionMap:i={},refreshList:s=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(i),s.forEach(e=>{this.refreshDocIdToTimestamp.set(i[e]||e,n)});for(const t of e){let e=this.removeOutgoingMutation(t);i[e]&&(e=i[e]),this.acknowledgeDocument(e,n),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=Mn(e.mutation.squidDocIdObj),n=Ie(this.pendingOutgoingMutations.get(t));return n.splice(n.indexOf(e),1),n.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}=Sn(t);this.setExpiration(t,!0);try{const n=e.includes(wn)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(Ie(n.length<=1,"Got more than one doc for the same id:"+t),!n.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,n]of this.refreshDocIdToTimestamp.entries()){const i=this.docIdToServerTimestamp.get(t)?.timestamp;i&&i>n||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 n=t[t.length-1];if(n&&!n.sentToServer){const t=n.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(n),n.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,n=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,n)}setExpiration(e,t){const n=this.docIdToServerTimestamp.get(e);n&&(n.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const n=Mn(t.mutation.squidDocIdObj),i=e[n];i&&(t.mutation.squidDocIdObj=Sn(i))})}),Object.entries(e).forEach(([e,t])=>{zt(this.pendingOutgoingMutations,e,t),zt(this.docIdToLocalTimestamp,e,t),zt(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 Zn=Symbol("undefined");class Xn{constructor(){this.preDestructors=[],this.destructors=[],this.isDestructedSubject=new t(!1)}get isDestructing(){return this.isDestructedSubject.value}observeIsDestructing(){return this.isDestructedSubject.asObservable().pipe(g(Boolean),fe(()=>{}))}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 ei{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=>{e||this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.clientRequestId];void 0!==t&&t.release()})}async lock(e,t=2e3){this.socketManager.notifyWebSocketIsNeeded(),be(await m(k(N(this.lockWaitForConnectionThreshold).pipe(fe(()=>!1)),this.socketManager.observeConnectionReady().pipe(g(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const n=Se(),i={type:"acquireLock",payload:{mutex:e,timeoutMillis:t,clientRequestId:n}};this.socketManager.postMessage(i);const s=await m(k(N(t+4e3).pipe(q(1),fe(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:n}}))),this.acquireLockMessagesFromServer.pipe(g(e=>e.payload.clientRequestId===n)))),r=s.payload.lockId;be(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),be(r,()=>`Failed to acquire lock: ${s.payload.error}`);const o=new ti(r,n,this.ongoingLocks,this.socketManager);return this.ongoingLocks[r]=o,o}releaseAllLocks(){for(const[e,t]of Object.entries(this.ongoingLocks))t.release(),delete this.ongoingLocks[e]}}class ti{constructor(e,t,n,i){this.lockId=e,this.clientRequestId=t,this.ongoingLocks=n,this.socketManager=i,this.released=!1,this.onReleaseSubject=new r}async release(){if(this.released)return;this.released=!0,delete this.ongoingLocks[this.lockId];const e={type:"releaseLock",payload:{lockId:this.lockId,clientRequestId:this.clientRequestId}};try{await this.socketManager.sendMessage(e)}finally{this.onReleaseSubject.next(),this.onReleaseSubject.complete()}}observeRelease(){return this.onReleaseSubject.asObservable()}isReleased(){return this.released}}class ni{constructor(e,n){this.documentStore=e,this.destructManager=n,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 ii{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t){let n=this.documents.get(e);if(n)return n;n=new _n(e,Ie(this.dataManager,"dataManager not found"),t);const{integrationId:i,collectionName:s}=Sn(e);this.documents.set(e,n);const r=this.getCollectionKey(i,s),o=this.documentsForCollection.get(r)||[];return this.documentsForCollection.set(r,o.concat(n)),n}setDataManager(e){this.dataManager=e}getDocumentsForCollection(e,t){const n=this.getCollectionKey(e,t);return(this.documentsForCollection.get(n)||[]).filter(e=>e.hasData)}migrateDocIds(e){for(const[,t]of this.documents)t.migrateDocIds(e);Object.entries(e).forEach(([e,t])=>{const n=Sn(e),i=Sn(t);zt(this.documents,n.docId,i.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class si{constructor(){this.squidDocIdToDoc=new Map}saveDocument(e,t){const n=this.squidDocIdToDoc.get(e);if(void 0===n&&!t)return;if(void 0!==n){if(t){const n=Xt(t),i=this.removeInternalProperties(n);return this.squidDocIdToDoc.set(e,i),i}return void this.squidDocIdToDoc.delete(e)}const i=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,i),t}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocument(e){return Ie(this.getDocumentOrUndefined(e))}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}group(e,t){return Object.values(nn(e,e=>rn(t.map(t=>Ht(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const n=[...e].map(e=>this.squidDocIdToDoc.get(e)).filter(ye),{sortOrder:i,limitBy:s}=t,r=n.sort((e,t)=>this.compareSquidDocs(e,t,i)),o=t.limit<0?2e3:t.limit;if(!s)return r.slice(0,o);const{limit:a,fields:c,reverseSort:u}=s,l=this.group(r,c);let h;return h=u?l.map(e=>e.slice(-a)):l.map(e=>e.slice(0,a)),h.flat().slice(0,o)}migrateDocId(e,t){const n=this.getDocumentOrUndefined(e);if(!n)return;zt(this.squidDocIdToDoc,e,t);const i=Sn(t),s=an(i.docId);this.saveDocument(t,{...n,...s,__docId__:i.docId})}compareSquidDocs(e,t,n){for(const{fieldName:i,asc:s}of n){const n=tn(Ht(e,i),Ht(t,i));if(0!==n)return s?n:-n}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class ri{constructor(e){this.rpcManager=e}async extractDataFromDocumentFile(e,t){t||(t={});const n={options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentFile",n,[e],"file")}async extractDataFromDocumentUrl(e,t){t||(t={});const n={url:e,options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentUrl",n)}async createPdf(e){return await this.rpcManager.post("extraction/createPdf",e)}}class oi{constructor(e,t,n){this.socketManager=e,this.rpcManager=t,this.clientIdService=n,this.isListening=!1,this.listeners={},this.clientIdService.observeClientId().pipe(p(),C(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))mn.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e})})}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new s(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId: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,n=t.id,i=this.listeners[n];i&&("completed"===t.status?i.next(t.result):"failed"===t.status?i.error(new Error(t.error||"Job failed")):console.error("Unexpected job status:",t.status,"for jobId:",n),delete this.listeners[n])}))}}class ai{constructor(e,t,n){this.rpcManager=e,this.lockManager=t,this.querySender=n}async sendMutations(e,t){const n=zn(e),i=n.map(e=>`sendMutation_${Mn(e.squidDocIdObj)}`);await this.lockManager.lock(...i),await this.querySender.waitForAllQueriesToFinish();try{const e={mutations:n,integrationId:t};return await this.rpcManager.post("mutation/mutate",e)}catch(e){throw mn.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(n,null,2)}),e}finally{this.lockManager.release(...i)}}}class ci{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class ui{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.observeNotifications().pipe(g(e=>"userNotification"===e.type),w(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 li={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class hi{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},n=Object.keys(t).filter(e=>!di.test(e)||e.length>=pi);be(0===n.length,()=>`Tag name is not allowed: ${n.join(",")}`),this.isReporting=!0;const i={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},s=this.rpcManager.post("/observability/metrics",{metrics:[i]}).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={...li,...e,fn:Array.isArray(e.fn)?e.fn:[e.fn]};t.pointIntervalSeconds||(t.pointIntervalSeconds=t.periodEndSeconds-t.periodStartSeconds);const n=await this.rpcManager.post("/observability/metrics/query",t);return function(e,t){const{pointIntervalSeconds:n,noDataBehavior:i}=e,s=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:n,pointIntervalAlignment:i}){if("align-by-start-time"===i)return e;const s=t-e;let r=t-Math.floor(s/n)*n;return r>e&&(r-=n),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:n,pointIntervalAlignment:i}){if("align-by-end-time"===i)return t-n;const s=t-e;let r=e+Math.floor(s/n)*n;return r>=t&&(r-=n),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const n=[];for(let t=0;t<e.groupByTags.length;t++){const i=e.groupByTags[t],s=a[i]?.[0]||"";n.push(s)}t.push({tagValues:n,points:[]})}else"return-result-group-with-default-values"===i&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[n,i]of Object.entries(a)){const s=e.groupByTags.indexOf(n);if(!(s<0))for(let e=0;e<t.length;e++){const n=t[e],r=new Set(i);for(let e=0;e<t.length;e++){const i=t[e];n.tagValues.every((e,t)=>t===s||e===i.tagValues[t])&&r.delete(i.tagValues[s])}if(0!==r.size)for(const e of r){const i={tagValues:[...n.tagValues],points:[]};i.tagValues[s]=e,t.push(i)}}}for(const i of t){if(0!==i.points.length){const e=i.points[0][0],t=i.points[i.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:s,u=Array.isArray(e.fn)?e.fn.map(c):[s];for(let e=r;e<=o;e+=n){const n=i.points[a];n?n[0]===e?(t.push(n),a++):(be(n[0]>e,()=>`Result point has invalid time: ${n[0]}`),t.push([e,...u])):t.push([e,...u])}i.points=t}}(t,n.resultGroups),n}}const di=/^[a-zA-Z0-9_-]+$/,pi=1e3;class gi{constructor(e,t){this.integrationId=e,this.rpcManager=t}async saveAuthCode(e,t){const n={authCode:e,personalStorageConfig:{identifier:t,integrationId:this.integrationId}};return await this.rpcManager.post("personalStorage/saveAuthCode",n)}async getAccessToken(e){const t={personalStorageConfig:{identifier:e,integrationId:this.integrationId}};return await this.rpcManager.post("personalStorage/getAccessToken",t)}async indexDocumentOrFolder(e,t,n,i){const s={documentOrFolderId:e,metadata:i,personalStorageConfig:{identifier:t,integrationId:this.integrationId},agentId:n};await this.rpcManager.post("personalStorage/indexDocumentOrFolder",s)}async listIndexedDocuments(e,t,n){const i={personalStorageConfig:{identifier:e,integrationId:this.integrationId},agentId:t,type:n};return(await this.rpcManager.post("personalStorage/listIndexedDocuments",i)).documents}async unindexDocument(e,t,n){const i={documentId:e,personalStorageConfig:{identifier:t,integrationId:this.integrationId},agentId:n};await this.rpcManager.post("personalStorage/unindexDocument",i)}}async function fi(e,t,n=500){const i=Date.now(),s=e.paginate({pageSize:n,subscribe:!1});let r=0,o=await s.waitForData();for(;;){for(const e of o.data)r++,await t(e.data);if(!o.hasNext)break;o=await s.next()}return{count:r,time:Date.now()-i}}function yi(e,t){switch(t.type){case"simple":return function(e,t){const{query:n,dereference:i}=t,{collectionName:s,integrationId:r}=n;let o=e.collection(s,r).query();return o=mi(o,n),i?o.dereference():o}(e,t);case"join":return function(e,t){const{root:n,joins:i,joinConditions:s,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=n.query;let u=e.collection(a,c).joinQuery(n.alias);return u=mi(u,n.query),Object.entries(i).map(([t,n])=>{const{collectionName:i,integrationId:r}=n,{left:o,right:a,leftAlias:c}=s[t];let l=e.collection(i,r).query();l=mi(l,n),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:n}=t,{collectionName:i,integrationId:s}=bi(n[0]),r=n.map(t=>yi(e,t));return e.collection(i,s).or(...r)}(e,t)}}function mi(e,t){const{conditions:n,limit:i,sortOrder:s}=t;for(const t of n){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");const{fieldName:n,operator:i,value:s}=t;e.where(n,i,s)}e.limit(i);for(const{fieldName:t,asc:n}of s)e.sortBy(t,n);return e}function bi(e){switch(e.type){case"simple":{const{collectionName:t,integrationId:n}=e.query;return{collectionName:t,integrationId:n}}case"join":{const{collectionName:t,integrationId:n}=e.root.query;return{collectionName:t,integrationId:n}}case"merged":return bi(e.queries[0])}}const Ii={"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)=>vi(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>vi(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>vi(e,t)&&Si(t),"like_cs:like_cs":(e,t)=>vi(e,t),"like:not like":(e,t)=>!wi(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!wi(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!wi(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!wi(e,t),"not like:like":(e,t)=>ki(e,t),"not like_cs:like":(e,t)=>ki(e,t),"not like:like_cs":(e,t)=>ki(e,t),"not like_cs:like_cs":(e,t)=>ki(e,t),"not like:not like":(e,t)=>vi(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>vi(t,e)&&Si(e),"not like:not like_cs":(e,t)=>vi(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>vi(t,e),"in:like":(e,t)=>e.every(e=>kn(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>kn(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>kn(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>kn(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&&Mi(e)||Ti(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&Mi(e)||Ti(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&Mi(t)||Ti(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&Mi(t)||Ti(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=>kn(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>kn(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>kn(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>kn(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 vi(e,t,n=0,i=0){if(i>=t.length)return n>=e.length;if(n>=e.length)return Mi(t.substring(i));const s=e[n],r=t[i];return"%"===s&&"%"===r?vi(e,t,n+1,i+1)||vi(e,t,n+1,i):"%"!==s&&("%"===r?vi(e,t,n,i+1)||vi(e,t,n+1,i):(s===r||"_"===r)&&vi(e,t,n+1,i+1))}function wi(e,t,n=0,i=0){if(n>=e.length&&i>=t.length)return!0;if(n>=e.length)return Mi(t.substring(i));if(i>=t.length)return Mi(e.substring(n));const s=n<e.length?e[n]:"",r=i<t.length?t[i]:"";return"%"===s&&"%"===r?wi(e,t,n+1,i+1)||wi(e,t,n,i+1)||wi(e,t,n+1,i):"%"===s||"%"===r?wi(e,t,n,i+1)||wi(e,t,n+1,i):(s===r||"_"===s||"_"===r)&&wi(e,t,n+1,i+1)}function Si(e){return!/[a-zA-Z]/.test(e)}function Mi(e){return e.split("").every(e=>"%"===e)}function ki(e,t){return e.length>0&&Mi(e)||t.length>0&&Mi(t)||Ti(e)&&0===t.length}function Ti(e){let t=!1,n=!1;for(const i of e)switch(i){case"%":t=!0;break;case"_":if(n)return!1;n=!0;break;default:return!1}return t&&n}class Ci{constructor(e){this.query=e,this.query=e,this.parsedConditions=this.parseConditions(this.query.conditions.filter(On))}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}sortedBy(e){return!e.find((e,t)=>!Yt(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,n){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:n})}isSubqueryOfCondition(e){return!!this.parsedConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;const t=e.conditions.filter(On),n=this.isSubqueryOfConditions(t),i=this.sortedBy(e.sortOrder),s=-1===e.limit||this.limit>-1&&this.limit<e.limit;return n&&i&&s}getConditionsFor(...e){return this.parsedConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.parsedConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.parsedConditions){const n=t.fieldName,i=t.operator,s=Ht(e,n);if("in"===i){if(t.value.includes(s))continue;return!1}if("not in"!==i){if(!kn(t.value,s,i))return!1}else if(t.value.includes(s))return!1}return!0}evaluateSubset(e,t){const{operator:n,value:i}=e,{operator:s,value:r}=this.parseConditions([t])[0],o=Ii[`${n}:${s}`];return!!o&&o(i,r)}parseConditions(e){const t=[],n=new Map,i=new Map;return e.forEach(e=>{switch(e.operator){case"==":case"in":n.set(e.fieldName,(n.get(e.fieldName)||[]).concat(e.value));break;case"!=":case"not in":i.set(e.fieldName,(i.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),n.forEach((e,n)=>{t.push({fieldName:n,operator:"in",value:e})}),i.forEach((e,n)=>{t.push({fieldName:n,operator:"not in",value:e})}),t}}class Oi{constructor(e,t,n){this.documentStore=e,this.documentReferenceFactory=t,this.querySubscriptionManager=n}peek(e){if(!this.querySubscriptionManager.findValidParentOfQuery(e))return[];const{integrationId:t,collectionName:n}=e,i=new Ci(e),s=this.documentReferenceFactory.getDocumentsForCollection(t,n).filter(e=>i.documentMatchesQuery(e.data)),r={};return s.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[Mn(e.__docId__,n,t)])}}function _i(e,t){return W(function(n,i){var s=0;n.subscribe(pe(i,function(n){return e.call(t,n,s++)&&i.next(n)}))})}class Ei{constructor(e,n){this.rpcManager=e,this.destructManager=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,n=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(),n):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.safeToSendQueriesToServer.pipe(_i(Boolean),q(1)).subscribe(()=>{this.processQueryBatch()})},0),n)}async waitForAllQueriesToFinish(){return m(this.inflightQueriesCount.pipe(_i(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()),n=e.map(({responseSubject:e})=>e);this.inflightQueriesCount.next(this.inflightQueriesCount.value+t.length);try{const n=await this.rpcManager.post("query/batchQueries",t);for(const{queryRequest:t,responseSubject:i}of e){const e=t.clientRequestId,s=n.errors[e],r=n.results[e];s?i.error(s):i.next(r)}}catch(e){n.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var qi={d:(e,t)=>{for(var n in t)qi.o(t,n)&&!qi.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function Di(e,t,...n){e||function(e,...t){const n=function(e){return void 0===e?"":"string"==typeof e?e:e()}(e);if("object"==typeof n)throw n;throw(e=>new Error(e))(n||"Assertion error",...t)}(t,...n)}function Ai(e,t){switch(t.type){case"set":return function(e,t,n){if(void 0===n)return Ri(e,t);if(0===t.length)return Di("object"==typeof n&&null!==n&&!Array.isArray(n),()=>`Root state must be a record. Trying to set '${n}', type: ${typeof n}`),n;function i(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 n=t[e];Di(!Array.isArray(s)||i(n),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${n}'`),s=s[n],Di(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 Di(!Array.isArray(s)||i(r),()=>`Invalid array index Path: '${t}`),(null==s?void 0:s[r])===n?e:Ni(e,t,n)}(e,t.path,t.value);case"delete":return Ri(e,t.path);case"batch":return t.actions.reduce((e,t)=>Ai(e,t),e)}}function Ri(e,t){Di(0!==t.length,"Can't delete an empty path");let n=e;for(let i=0;i<t.length-1;i++){const s=t[i];if(n=n[s],void 0===n)return e;Di("object"==typeof n&&null!==n,()=>`Cannot delete a property from a non-record parent. Path: '${t.slice(0,i+1)}', type: ${null===n?"<null>":typeof n}`)}const i=t[t.length-1];return void 0===n[i]?e:Ni(e,t,void 0)}function Ni(e,t,n){function i(e,n){Di(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[n]}const s=Object.assign({},e);let r=s;for(let e=0;e<t.length-1;e++){const s=t[e],o=r[s];Di(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===n?void 0:{}:Array.isArray(o)?[...o]:Object.assign({},o);if(void 0===a)return i(r,s),r;r[s]=a,r=a}const o=t[t.length-1];return void 0===n?i(r,o):r[o]=n,s}function xi(e,t){const n=[];if("set"===e.type||"delete"===e.type)n.push(e.path);else if("batch"===e.type)for(const t of e.actions)n.push(...xi(t,"as-is"));return"unique-and-sorted"===t?Pi(n):n}function Fi(e,t){if(e.length<t.length)return!1;for(let n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function ji(e){const t=[...e];return t.sort((e,t)=>{for(let n=0;n<e.length;n++){if(n===t.length)return 1;const i=e[n].localeCompare(t[n]);if(0!==i)return i}return e.length-t.length}),t}function Pi(e){const t=ji(e),n=t;for(let e=0;e<t.length-1;e++){const i=t[e];for(let s=e+1;s<t.length;s++){const r=t[s];i.length===r.length&&Fi(i,r)&&(n[s]=void 0,e++)}}return n.filter(e=>void 0!==e)}const Bi=(Qi={Observable:()=>i,Subject:()=>r},Li={},qi.d(Li,Qi),Li);var Qi,Li;const Ui=($i={filter:()=>_i,map:()=>fe},Gi={},qi.d(Gi,$i),Gi);var $i,Gi,Hi;class Wi{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 n=this._buildPath(e);if(void 0!==n.value)return n.value;const i=t(e);return this._setNodeValue(n,i,void 0===i),i}set(e,t){const n=void 0===t?this._findNode(e):this._buildPath(e);n&&this._setNodeValue(n,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 n=(void 0===t.value?0:1)+t.childrenWithValue;n>0&&this._updateChildrenWithValue(t,-n),t.parent.children.delete(e[e.length-1]),this._runGc(t.parent)}clear(){this.delete([])}count(e=[],t="node-and-children"){const n=this.getNode(e);return void 0===n?0:n.childrenWithValue+("node-and-children"===t&&void 0!==n.value?1:0)}get isEmpty(){return 0===this.count()}fillPath(e,t){const n=[];let i=this.root,s=t(i.value,n);if(s!==Wi.StopFillToken){this._setNodeValue(i,s,!1);for(let r=0;r<e.length;r++){const o=e[r];n.push(o);let a=i.children.get(o);if(s=t(null==a?void 0:a.value,n),s===Wi.StopFillToken)break;a||(a={children:new Map,parent:i,childrenWithValue:0},i.children.set(o,a)),this._setNodeValue(a,s,!1),i=a}this._runGc(i)}}visitDfs(e,t,n=[]){const i=this.getNode(n);void 0!==i&&this._visitDfs(e,i,t,[...n])}_visitDfs(e,t,n,i){if("pre-order"===e&&!1===n(t.value,i))return!1;for(const[s,r]of t.children){if(i.push(s),!this._visitDfs(e,r,n,i))return!1;i.pop()}return"in-order"!==e||!1!==n(t.value,i)}getNode(e){return this._getNode(e)}_getNode(e){let t=this.root;for(const n of e)if(t=t.children.get(n),!t)return;return t}_findNode(e){let t=this.root;for(let n=0;n<e.length&&t;n++)t=t.children.get(e[n]);return t}_buildPath(e){let t=this.root;for(let n=0;n<e.length;n++){const i=e[n];let s=t.children.get(i);s||(s={children:new Map,parent:t,childrenWithValue:0},t.children.set(i,s)),t=s}return t}_setNodeValue(e,t,n){if(e.value!==t){const n=void 0===t?-1:void 0===e.value?1:0;e.value=t,this._updateChildrenWithValue(e,n)}n&&this._runGc(e)}_updateChildrenWithValue(e,t){if(0!==t)for(let n=e.parent;n;n=n.parent)if(n.childrenWithValue+=t,n.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))}}Wi.StopFillToken=Symbol("Trie.StopFillToken");class Vi extends Bi.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class Ki{constructor(e){this.rootState=e,this.observersTrie=new Wi,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,Ui.map)(e=>e.value))}observeChanges(e,t=[]){return this._observeChanges(e,t,"all-details")}set(e,t,n){(null==n?void 0:n(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=Ai(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=xi(e,"unique-and-sorted"),n=this.selectChildPathsWithObservers(t),i=Pi([...t,...n]),s=new Wi;for(const e of i)s.fillPath(e,()=>!0);s.visitDfs("pre-order",(t,n)=>{const i=this.observersTrie.get(n);if(i){const t=this.get(n),s=i.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,n):void 0;i.next({action:e,value:t,oldValue:s})}})}_observeChanges(e,t=[],n){const i=0===t.length?void 0:new Wi;for(const e of t)null==i||i.set(e,!0);return new Bi.Observable(t=>{const s=this.observersTrie.getOrSet(e,()=>new Vi);s.isAllDetailsMode=s.isAllDetailsMode||"all-details"===n;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=s.pipe((0,Ui.filter)(({action:e})=>void 0===i||xi(e,"as-is").some(e=>!i.get(e))),(0,Ui.map)(({action:t,value:n,oldValue:i})=>{let r=this.stubForUnusedPaths;if(s.isAllDetailsMode){const n=xi(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=ji(e),n=t;for(let e=0;e<n.length-1;e++){const i=t[e];for(let s=e+1;s<t.length;s++)Fi(t[s],i)&&(n[s]=void 0,e++)}return n.filter(e=>void 0!==e)}(e.length>0?n.filter(t=>Fi(t,e)).map(t=>t.slice(e.length)):n)}return{value:n,oldValue:i,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),s.observed||this.observersTrie.delete(e)}})}_get(e,t){let n=e;for(let e=0;e<t.length&&void 0!==n;e++){const i=t[e];n=null==n?void 0:n[i]}return n}selectChildPathsWithObservers(e){const t=[];for(const n of e)this.observersTrie.count(n,"children-only")>0&&this.observersTrie.visitDfs("pre-order",(e,n)=>{e&&t.push([...n])},n);return t}}function zi(e,t,n=(e,t)=>e>t?1:e<t?-1:0,i=0,s=e.length-1){if(s<i)return-1;const r=Math.trunc((i+s)/2);return 0===n(t,e[r])?r:n(t,e[r])>0?zi(e,t,n,r+1,s):zi(e,t,n,i,r-1)}function Ji(e,t,n=(e,t)=>e>t?1:e<t?-1:0){if(-1!==zi(e,t,n))return;let i;for(i=e.length-1;i>=0&&n(e[i],t)>0;i--)e[i+1]=e[i];e[i+1]=t}function Yi(e,t,n=(e,t)=>e>t?1:e<t?-1:0){const i=zi(e,t,n);i>-1&&e.splice(i,1)}!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(Hi||(Hi={}));const Zi=100;class Xi{constructor(e,t,n,i,s,o,a){this.rpcManager=e,this.clientIdService=t,this.documentStore=n,this.destructManager=i,this.documentIdentityService=s,this.querySender=o,this.socketManager=a,this.onOrphanDocuments=new r,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new ts,this.queryResultsSubject=new r,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.clientIdService.observeClientReadyToBeRegenerated().subscribe(()=>{this.refreshOngoingQueries()}),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}dumpSubscriptionInfo(){console.log("Ongoing queries:",this.ongoingQueries),console.log("ClientRequestId to local documents:",this.clientRequestIdToLocalDocuments),console.log("Local documents to clientRequestId:",this.localDocumentToClientRequestIds)}observeQueryResults(){return this.queryResultsSubject.asObservable()}hasOngoingQuery(e){return this.ongoingQueries.has(e)}getQuery(e){return Ie(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:n,integrationId:i}=Sn(t),s=this.queryMappingManager.getMapping(n,i);return s?function(e,t){const n=[...e.unconditional||[]],i=new Map;for(const[n,s]of Object.entries(e.conditional||{})){const e=an(n);let r;if(On(e)){const n=Ht(t,e.fieldName)??null;r=kn(e.value,n,e.operator)}else r=es(e,t);if(r)for(const e of s)i.set(e,(i.get(e)||0)+1)}for(const[t,s]of i.entries())s>=e.queriesMetadata[t].condCount&&n.push(t);return n}(s,e):[]}setClientRequestIdsForLocalDoc(e,t){const n=this.localDocumentToClientRequestIds.get(e)||new Set,i=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([...n,...i]);for(const t of[...n]){if(i.has(t))continue;n.delete(t);const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),n.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of i){let n=this.localDocumentToClientRequestIds.get(e);n||(n=new Set,this.localDocumentToClientRequestIds.set(e,n)),n.add(t);let i=this.clientRequestIdToLocalDocuments.get(t);i||(i=new Set,this.clientRequestIdToLocalDocuments.set(t,i)),i.add(e)}return[...s]}errorOutAllQueries(e,t){const n=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of n){const n=this.ongoingQueries.get(e);n&&(this.destructManager.isDestructing?n.dataSubject.complete():n.dataSubject.error(t),n.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const n of e){const e=this.ongoingQueries.get(n);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const i=this.clientRequestIdToLocalDocuments.get(n)||new Set,s=this.documentStore.sortAndLimitDocs(i,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(s,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=Ie(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case Hi.UNKNOWN:e.limitUnderflowState=i.size===e.query.limit+100?Hi.ENABLED:Hi.DISABLED;break;case Hi.DISABLED:break;case Hi.ENABLED:if(i.size<e.query.limit+20){e.limitUnderflowState=Hi.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}e.dataSubject.next(s)}for(const e of t){const t=this.collectAllObservables(e);Ie(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new Ci(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,n,i,r,a){return r&&this.socketManager.notifyWebSocketIsNeeded(),h(()=>{const c=this.createOngoingQueryGraph(e,t,n,i,r,!0);a&&(c.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(c),c.allObservables=new s(1);const u=c.allObservables.pipe(E(e=>o(e).pipe(fe(e=>this.joinResults(e,i,c)))),_i(()=>this.allOngoingQueriesGotInitialResult(c)),O(void 0),M(),_i(([e,t])=>!Yt(e,t)),fe(([,e])=>e),r?R():q(1),f(()=>{c.dataSubject.complete(),c.done=!0,this.completeAllSupportedQueries(c).then(),c.allObservables?.complete()})),l=this.collectAllObservables(c);return c.allObservables.next(l),u}).pipe(T())}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 Ci(e.query);for(const n of this.ongoingQueries.values()){if(e===n)return;if(this.isValidParent(n)&&t.isSubqueryOfQuery(n.query))return n}}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const n=[];for(const i of t){const t=Ie(this.localDocumentToClientRequestIds.get(i));t.delete(e),t.size||(this.localDocumentToClientRequestIds.delete(i),n.push(i))}n.length&&this.onOrphanDocuments.next(n)}registerQueryFinalizer(e){const t=e.clientRequestId,n=Cn(this.clientIdService.getClientId(),t);e.dataSubject.pipe(f(async()=>{if(e.unsubscribeBlockerCount.value>0&&await m(k(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(_i(e=>0===e)))),this.queryMappingManager.removeQuery(n).then(),this.ongoingQueries.delete(t),e.subscribe&&!e.isEmptyForJoin&&e.activated){const n={clientRequestId:t};this.rpcManager.post("query/unsubscribe",n).catch(t=>{this.destructManager.isDestructing||console.error("Got error while unsubscribing from query",e.query,t)})}this.removeClientRequestIdMapping(t),this.ongoingQueries.delete(t)}),_i(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,n,i,s,r,o,a={}){if(a[n])return a[n];const c=this.clientIdService.generateClientRequestId(),u=[],l={clientRequestId:c,activated:o,alias:n,query:e,subscribe:r,dataSubject:new t(null),supportedQueries:u,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?Hi.UNKNOWN:Hi.DISABLED};this.registerQueryFinalizer(l),this.ongoingQueries.set(c,l),a[n]=l;for(const[e,t]of Object.entries(s)){const o=t.leftAlias;if(o!==n&&e!==n)continue;const c=o===n?e:o;if(o===n){const e=this.createOngoingQueryGraph(i[c],c,i,s,r,!1,a);e.joinCondition=t,u.push(e)}else l.supportingOngoingQuery=this.createOngoingQueryGraph(i[c],c,i,s,r,!1,a)}return l}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const n=e.alias;t.push(e.dataSubject.pipe(_i(Boolean),fe(e=>({docs:e,alias:n}))));for(const n of e.supportedQueries)this.collectAllObservables(n,t);return t}joinResults(e,t,n){const i=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let s=i[n.alias].map(e=>({[n.alias]:e}));const r=this.getOngoingQueriesBfs(n),o=new Set;for(let e=1;e<r.length;e++){const n=r[e].alias;o.has(n)||(o.add(n),s=this.join(s,n,i[n],t[n]))}return s}join(e,t,n,i){if(!e.length)return e;const s=Object.keys(e[0]);if(!i||!s.includes(i.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(n||[]).forEach(e=>{const t=this.transformKey(e[i.right]);r.has(t)||r.set(t,[]),Ie(r.get(t)).push(e)}),e.flatMap(e=>{const n=r.get(this.transformKey(e[i.leftAlias]?.[i.left]))||[];return n.length?n.map(n=>({...e,[t]:n})):i.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],n=[e];for(;n.length;){const e=Ie(n.shift());e.isEmptyForJoin||(t.push(e),n.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,n){const i=Ie(n.joinCondition),s=n.query;if(n.activated){if(!n.canExpandForJoin)return!1;const r=Ie(n.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===n.alias),o=new Set(e.map(e=>e[i.left]??null));for(const e of r)e.query.conditions.filter(On).filter(e=>e.fieldName===i.right).forEach(e=>{o.delete(e.value)});if(0===o.size)return!1;const a=Xt(s);a.conditions=a.conditions.filter(e=>!On(e)||e.fieldName!==i.right),[...o].forEach(e=>{a.conditions.push({fieldName:i.right,operator:"==",value:e})});const c={...n,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),Ie(n.supportingOngoingQuery).supportedQueries.push(c),this.sendQueryToServerOrUseParentQuery(c),!0}{if(n.activated=!0,s.conditions.filter(On).filter(e=>e.fieldName===i.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(n),n.canExpandForJoin=!1,!0;const t=e.map(e=>e[i.left]??null).map(e=>({fieldName:i.right,operator:"==",value:e}));return t.length?(s.conditions.push(...t),this.sendQueryToServerOrUseParentQuery(n)):n.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=Ie(t.shift());t.push(...e.supportedQueries||[]),await m(e.unsubscribeBlockerCount.pipe(_i(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 n=e.query,i=e.clientRequestId,s=Cn(this.clientIdService.getClientId(),i);this.queryMappingManager.addQuery(n,s),this.ongoingQueries.set(i,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r).then():this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const n={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},i=new Ci(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await m(t.queryRegistered.pipe(_i(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",n).then(()=>{e.isInFlight=!1,e.queryRegistered.next(!0)}).catch(n=>{e.isInFlight=!1,this.destructManager.isDestructing?e.dataSubject.complete():(console.error("Query error",e.query,t.query,n),e.dataSubject.error(n)),e.done=!0}).finally(()=>{t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value-1)});const s=k(e.queryRegistered.pipe(_i(Boolean),d(2e3),q(1)),this.destructManager.observeIsDestructing().pipe(q(1)));t.dataSubject.pipe(A(()=>!e.done),D(s),_i(Boolean),R(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),fe(e=>e.filter(e=>i.documentMatchesQuery(e)))).subscribe({next:t=>{for(const n of t)this.setClientRequestIdsForLocalDoc(Mn(n.__docId__,e.query.collectionName,e.query.integrationId),n);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,n=t>0&&e.subscribe?t+100:t,i={query:{...e.query,limit:n},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(i).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()):(mn.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const n of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{n.has(t)&&(n.delete(t),n.add(e[t]))});t.forEach(t=>{zt(this.localDocumentToClientRequestIds,t,e[t])})}}function es(e,t){for(const n of e.fields){const e=Ht(t,n.fieldName)??null;if(kn(n.value,e,n.operator))return!0;if(kn(n.value,e,"!="))return!1}return!1}class ts{constructor(){this.stateService=new Ki({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let n=0;const i=new Set;for(const s of e.conditions){if(On(s)&&["=="].includes(s.operator)){const e=cn(s.fieldName);i.has(e)||(n++,i.add(e))}else n++;const r=this.getConditionStatePath(e,s),o=[...this.stateService.get(r)||[]];Ji(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const n=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],i=[...this.stateService.get(n)||[]];Ji(i,t),this.stateService.set(n,i)}this.stateService.set([...this.getQueryMetadataStatePath(e,t),"condCount"],n)}),this.querySubscriptionIdToQuery[t]=e}async removeQuery(e){const t=this.querySubscriptionIdToQuery[e];if(t)return this.stateService.runInBatch(()=>{for(const n of t.conditions){const i=this.getConditionStatePath(t,n),s=[...this.stateService.get(i)||[]];Yi(s,e),s.length?this.stateService.set(i,s):this.stateService.delete(i)}if(!t.conditions.length){const n=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],i=[...this.stateService.get(n)||[]];Yi(i,e),this.stateService.set(n,i)}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",(n=t,rn(n))];var n}}class ns{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 v(o(t).pipe(g(e=>!e.includes(!0)),q(1))),await this.lock(...e)}release(...e){for(const t of e){const e=Ie(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 n of e)this.locks[n]=new t(!0)}}class is{constructor(e,t,n){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)}),n.onPreDestruct(()=>{for(const e of this.queueManagers.values())for(const t of e.values())t.destruct()})}get(e,t){let n=this.queueManagers.get(e);n||(n=new Map,this.queueManagers.set(e,n));let i=n.get(t);return i||(i=new rs(e,t,this.rpcManager,this.socketManager),n.set(t,i)),i}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const ss="subscriptionMutex";class rs{constructor(e,t,n,i){this.integrationId=e,this.topicName=t,this.rpcManager=n,this.socketManager=i,this.messagesSubject=new r,this.subscriberCount=0,this.lockManager=new ns}async produce(e){await this.lockManager.lock(ss);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(ss)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),h(()=>(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(ss);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(ss)}}async performUnsubscribe(){await this.lockManager.lock(ss);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(ss)}}}class os{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(I(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}}const as="x-squid-traceid",cs="x-squid-client-version";function us(e="n_"){return`${e}${Ce(10).toLowerCase()}`}const ls=e=>e();class hs extends Error{constructor(e,t,n,i,s){super(e),this.statusCode=t,this.url=n,this.headers=i,this.body=s}}const ds="1.0.414";async function ps(e){const t=await bs({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=Is(t.body),t}async function gs(e){const t=await bs({...e,method:"GET",files:[],filesFieldName:""});return t.body=Is(t.body),t}async function fs(e){const t=await bs({...e,method:"PUT"});return t.body=Is(t.body),t}async function ys(e){const t=await bs({...e,method:"PATCH"});return t.body=Is(t.body),t}async function ms(e){const t=await bs({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=Is(t.body),t}async function bs({headers:e,files:t,filesFieldName:n,message:i,url:s,extractErrorMessage:r,method:o}){const a=new Headers(e);a.append(as,us("c_")),a.append(cs,ds);const c={method:o,headers:a,body:void 0};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const i of t)e.append(n||"files",i,i.name);e.append("body",on(i)),c.body=e}else void 0!==i&&(a.append("Content-Type","application/json"),c.body=on(i));else"DELETE"===o&&void 0!==i&&(a.append("Content-Type","application/json"),c.body=on(i));try{const e=await fetch(s,c),t={};if(e.headers.forEach((e,n)=>{t[n]=e}),!e.ok){const n=await e.text(),i=Is(n);if(!r)throw new hs(n,e.status,s,t,i);let o;try{o="string"==typeof i?i:i?.message||n}catch{}throw o||(o=e.statusText),new hs(o,e.status,s,t,i)}const n=await e.text();return mn.debug(`received response from url ${s}: ${JSON.stringify(n)}`),{body:n,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw mn.debug(`Unable to perform fetch request to url: ${s}`,e),e}}function Is(e){if(e){try{return an(e)}catch{}return e}}class vs{constructor(e,n,i,s,r,o){this.region=e,this.appId=n,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")}),i.onDestruct(async()=>{await this.awaitAllSettled()});const a=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new os(60*a,5),ai:new os(20*a,5),secret:new os(20*a,5)}}async getAuthHeaders(){const e=this.authManager.getApiKey();if(e)return{Authorization:`ApiKey ${e}`};const{token:t,integrationId:n}=await this.authManager.getAuthData();if(!t)return{};let i=`Bearer ${t}`;return n&&(i+=`; IntegrationId ${n}`),{Authorization:i}}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,n=[],i="files",s={}){return(await this.rawPost(e,t,n,i,!0,s)).body}async rawPost(e,t,n=[],i="files",s=!0,r={}){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const o=await this.getAuthHeaders(),a={...this.staticHeaders,...o,...r};mn.debug(`sending POST request: path: ${e} message: ${JSON.stringify(t)}`);const c=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await ps({url:c,headers:a,message:t,files:n,filesFieldName:i,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async get(e,t,n=!0){return(await this.rawGet(e,t,n)).body}async rawGet(e,t,n=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const i=await this.getAuthHeaders(),s={...this.staticHeaders,...i};let r=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);if(t&&Object.keys(t).length>0){const e=new URLSearchParams;Object.entries(t).forEach(([t,n])=>{e.append(t,String(n))}),r+=`?${e.toString()}`}return mn.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await gs({url:r,headers:s,extractErrorMessage:n})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async put(e,t,n=[],i="files"){return(await this.rawPut(e,t,n,i)).body}async rawPut(e,t,n=[],i="files",s=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};mn.debug(`sending PUT request: path: ${e} message: ${JSON.stringify(t)}`);const a=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await fs({url:a,headers:o,message:t,files:n,filesFieldName:i,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async patch(e,t,n=[],i="files"){return(await this.rawPatch(e,t,n,i)).body}async rawPatch(e,t,n=[],i="files",s=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};mn.debug(`sending PATCH request: path: ${e} message: ${JSON.stringify(t)}`);const a=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await ys({url:a,headers:o,message:t,files:n,filesFieldName:i,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async delete(e,t,n=!0){return(await this.rawDelete(e,t,n)).body}async rawDelete(e,t,n=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const i=await this.getAuthHeaders(),s={...this.staticHeaders,...i};mn.debug(`sending DELETE request: path: ${e}, body: ${JSON.stringify(t)}`);const r=e.startsWith("http://")||e.startsWith("https://")?e:B(this.region,this.appId,e);return await ms({url:r,headers:s,message:t,extractErrorMessage:n})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}getRateLimiterBucket(e){return e.startsWith("ai/chatbot")?Ie(this.rateLimiters.ai,"MISSING_RATE_LIMITER_AI"):e.startsWith("secret/")?Ie(this.rateLimiters.secret,"MISSING_RATE_LIMITER_SECRETS"):Ie(this.rateLimiters.default,"MISSING_RATE_LIMITER_DEFAULT")}}class ws{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 Ss(){}const Ms="undefined"!=typeof process&&process.versions?.node?j(220):yn().WebSocket;class ks{constructor(e,n,i,s=ls,o,a){this.clientIdService=e,this.region=n,this.appId=i,this.messageNotificationWrapper=s,this.destructManager=o,this.authManager=a,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),q(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe(C(1),g(e=>!e),E(()=>k(N(this.clientTooOldThreshold),this.connectionReady.pipe(g(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?mn.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(mn.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?mn.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?mn.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(mn.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),mn.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(){await m(this.observeConnectionReady().pipe(g(Boolean)))}notifyWebSocketIsNeeded(){this.webSocketNeededSubject.next(!0)}postMessage(e){this.sendMessageImpl(e)}sendMessage(e){return this.sendMessageImpl(e)}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(mn.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.webSocketNeededSubject.next(!0),await m(this.connectionReady.pipe(g(Boolean)));const t=await this.authManager.getToken();if(this.connectionReady.value)try{be(this.socket,"Socket is undefined in sendMessageAsync");const n=on({message:e,authToken:t});mn.debug(this.clientIdService.getClientId(),"Sending message to socket: ",n),this.socket.send(n)}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(on({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=B(this.region,this.appId,"ws/general").replace("https","wss").replace("http","ws"),t=this.clientIdService.getClientId();mn.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const n=`${e}?clientId=${t}`;this.socket=function(e,t={}){let n,i=0,s=1;const r={connected:!1,closeCalled:!1,open(){n=new(Ms?.WebSocket??Ms)(e,t.protocols||[]),n.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.")}:Ss,n.onopen=function(e){r.connected=!0,(t.onopen||Ss)(e),i=0},n.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return mn.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Ss)(e),void r.reconnect(e);(t.onclose||Ss)(e)},n.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||Ss)(e)}},reconnect(e){const n=void 0!==t.maxAttempts?t.maxAttempts:1/0;s&&i++<n?s=setTimeout(function(){(t.onreconnect||Ss)(e),mn.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||Ss)(e)},json(e){n.send(JSON.stringify(e))},send(e){n.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(s),s=void 0,n.close(e,t)}catch(e){}}};return r.open(),r}(n,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{mn.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{mn.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):mn.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{mn.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):mn.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 mn.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=an(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),mn.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(N(0)),this.connectionReady.next(!1),await m(N(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function Ts(e){var t,n;n="Invalid application ID",be(function(e){return"string"==typeof e}(t=e),()=>we(n,"Not a string",t));const[i,s,r,o]=e.split("-");return be(!o,`Invalid application ID: ${e}`),{appId:i,environmentId:s??"prod",squidDeveloperId:r}}function Cs(e,t){return`${Ts(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Os(e,t,n){return`${Cs(e,t)}${n?`-${n}`:""}`}function _s(e){const t=Ts(e);return Cs(t.appId,t.environmentId)}class Es{constructor(e="built_in_storage",t){this.integrationId=e,this.rpcManager=t}async uploadFile(e,t,n){const i={integrationId:this.integrationId,dirPathInBucket:e,expirationInSeconds:n};await this.rpcManager.post("storage/uploadFile",i,[t])}async getFileMetadata(e){const t={integrationId:this.integrationId,filePathInBucket:e};return await this.rpcManager.post("storage/getFileMetadata",t)}async getDownloadUrl(e,t){const n={integrationId:this.integrationId,filePathInBucket:e,urlExpirationInSeconds:t};return await this.rpcManager.post("storage/getDownloadUrl",n)}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 qs{constructor(e,t,n,i,s){this.rpcManager=e,this.region=t,this.appId=n,this.apiKey=i,this.consoleRegion=s}async aiSearch(e){return await this.rpcManager.post("web/aiSearch",{query:e})}async getUrlContent(e){return(await this.rpcManager.post("web/getUrlContent",{url:e})).markdownText}async createShortUrl(e,t){be(this.apiKey,"API key is required to create a short URL");const n=Q(this.region,this.consoleRegion,"openapi/sqd/shorten"),i={url:e,appId:this.appId,secondsToLive:t},s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(i)});if(!s.ok)throw console.error("Error making POST request to shorten endpoint",s.statusText),new Error(`${s.statusText}: ${s.text}`);return await s.json()}async createShortUrls(e,t){be(this.apiKey,"API key is required to create a short URL");const n=Q(this.region,this.consoleRegion,"openapi/sqd/shortenMany"),i={urls:e,appId:this.appId,secondsToLive:t},s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(i)});if(!s.ok)throw console.error("Error making POST request to shortenMany endpoint",s.statusText),new Error(`${s.statusText}: ${s.text}`);return await s.json()}async deleteShortUrl(e){be(this.apiKey,"API key is required to delete a short URL");const t=Q(this.region,this.consoleRegion,"openapi/sqd/delete"),n={id:e,appId:this.appId},i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(n)});if(!i.ok)throw console.error("Error making POST request to delete endpoint",i.statusText),new Error(i.statusText)}async deleteShortUrls(e){be(this.apiKey,"API key is required to delete a short URL");const t=Q(this.region,this.consoleRegion,"openapi/sqd/deleteMany"),n={ids:e,appId:this.appId},i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json","x-app-api-key":this.apiKey},body:JSON.stringify(n)});if(!i.ok)throw console.error("Error making POST request to delete endpoint",i.statusText),new Error(i.statusText)}}class Ds{constructor(e,t,n){this.rpcManager=e,this.region=t,this.appId=n}async executeWebhook(e,t={}){const{headers:n={},queryParams:i={},body:s,files:r=[]}=t,o=await this.rpcManager.getAuthHeaders(),a={...this.rpcManager.getStaticHeaders(),...o,...n};let c=B(this.region,this.appId,`webhooks/${encodeURIComponent(e)}`);if(i&&Object.keys(i).length>0){const e=new URLSearchParams;Object.entries(i).forEach(([t,n])=>{e.append(t,String(n))}),c+=`?${e.toString()}`}const u=new Headers(a);let l;if(u.append(as,us("c_")),u.append(cs,ds),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,n])=>{e.append(t,String(n))}),l=e}else u.append("Content-Type","application/json"),l=on(s||{});const h=await fetch(c,{method:"POST",headers:u,body:l}),d={};if(h.headers.forEach((e,t)=>{d[t]=e}),!h.ok){const e=await h.text();let t;try{t=JSON.parse(e)}catch{t=e}const n="string"==typeof t?t:t?.message||h.statusText;throw new hs(n,h.status,c,d,t)}const p=await h.text();let g;try{g=JSON.parse(p)}catch{g=p}return g}}class As{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Xn,be(e.appId,"APP_ID_MUST_BE_PROVIDED");for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,n=Os(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new bn(this.destructManager),mn.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new $t(e.apiKey,e.authProvider),this.socketManager=new ks(this.clientIdService,e.region,n,e.messageNotificationWrapper,this.destructManager,this.authManager),this.rpcManager=new vs(e.region,n,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new ui(this.socketManager,this.rpcManager),this.jobClient=new oi(this.socketManager,this.rpcManager,this.clientIdService),this.backendFunctionManager=new gn(this.rpcManager),this.aiClient=new Qt(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager),this.apiClient=new Ut(this.rpcManager),this.documentStore=new si,this.lockManager=new ns,this.distributedLockManager=new ei(this.socketManager,this.destructManager),this.documentIdentityService=new ni(this.documentStore,this.destructManager),this.documentReferenceFactory=new ii(this.documentIdentityService),this.querySender=new Ei(this.rpcManager,this.destructManager),this.observabilityClient=new hi(this.rpcManager),this.schedulerClient=new ws(this.rpcManager),this._appId=n,this.querySubscriptionManager=new Xi(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager),this.localQueryManager=new Oi(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const i=new ai(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new qn(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService),this.dataManager=new Yn(this.documentStore,i,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new Ln(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.webhookManager=new Ds(this.rpcManager,e.region,n),this.nativeQueryManager=new ci(this.rpcManager),this._connectionDetails=new Un(this.clientIdService,this.socketManager),this.queueManagerFactory=new is(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new G(this.rpcManager,this.options.region,_s(n),this.options.consoleRegion),this.webClient=new qs(this.rpcManager,this.options.region,_s(n),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}static getInstance(e){const t=rn(e);let n=As.squidInstancesMap[t];return n||(n=new As(e),As.squidInstancesMap[t]=n,n)}static getInstances(){return Object.values(As.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Ot){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,...n){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...n)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}executeNativeRelationalQuery(e,t,n={}){const i={type:"relational",query:t,params:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(i)}executeNativePureQuery(e,t,n={}){const i={type:"pure",query:t,params:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(i)}executeNativeMongoQuery(e,t,n){const i={type:"mongo",collectionName:t,aggregationPipeline:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(i)}executeNativeElasticQuery(e,t,n,i="_search",s="GET"){const r={type:"elasticsearch",index:t,endpoint:i,method:s,body:n,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}job(){return this._validateNotDestructed(),this.jobClient}api(){return this._validateNotDestructed(),this.apiClient}admin(){return this._validateNotDestructed(),this.adminClient}web(){return this._validateNotDestructed(),this.webClient}storage(e="built_in_storage"){return this._validateNotDestructed(),new Es(e,this.rpcManager)}personalStorage(e){return this._validateNotDestructed(),new gi(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new ri(this.rpcManager)}acquireLock(e){return this._validateNotDestructed(),this.distributedLockManager.lock(e)}async withLock(e,t){const n=await this.acquireLock(e);try{return await t(n)}finally{n.release()}}queue(e,t=_t){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(As.squidInstancesMap).find(([,e])=>e===this);e&&delete As.squidInstancesMap[e[0]]})}get isDestructed(){return this.destructManager.isDestructing}connectionDetails(){return this._validateNotDestructed(),this._connectionDetails}getNotificationClient(){return this._validateNotDestructed(),this.notificationClient}async _unsubscribe(){this.querySubscriptionManager.unsubscribe(),await this.rpcManager.awaitAllSettled()}internal(){const{rpcManager:e}=this;return{getApplicationUrl:(e,t,n)=>B(e,t,n),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,n)=>Os(e,t,n)}}_validateNotDestructed(){be(!this.destructManager.isDestructing,"The client was already destructed.")}}export{vt as AI_AGENTS_INTEGRATION_ID,ht as AI_AUDIO_CREATE_SPEECH_MODEL_NAMES,lt as AI_AUDIO_TRANSCRIPTION_MODEL_NAMES,$e as AI_CHAT_MESSAGE_SOURCE,nt as AI_EMBEDDINGS_MODEL_NAMES,ut as AI_IMAGE_MODEL_NAMES,Ve as AI_PROVIDER_TYPES,Ge as AI_STATUS_MESSAGE_PARENT_MESSAGE_ID_TAG,He as AI_STATUS_MESSAGE_RESULT_TAG,jt as ALL_OPERATORS,Ye as ANTHROPIC_CHAT_MODEL_NAMES,ft as API_INJECTION_FIELD_TYPES,Ft as ARRAY_OPERATORS,Mt as AUTH_INTEGRATION_TYPES,G as AdminClient,Re as AiAgentClient,De as AiAgentReference,xe as AiAssistantClient,Fe as AiAudioClient,Qt as AiClient,je as AiImageClient,Qe as AiKnowledgeBaseClient,Be as AiKnowledgeBaseReference,Le as AiMatchMakingClient,Ut as ApiClient,$ as ApiKeysSecretClient,$t as AuthManager,bt as BUILT_IN_AGENT_ID,Ot as BUILT_IN_DB_INTEGRATION_ID,_t as BUILT_IN_QUEUE_INTEGRATION_ID,Et as BUILT_IN_STORAGE_INTEGRATION_ID,gn as BackendFunctionManager,Dn as BaseQueryBuilder,Bt as CLIENT_CONNECTION_STATES,In as CLIENT_ID_GENERATOR_KEY,vn as CLIENT_REQUEST_ID_GENERATOR_KEY,Nn as Changes,bn as ClientIdService,Bn as CollectionReference,Ln as CollectionReferenceFactory,Un as ConnectionDetails,St as DATA_INTEGRATION_TYPES,Te as DEFAULT_SHORT_ID_LENGTH,Yn as DataManager,Fn as DereferencedJoin,Xn as DestructManager,ti as DistributedLockImpl,ei as DistributedLockManager,_n as DocumentReference,ii as DocumentReferenceFactory,si as DocumentStore,Ne as EMPTY_CHAT_ID,mt as ENVIRONMENT_IDS,ri as ExtractionClient,Zi as FETCH_BEYOND_LIMIT,ct as FLUX_MODEL_NAMES,ze as GEMINI_CHAT_MODEL_NAMES,kt as GRAPHQL_INTEGRATION_TYPES,Je as GROK_CHAT_MODEL_NAMES,Pn as GroupedJoin,Tt as HTTP_INTEGRATION_TYPES,It as HttpStatus,Ct as INTEGRATION_SCHEMA_TYPES,wt as INTEGRATION_TYPES,L as IntegrationClient,oi as JobClient,xn as JoinQueryBuilder,hn as LastUsedValueExecuteFunctionCache,Hi as LimitUnderflowState,Oi as LocalQueryManager,Nt as METRIC_DOMAIN,Rt as METRIC_FUNCTIONS,xt as METRIC_INTERVAL_ALIGNMENT,Ue as MatchMaker,ai as MutationSender,ls as NOOP_FN,ci as NativeQueryManager,ui as NotificationClient,rt as OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES,ot as OPENAI_AUDIO_MODEL_NAMES,st as OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES,Ke as OPENAI_CHAT_MODEL_NAMES,et as OPENAI_EMBEDDINGS_MODEL_NAMES,it as OPENAI_IMAGE_MODEL_NAMES,dt as OPEN_AI_CREATE_SPEECH_FORMATS,hi as ObservabilityClient,En as Pagination,gi as PersonalStorageClient,Rn as QueryBuilder,qn as QueryBuilderFactory,Ei as QuerySender,Xi as QuerySubscriptionManager,is as QueueManagerFactory,rs as QueueManagerImpl,gt as RAG_TYPES,We as RERANK_PROVIDERS,os as RateLimiter,vs as RpcManager,qt as SQUID_BUILT_IN_INTEGRATION_IDS,At as SQUID_METRIC_NAMES,Pt as SQUID_REGIONS,at as STABLE_DIFFUSION_MODEL_NAMES,ws as SchedulerClient,U as SecretClient,ks as SocketManager,As as Squid,hs as SquidClientError,Es as StorageClient,Ze as VENDOR_AI_CHAT_MODEL_NAMES,tt as VOYAGE_EMBEDDING_MODEL_NAMES,qs as WebClient,Ds as WebhookManager,qe as base64ToFile,un as compareArgsByReference,ln as compareArgsBySerializedValue,yi as deserializeQuery,ke as generateId,Ce as generateShortId,Oe as generateShortIds,Se as generateUUID,Me as generateUUIDPolyfill,Q as getConsoleUrl,fn as getCustomizationFlag,Dt as isBuiltInIntegrationId,pt as isIntegrationModelSpec,yt as isPlaceholderParam,Xe as isVendorAiChatModelName,ms as rawSquidHttpDelete,gs as rawSquidHttpGet,ys as rawSquidHttpPatch,ps as rawSquidHttpPost,fs as rawSquidHttpPut,dn as transformFileArgs,Is as tryDeserializing,fi as visitQueryResults};
|