@squidcloud/client 1.0.471 → 1.0.472
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 +9 -0
- package/dist/internal-common/src/public-types/ai-knowledge-base.public-types.d.ts +12 -1
- package/dist/internal-common/src/public-types/event.public-types.d.ts +18 -0
- package/dist/typescript-client/src/agent/ai-agent-client-reference.d.ts +6 -0
- package/dist/typescript-client/src/agent/ai-agent-client.d.ts +1 -0
- package/dist/typescript-client/src/ai-client.d.ts +1 -0
- package/dist/typescript-client/src/events-client.d.ts +21 -0
- package/dist/typescript-client/src/index.d.ts +1 -0
- package/dist/typescript-client/src/public-types.d.ts +1 -0
- package/dist/typescript-client/src/squid.d.ts +15 -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 -14
- 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 -190
- package/dist/internal-common/src/types/ai-agent.types.d.ts +0 -240
- 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/management-api-key.types.d.ts +0 -92
- 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 -142
- package/dist/internal-common/src/types/query.types.d.ts +0 -15
- package/dist/internal-common/src/types/secret.types.d.ts +0 -7
- 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 -45
- 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/file-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 -11
- 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 -86
- package/dist/internal-common/src/utils/serialization.d.ts +0 -18
- package/dist/internal-common/src/utils/squid.constants.d.ts +0 -6
- 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 i,Observable as s,ReplaySubject as n,Subject as r,combineLatest as o,combineLatestWith as a,concatMap as c,debounceTime as u,defaultIfEmpty as l,defer as d,delay as h,distinctUntilChanged as p,filter as g,finalize as f,first as y,firstValueFrom as m,from as b,interval as I,lastValueFrom as v,map as w,of as S,pairwise as M,race as k,share as T,skip as _,startWith as q,switchAll as C,switchMap as D,take as O,takeUntil as E,takeWhile as A,tap as R,timer as j}from"rxjs";var F={273(e,t){Object.defineProperty(t,"__esModule",{value:!0})},150(e,t,i){var s=this&&this.__createBinding||(Object.create?function(e,t,i,s){void 0===s&&(s=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,s,n)}:function(e,t,i,s){void 0===s&&(s=i),e[s]=t[i]}),n=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||s(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0});const r=i(642);t.default=r.PromisePool,n(i(273),t),n(i(642),t),n(i(837),t),n(i(426),t),n(i(858),t),n(i(172),t)},837(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class i extends Error{constructor(e,t){super(),this.raw=e,this.item=t,this.name=this.constructor.name,this.message=this.messageFrom(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e,t){return new this(e,t)}messageFrom(e){return e instanceof Error||"object"==typeof e?e.message:"string"==typeof e||"number"==typeof e?e.toString():""}}t.PromisePoolError=i},234(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolExecutor=void 0;const s=i(642),n=i(172),r=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],processedItemsCounter:0,taskTimeout:0,shouldStoreProcessedItems:!0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw n.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}storeProcessedItems(e=!0){return this.meta.shouldStoreProcessedItems=e,this}shouldStoreProcessedItems(){return this.meta.shouldStoreProcessedItems}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}flushProcessedItems(){this.meta.processedItems=[]}incrementProcessedItemsCounter(){this.meta.processedItemsCounter+=1}processedCount(){return this.meta.processedItemsCounter}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw n.ValidationError.createFrom("The first parameter for the .process(fn) method must be a function");const e=this.taskTimeout();if(!(null==e||"number"==typeof e&&e>=0))throw n.ValidationError.createFrom(`"timeout" must be undefined or a number. A number must be 0 or up. Received "${String(e)}" (${typeof e})`);if(!this.areItemsValid())throw n.ValidationError.createFrom(`"items" must be an array, an iterable or an async iterable. Received "${typeof this.items()}"`);if(this.errorHandler&&"function"!=typeof this.errorHandler)throw n.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw n.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw n.ValidationError.createFrom(`The error handler must be a function. Received "${typeof e}"`)}),this}areItemsValid(){const e=this.items();return Array.isArray(e)||"function"==typeof e[Symbol.iterator]||"function"==typeof e[Symbol.asyncIterator]}prepareResultsArray(){const e=this.items();return Array.isArray(e)&&this.shouldUseCorrespondingResults()&&(this.meta.results=Array(e.length).fill(s.PromisePool.notRun)),this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=s.PromisePool.notRun),this.startProcessing(t,e),e+=1,await this.waitForProcessingSlot()}return await this.drained()}async waitForProcessingSlot(){for(;this.hasReachedConcurrencyLimit();)await this.waitForActiveTaskToFinish()}async waitForActiveTaskToFinish(){await Promise.race(this.tasks())}startProcessing(e,t){const i=this.createTaskFor(e,t).then(e=>{this.save(e,t).removeActive(i)}).catch(async s=>{await this.handleErrorFor(s,e,t),this.removeActive(i)}).finally(()=>{this.shouldStoreProcessedItems()&&this.processedItems().push(e),this.incrementProcessedItemsCounter(),this.runOnTaskFinishedHandlers(e)});this.tasks().push(i),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[i,s]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),i()]).finally(s)}createTaskTimeout(e){let t;return[async()=>new Promise((i,s)=>{t=setTimeout(()=>{s(new r.PromisePoolError(`Task in promise pool timed out after ${this.taskTimeout()}ms`,e))},this.taskTimeout())}),()=>clearTimeout(t)]}save(e,t){return this.shouldUseCorrespondingResults()?this.results()[t]=e:this.results().push(e),this}removeActive(e){return this.tasks().splice(this.tasks().indexOf(e),1),this}async handleErrorFor(e,t,i){if(this.shouldUseCorrespondingResults()&&(this.results()[i]=s.PromisePool.failed),!this.isStoppingThePoolError(e)){if(this.isValidationError(e))throw this.markAsStopped(),e;this.hasErrorHandler()?await this.runErrorHandlerFor(e,t):this.saveErrorFor(e,t)}}isStoppingThePoolError(e){return e instanceof o.StopThePromisePoolError}isValidationError(e){return e instanceof n.ValidationError}async runErrorHandlerFor(e,t){try{await(this.errorHandler?.(e,t,this))}catch(e){this.rethrowIfNotStoppingThePool(e)}}runOnTaskStartedHandlers(e){this.onTaskStartedHandlers.forEach(t=>{t(e,this)})}runOnTaskFinishedHandlers(e){this.onTaskFinishedHandlers.forEach(t=>{t(e,this)})}rethrowIfNotStoppingThePool(e){if(!this.isStoppingThePoolError(e))throw e}saveErrorFor(e,t){this.errors().push(r.PromisePoolError.createFrom(e,t))}async drained(){return await this.drainActiveTasks(),{errors:this.errors(),results:this.results()}}async drainActiveTasks(){await Promise.all(this.tasks())}}},642(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const s=i(234);class n{constructor(e){this.shouldStoreProcessedItems=!0,this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new n(e).withConcurrency(this.concurrency);return"function"==typeof this.errorHandler&&t.handleError(this.errorHandler),"number"==typeof this.timeout?t.withTaskTimeout(this.timeout):t}static for(e){return(new this).for(e)}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers.push(e),this}dontStoreProcessedItems(){return this.shouldStoreProcessedItems=!1,this}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new s.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).storeProcessedItems(this.shouldStoreProcessedItems).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=n,n.notRun=Symbol("notRun"),n.failed=Symbol("failed")},426(e,t){Object.defineProperty(t,"__esModule",{value:!0})},858(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i},172(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class i extends Error{constructor(e){super(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e){return new this(e)}}t.ValidationError=i},220(t){t.exports=e}},N={};function x(e){var t=N[e];if(void 0!==t)return t.exports;var i=N[e]={exports:{}};return F[e].call(i.exports,i,i.exports,x),i.exports}x.d=(e,t)=>{for(var i in t)x.o(t,i)&&!x.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},x.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const P=["api","application","auth","mutation","native-query","query","queue","notification"];function B(e,t,i,s,n,r){let o="https",a=`${s||t}.${n||e}.${new URL("https://squid.cloud").host}`,c="";if(/^local/.test(e)){if(o="http",c=r||function(e){const t=e.replace(/^\/+/,"").split("/"),i=t[0]||"";return"ws"===i?"squidlet"===t[1]:P.includes(i)}(i)?"8001":"8000","undefined"!=typeof process){const e=r?void 0:process.env.SQUID_LOCAL_WS_FORCE_PORT;e&&i.replace(/^\/+/,"").startsWith("ws/general")&&(c=e)}/android$/.test(e)?a="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(a="localhost")}const u=o+"://"+a+(c?`:${c}`:""),l=i.replace(/^\/+/,"");return l?`${u}/${l}`:u}function Q(e,t,i=""){return B(function(e,t){return t||(e.includes("sandbox")?"squidai.westus3.azure.sandbox":e.includes("local")?"local":e.includes("staging")?"squidai.westus3.azure.staging":"us-east-1.aws")}(e,t),"console",i)}class L{constructor(e,t,i,s){this.rpcManager=e,this.iacBaseUrl=Q(t,s,`openapi/iac/applications/${i}/integrations`)}async list(e){const t=await this.rpcManager.get(this.iacBaseUrl);return e?t.filter(t=>t.type===e):t}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}async generateAiDescriptionsForDataSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions`,t)}async generateAiDescriptionsForAssociations(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-associations`,t)}async generateAiDescriptionsForStoredProcedures(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-stored-procedures`,t)}async generateAiDescriptionsForEndpoints(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-endpoints`,t)}async discoverDataConnectionSchema(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-schema`,{})}async testDataConnection(e){return await this.rpcManager.post(`${this.iacBaseUrl}/test-connection`,e)}async discoverGraphQLConnectionSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-graphql-schema`,t)}async discoverOpenApiSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema`,t)}async discoverOpenApiSchemaFromFile(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema-from-file`,{})}}class 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 i={keys:[e],force:t};return this.rpcManager.post("secret/delete",i)}async deleteMany(e,t=!1){if(0===e.length)return;const i={keys:e,force:t};return this.rpcManager.post("secret/delete",i)}}class ${constructor(e){this.rpcManager=e}get(e){const t={key:e};return this.rpcManager.post("secret/api-key/get",t)}getAll(){return this.rpcManager.post("secret/api-key/getAll",{})}upsert(e){const t={key:e};return this.rpcManager.post("secret/api-key/upsert",t)}delete(e){const t={key:e};return this.rpcManager.post("secret/api-key/delete",t)}}class H{constructor(e,t,i,s){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=s,this.integrationClient=new L(this.rpcManager,this.region,this.appId,this.consoleRegion),this.secretClient=new U(this.rpcManager)}integrations(){return this.integrationClient}secrets(){return this.secretClient}}function G(e){return"function"==typeof e}function W(e){return function(t){if(function(e){return G(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 K=function(e,t){return K=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},K(e,t)};function J(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}K(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function z(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],s=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&s>=e.length&&(e=void 0),{value:e&&e[s++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function V(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var s,n,r=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(s=r.next()).done;)o.push(s.value)}catch(e){n={error:e}}finally{try{s&&!s.done&&(i=r.return)&&i.call(r)}finally{if(n)throw n.error}}return o}function Y(e,t,i){if(i||2===arguments.length)for(var s,n=0,r=t.length;n<r;n++)!s&&n in t||(s||(s=Array.prototype.slice.call(t,0,n)),s[n]=t[n]);return e.concat(s||Array.prototype.slice.call(t))}Object.create,Object.create;var Z,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 i=e.indexOf(t);0<=i&&e.splice(i,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,i,s,n;if(!this.closed){this.closed=!0;var r=this._parentage;if(r)if(this._parentage=null,Array.isArray(r))try{for(var o=z(r),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else r.remove(this);var c=this.initialTeardown;if(G(c))try{c()}catch(e){n=e instanceof X?e.errors:[e]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var l=z(u),d=l.next();!d.done;d=l.next()){var h=d.value;try{ie(h)}catch(e){n=null!=n?n:[],e instanceof X?n=Y(Y([],V(n)),V(e.errors)):n.push(e)}}}catch(e){i={error:e}}finally{try{d&&!d.done&&(s=l.return)&&s.call(l)}finally{if(i)throw i.error}}}if(n)throw new X(n)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)ie(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&ee(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&ee(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function ie(e){G(e)?e():e.unsubscribe()}te.EMPTY;var se={setTimeout:function(e,t){for(var i=[],s=2;s<arguments.length;s++)i[s-2]=arguments[s];var n=se.delegate;return(null==n?void 0:n.setTimeout)?n.setTimeout.apply(n,Y([e,t],V(i))):setTimeout.apply(void 0,Y([e,t],V(i)))},clearTimeout:function(e){var t=se.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function ne(){}var re=oe("C",void 0,void 0);function oe(e,t,i){return{kind:e,value:t,error:i}}var ae=function(e){function t(t){var i,s=e.call(this)||this;return s.isStopped=!1,t?(s.destination=t,((i=t)instanceof te||i&&"closed"in i&&G(i.remove)&&G(i.add)&&G(i.unsubscribe))&&t.add(s)):s.destination=he,s}return J(t,e),t.create=function(e,t,i){return new ue(e,t,i)},t.prototype.next=function(e){this.isStopped?de(function(e){return oe("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?de(oe("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?de(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,i,s){var n,r=e.call(this)||this;return n=G(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=s?s:void 0}:t,r.destination=new ce(n),r}return J(t,e),t}(ae);function le(e){!function(e){se.setTimeout(function(){throw e})}(e)}function de(e,t){var i=null;i&&se.setTimeout(function(){return i(e,t)})}var he={closed:!0,next:ne,error:function(e){throw e},complete:ne};function pe(e,t,i,s,n){return new ge(e,t,i,s,n)}var ge=function(e){function t(t,i,s,n,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=n?function(e){try{n(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=s?function(){try{s()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return J(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var i=this.closed;e.prototype.unsubscribe.call(this),!i&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(ae);function fe(e,t){return W(function(i,s){var n=0;i.subscribe(pe(s,function(i){s.next(e.call(t,i,n++))}))})}function ye(e){return null!=e}let me=e=>new Error(e);function be(e,t,...i){e||function(e,...t){const i=ve(e);if("object"==typeof i)throw i;throw me(i||"Assertion error",...t)}(t,...i)}function Ie(e,t,...i){return be(e,t,...i),e}function ve(e){return void 0===e?"":"string"==typeof e?e:e()}function we(e,t,i){const s=ve(e);if("object"==typeof s)throw s;return`${s?`${s}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(i)}`}function 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 _e(){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()))}function qe(e=18,t="",i=""){be(t.length<e,"ID prefix is too long"),be(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let s="";for(let t=0;t<e;t++)s+=_e();if(t.length>0&&(s=t+s.substring(t.length)),i)for(;s.charAt(t.length)===i[t.length];)s=s.substring(0,t.length)+_e()+s.substring(t.length+1);return s}function Ce({count:e,length:t,prefix:i}){be(e>=0,`Invalid IDs count: ${e}`);const s=new Set;for(;s.size<e;)s.add(qe(t||18,i||""));return[...s]}const De=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Oe(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Oe(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Oe(t);else for(const t in e){if(!/^[a-zA-Z0-9_]+$/.test(t))throw new Error(`Invalid metadata filter key ${t} - can only contain letters, numbers, and underscores`);if(De.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${De.join(", ")}`);const i=e[t];if("object"!=typeof i&&"string"!=typeof i&&"number"!=typeof i&&"boolean"!=typeof i)throw new Error(`Invalid metadata filter value for key ${t} - cannot be of type ${typeof i}`)}}function Ee(e,t,i){const s=atob(e),n=new Uint8Array(s.length);for(let e=0;e<s.length;e++)n[e]=s.charCodeAt(e);return new File([n],t,{type:i||"application/octet-stream"})}class Ae{constructor(e,t,i,s,n,r,o){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=s,this.socketManager=n,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 i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}async updateCustomGuardrails(e){await this.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}async regenerateApiKey(){return await this.post("ai/agent/regenerateApiKey",{agentId:this.agentId})}async getApiKey(){return await this.post("ai/agent/getApiKey",{agentId:this.agentId})}async listRevisions(){return await this.post("ai/agent/listRevisions",{agentId:this.agentId})}async restoreRevision(e){await this.post("ai/agent/restoreRevision",{agentId:this.agentId,revisionNumber:e})}async deleteRevision(e){await this.post("ai/agent/deleteRevision",{agentId:this.agentId,revisionNumber:e})}chat(e,t,i){return this.chatInternal(e,t,i).responseStream}async transcribeAndChat(e,t,i){const s=this.chatInternal(e,t,i),n=await Ie(s.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:s.responseStream,transcribedPrompt:n.transcribedPrompt}}async ask(e,t,i){const s=await this.askInternal(e,!1,t,i);return this.replaceFileTags(s.responseString,s.annotations)}async askWithAnnotations(e,t,i){const s=await this.askInternal(e,!1,t,i);return{responseString:s.responseString,annotations:s.annotations}}async askAsync(e,t,i){const s={agentId:this.agentId,prompt:e,options:i,jobId:t};await this.post("ai/chatbot/askAsync",s)}observeStatusUpdates(e){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"aiStatus"===e.type&&e.agentId===this.agentId),g(t=>!e||t.jobId===e),fe(e=>({agentId:this.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.messageId})))}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,i){return await this.askInternal(e,!1,t,i)}async transcribeAndAskWithVoiceResponse(e,t,i){const s=await this.askInternal(e,!0,t,i),n=s.voiceResponse;return{responseString:s.responseString,transcribedPrompt:s.transcribedPrompt,voiceResponseFile:Ee(n.base64File,`voice.${n.extension}`,n.mimeType)}}async askWithVoiceResponse(e,t,i){const s=await this.askInternal(e,!0,t,i),n=s.voiceResponse;return{responseString:s.responseString,voiceResponseFile:Ee(n.base64File,`voice.${n.extension}`,n.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}async addConnectedIntegration(e){await this.post("ai/agent/addConnectedIntegration",{agentId:this.agentId,integrationId:e.integrationId,integrationType:e.integrationType,description:e.description??""})}async addConnectedAgent(e){await this.post("ai/agent/addConnectedAgent",{agentId:this.agentId,connectedAgentId:e.agentId,description:e.description})}async addConnectedKnowledgeBase(e){await this.post("ai/agent/addConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e.knowledgeBaseId,description:e.description})}async addFunction(e){await this.post("ai/agent/addFunction",{agentId:this.agentId,functionId:e})}async removeConnectedAgent(e){await this.post("ai/agent/removeConnectedAgent",{agentId:this.agentId,connectedAgentId:e})}async removeConnectedIntegration(e){await this.post("ai/agent/removeConnectedIntegration",{agentId:this.agentId,integrationId:e})}async removeConnectedKnowledgeBase(e){await this.post("ai/agent/removeConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e})}async removeFunction(e){await this.post("ai/agent/removeFunction",{agentId:this.agentId,functionId:e})}async setAgentDescription(e){await this.post("ai/agent/setAgentDescription",{agentId:this.agentId,description:e})}async provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}async build(e,t,i){const s={agentId:this.agentId,request:e,memoryId:t,options:i};return await this.backendFunctionManager.executeFunction("buildAgent",s)}replaceFileTags(e,t={}){let i=e;for(const[e,s]of Object.entries(t)){let t="";const n=s.aiFileUrl.fileName?s.aiFileUrl.fileName:s.aiFileUrl.url;switch(s.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${n}](${s.aiFileUrl.url})`}const r=`\${id:${e}}`;i=i.replaceAll("`"+r+"`",t).replaceAll(r,t)}return i}async askInternal(e,t,i,s){if(i?.contextMetadataFilter&&Oe(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)Oe(i.contextMetadataFilterForKnowledgeBase[e]);s=s||Se(),i={...Re,...i||{}};const n="string"==typeof e;let r="ai/chatbot/";r+=n||t?!n&&t?"transcribeAndAskWithVoiceResponse":n&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const o={agentId:this.agentId,prompt:n?e:void 0,options:i,jobId:s},a=n?void 0:[e];return await this.post(r,o,a,"file"),await this.jobClient.awaitJob(s)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Oe(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Oe(t.contextMetadataFilterForKnowledgeBase[e]);const s=Se(),n=void 0===(t={...Re,...t||{}}).smoothTyping||t.smoothTyping;let o="";const a=new r,u=new r;this.ongoingChatSequences[s]=u;let l=-1;u.pipe(R(({tokenIndex:e})=>{void 0!==e&&e<l&&console.warn("Received token index out of order",e,l),void 0!==e&&(l=e)}),c(({value:e,complete:t,annotations:i})=>t?S({value:e,complete:t,annotations:i}):S(e).pipe(n?h(0):R(),fe(e=>({value:e,complete:!1,annotations:void 0})))),A(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{o+=e,t&&i&&(o=this.replaceFileTags(o,i)),a.next(o)},error:e=>{console.error(e)},complete:()=>{a.complete()}});const d="string"==typeof e;i=i||Se();const p={agentId:this.agentId,jobId:i,prompt:d?e:void 0,options:t,clientRequestId:s},g={responseStream:a.pipe(f(()=>{delete this.ongoingChatSequences[s]}),T())};let y;return y=d?this.post("ai/chatbot/chat",p).catch(e=>{a.error(e),a.complete()}):this.post("ai/chatbot/transcribeAndChat",p,[e],"file").catch(e=>{throw a.error(e),a.complete(),e}),g.serverResponse=y.then(()=>this.jobClient.awaitJob(i)).catch(e=>{a.error(e),a.complete()}),g}async post(e,t,i=[],s="files"){const n={};return this.agentApiKey&&(n["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,s,n)}}const Re={smoothTyping:!0,responseFormat:"text"};class je{constructor(e,t,i,s){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=s,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe(g(e=>"aiChatbot"===e.type),fe(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new Ae(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:i,complete:s,tokenIndex:n,annotations:r}=e.payload;if(s&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:s,tokenIndex:void 0===n?void 0:n,annotations:r});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:s&&e===i.length-1,tokenIndex:void 0===n?void 0:n,annotations:r})}}const Fe="__squid_empty_chat_id";class Ne{constructor(e){this.rpcManager=e}async transcribe(e,t={modelName:"whisper-1"}){return this.rpcManager.post("ai/audio/transcribe",t,[e])}async createSpeech(e,t){const i={input:e,options:t},s=await this.rpcManager.post("ai/audio/createSpeech",i);return Ee(s.base64File,`audio.${s.extension}`,s.mimeType)}}class xe{constructor(e,t){this.provider=e,this.rpcManager=t}async uploadFile(e){const t={provider:this.provider,expirationInSeconds:e.expirationInSeconds};return(await this.rpcManager.post("ai/files/uploadFile",t,[e.file],"file")).fileId}async deleteFile(e){const t={fileId:e,provider:this.provider};return(await this.rpcManager.post("ai/files/deleteFile",t)).deleted}}class Pe{constructor(e){this.rpcManager=e}async generate(e,t){const i={prompt:e,options:t};return await this.rpcManager.post("ai/image/generate",i)}async removeBackground(e){return await this.rpcManager.post("ai/image/removeBackground",{},[e])}}function Be(e){for(const t in e){const i=e[t];be("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),be(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}class Qe{constructor(e,t,i){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i}async getKnowledgeBase(){return(await this.rpcManager.post("ai/knowledge-base/getKnowledgeBase",{knowledgeBaseId:this.knowledgeBaseId})).knowledgeBase}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async upsertKnowledgeBase(e){await this.rpcManager.post("ai/knowledge-base/upsertKnowledgeBase",{knowledgeBase:{id:this.knowledgeBaseId,...e}})}async delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e})).context}async deleteContext(e){await this.deleteContexts([e])}async deleteContexts(e){await this.rpcManager.post("ai/knowledge-base/deleteContexts",{knowledgeBaseId:this.knowledgeBaseId,contextIds:e})}async upsertContext(e,t){const{failures:i}=await this.upsertContexts([e],t?[t]:void 0);return i.length>0?{failure:i[0]}:{}}async upsertContexts(e,t){for(const t of e)t.metadata&&Be(t.metadata);const i=Se();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:i},t),await this.jobClient.awaitJob(i)}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class Le{constructor(e,t){this.rpcManager=e,this.jobClient=t}knowledgeBase(e){return new 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 He="Agent Response",Ge="Accessing Knowledge Base",We=["user","ai"],Ke=["cohere","none"],Je=["anthropic","bedrock","claude-code","codex","cohere","flux","gemini","openai","grok","stability","voyage","mistral","textract","vertex","external"],ze=["gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.5-pro"],Ve=["gemini-3.1-pro","gemini-3.5-flash","gemini-3.1-flash-lite"],Ye=["grok-4","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],Ze=["claude-haiku-4-5-20251001","claude-opus-4-8","claude-sonnet-4-6"],Xe=[...ze,...Ze,...Ve,...Ye];function et(e){return Xe.includes(e)}const tt=["text-embedding-3-small"],it=["voyage-3-large"],st=["titan-embed-text-v2"],nt=[...tt,...it,...st];function rt(e){return nt.includes(e)}function ot(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e&&"dimensions"in e}const at=["gpt-image-1","gpt-image-1-mini","gpt-image-1.5","gpt-image-2","gpt-image-2-2026-04-21","chatgpt-image-latest"],ct=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],ut=["tts-1","tts-1-hd","gpt-4o-mini-tts"],lt=[...ct,...ut],dt=["stable-diffusion-core"],ht=["flux-pro-1.1","flux-kontext-pro"],pt=[...at,...dt,...ht],gt=[...ct],ft=[...ut],yt=["mp3","opus","aac","flac","wav","pcm"],mt=["vendor","connector","custom"];function bt(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const It=["postgres","mongoAtlas"],vt=["contextual","basic"],wt=["secret","regular"];function St(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const Mt=["dev","prod"],kt="built_in_agent",Tt={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},_t="ai_agents",qt=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_blob","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","built_in_azure_blob","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","azure-entra-external-id","dynamodb","elasticsearch","firebase_auth","firestore","gcs","github","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jira_jsm","jwt_hmac","jwt_rsa","kafka","keycloak","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","oracledb","pinecone","postgres","redis","s3","salesforce","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","mcp","a2a","legend","teams","openai_compatible","openai_compatible_embedding","sharepoint","vertex"],Ct=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],Dt=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth","azure-entra-external-id"],Ot=["graphql"],Et=["api"],At=["data","api","graphql"],Rt="built_in_db",jt="built_in_queue",Ft="built_in_storage",Nt=[Rt,jt,Ft];function xt(e){return Nt.includes(e)}const Pt=["squid_functionExecution_count","squid_functionExecution_time"],Bt=["sum","max","min","average","median","p95","p99","count"],Qt=["user","squid"],Lt=["align-by-start-time","align-by-end-time"],Ut=["return-no-result-groups","return-result-group-with-default-values"],$t="__docId__",Ht=["in","not in","array_includes_some","array_includes_all","array_not_includes"],Gt=[...Ht,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],Wt=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],Kt=["CONNECTED","DISCONNECTED","REMOVED"];class Jt{constructor(e,t,i,s){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.backendFunctionManager=s}agent(e=kt,t=void 0){return this.getAiAgentClient().agent(e,t)}knowledgeBase(e){return this.getAiKnowledgeBaseClient().knowledgeBase(e)}async listAgents(){return this.getAiAgentClient().listAgents()}async listKnowledgeBases(){return this.getAiKnowledgeBaseClient().listKnowledgeBases()}async listFunctions(){const e=await this.rpcManager.post("/application/getBundleMetadata",{});return Object.values(e.aiFunctions||{})}async listChatModels(e){return(await this.rpcManager.post("ai/settings/listChatModels",e??{})).models}image(){return new Pe(this.rpcManager)}audio(){return new Ne(this.rpcManager)}matchMaking(){return new Ue(this.rpcManager)}files(e){return new xe(e,this.rpcManager)}executeAiQuery(e,t,i){const s={integrationId:e,prompt:t,options:i};return this.rpcManager.post("ai/query/executeDataQuery",s)}executeAiApiCall(e,t,i,s){const n={integrationId:e,prompt:t,options:i,sessionContext:s};return this.rpcManager.post("ai/query/executeApiQuery",n)}async getApplicationAiSettings(){return(await this.rpcManager.post("ai/settings/getApplicationAiSettings",{})).settings}async setApplicationAiSettings(e){const t={settings:e};await this.rpcManager.post("ai/settings/setApplicationAiSettings",t)}async setAiProviderApiKeySecret(e,t){const i={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",i)).settings}observeStatusUpdates(e){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"aiStatus"===e.type),g(t=>!e||t.jobId===e),w(e=>({agentId:e.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.messageId})))}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new je(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 zt={headers:{},queryParams:{},pathParams:{}};class Vt{constructor(e){this.rpcManager=e}async get(e,t,i){return this.request(e,t,void 0,i,"get")}async post(e,t,i,s){return this.request(e,t,i,s,"post")}async delete(e,t,i,s){return this.request(e,t,i,s,"delete")}async patch(e,t,i,s){return this.request(e,t,i,s,"patch")}async put(e,t,i,s){return this.request(e,t,i,s,"put")}async request(e,t,i,s,n){const r={integrationId:e,endpointId:t,body:i,options:{...zt,...this.convertOptionsToStrings(s||{})},overrideMethod:n};return await this.rpcManager.rawPost("api/callApi",r,void 0,void 0,!1)}convertOptionsToStrings(e){return{headers:this.convertToStrings(e.headers),queryParams:this.convertToStrings(e.queryParams),pathParams:this.convertToStrings(e.pathParams)}}convertToStrings(e){if(!e)return{};const t=Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,String(t)]);return Object.fromEntries(t)}}class Yt{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 Zt=/[.\[\]]/;function Xt(e,t){if(!e)return;const i=t.split(Zt);let s,n=e;for(;n&&i.length;){const e=i.shift();if(e){if("object"!=typeof n||!(e in n))return;s=n[e],n=s}}return s}function ei(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function ti(e,t,i,s="."){const n=t.split(s);let r=e;for(;n.length;){const e=Ie(n.shift());if(n.length){const t=r[e],i=ei(t)?ci(t)??{}:{};r[e]=i,r=i}else r[e]=i}}function ii(e,t,i="."){const s=t.split(i);let n=e;for(;s.length;){const e=Ie(s.shift());if(s.length){const t=ei(n[e])?ci(n[e])??{}:{};n[e]=t,n=t}else delete n[e]}}function si(e,t,i){if(e.has(t)){const s=e.get(t);e.delete(t),e.set(i,s)}}function ni(e){return null==e}function ri(e,t){if(e===t)return!0;if(null===e||null===t)return!1;const i=typeof e;if(i!==typeof t)return!1;if("object"!==i)return e===t;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();const s=Object.keys(e),n=Object.keys(t);if(s.length!==n.length)return!1;for(const i of s)if(!n.includes(i)||!ri(e[i],t[i]))return!1;return!0}function oi(e,t){const i=new Array(e.length);for(let s=0;s<e.length;s++)i[s]=ai(e[s],t);return i}function ai(e,t){const i=t?t(e):void 0;if(void 0!==i)return i;if("object"!=typeof e||null===e)return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return oi(e,t);if(e instanceof Map)return new Map(oi(Array.from(e),t));if(e instanceof Set)return new Set(oi(Array.from(e),t));if(ArrayBuffer.isView(e))return s=e,"undefined"!=typeof Buffer&&s instanceof Buffer?Buffer.from(s):new s.constructor(s.buffer.slice(),s.byteOffset,s.length);var s;const n={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(n[i]=ai(e[i],t));return n}function ci(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 ui(e,t){if(e===t||ni(e)&&ni(t))return 0;if(ni(e))return-1;if(ni(t))return 1;const i=typeof e,s=typeof t;return i!==s?i<s?-1:1:"number"==typeof e?(be("number"==typeof t),isNaN(e)&&isNaN(t)?0:isNaN(e)?-1:isNaN(t)?1:e<t?-1:1):"boolean"==typeof e?(be("boolean"==typeof t),e<t?-1:1):"bigint"==typeof e?(be("bigint"==typeof t),e<t?-1:1):"string"==typeof e?(be("string"==typeof t),e<t?-1:1):e instanceof Date&&t instanceof Date?Math.sign(e.getTime()-t.getTime()):0}function li(e,t){return e.reduce((e,i)=>{const s=t(i);return e[s]?e[s].push(i):e[s]=[i],e},{})}function di(e){if(Array.isArray(e))return e.map(e=>di(e));if("object"!=typeof e||null===e||e instanceof Date)return e;const t=Object.keys(e),i={};return t.sort().forEach(t=>{i[t]=di(e[t])}),i}function hi(e){return pi(di(e))}function pi(e){if(void 0===e)return null;const t=ai(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function gi(e){return ai(JSON.parse(e),e=>{if(null===e||"object"!=typeof e)return;const t=e,i=t.$date;return i&&1===Object.keys(t).length?new Date(i):void 0})}function fi(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=pi(e);if("undefined"!=typeof Buffer)return Buffer.from(t,"utf8").toString("base64");{const e=(new TextEncoder).encode(t);let i="";for(let t=0;t<e.length;t++)i+=String.fromCharCode(e[t]);return btoa(i)}}const yi=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0},mi=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(pi(e[i])!==pi(t[i]))return!1;return!0};class bi{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||yi,s=this.options.valueExpirationMillis||1/0;return t&&Date.now()<t.cacheTimeMillis+s&&i(t.args,e)?{found:!0,value:t.result}:{found:!1}}set(e,t){this.cachedEntry={args:e,result:t,cacheTimeMillis:Date.now()}}}function Ii(e){const t=[],i=[];let s=0;for(const n of e)if("undefined"!=typeof File)if(n instanceof File){i.push(n);const e={type:"file",__squid_placeholder__:!0,fileIndex:s++};t.push(e)}else if(vi(n)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:n.map((e,t)=>(i.push(n[t]),s++))};t.push(e)}else t.push(n);else t.push(n);return{argsArray:t,fileArray:i}}function vi(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class wi{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:s,fileArray:n}=Ii(i),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(s);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?yi:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,s));if(t)return t.promise}const u=this.createExecuteCallPromise(r,s,n,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:s,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,s,n={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:pi(t)},a=gi((await this.rpcManager.post(r,o,i.length>0?i:[],"files",n)).payload);if(a?.__isSquidBase64File__){const e=a;return Ee(e.base64,e.filename,e.mimetype)}return s&&s.set(t,a),a}}function Si(e){if("undefined"!=typeof globalThis)return globalThis[e]}function Mi(){if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}void 0===Mi()?.SQUID_LOG_DEBUG_ENABLED&&function(e=!0){Mi().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 ki{static debug(...e){(function(){const e=Mi();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=Mi();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Ti{constructor(e){this.destructManager=e,this.clientTooOldSubject=new t(!1),this.isTenant=!0===Mi().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(_(1),g(e=>!e),w(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=Mi()[qi];return e?e():Se()}generateClientId(){const e=Mi()[_i];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 _i="SQUID_CLIENT_ID_GENERATOR",qi="SQUID_CLIENT_REQUEST_ID_GENERATOR",Ci="__squidId";function Di(e){return gi(e)}function Oi(...e){const[t,i,s]=e,n="object"==typeof t?t:{docId:t,collectionName:i,integrationId:s};return n.integrationId||(n.integrationId=void 0),hi(n)}function Ei(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return ri(e,t);if("!="===i)return!ri(e,t);switch(i){case"<":return!ni(e)&&(!!ni(t)||t<e);case"<=":return!!ni(t)||!ni(e)&&t<=e;case">":return!ni(t)&&(!!ni(e)||t>e);case">=":return!!ni(e)||!ni(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Ai(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Ai(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Ai(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Ai(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>Ie(i,"VALUE_CANNOT_BE_NULL").some(t=>ri(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>Ie(i,"VALUE_CANNOT_BE_NULL").some(t=>ri(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!Ie(i,"VALUE_CANNOT_BE_NULL").some(t=>ri(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function Ai(e,t,i){i||(e=e.toLowerCase(),t=t.toLowerCase());const s=function(e){let t="";for(let i=0;i<e.length;++i)"\\"===e[i]?i+1<e.length&&["%","_"].includes(e[i+1])?(t+=e[i+1],i++):i+1<e.length&&"\\"===e[i+1]?(t+="\\\\",i++):t+="\\":"%"===e[i]?t+="[\\s\\S]*":"_"===e[i]?t+="[\\s\\S]":("/-\\^$*+?.()[]{}|".includes(e[i])&&(t+="\\"),t+=e[i]);return t}(t);return new RegExp(`^${s}$`).test(e)}function Ri(e,t){return`${e}_${t}`}function ji(e){return"fieldName"in e}function Fi(e){return"docIds"in e}function Ni(e,t,i){const s=e.docIds.some(e=>Object.entries(e).every(([e,s])=>Ei(s,i(t,e)??null,"==")));switch(e.operator){case"==":case"in":return s;case"!=":case"not in":return!s}}function xi(e,t,i,s){const n=e,r=s(t,$t);if("string"!=typeof r)return Ei(n,r??null,i);let o;try{o=gi(r)}catch{return Ei(n,r,i)}if(!o||"object"!=typeof o||Array.isArray(o))return Ei(n,r,i);const a=Object.keys(o);if(1===a.length&&"__id"===a[0]){const e=o.__id,t=function(e){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const t=Object.keys(e);return 1===t.length&&"__id"===t[0]?e.__id:hi(e)}if("string"==typeof e)try{const t=gi(e);if(t&&"object"==typeof t&&!Array.isArray(t)){const e=Object.keys(t);if(1===e.length&&"__id"===e[0])return t.__id}}catch{}return e}(n);return Ei(t,e,i)}if(1===a.length){const e=function(e,t){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const i=Object.keys(e);if(1===i.length&&i[0]===t)return e[t]}if("string"==typeof e)try{const i=gi(e);if(i&&"object"==typeof i&&!Array.isArray(i)){const e=Object.keys(i);if(1===e.length&&e[0]===t)return i[t]}}catch{}return e}(n,a[0]);return Ei(e,o[a[0]],i)}return"object"!=typeof n||null===n||Array.isArray(n)?Ei(n,r,i):Ei(hi(n),r,i)}class Pi{constructor(e,t,i,s){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.projectFields=s,this.refId=Se()}setInMemoryData(e){this.inMemoryData=e}get squidDocId(){return this._squidDocId}get data(){return ai(this.dataRef)}get dataRef(){if(void 0!==this.inMemoryData)return this.inMemoryData;const e=Ie(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=Di(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`});return this.projectFields?this.applyProjection(e):e}get hasData(){return this.dataManager.hasSufficientData(this.squidDocId,this.projectFields)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return 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 i={};Object.entries(e).forEach(([e,t])=>{const s=void 0!==t?{type:"update",value:t}:{type:"removeProperty"};i[e]=[s]});const s={type:"update",squidDocIdObj:Di(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(s,t)}async setInPath(e,t,i){return this.update({[e]:ai(t)},i)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,i){const s={type:"applyNumericFn",fn:"increment",value:t},n={type:"update",squidDocIdObj:Di(this.squidDocId),properties:{[e]:[s]}};return this.dataManager.applyOutgoingMutation(n,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async upsert(e,t){const i=Di(this.squidDocId),s=i.integrationId;let n=gi(i.docId);if(n[Ci]&&(n={}),s===Rt&&n.__id)try{const e=gi(n.__id);n={...n,...e}}catch{}const r={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...n}};return this.dataManager.applyOutgoingMutation(r,t)}async insert(e,t){return this.upsert(e,t)}async delete(e){const t={type:"delete",squidDocIdObj:Di(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}applyProjection(e){const t={},i=Ie(this.projectFields,"applyProjection called without projectFields"),{integrationId:s}=Di(this.squidDocId);"__id"in e&&(t.__id=e.__id),"__docId__"in e&&(t.__docId__=e.__docId__);const n=s===Rt?"__id":"__docId__";if(n in e){const i=e[n];if("string"==typeof i&&i.startsWith("{"))try{const e=gi(i);if("object"==typeof e&&null!==e)for(const[i,s]of Object.entries(e))i in t||(t[i]=s)}catch{}}for(const s of i)if(s.includes(".")){const i=Xt(e,s);void 0!==i&&ti(t,s,i)}else s in e&&(t[s]=e[s]);return t}hasSquidPlaceholderId(){const e=gi(this._squidDocId);if("object"==typeof e&&e.docId){const t=gi(e.docId);if("object"==typeof t&&Object.keys(t).includes(Ci))return!0}return!1}}class Bi{constructor(e,i={}){this.internalStateObserver=new t(null),this.firstElement=null,this.isDestroyed=new t(!1),this.snapshotSubject=new r,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,be(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe(C()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...i},this.goToFirstPage()}unsubscribe(){this.isDestroyed.next(!0),this.isDestroyed.complete(),this.internalStateObserver.complete(),this.snapshotSubject.complete()}async prev(){return this.prevInternal(await this.waitForInternalState()),await this.waitForData()}async next(){const{numBefore:e,extractedData:t}=await this.waitForInternalState();return e+this.paginateOptions.pageSize<t.length&&(this.firstElement=t[e+this.paginateOptions.pageSize]),this.internalStateObserver.next(null),this.doNewQuery(t[e],!1),await this.waitForData()}async waitForData(){return this.internalStateToState(await this.waitForInternalState())}observeState(){return this.internalStateObserver.pipe(g(e=>null!==e),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||ni(e)&&ni(t))return 0;if(ni(e))return-1;if(ni(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:s,asc:n}of i){const i=ui(Xt(e,s),Xt(t,s));if(0!==i)return n?i:-i}return 0}async dataReceived(e){const t=e.map(e=>this.templateSnapshotEmitter.extractData(e));if(0===e.length)return void(this.onFirstPage?this.internalStateObserver.next({numBefore:0,numAfter:0,data:e,extractedData:t}):this.goToFirstPage());if(null===this.firstElement)if(null!==this.lastElement){const i=t.filter(e=>1===this.compareObjects(e,this.lastElement)).length;this.firstElement=t[e.length-i-this.paginateOptions.pageSize],this.lastElement=null}else this.navigatingToLastPage&&(this.firstElement=t[e.length-this.paginateOptions.pageSize],this.navigatingToLastPage=!1);const i=t.filter(e=>-1===this.compareObjects(e,this.firstElement)).length,s=Math.max(0,e.length-i-this.paginateOptions.pageSize);i!==e.length?this.internalStateObserver.next({numBefore:i,numAfter:s,data:e,extractedData:t}):this.prevInternal({numBefore:i,numAfter:s,data:e,extractedData:t})}doNewQuery(e,t){if(this.onFirstPage=!1,t){const t=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).flipSortOrder();e&&t.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(t=>({fieldName:t.fieldName,operator:t.asc?"<=":">=",value:Xt(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:Xt(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),O(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:s,extractedData:n}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(n[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:s>0,hasPrev:i>0}}prevInternal(e){const{numBefore:t,numAfter:i,extractedData:s}=e;this.firstElement=null,this.lastElement=s[t-1],this.internalStateObserver.next(null),this.doNewQuery(s[s.length-i-1],!0)}}Error;class Qi{constructor(e,t,i,s,n){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=s,this.mutationSender=n}getForDocument(e){const{collectionName:t,integrationId:i,docId:s}=Di(e),n=gi(s),r=this.get(t,i);for(const[e,t]of Object.entries(n))r.where(e,"==",t);return r}get(e,t){return new $i(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService,this.mutationSender)}}class Li{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}docId(e){return this.eq($t,e)}docIds(e){return this.in($t,e)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"like_cs":"like",t)}notLike(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"not like_cs":"not like",t)}arrayIncludesSome(e,t){return this.where(e,"array_includes_some",t)}arrayIncludesAll(e,t){return this.where(e,"array_includes_all",t)}arrayNotIncludes(e,t){return this.where(e,"array_not_includes",t)}throwIfInvalidLikePattern(e){if(/\\(?![%_\\])/.test(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class Ui{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 Ui(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}projectFields(e){const t=this.queryBuilder.projectFields(e);return new Ui(t)}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new Bi(this,e)}}class $i extends Li{constructor(e,t,i,s,n,r,o,a){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=s,this.documentReferenceFactory=n,this.queryBuilderFactory=r,this.documentIdentityService=o,this.mutationSender=a,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return fi(this.build())}where(e,t,i){if(be(Gt.includes(t),`Invalid operator: ${t}`),this.query.projectFields&&e!==$t&&!this.query.projectFields.includes(e))throw new Error(`Cannot filter by field '${e}' that is not included in projectFields.`);if("in"===t||"not in"===t){const s=Array.isArray(i)?[...i]:[i];"in"===t&&0===s.length&&(this.containsEmptyInCondition=!0);for(const i of s)this.query.conditions.push({fieldName:e,operator:"in"===t?"==":"!=",value:i});return this}return this.query.conditions.push({fieldName:e,operator:t,value:i}),this}limit(e){return function(e){var t;be(function(e){return"number"==typeof e}(t=e),()=>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 i=this.query.sortOrder.map(e=>e.fieldName);return be(ri(t.sort(),i.slice(0,t.length).sort()),"All fields in limitBy must be appear in the first fields in the sortBy list."),this.query.limitBy={limit:e,fields:t,reverseSort:!1},this}sortBy(e,t=!0){const i={asc:t,fieldName:e};if(function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,s,n,r;be((i=t,s=["fieldName","asc"],!Array.isArray(i)&&[...Object.keys(i)].every(e=>s.includes(e))),"Field sort should only contain a fieldName and asc"),be((n=t.asc,r="boolean",Array.isArray(n)?n.every(e=>typeof e===r):typeof n===r),"Asc needs to be boolean")}(i),be(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.projectFields&&e!==$t&&!this.query.projectFields.includes(e))throw new Error(`Cannot sort by field '${e}' that is not included in projectFields.`);return this.query.sortOrder.push(i),this}projectFields(e){if(0===e.length&&"built_in_db"!==this.integrationId)throw new Error(`Empty projectFields is only allowed for built_in_db integration. For '${this.integrationId}', you must specify at least one field to project.`);if(this.query.projectFields)for(const t of e)if(!this.query.projectFields.includes(t))throw new Error(`Cannot project field '${t}' that is not in the existing projection. Subsequent projectFields calls must be subsets of the previous projection.`);const t=e;for(const e of this.query.sortOrder)if(e.fieldName!==$t&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including sort field '${e.fieldName}'.`);for(const e of this.query.conditions)if(ji(e)){if(e.fieldName!==$t&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including filter field '${e.fieldName}'.`)}else if(Fi(e));else for(const i of e.fields)if(i.fieldName!==$t&&!t.includes(i.fieldName))throw new Error(`Cannot set projectFields without including filter field '${i.fieldName}'.`);const i=this.clone();return i.query.projectFields=[...e],i}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return m(this.snapshots(!1).pipe(l([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new t([]);const i=this.build(),s=i.projectFields;return this.querySubscriptionManager.processQuery(i,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(fe(e=>e.map(e=>{be(1===Object.keys(e).length);const t=e[this.collectionName],i=Oi(Ie(t).__docId__,this.collectionName,this.integrationId),n=this.documentReferenceFactory.create(i,this.queryBuilderFactory,s);return this.querySubscriptionManager.detachedRecords.delete(e)&&n.setInMemoryData(t),n})))}changes(){let e,t=new Set;return this.snapshots().pipe(a(this.documentIdentityService.observeChanges().pipe(D(t=>(Object.entries(t).forEach(([t,i])=>{!function(e,t,i){const s=e[t];void 0!==s&&(e[i]=s,delete e[t])}(e||{},t,i)}),i)),q({}))),fe(([i])=>{let s=[];const n=[],r=[];if(e){for(const r of i){const i=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){n.push(r);const s=e[i];delete e[i],t.delete(s)}else s.push(r)}for(const e of t)r.push(e)}else s=i;e={},t=new Set;for(const s of i){const i=s.dataRef;e[s.squidDocId]=i,t.add(i)}return new Hi(s,n,r)}))}async delete(){return this.validateQueryDeleteModifiers(),this.containsEmptyInCondition?{deletedCount:0}:(be(this.mutationSender,"Query delete is not available on this query builder."),this.mutationSender.deleteQuery(this.build()))}dereference(){return new Ui(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new $i(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService,this.mutationSender);return e.query=ai(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){if(!e.length)return this;if(this.query.projectFields)for(const t of e)if(t.fieldName!==$t&&!this.query.projectFields.includes(t.fieldName))throw new Error(`Cannot filter by field '${t.fieldName}' that is not included in projectFields.`);return this.query.conditions.push({fields:e}),this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new Bi(this,e)}validateQueryDeleteModifiers(){be(0===this.query.sortOrder.length&&-1===this.query.limit&&!this.query.limitBy,"query.delete() does not currently support sortBy, limit, or limitBy.")}mergeConditions(){const e=[],t=li(this.query.conditions.filter(ji)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=li(i,e=>e.operator);for(const[i,s]of Object.entries(t)){if("=="===i||"!="===i){e.push(...s);continue}const t=[...s];t.sort((e,t)=>ui(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!ji(e)),...e]}}class Hi{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class Gi extends Li{constructor(e,t,i,s,n,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=s,this.queryBuilderFactory=n,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,i){return this.queryBuilder.where(e,t,i),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}projectFields(e){throw new Error("projectFields is not yet supported for join queries")}join(e,t,i,s){const n=s?.leftAlias??this.latestAlias,r={...i,leftAlias:n,isInner:s?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[n].push(t),new Gi(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:r},this.queryBuilder)}snapshot(){return m(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new t([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,ai(this.joins),ai(this.joinConditions),e,!1).pipe(fe(e=>e.map(e=>{const t={};for(const[i,s]of Object.entries(e)){const e=i===this.rootAlias?this.collectionName:this.joins[i].collectionName,n=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,r=s?Oi(s.__docId__,e,n):void 0;t[i]=r?this.documentReferenceFactory.create(r,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new Ji(this)}dereference(){return new Wi(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new Gi(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,ai(this.leftToRight),ai(this.joins),ai(this.joinConditions),this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}extractData(e){return e[this.rootAlias].dataRef}serialize(){return{type:"join",grouped:!1,dereference:!1,root:{alias:this.rootAlias,query:this.build()},leftToRight:this.leftToRight,joins:this.joins,joinConditions:this.joinConditions}}paginate(e){if(this.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new Bi(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class Wi{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 i={},s=Object.keys(e);for(const n of s){const s=e[n];i[n]=t(s)}return i}(e,e=>e?.data))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Wi(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 Bi(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class Ki{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 Ki(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 Bi(this,e)}dereference(e,t){const i=this.groupedJoin.joinQueryBuilder.leftToRight[t];if(i.length){const s={[t]:e[t].data};for(const t of i)s[t]=e[t].map(e=>this.dereference(e,t));return s}return e.data}}class Ji{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 Ki(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Ji(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 Bi(this,e)}groupData(e,t){const i=li(e,e=>e[t]?.squidDocId);return Object.values(i).filter(e=>void 0!==e[0][t]).map(e=>{const i=this.joinQueryBuilder.leftToRight[t],s=e[0][t];if(0===i.length)return s;const n={[t]:s};for(const t of i)n[t]=this.groupData(e,t);return n})}}class zi{constructor(e,t,i,s,n,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=s,this.querySubscriptionManager=n,this.dataManager=r,this.refId=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!==Rt)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={[Ci]:Se()};else e=e&&"string"!=typeof e?{__id:hi(e)}:{__id:e||Se()};const t=Oi(hi(e),this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)}async insertMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)await this.doc(i.id).upsert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof Pi?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new Gi(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new Vi(...e)}}class Vi{constructor(...e){if(0===e.length)throw new Error("At least one query builder must be provided");this.snapshotEmitters=e.map(e=>e.clone());const t=Math.max(...this.snapshotEmitters.map(e=>{const t=e.getLimit();return-1===t?1e3:t}));this.snapshotEmitters.forEach(e=>e.limit(t));const i=this.snapshotEmitters[0].getSortOrders();for(const e of this.snapshotEmitters){const t=e.getSortOrders();if(t.length!==i.length)throw new Error("All the queries must have the same sort order");for(let e=0;e<i.length;e++)if(t[e].fieldName!==i[e].fieldName||t[e].asc!==i[e].asc)throw new Error("All the queries must have the same sort order")}}snapshot(){return m(this.snapshots(!1))}snapshots(e=!0){const t=this.snapshotEmitters.map(t=>t.snapshots(e));return this.or(this.snapshotEmitters[0].getSortOrders(),...t)}peek(){throw new Error("peek is not currently supported for merged queries")}clone(){return new Vi(...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 Bi(this,e)}or(e,...t){return o([...t]).pipe(w(t=>{const i=new Set,s=t.flat(),n=[];for(const e of s)i.has(this.extractData(e))||(i.add(this.extractData(e)),n.push(e));return n.sort((t,i)=>{for(const{fieldName:s,asc:n}of e){const e=Xt(this.extractData(t),s),r=Xt(this.extractData(i),s);if(!Ei(e,r,"=="))return Ei(r,e,"<")?n?-1:1:n?1:-1}return 0}).slice(0,this.getLimit())}))}}class Yi{constructor(e,t,i,s){this.documentReferenceFactory=e,this.queryBuilderFactory=t,this.querySubscriptionManager=i,this.dataManager=s,this.collections=new Map}get(e,t){let i=this.collections.get(t);i||(i=new Map,this.collections.set(t,i));let s=i.get(e);return s||(s=new zi(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,s)),s}}class Zi{constructor(e,t,i){this.clientIdService=e,this.socketManager=t,this.runtimeOptions=i,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var Xi=x(150);const es={"in:in":(e,t)=>e.every(e=>t.includes(e)),"in:not in":(e,t)=>e.every(e=>!t.includes(e)),"not in:not in":(e,t)=>t.every(t=>e.includes(t)),">:not in":(e,t)=>t.every(t=>e>=t),">=:not in":(e,t)=>t.every(t=>e>t),"<:not in":(e,t)=>t.every(t=>e<=t),"<=:not in":(e,t)=>t.every(t=>e<t),">:>":(e,t)=>e>=t,">=:>":(e,t)=>e>t,"in:>":(e,t)=>e.every(e=>e>t),">:>=":(e,t)=>e>=t,">=:>=":(e,t)=>e>=t,"in:>=":(e,t)=>e.every(e=>e>=t),"<:<":(e,t)=>e<=t,"<=:<":(e,t)=>e<t,"in:<":(e,t)=>e.every(e=>e<t),"<:<=":(e,t)=>e<=t,"<=:<=":(e,t)=>e<=t,"in:<=":(e,t)=>e.every(e=>e<=t),"like:like":(e,t)=>ts(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>ts(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>ts(e,t)&&ss(t),"like_cs:like_cs":(e,t)=>ts(e,t),"like:not like":(e,t)=>!is(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!is(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!is(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!is(e,t),"not like:like":(e,t)=>rs(e,t),"not like_cs:like":(e,t)=>rs(e,t),"not like:like_cs":(e,t)=>rs(e,t),"not like_cs:like_cs":(e,t)=>rs(e,t),"not like:not like":(e,t)=>ts(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>ts(t,e)&&ss(e),"not like:not like_cs":(e,t)=>ts(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>ts(t,e),"in:like":(e,t)=>e.every(e=>Ei(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Ei(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>Ei(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>Ei(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&&ns(e)||os(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&ns(e)||os(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&ns(t)||os(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&ns(t)||os(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=>Ei(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Ei(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Ei(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Ei(e,t,"like_cs")),"array_includes_some:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_all:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_not_includes":(e,t)=>t.every(t=>e.includes(t)),"array_includes_some:array_not_includes":(e,t)=>e.every(e=>!t.includes(e)),"array_not_includes:array_includes_some":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_some:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_includes_all":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_not_includes":(e,t)=>e.every(e=>!t.includes(e))};function ts(e,t,i=0,s=0){if(s>=t.length)return i>=e.length;if(i>=e.length)return ns(t.substring(s));const n=e[i],r=t[s];return"%"===n&&"%"===r?ts(e,t,i+1,s+1)||ts(e,t,i+1,s):"%"!==n&&("%"===r?ts(e,t,i,s+1)||ts(e,t,i+1,s):(n===r||"_"===r)&&ts(e,t,i+1,s+1))}function is(e,t,i=0,s=0){if(i>=e.length&&s>=t.length)return!0;if(i>=e.length)return ns(t.substring(s));if(s>=t.length)return ns(e.substring(i));const n=i<e.length?e[i]:"",r=s<t.length?t[s]:"";return"%"===n&&"%"===r?is(e,t,i+1,s+1)||is(e,t,i,s+1)||is(e,t,i+1,s):"%"===n||"%"===r?is(e,t,i,s+1)||is(e,t,i+1,s):(n===r||"_"===n||"_"===r)&&is(e,t,i+1,s+1)}function ss(e){return!/[a-zA-Z]/.test(e)}function ns(e){return e.split("").every(e=>"%"===e)}function rs(e,t){return e.length>0&&ns(e)||t.length>0&&ns(t)||os(e)&&0===t.length}function os(e){let t=!1,i=!1;for(const s of e)switch(s){case"%":t=!0;break;case"_":if(i)return!1;i=!0;break;default:return!1}return t&&i}function as(e,t){const i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(const s of i){if(!Object.prototype.hasOwnProperty.call(t,s))return!1;if(!ri(e[s],t[s]))return!1}return!0}function cs(e,t){return t.every(t=>{const i=Object.keys(t).sort();if(i.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(i[t]!==e[t])return!1;return!0})}class us{constructor(e){this.query=e,this.query=e;const t=this.query.conditions.filter(ji),i=this.query.conditions.filter(Fi),s=i.flatMap(e=>function(e){if("=="!==e.operator&&"in"!==e.operator)return[];if(0===e.docIds.length)return[];const t=[],i=e.docIds[0];for(const s of Object.keys(i)){const n=i[s];e.docIds.every(e=>Object.prototype.hasOwnProperty.call(e,s)&&ri(e[s],n))&&t.push({fieldName:s,operator:"==",value:n})}return t}(e));this.exactSimpleConditions=this.parseConditions(t),this.exactDocIdConditions=i,this.subqueryConditions=this.parseConditions([...t,...s])}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}get projectFields(){return this.query.projectFields}sortedBy(e){return!e.find((e,t)=>!ri(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,i){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:i})}isSubqueryOfCondition(e){return!!this.subqueryConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;for(const t of e.conditions.filter(Fi))if(!this.childImpliesParentDocIdCondition(t))return!1;const t=e.conditions.filter(ji),i=this.isSubqueryOfConditions(t),s=this.sortedBy(e.sortOrder),n=-1===e.limit||this.limit>-1&&this.limit<e.limit,r=this.isProjectFieldsSubset(this.query.projectFields,e.projectFields);return i&&s&&n&&r}childImpliesParentDocIdCondition(e){const t=e.docIds;if(0===t.length)return!1;const i="=="===e.operator||"in"===e.operator,s=Object.keys(t[0]).sort(),n=[];for(const e of this.query.conditions)Fi(e)&&n.push(...e.docIds);if(!cs(s,t)||!cs(s,n))return!1;const r=this.buildChildEffectiveTupleSet();return i?void 0!==r.allowed&&r.allowed.every(e=>t.some(t=>as(e,t))):void 0!==r.allowed?r.allowed.every(e=>!t.some(t=>as(e,t))):t.every(e=>r.excluded.some(t=>as(e,t)))}buildChildEffectiveTupleSet(){let e;const t=[];for(const i of this.query.conditions)if(Fi(i))if("=="===i.operator||"in"===i.operator)e=void 0===e?[...i.docIds]:e.filter(e=>i.docIds.some(t=>as(e,t)));else for(const e of i.docIds)t.some(t=>as(t,e))||t.push(e);return void 0!==e&&t.length>0&&(e=e.filter(e=>!t.some(t=>as(e,t)))),{allowed:e,excluded:t}}isProjectFieldsSubset(e,t){if(!t)return!0;if(!e)return!1;const i=new Set(t);return e.every(e=>i.has(e))}getConditionsFor(...e){return this.subqueryConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.subqueryConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.exactSimpleConditions){const i=t.fieldName,s=t.operator;if(i===$t){const i=t.value;if("in"===s||"not in"===s){const t=(Array.isArray(i)?i:[i]).some(t=>xi(t,e,"==",Xt));if(!("in"===s?t:!t))return!1;continue}if(!xi(i,e,s,Xt))return!1;continue}const n=Xt(e,i);if("in"===s){if(t.value.includes(n))continue;return!1}if("not in"!==s){if(!Ei(t.value,n,s))return!1}else if(t.value.includes(n))return!1}for(const t of this.exactDocIdConditions)if(!Ni(t,e,Xt))return!1;return!0}evaluateSubset(e,t){const{operator:i,value:s}=e,{operator:n,value:r}=this.parseConditions([t])[0],o=es[`${i}:${n}`];return!!o&&o(s,r)}parseConditions(e){const t=[],i=new Map,s=new Map;return e.forEach(e=>{switch(e.operator){case"==":case"in":i.set(e.fieldName,(i.get(e.fieldName)||[]).concat(e.value));break;case"!=":case"not in":s.set(e.fieldName,(s.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),i.forEach((e,i)=>{t.push({fieldName:i,operator:"in",value:e})}),s.forEach((e,i)=>{t.push({fieldName:i,operator:"not in",value:e})}),t}}function ls(e,t){switch(t.type){case"applyNumericFn":return function(e,t){if("increment"===t.fn)return null==e?t.value:e+t.value;throw new Error("Unknown numeric function: "+JSON.stringify(t))}(e,t);case"applyStringFn":return function(e,t){switch(t.fn){case"trim":return"string"!=typeof e?e:e.trim();case"extendString":return null==e?t.value:e+t.value;default:throw new Error("Unknown string function: "+JSON.stringify(t))}}(e,t);case"update":return"object"==typeof t.value?ai(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function ds(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function hs(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if(be("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=ai(e);t=ai(t);for(const[e]of ds(i)){const s=e.split(".").length;Object.entries(t.properties).some(([t])=>e.startsWith(t+".")&&s>t.split(".").length)&&delete i.properties[e]}for(const[e,s]of ds(t))i.properties[e]=ps([...i.properties[e]||[],...s]);return i}(e,t);const i=ai(e);for(const[e,s]of ds(t)){const t=s;for(const s of t){const t=ls(Xt(i.properties,e),s);void 0===t?ii(i.properties,e):ti(i.properties,e,t)}}return i}function ps(e){let t=0;for(;t+1<e.length;){const i=gs(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function gs(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 fs(e,t){if(!e)return;const i={...e},s=ds(t);for(const[e,t]of s){const s=t;for(const t of s){const s=ls(Xt(i,e),t);void 0===s?ii(i,e):ti(i,e,s)}}return i}function ys(e){const t={};for(const i of e){const e=`${i.squidDocIdObj.integrationId}/${i.squidDocIdObj.collectionName}/${i.squidDocIdObj.docId}`;t[e]||(t[e]=[]),t[e].push(i)}const i=[];for(const e in t){const s=t[e].reduce((e,t)=>Ie(hs(e,t),"Merge result cannot be null"));i.push(s)}return i}const ms="dataManager_runInTransaction";var bs;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(bs||(bs={}));class Is{constructor(e,i,s,n,o,a,c,u,l){this.documentStore=e,this.mutationSender=i,this.socketManager=s,this.querySubscriptionManager=n,this.queryBuilderFactory=o,this.lockManager=a,this.destructManager=c,this.documentIdentityService=u,this.querySender=l,this.docIdToLocalTimestamp=new Map,this.batchClientRequestIds=new Set,this.docIdToServerTimestamp=new Map,this.pendingIncomingUpdates=new Map,this.pendingOutgoingMutations=new Map,this.pendingOutgoingMutationsChanged=new r,this.outgoingMutationsEmpty=new t(!0),this.knownDirtyDocs=new Set,this.failedDocsToResync=[],this.refreshDocIdToTimestamp=new Map,this.handleIncomingMessagesForTests=!0,this.destructManager.onDestruct(()=>{this.destruct()}),this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.handleNotifications(),this.startDeleteExpiredTimestampsJob(),this.handleOrphanDocs(),this.outgoingMutationsEmpty.subscribe(e=>{this.querySender.safeToSendQueriesToServer.next(e)})}getProperties(e){return this.documentStore.getDocumentOrUndefined(e)}hasSufficientData(e,t){return this.documentStore.hasSufficientData(e,t)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),i=t&&!t.expireTimestamp?t.timestamp:void 0,s=this.docIdToLocalTimestamp.get(e);return!((!s||i)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&s===i)}async executeDetachedQuery(e){const t=this.currentTransactionId,i={query:e,clientRequestId:Se(),subscribe:!1},s=await this.querySender.sendQueryDirect(i);return this.currentTransactionId!==t?this.reRunQueryThroughNormalPipeline(e):this.applyPendingMutationsToQueryResult(s.docs,e)}async reRunQueryThroughNormalPipeline(e){await m(this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)));const t={query:e,clientRequestId:Se(),subscribe:!1};return(await this.querySender.sendQueryDirect(t)).docs}applyPendingMutationsToQueryResult(e,t){const i=new us(t),s=new Map;for(const i of e){const e=Oi(i.__docId__,t.collectionName,t.integrationId);s.set(e,i)}for(const[e,n]of this.pendingOutgoingMutations){const r=Di(e);if(r.collectionName===t.collectionName&&r.integrationId===t.integrationId)for(const{mutation:t}of n){const n=s.get(e);if("delete"===t.type)s.delete(e);else if("update"===t.type){if(n){const r=fs(n,t);r&&i.documentMatchesQuery(r)?s.set(e,r):s.delete(e)}}else if("insert"===t.type){const n={...t.properties,__docId__:r.docId};i.documentMatchesQuery(n)&&s.set(e,n)}}}const n=Array.from(s.values()),{sortOrder:r}=t;n.sort((e,t)=>{for(const{fieldName:i,asc:s}of r){const n=ui(Xt(e,i),Xt(t,i));if(0!==n)return s?n:-n}return 0});const o=t.limit<0?2e3:t.limit;return n.slice(0,o)}async runInTransaction(e,t){if(t)return be(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(ms)?this.lockManager.lockSync(ms):await this.lockManager.lock(ms);let i=vs;const s=()=>i!==vs;return new Promise(async(t,n)=>{try{let r;this.currentTransactionId=Se();try{r=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(s()?void 0:{resolve:()=>t(r),reject:n})}}catch(e){i=s()?i:e}finally{try{this.lockManager.release(ms)}catch(e){i=s()?i:e}}s()&&n(i)})}async applyOutgoingMutation(e,t){const i=Oi(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(ms)||(await this.lockManager.lock(ms),this.lockManager.release(ms)),this.knownDirtyDocs.delete(i);const s=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(s&&!s.sentToServer)s.mutation=Ie(ys([s.mutation,this.removeInternalProperties(e)])[0],"Failed to reduce mutations"),this.outgoingMutationsEmpty.next(!1);else{const t={mutation:this.removeInternalProperties(e),sentToServer:!1},s=this.pendingOutgoingMutations.get(i)||[];s.push(t),this.pendingOutgoingMutations.set(i,s),this.outgoingMutationsEmpty.next(!1),this.pendingOutgoingMutationsChanged.next()}return this.runInTransaction(async()=>{const t=this.documentStore.getDocumentOrUndefined(i),s="delete"===e.type?void 0:"update"===e.type?fs(t,e):{...e.properties};this.updateDocumentFromSnapshot(i,s)&&("insert"===e.type&&this.docIdToLocalTimestamp.set(i,(new Date).getTime()),this.querySubscriptionManager.setClientRequestIdsForLocalDoc(i,s).forEach(e=>this.batchClientRequestIds.add(e)))},t)}isTracked(e){if(this.pendingIncomingUpdates.get(e))return!0;const t=this.pendingOutgoingMutations.get(e);return!(!t||!t.length)||this.querySubscriptionManager.hasOngoingQueryForDocId(e)}isForgotten(e){return this.documentStore.hasData(e)&&!this.isTracked(e)}isLocalOnly(e){return!this.hasBeenAcknowledged(e)&&this.documentStore.hasData(e)}hasBeenAcknowledged(e){return this.docIdToServerTimestamp.has(e)}async runInTransactionSync(e,t){if(t)return be(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(ms);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(ms)}}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),O(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t={},i=[];for(const s of e){if(!this.querySubscriptionManager.hasOngoingQuery(s.clientRequestId))continue;const e=this.querySubscriptionManager.getQuery(s.clientRequestId),n=null!==e.projectFields&&void 0!==e.projectFields,r=this.querySubscriptionManager.hasSubscription(s.clientRequestId);n&&r?i.push({squidDocId:s.squidDocId,item:{properties:s.doc,timestamp:s.mutationTimestamp,clientRequestId:s.clientRequestId,projectFields:e.projectFields}}):t[s.squidDocId]={properties:s.doc,timestamp:s.mutationTimestamp}}Object.keys(t).length>0&&this.applyIncomingUpdates(t),i.length>0&&this.runInTransactionSync(()=>{this.applyProjectedUpdates(i)})}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId);if(null!==t.projectFields&&void 0!==t.projectFields){const i=[];for(const s of e.docs){const n=Oi(s.__docId__,t.collectionName,t.integrationId);i.push({squidDocId:n,item:{properties:s,timestamp:s.__ts__,clientRequestId:e.clientRequestId,projectFields:t.projectFields}})}this.runInTransactionSync(()=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyProjectedUpdates(i)})}else{const i={};for(const s of e.docs){const e=Oi(s.__docId__,t.collectionName,t.integrationId);i[e]={properties:s,timestamp:s.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyIncomingUpdates(i,t)&&this.querySubscriptionManager.hasSubscription(e.clientRequestId)&&this.batchClientRequestIds.delete(e.clientRequestId)})}}applyIncomingUpdates(e,t){let i=!1;const s=new Set,n=new Set;for(const[t,r]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>r.timestamp?i=!0:o&&o.timestamp>r.timestamp?n.add(t):(this.pendingIncomingUpdates.set(t,r),s.add(t))}return this.runInTransactionSync(()=>{for(const e of s)this.maybeApplyIncomingUpdate(e);for(const e of n)this.refreshQueryMapping(e)},t),i}applyProjectedUpdates(e){for(const{squidDocId:t,item:i}of e){const e=Ie(i.clientRequestId,"clientRequestId required for projected updates"),s=this.pendingOutgoingMutations.get(t);if(s&&s.length)continue;const n=this.docIdToServerTimestamp.get(t);n&&n.timestamp>i.timestamp?(this.querySubscriptionManager.addDocToQuery(t,e),this.batchClientRequestIds.add(e)):(this.acknowledgeDocument(t,i.timestamp,!i.properties),this.docIdToLocalTimestamp.set(t,i.timestamp),i.properties?(this.documentStore.saveProjectedDocument(t,i.properties,i.projectFields),this.querySubscriptionManager.addDocToQuery(t,e)):this.querySubscriptionManager.removeDocFromQuery(t,e),this.batchClientRequestIds.add(e))}}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const i=this.pendingOutgoingMutations.get(e);i&&i.length||(this.updateDocumentFromSnapshot(e,t.properties),this.acknowledgeDocument(e,t.timestamp,!t.properties),this.docIdToLocalTimestamp.set(e,t.timestamp),this.pendingIncomingUpdates.delete(e),this.refreshQueryMapping(e))}refreshQueryMapping(e){const t=this.documentStore.getDocumentOrUndefined(e);this.querySubscriptionManager.setClientRequestIdsForLocalDoc(e,t).forEach(e=>{this.batchClientRequestIds.add(e)}),t&&(this.querySubscriptionManager.findQueriesForDocument(t,e).length||this.forgetDocument(e,!1))}destruct(){this.stopDeleteExpiredTimestampsJob()}stopDeleteExpiredTimestampsJob(){void 0!==this.deleteExpiredTimestampsInterval&&(clearInterval(this.deleteExpiredTimestampsInterval),this.deleteExpiredTimestampsInterval=void 0)}startDeleteExpiredTimestampsJob(){this.deleteExpiredTimestampsInterval=setInterval(()=>{const e=[...this.docIdToServerTimestamp.entries()].filter(([e,t])=>!(!t.expireTimestamp||t.expireTimestamp>Date.now()||this.isTracked(e)));for(const[t]of e)this.docIdToServerTimestamp.delete(t),this.forgetDocument(t,!0)},1e4)}updateDocumentFromSnapshot(e,t){const i=this.documentStore.getDocumentOrUndefined(e);return!(!i&&!t||i===t)&&((!i||!t||hi({...t,__ts__:void 0})!==hi(i))&&(this.documentStore.saveDocument(e,t),!0))}finishTransaction(e){this.currentTransactionId=void 0;const t=[...this.batchClientRequestIds.values()];this.batchClientRequestIds.clear(),this.querySubscriptionManager.notifyAllSubscriptions(t),this.sendAllUnsentOutgoingMutations(e)}async sendAllUnsentOutgoingMutations(e){const t=this.groupOutgoingMutationsByIntegrationId();try{await Xi.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:i,idResolutionMap:s={},refreshList:n=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(s),n.forEach(e=>{this.refreshDocIdToTimestamp.set(s[e]||e,i)});for(const t of e){let e=this.removeOutgoingMutation(t);s[e]&&(e=s[e]),this.acknowledgeDocument(e,i),this.isTracked(e)||(this.setExpiration(e,!0),this.forgetDocument(e,!1))}}catch(t){for(const t of e){const e=this.removeOutgoingMutation(t);this.forgetDocument(e,!1),(this.hasBeenAcknowledged(e)||"insert"===t.mutation.type)&&this.failedDocsToResync.push(e)}throw t}}removeOutgoingMutation(e){const t=Oi(e.mutation.squidDocIdObj),i=Ie(this.pendingOutgoingMutations.get(t));return i.splice(i.indexOf(e),1),i.length||this.pendingOutgoingMutations.delete(t),this.pendingOutgoingMutationsChanged.next(),t}async resyncFailedUpdates(){const e=[...this.failedDocsToResync];this.failedDocsToResync.splice(0);for(const t of e){const{docId:e}=Di(t);this.setExpiration(t,!0);try{const i=e.includes(Ci)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(Ie(i.length<=1,"Got more than one doc for the same id:"+t),!i.length){this.forgetDocument(t,!1);const e=this.querySubscriptionManager.setClientRequestIdsForLocalDoc(t,void 0);this.querySubscriptionManager.notifyAllSubscriptions(e)}}catch(e){this.querySubscriptionManager.errorOutAllQueries(t,e)}}}async refreshUpdatedDocuments(){const e=[];for(const[t,i]of this.refreshDocIdToTimestamp.entries()){const s=this.docIdToServerTimestamp.get(t)?.timestamp;s&&s>i||e.push(t)}this.refreshDocIdToTimestamp.clear(),await Promise.allSettled(e.map(e=>this.queryBuilderFactory.getForDocument(e).snapshot()))}groupOutgoingMutationsByIntegrationId(){const e={};for(const[,t]of[...this.pendingOutgoingMutations.entries()]){const i=t[t.length-1];if(i&&!i.sentToServer){const t=i.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(i),i.sentToServer=!0}}return Object.entries(e)}handleOrphanDocs(){this.querySubscriptionManager.onOrphanDocuments.subscribe(e=>{for(const t of e)this.isTracked(t)||this.forgetDocument(t,!1)})}acknowledgeDocument(e,t,i=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,i)}setExpiration(e,t){const i=this.docIdToServerTimestamp.get(e);i&&(i.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),this.pendingIncomingUpdates.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=Oi(t.mutation.squidDocIdObj),s=e[i];s&&(t.mutation.squidDocIdObj=Di(s))})}),Object.entries(e).forEach(([e,t])=>{si(this.pendingOutgoingMutations,e,t),si(this.docIdToLocalTimestamp,e,t),si(this.docIdToServerTimestamp,e,t)})}hasPendingSentMutations(){for(const e of this.pendingOutgoingMutations.values())for(const t of e)if(t.sentToServer)return!0;return!1}}const vs=Symbol("undefined");class ws{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 Ss{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{if(e)return;const t=Object.keys(this.ongoingLocks);t.length>0&&console.warn(`DistributedLockManager: WebSocket disconnected, releasing ${t.length} lock(s): [${t.join(", ")}]`),this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.lockId];t?.release()})}async lock(e,t){"number"==typeof t&&(t={acquisitionTimeoutMillis:t});const i=t?.acquisitionTimeoutMillis??2e3,s=t?.maxHoldTimeMillis;this.socketManager.notifyWebSocketIsNeeded(),be(await m(k(j(this.lockWaitForConnectionThreshold).pipe(fe(()=>!1)),this.socketManager.observeConnectionReady().pipe(g(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const n=Se(),r={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:s,clientRequestId:n}};this.socketManager.postMessage(r);const o=await m(k(j(i+4e3).pipe(O(1),fe(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:n}}))),this.acquireLockMessagesFromServer.pipe(g(e=>e.payload.clientRequestId===n)))),a=o.payload.lockId;be(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),be(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new Ms(a,e,n,this.ongoingLocks,this.socketManager);return this.ongoingLocks[a]=c,c}releaseAllLocks(){for(const[e,t]of Object.entries(this.ongoingLocks))t.release(),delete this.ongoingLocks[e]}}class Ms{constructor(e,t,i,s,n){this.lockId=e,this.resourceId=t,this.clientRequestId=i,this.ongoingLocks=s,this.socketManager=n,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 ks{constructor(e,i){this.documentStore=e,this.destructManager=i,this.changeNotifier=new t({}),this.destructManager.onDestruct(()=>{this.changeNotifier.complete()})}migrate(e){Object.entries(e).forEach(([e,t])=>{this.documentStore.migrateDocId(e,t)}),this.changeNotifier.next(e)}observeChanges(){return this.changeNotifier.asObservable()}}class Ts{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t,i){if(i)return new Pi(e,Ie(this.dataManager,"dataManager not found"),t,i);let s=this.documents.get(e);if(s)return s;s=new Pi(e,Ie(this.dataManager,"dataManager not found"),t);const{integrationId:n,collectionName:r}=Di(e);this.documents.set(e,s);const o=this.getCollectionKey(n,r),a=this.documentsForCollection.get(o)||[];return this.documentsForCollection.set(o,a.concat(s)),s}setDataManager(e){this.dataManager=e}getDocumentsForCollection(e,t){const i=this.getCollectionKey(e,t);return(this.documentsForCollection.get(i)||[]).filter(e=>e.hasData)}migrateDocIds(e){for(const[,t]of this.documents)t.migrateDocIds(e);Object.entries(e).forEach(([e,t])=>{const i=Di(e),s=Di(t);si(this.documents,i.docId,s.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class _s{constructor(){this.squidDocIdToDoc=new Map,this.squidDocIdToProjectedFields=new Map}saveProjectedDocument(e,t,i){const s=this.squidDocIdToDoc.get(e);if(s){const i=this.mergeDocuments(s,t),n=this.removeInternalProperties(i);this.squidDocIdToDoc.set(e,n)}else{const i=this.removeInternalProperties(t);this.squidDocIdToDoc.set(e,i)}if(i?.length){const t=this.squidDocIdToProjectedFields.get(e);if(void 0!==t)for(const e of i)t.add(e);else s||this.squidDocIdToProjectedFields.set(e,new Set(i))}return this.squidDocIdToDoc.get(e)}mergeDocuments(e,t){const i=ai(e);for(const e of Object.keys(t)){const s=t[e],n=i[e];null===s||"object"!=typeof s||Array.isArray(s)||null===n||"object"!=typeof n||Array.isArray(n)?i[e]=s:i[e]=this.mergeDocuments(n,s)}return i}deleteDocument(e){this.squidDocIdToDoc.delete(e),this.squidDocIdToProjectedFields.delete(e)}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=ai(t),s=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,s),this.squidDocIdToProjectedFields.delete(e),s}return this.squidDocIdToDoc.delete(e),void this.squidDocIdToProjectedFields.delete(e)}const s=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,s),this.squidDocIdToProjectedFields.delete(e),s}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}hasSufficientData(e,t){if(!this.squidDocIdToDoc.has(e))return!1;const i=this.squidDocIdToProjectedFields.get(e);return void 0===i||!!t?.length&&t.every(e=>i.has(e))}group(e,t){return Object.values(li(e,e=>hi(t.map(t=>Xt(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=Array.from(e).map(e=>this.squidDocIdToDoc.get(e)).filter(ye),{sortOrder:s,limitBy:n}=t,r=i.sort((e,t)=>this.compareSquidDocs(e,t,s)),o=t.limit<0?2e3:t.limit;let a;if(n){const{limit:e,fields:t,reverseSort:i}=n,s=this.group(r,t);let c;c=i?s.map(t=>t.slice(-e)):s.map(t=>t.slice(0,e)),a=c.flat().slice(0,o)}else a=r.slice(0,o);return null!==t.projectFields&&void 0!==t.projectFields&&(a=a.map(e=>this.projectDocument(e,t.projectFields))),a}projectDocument(e,t){const i={};"__id"in e&&(i.__id=e.__id),"__docId__"in e&&(i.__docId__=e.__docId__);for(const s of t)if(s.includes(".")){const t=Xt(e,s);void 0!==t&&ti(i,s,t)}else s in e&&(i[s]=e[s]);return i}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;si(this.squidDocIdToDoc,e,t),si(this.squidDocIdToProjectedFields,e,t);const s=Di(t),n=gi(s.docId);this.saveDocument(t,{...i,...n,__docId__:s.docId})}compareSquidDocs(e,t,i){for(const{fieldName:s,asc:n}of i){const i=ui(Xt(e,s),Xt(t,s));if(0!==i)return n?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class qs{constructor(e,t){this.integrationId=e,this.rpcManager=t}async saveAuthCode(e,t){const i={authCode:e,externalAuthConfig:{identifier:t,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/saveAuthCode",i)}async getAccessToken(e){const t={externalAuthConfig:{identifier:e,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/getAccessToken",t)}}class Cs{constructor(e){this.rpcManager=e}async extractDataFromDocumentFile(e,t){t||(t={});const i={options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentFile",i,[e],"file")}async extractDataFromDocumentUrl(e,t){t||(t={});const i={url:e,options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentUrl",i)}async createPdf(e){return await this.rpcManager.post("extraction/createPdf",e)}}class Ds{constructor(e,t,i,s,n){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.ownedJobs=new Set,s.onDestruct(async()=>{this.stopKeepAlive();const e=[...this.ownedJobs];this.ownedJobs.clear(),await Promise.all(e.map(e=>this.resolveJob(e,"failed",void 0,"Client shut down").catch(()=>{})))}),n.isPassiveMode||this.clientIdService.observeClientId().pipe(p(),_(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))ki.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(t=>{const i=this.listeners[e];i&&(i.error(t),delete this.listeners[e])})})}async startJob(e){await this.rpcManager.post("job/startJob",{jobId:e}),this.ownedJobs.add(e),this.ensureKeepAlive()}async completeJob(e,t){await this.resolveJob(e,"completed",t)}async failJob(e,t){await this.resolveJob(e,"failed",void 0,t)}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new n(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(i=>{t.error(i),delete this.listeners[e]}),m(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe(g(e=>"jobStatus"===e.type)).subscribe(e=>{const t=e.payload,i=t.id,s=this.listeners[i];s&&("completed"===t.status?s.next(t.result):"failed"===t.status?s.error(new Error(t.error||"Job failed")):console.error("Unexpected job status:",t.status,"for jobId:",i),delete this.listeners[i])}))}async resolveJob(e,t,i,s){try{await this.rpcManager.post("job/resolveJob",{jobId:e,status:t,result:i,error:s})}finally{this.ownedJobs.delete(e),this.ownedJobs.size||this.stopKeepAlive()}}ensureKeepAlive(){void 0===this.keepAliveHandle&&(this.keepAliveHandle=setInterval(()=>{if(!this.ownedJobs.size)return void this.stopKeepAlive();const e={jobIds:[...this.ownedJobs]};this.rpcManager.post("job/keepAlive",e).catch(e=>ki.debug("Job keep-alive failed:",e))},15e3))}stopKeepAlive(){void 0!==this.keepAliveHandle&&(clearInterval(this.keepAliveHandle),this.keepAliveHandle=void 0)}}const Os="squid_mgmt_",Es="x-squid-traceid",As="x-squid-client-version";function Rs(e="n_"){return`${e}${qe(10).toLowerCase()}`}const js=e=>e();class Fs extends Error{constructor(e,t,i,s,n){super(e),this.statusCode=t,this.url=i,this.headers=s,this.body=n}}const Ns="1.0.471";async function xs(e){const t=await Us({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=$s(t.body),t}async function Ps(e){const t=await Us({...e,method:"GET",files:[],filesFieldName:""});return t.body=$s(t.body),t}async function Bs(e){const t=await Us({...e,method:"PUT"});return t.body=$s(t.body),t}async function Qs(e){const t=await Us({...e,method:"PATCH"});return t.body=$s(t.body),t}async function Ls(e){const t=await Us({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=$s(t.body),t}async function Us({headers:e,files:t,filesFieldName:i,message:s,url:n,extractErrorMessage:r,method:o}){const a=new Headers(e);a.append(Es,Rs("c_")),a.append(As,Ns);const c={method:o,headers:a,body:void 0};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const s of t)e.append(i||"files",s,s.name);e.append("body",pi(s)),c.body=e}else void 0!==s&&(a.append("Content-Type","application/json"),c.body=pi(s));else"DELETE"===o&&void 0!==s&&(a.append("Content-Type","application/json"),c.body=pi(s));try{const e=await fetch(n,c),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),s=$s(i);if(!r)throw new Fs(i,e.status,n,t,s);let o;try{o="string"==typeof s?s:s?.message||i}catch{}throw o||(o=e.statusText),new Fs(o,e.status,n,t,s)}const i=await e.text();return ki.debug(`received response from url ${n}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw ki.debug(`Unable to perform fetch request to url: ${n}`,e),e}}function $s(e){if(e){try{return gi(e)}catch{}return e}}class Hs{constructor(e){be(e.apiKey.startsWith(Os),`Invalid management API key format. Key must start with '${Os}'`),this.apiKey=e.apiKey,this.consoleRegion=e.consoleRegion}async createOrganization(e){return this.callApi("POST","organizations",e)}async createApplication(e){return this.callApi("POST","applications",e)}async deleteApplication(e){await this.callApi("DELETE",`applications/${e}`)}async renameOrganization(e){await this.callApi("PATCH",`organizations/${e.organizationId}`,{name:e.name})}async renameApplication(e){await this.callApi("PATCH",`applications/${e.appId}`,{name:e.name})}async callApi(e,t,i){const s=B(this.consoleRegion,"console",`openapi/iac/management/${t}`),n={Authorization:`ManagementKey ${this.apiKey}`};return"POST"===e?(await xs({url:s,headers:n,message:i,files:[],filesFieldName:"",extractErrorMessage:!0})).body:"PATCH"===e?(await Qs({url:s,headers:n,message:i,extractErrorMessage:!0})).body:(await Ls({url:s,headers:n,message:i,extractErrorMessage:!0})).body}}class Gs{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=ys(e),s=i.map(e=>`sendMutation_${Oi(e.squidDocIdObj)}`);await this.lockManager.lock(...s),await this.querySender.waitForAllQueriesToFinish();try{const e={mutations:i,integrationId:t};return await this.rpcManager.post("mutation/mutate",e)}catch(e){throw ki.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...s)}}async deleteQuery(e){const t=`deleteQuery_${e.integrationId}_${e.collectionName}`;await this.lockManager.lock(t),await this.querySender.waitForAllQueriesToFinish();try{const t={query:e};return await this.rpcManager.post("mutation/deleteQuery",t)}catch(t){throw ki.debug("Error while deleting query results",{error:t,query:JSON.stringify(e,null,2)}),t}finally{this.lockManager.release(t)}}}class Ws{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class Ks{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(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 Js={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class zs{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!Vs.test(e)||e.length>=Ys);be(0===i.length,()=>`Tag name is not allowed: ${i.join(",")}`),this.isReporting=!0;const s={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},n=this.rpcManager.post("/observability/metrics",{metrics:[s]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==n),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(n)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...Js,...e,fn:Array.isArray(e.fn)?e.fn:[e.fn]};t.pointIntervalSeconds||(t.pointIntervalSeconds=t.periodEndSeconds-t.periodStartSeconds);const i=await this.rpcManager.post("/observability/metrics/query",t);return function(e,t){const{pointIntervalSeconds:i,noDataBehavior:s}=e,n=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:s}){if("align-by-start-time"===s)return e;const n=t-e;let r=t-Math.floor(n/i)*i;return r>e&&(r-=i),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:s}){if("align-by-end-time"===s)return t-i;const n=t-e;let r=e+Math.floor(n/i)*i;return r>=t&&(r-=i),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const i=[];for(let t=0;t<e.groupByTags.length;t++){const s=e.groupByTags[t],n=a[s]?.[0]||"";i.push(n)}t.push({tagValues:i,points:[]})}else"return-result-group-with-default-values"===s&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[i,s]of Object.entries(a)){const n=e.groupByTags.indexOf(i);if(!(n<0))for(let e=0;e<t.length;e++){const i=t[e],r=new Set(s);for(let e=0;e<t.length;e++){const s=t[e];i.tagValues.every((e,t)=>t===n||e===s.tagValues[t])&&r.delete(s.tagValues[n])}if(0!==r.size)for(const e of r){const s={tagValues:[...i.tagValues],points:[]};s.tagValues[n]=e,t.push(s)}}}for(const s of t){if(0!==s.points.length){const e=s.points[0][0],t=s.points[s.points.length-1][0];be(e>=r,()=>`Invalid first point time: ${e}`),be(t<=o,()=>`Invalid last point time: ${t}`)}const t=[];let a=0;const c=e=>"count"===e?0:n,u=Array.isArray(e.fn)?e.fn.map(c):[n];for(let e=r;e<=o;e+=i){const i=s.points[a];i?i[0]===e?(t.push(i),a++):(be(i[0]>e,()=>`Result point has invalid time: ${i[0]}`),t.push([e,...u])):t.push([e,...u])}s.points=t}}(t,i.resultGroups),i}}const Vs=/^[a-zA-Z0-9_-]+$/,Ys=1e3;async function Zs(e,t,i=500){const s=Date.now(),n=e.paginate({pageSize:i,subscribe:!1});let r=0,o=await n.waitForData();for(;;){for(const e of o.data)r++,await t(e.data);if(!o.hasNext)break;o=await n.next()}return{count:r,time:Date.now()-s}}async function Xs(e,t=500){const i=[],s=e.paginate({pageSize:t,subscribe:!1});let n=await s.waitForData();for(;;){for(const e of n.data){const t=Di(e.squidDocId),s=gi(t.docId),n=t.integrationId===Rt?s.__id:s;i.push(n)}if(!n.hasNext)break;n=await s.next()}return i}function en(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:s}=t,{collectionName:n,integrationId:r}=i;let o=e.collection(n,r).query();return o=tn(o,i),s?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:s,joinConditions:n,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=tn(u,i.query),Object.entries(s).map(([t,i])=>{const{collectionName:s,integrationId:r}=i,{left:o,right:a,leftAlias:c}=n[t];let l=e.collection(s,r).query();l=tn(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),r&&o?u.grouped().dereference():r?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:s,integrationId:n}=sn(i[0]),r=i.map(t=>en(e,t));return e.collection(s,n).or(...r)}(e,t)}}function tn(e,t){const{conditions:i,limit:s,sortOrder:n}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");if("docIds"in t)throw new Error("DocId conditions are not supported in query serialization.");const{fieldName:i,operator:s,value:n}=t;e.where(i,s,n)}e.limit(s);for(const{fieldName:t,asc:i}of n)e.sortBy(t,i);return e}function sn(e){switch(e.type){case"simple":{const{collectionName:t,integrationId:i}=e.query;return{collectionName:t,integrationId:i}}case"join":{const{collectionName:t,integrationId:i}=e.root.query;return{collectionName:t,integrationId:i}}case"merged":return sn(e.queries[0])}}class nn{constructor(e,t,i){this.documentStore=e,this.documentReferenceFactory=t,this.querySubscriptionManager=i}peek(e){if(!this.querySubscriptionManager.findValidParentOfQuery(e))return[];const{integrationId:t,collectionName:i}=e,s=new us(e),n=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>s.documentMatchesQuery(e.data)),r={};return n.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[Oi(e.__docId__,i,t)])}}function rn(e,t){return W(function(i,s){var n=0;i.subscribe(pe(s,function(i){return e.call(t,i,n++)&&s.next(i)}))})}class on{constructor(e,i,s){this.rpcManager=e,this.destructManager=i,this.webSocketConnectionReady$=s,this.safeToSendQueriesToServer=new t(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new t(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new r,i=m(t);return this.pendingQueryRequests.push({queryRequest:e,responseSubject:t}),this.pendingQueryBatchTimeout&&(clearTimeout(this.pendingQueryBatchTimeout),this.pendingQueryBatchTimeout=void 0),this.pendingQueryRequests.length>=10?(this.processQueryBatch(),i):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.gateForCurrentBatch().subscribe(()=>{this.processQueryBatch()})},0),i)}gateForCurrentBatch(){return this.pendingQueryRequests.some(({queryRequest:e})=>e.subscribe)&&this.webSocketConnectionReady$?o([this.safeToSendQueriesToServer,this.webSocketConnectionReady$]).pipe(rn(([e,t])=>e&&t),O(1),fe(()=>!0)):this.safeToSendQueriesToServer.pipe(rn(Boolean),O(1))}async sendQueryDirect(e){const t=await this.rpcManager.post("query/batchQueries",[e]),i=t.errors[e.clientRequestId];if(i)throw i;return t.results[e.clientRequestId]}async waitForAllQueriesToFinish(){return m(this.inflightQueriesCount.pipe(rn(e=>0===e))).then(()=>{})}async processQueryBatch(){const e=this.pendingQueryRequests.splice(0);if(!e.length)return;const t=Array.from(e.map(({queryRequest:e})=>e).reduce((e,t)=>(e.set(t.clientRequestId,t),e),new Map).values()),i=e.map(({responseSubject:e})=>e);this.inflightQueriesCount.next(this.inflightQueriesCount.value+t.length);try{const i=await this.rpcManager.post("query/batchQueries",t);for(const{queryRequest:t,responseSubject:s}of e){const e=t.clientRequestId,n=i.errors[e],r=i.results[e];n?s.error(n):s.next(r)}}catch(e){i.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var an={d:(e,t)=>{for(var i in t)an.o(t,i)&&!an.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function cn(e,t,...i){e||function(e,...t){const i=function(e){return void 0===e?"":"string"==typeof e?e:e()}(e);if("object"==typeof i)throw i;throw(e=>new Error(e))(i||"Assertion error",...t)}(t,...i)}function un(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return ln(e,t);if(0===t.length)return cn("object"==typeof i&&null!==i&&!Array.isArray(i),()=>`Root state must be a record. Trying to set '${i}', type: ${typeof i}`),i;function s(e){const t=Number(e);return!isNaN(t)&&t>=0&&t!==1/0}let n=e;for(let e=0;e<t.length-1&&void 0!==n;e++){const i=t[e];cn(!Array.isArray(n)||s(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),n=n[i],cn(void 0===n||"object"==typeof n&&null!==n,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===n?"<null>":typeof n}'`)}const r=t[t.length-1];return cn(!Array.isArray(n)||s(r),()=>`Invalid array index Path: '${t}`),(null==n?void 0:n[r])===i?e:dn(e,t,i)}(e,t.path,t.value);case"delete":return ln(e,t.path);case"batch":return t.actions.reduce((e,t)=>un(e,t),e)}}function ln(e,t){cn(0!==t.length,"Can't delete an empty path");let i=e;for(let s=0;s<t.length-1;s++){const n=t[s];if(i=i[n],void 0===i)return e;cn("object"==typeof i&&null!==i,()=>`Cannot delete a property from a non-record parent. Path: '${t.slice(0,s+1)}', type: ${null===i?"<null>":typeof i}`)}const s=t[t.length-1];return void 0===i[s]?e:dn(e,t,void 0)}function dn(e,t,i){function s(e,i){cn(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const n=Object.assign({},e);let r=n;for(let e=0;e<t.length-1;e++){const n=t[e],o=r[n];cn(void 0===o||"object"==typeof o&&null!==o,()=>`Internal error: sub-path has an invalid type and can't be patched: '${t.slice(0,e+1)}', type: '${null===o?null:typeof o}'`);const a=void 0===o?void 0===i?void 0:{}:Array.isArray(o)?[...o]:Object.assign({},o);if(void 0===a)return s(r,n),r;r[n]=a,r=a}const o=t[t.length-1];return void 0===i?s(r,o):r[o]=i,n}function hn(e,t){const i=[];if("set"===e.type||"delete"===e.type)i.push(e.path);else if("batch"===e.type)for(const t of e.actions)i.push(...hn(t,"as-is"));return"unique-and-sorted"===t?fn(i):i}function pn(e,t){if(e.length<t.length)return!1;for(let i=0;i<t.length;i++)if(e[i]!==t[i])return!1;return!0}function gn(e){const t=[...e];return t.sort((e,t)=>{for(let i=0;i<e.length;i++){if(i===t.length)return 1;const s=e[i].localeCompare(t[i]);if(0!==s)return s}return e.length-t.length}),t}function fn(e){const t=gn(e),i=t;for(let e=0;e<t.length-1;e++){const s=t[e];for(let n=e+1;n<t.length;n++){const r=t[n];s.length===r.length&&pn(s,r)&&(i[n]=void 0,e++)}}return i.filter(e=>void 0!==e)}const yn=(mn={Observable:()=>s,Subject:()=>r},bn={},an.d(bn,mn),bn);var mn,bn;const In=(vn={filter:()=>rn,map:()=>fe},wn={},an.d(wn,vn),wn);var vn,wn;class Sn{constructor(){this.root={children:new Map,childrenWithValue:0}}get(e){var t;return null===(t=this.getNode(e))||void 0===t?void 0:t.value}getOrSet(e,t){const i=this._buildPath(e);if(void 0!==i.value)return i.value;const s=t(e);return this._setNodeValue(i,s,void 0===s),s}set(e,t){const i=void 0===t?this._findNode(e):this._buildPath(e);i&&this._setNodeValue(i,t,!0)}delete(e){const t=this._findNode(e);if(void 0===t)return;if(void 0===t.parent){if(t!==this.root)throw new Error("Only root node can have no parent.");return this.root.value=void 0,this.root.children.clear(),void(this.root.childrenWithValue=0)}const i=(void 0===t.value?0:1)+t.childrenWithValue;i>0&&this._updateChildrenWithValue(t,-i),t.parent.children.delete(e[e.length-1]),this._runGc(t.parent)}clear(){this.delete([])}count(e=[],t="node-and-children"){const i=this.getNode(e);return void 0===i?0:i.childrenWithValue+("node-and-children"===t&&void 0!==i.value?1:0)}get isEmpty(){return 0===this.count()}fillPath(e,t){const i=[];let s=this.root,n=t(s.value,i);if(n!==Sn.StopFillToken){this._setNodeValue(s,n,!1);for(let r=0;r<e.length;r++){const o=e[r];i.push(o);let a=s.children.get(o);if(n=t(null==a?void 0:a.value,i),n===Sn.StopFillToken)break;a||(a={children:new Map,parent:s,childrenWithValue:0},s.children.set(o,a)),this._setNodeValue(a,n,!1),s=a}this._runGc(s)}}visitDfs(e,t,i=[]){const s=this.getNode(i);void 0!==s&&this._visitDfs(e,s,t,[...i])}_visitDfs(e,t,i,s){if("pre-order"===e&&!1===i(t.value,s))return!1;for(const[n,r]of t.children){if(s.push(n),!this._visitDfs(e,r,i,s))return!1;s.pop()}return"in-order"!==e||!1!==i(t.value,s)}getNode(e){return this._getNode(e)}_getNode(e){let t=this.root;for(const i of e)if(t=t.children.get(i),!t)return;return t}_findNode(e){let t=this.root;for(let i=0;i<e.length&&t;i++)t=t.children.get(e[i]);return t}_buildPath(e){let t=this.root;for(let i=0;i<e.length;i++){const s=e[i];let n=t.children.get(s);n||(n={children:new Map,parent:t,childrenWithValue:0},t.children.set(s,n)),t=n}return t}_setNodeValue(e,t,i){if(e.value!==t){const i=void 0===t?-1:void 0===e.value?1:0;e.value=t,this._updateChildrenWithValue(e,i)}i&&this._runGc(e)}_updateChildrenWithValue(e,t){if(0!==t)for(let i=e.parent;i;i=i.parent)if(i.childrenWithValue+=t,i.childrenWithValue<0)throw new Error("Internal error: negative counter value!")}_runGc(e){void 0===e.value&&(0===e.childrenWithValue&&e.children.clear(),e.parent&&this._runGc(e.parent))}}Sn.StopFillToken=Symbol("Trie.StopFillToken");class Mn extends yn.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class kn{constructor(e){this.rootState=e,this.observersTrie=new Sn,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,In.map)(e=>e.value))}observeChanges(e,t=[]){return this._observeChanges(e,t,"all-details")}set(e,t,i){(null==i?void 0:i(this.get(e),t,e))||this._apply({type:"set",path:e,value:t})}delete(e){this._apply({type:"delete",path:e})}reset(e){this.observersTrie.visitDfs("pre-order",e=>null==e?void 0:e.complete()),this.observersTrie.delete([]),this.rootState=e}runInBatch(e){this.batchDepth++;try{e()}finally{if(this.batchDepth--,0===this.batchDepth&&this.appliedBatchActions.length>0){const e={type:"batch",actions:this.appliedBatchActions};this.appliedBatchActions=[],this._notify(e)}}}_apply(e){0===this.batchDepth&&(this.rootStateBeforeBatchStart=this.rootState),this.rootState=un(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=hn(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),s=fn([...t,...i]),n=new Sn;for(const e of s)n.fillPath(e,()=>!0);n.visitDfs("pre-order",(t,i)=>{const s=this.observersTrie.get(i);if(s){const t=this.get(i),n=s.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;s.next({action:e,value:t,oldValue:n})}})}_observeChanges(e,t=[],i){const s=0===t.length?void 0:new Sn;for(const e of t)null==s||s.set(e,!0);return new yn.Observable(t=>{const n=this.observersTrie.getOrSet(e,()=>new Mn);n.isAllDetailsMode=n.isAllDetailsMode||"all-details"===i;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=n.pipe((0,In.filter)(({action:e})=>void 0===s||hn(e,"as-is").some(e=>!s.get(e))),(0,In.map)(({action:t,value:i,oldValue:s})=>{let r=this.stubForUnusedPaths;if(n.isAllDetailsMode){const i=hn(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=gn(e),i=t;for(let e=0;e<i.length-1;e++){const s=t[e];for(let n=e+1;n<t.length;n++)pn(t[n],s)&&(i[n]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>pn(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:s,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),n.observed||this.observersTrie.delete(e)}})}_get(e,t){let i=e;for(let e=0;e<t.length&&void 0!==i;e++){const s=t[e];i=null==i?void 0:i[s]}return i}selectChildPathsWithObservers(e){const t=[];for(const i of e)this.observersTrie.count(i,"children-only")>0&&this.observersTrie.visitDfs("pre-order",(e,i)=>{e&&t.push([...i])},i);return t}}function Tn(e,t,i=(e,t)=>e>t?1:e<t?-1:0,s=0,n=e.length-1){if(n<s)return-1;const r=Math.trunc((s+n)/2);return 0===i(t,e[r])?r:i(t,e[r])>0?Tn(e,t,i,r+1,n):Tn(e,t,i,s,r-1)}function _n(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==Tn(e,t,i))return;let s;for(s=e.length-1;s>=0&&i(e[s],t)>0;s--)e[s+1]=e[s];e[s+1]=t}function qn(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const s=Tn(e,t,i);s>-1&&e.splice(s,1)}const Cn=100;class Dn{setDetachedQueryExecutor(e){this.detachedQueryExecutor=e}constructor(e,t,i,s,n,o,a,c){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=s,this.documentIdentityService=n,this.querySender=o,this.socketManager=a,this.lockManager=c,this.onOrphanDocuments=new r,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new En,this.queryResultsSubject=new r,this.detachedRecords=new Set,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:i,integrationId:s}=Di(t),n=this.queryMappingManager.getMapping(i,s);return n?function(e,t){const i=[...e.unconditional||[]],s=new Map;for(const[i,n]of Object.entries(e.conditional||{})){const e=gi(i);let r;if(ji(e))if(e.fieldName===$t)r=xi(e.value,t,e.operator,Xt);else{const i=Xt(t,e.fieldName)??null;r=Ei(e.value,i,e.operator)}else r=Fi(e)?Ni(e,t,Xt):On(e,t);if(r)for(const e of n)s.set(e,(s.get(e)||0)+1)}for(const[t,n]of s.entries())n>=e.queriesMetadata[t].condCount&&i.push(t);return i}(n,e):[]}setClientRequestIdsForLocalDoc(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set,s=new Set(t?this.findQueriesForDocument(t,e).map(e=>function(e){const t=e.split("_");return{clientId:t[0],clientRequestId:t[1]}}(e).clientRequestId):[]),n=new Set([...i,...s]);for(const t of[...i]){if(s.has(t))continue;i.delete(t);const n=this.clientRequestIdToLocalDocuments.get(t);n&&(n.delete(e),n.size||this.clientRequestIdToLocalDocuments.delete(t)),i.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of s){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let s=this.clientRequestIdToLocalDocuments.get(t);s||(s=new Set,this.clientRequestIdToLocalDocuments.set(t,s)),s.add(e)}return[...n]}addDocToQuery(e,t){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let s=this.clientRequestIdToLocalDocuments.get(t);s||(s=new Set,this.clientRequestIdToLocalDocuments.set(t,s)),s.add(e)}removeDocFromQuery(e,t){const i=this.localDocumentToClientRequestIds.get(e);let s=!i;i&&(i.delete(t),i.size||(this.localDocumentToClientRequestIds.delete(e),s=!0));const n=this.clientRequestIdToLocalDocuments.get(t);n&&(n.delete(e),n.size||this.clientRequestIdToLocalDocuments.delete(t)),s&&this.documentStore.deleteDocument(e)}errorOutAllQueries(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of i){const i=this.ongoingQueries.get(e);i&&(this.destructManager.isDestructing?i.dataSubject.complete():i.dataSubject.error(t),i.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const i of e){const e=this.ongoingQueries.get(i);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const s=this.clientRequestIdToLocalDocuments.get(i)||new Set,n=this.documentStore.sortAndLimitDocs(s,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(n,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=Ie(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case bs.UNKNOWN:e.limitUnderflowState=s.size===e.query.limit+100?bs.ENABLED:bs.DISABLED;break;case bs.DISABLED:break;case bs.ENABLED:if(s.size<e.query.limit+20){e.limitUnderflowState=bs.UNKNOWN,this.sendQueryToServerOrUseParentQuery(e);continue}}e.dataSubject.next(n)}for(const e of t){const t=this.collectAllObservables(e);Ie(e.allObservables).next(t)}}findValidParentOfQuery(e){const t=new us(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,s,r,a,c){r&&this.socketManager.notifyWebSocketIsNeeded();const u=Object.keys(i).length>0;return r||u||!this.detachedQueryExecutor||this.lockManager.canGetLock(ms)?d(()=>{const u=this.createOngoingQueryGraph(e,t,i,s,r,!0,{},c);a&&(u.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(u),u.allObservables=new n(1);const l=u.allObservables.pipe(D(e=>o(e).pipe(fe(e=>this.joinResults(e,s,u)))),rn(()=>this.allOngoingQueriesGotInitialResult(u)),q(void 0),M(),rn(([e,t])=>!ri(e,t)),fe(([,e])=>e),r?R():O(1),f(()=>{u.dataSubject.complete(),u.done=!0,this.completeAllSupportedQueries(u),u.allObservables?.complete()})),d=this.collectAllObservables(u);return u.allObservables.next(d),l}).pipe(T()):b(this.detachedQueryExecutor(e)).pipe(fe(e=>e.map(e=>{const i={[t]:e};return this.detachedRecords.add(i),i})))}hasOngoingQueryForDocId(e){const t=this.localDocumentToClientRequestIds.get(e);return!!t&&!!t.size}unsubscribe(){const e=[...this.ongoingQueries.values()];for(const t of e)t.dataSubject.complete(),t.allObservables?.complete()}hasSubscription(e){return!!this.ongoingQueries.get(e)?.subscribe}isValidParent(e){if(!e.activated||e.isInFlight||e.isEmptyForJoin||e.done||!e.subscribe||!e.gotInitialResponse||!e.dataSubject.value)return!1;const t=-1===e.query.limit?1e3:e.query.limit;return e.dataSubject.value.length<t}findValidParentOfOngoingQuery(e){if(e.forceFetchFromServer)return;const t=new us(e.query);for(const i of this.ongoingQueries.values()){if(e===i)return;if(this.isValidParent(i)&&t.isSubqueryOfQuery(i.query))return i}}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const i=[];for(const s of t){const t=Ie(this.localDocumentToClientRequestIds.get(s));t.delete(e),t.size||(this.localDocumentToClientRequestIds.delete(s),i.push(s))}i.length&&this.onOrphanDocuments.next(i)}registerQueryFinalizer(e){const t=e.clientRequestId,i=Ri(this.clientIdService.getClientId(),t);e.dataSubject.pipe(f(async()=>{if(e.unsubscribeBlockerCount.value>0&&await m(k(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(rn(e=>0===e)))),this.queryMappingManager.removeQuery(i),this.ongoingQueries.delete(t),e.subscribe&&!e.isEmptyForJoin&&e.activated){const i={clientRequestId:t};this.rpcManager.post("query/unsubscribe",i).catch(t=>{this.destructManager.isDestructing||console.error("Got error while unsubscribing from query",e.query,t)})}this.removeClientRequestIdMapping(t)}),rn(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,i,s,n,r,o,a={},c){if(a[i])return a[i];const u=o&&c?c:this.clientIdService.generateClientRequestId(),l=[],d={clientRequestId:u,activated:o,alias:i,query:e,subscribe:r,dataSubject:new t(null),supportedQueries:l,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new t(0),queryRegistered:new t(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:r?bs.UNKNOWN:bs.DISABLED};this.registerQueryFinalizer(d),this.ongoingQueries.set(u,d),a[i]=d;for(const[e,t]of Object.entries(n)){const o=t.leftAlias;if(o!==i&&e!==i)continue;const c=o===i?e:o;if(o===i){const e=this.createOngoingQueryGraph(s[c],c,s,n,r,!1,a);e.joinCondition=t,l.push(e)}else d.supportingOngoingQuery=this.createOngoingQueryGraph(s[c],c,s,n,r,!1,a)}return d}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(rn(Boolean),fe(e=>({docs:e,alias:i}))));for(const i of e.supportedQueries)this.collectAllObservables(i,t);return t}joinResults(e,t,i){const s=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let n=s[i.alias].map(e=>({[i.alias]:e}));const r=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<r.length;e++){const i=r[e].alias;o.has(i)||(o.add(i),n=this.join(n,i,s[i],t[i]))}return n}join(e,t,i,s){if(!e.length)return e;const n=Object.keys(e[0]);if(!s||!n.includes(s.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[s.right]);r.has(t)||r.set(t,[]),Ie(r.get(t)).push(e)}),e.flatMap(e=>{const i=r.get(this.transformKey(e[s.leftAlias]?.[s.left]))||[];return i.length?i.map(i=>({...e,[t]:i})):s.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],i=[e];for(;i.length;){const e=Ie(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,i){const s=Ie(i.joinCondition),n=i.query;if(i.activated){if(!i.canExpandForJoin)return!1;const r=Ie(i.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===i.alias),o=new Set(e.map(e=>e[s.left]??null));for(const e of r)e.query.conditions.filter(ji).filter(e=>e.fieldName===s.right).forEach(e=>{o.delete(e.value)});if(0===o.size)return!1;const a=ai(n);a.conditions=a.conditions.filter(e=>!ji(e)||e.fieldName!==s.right),[...o].forEach(e=>{a.conditions.push({fieldName:s.right,operator:"==",value:e})});const c={...i,query:a,activated:!0,gotInitialResponse:!1,dataSubject:new t(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(c),this.ongoingQueries.set(c.clientRequestId,c),Ie(i.supportingOngoingQuery).supportedQueries.push(c),this.sendQueryToServerOrUseParentQuery(c),!0}{if(i.activated=!0,n.conditions.filter(ji).filter(e=>e.fieldName===s.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(i),i.canExpandForJoin=!1,!0;const t=e.map(e=>e[s.left]??null).map(e=>({fieldName:s.right,operator:"==",value:e}));return t.length?(n.conditions.push(...t),this.sendQueryToServerOrUseParentQuery(i)):i.isEmptyForJoin=!0,!0}}allOngoingQueriesGotInitialResult(e){return!!e.isEmptyForJoin||!!e.gotInitialResponse&&(!e.supportedQueries.length||e.supportedQueries.every(e=>this.allOngoingQueriesGotInitialResult(e)))}async completeAllSupportedQueries(e){const t=[...e.supportedQueries||[]];for(;t.length;){const e=Ie(t.shift());t.push(...e.supportedQueries||[]),await m(e.unsubscribeBlockerCount.pipe(rn(e=>0===e))),e.dataSubject.complete()}}transformKey(e){return e instanceof Date?`DATE AS string KEY: ${e.toISOString()}`:e}preDestruct(){this.unsubscribe()}sendQueryToServerOrUseParentQuery(e,t=!1){if(this.destructManager.isDestructing)return;const i=e.query,s=e.clientRequestId,n=Ri(this.clientIdService.getClientId(),s);this.queryMappingManager.addQuery(i,n),this.ongoingQueries.set(s,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},s=new us(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await m(t.queryRegistered.pipe(rn(Boolean)))}catch(t){return this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(e.dataSubject.error(t),e.queryRegistered.error(t)),void(e.done=!0)}if(this.destructManager.isDestructing)return;if(e.done)return;this.rpcManager.post("query/register",i).then(()=>{e.isInFlight=!1,e.queryRegistered.next(!0)}).catch(i=>{e.isInFlight=!1,this.destructManager.isDestructing?e.dataSubject.complete():(console.error("Query error",e.query,t.query,i),e.dataSubject.error(i)),e.done=!0}).finally(()=>{t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value-1)});const n=k(e.queryRegistered.pipe(rn(Boolean),h(2e3),O(1)),this.destructManager.observeIsDestructing().pipe(O(1)));t.dataSubject.pipe(A(()=>!e.done),E(n),rn(Boolean),R(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),fe(e=>e.filter(e=>s.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(Oi(i.__docId__,e.query.collectionName,e.query.integrationId),i);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,i=t>0&&e.subscribe?t+100:t,s={query:{...e.query,limit:i},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(s).then(t=>{e.isInFlight=!1,e.queryRegistered.next(!0),this.queryResultsSubject.next(t)}).catch(t=>{e.isInFlight=!1,this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(ki.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const i of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{i.has(t)&&(i.delete(t),i.add(e[t]))});t.forEach(t=>{si(this.localDocumentToClientRequestIds,t,e[t])})}}function On(e,t){for(const i of e.fields){const e=Xt(t,i.fieldName)??null;if(Ei(i.value,e,i.operator))return!0;if(Ei(i.value,e,"!="))return!1}return!1}class En{constructor(){this.stateService=new kn({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const s=new Set;for(const n of e.conditions){if(ji(n)&&["=="].includes(n.operator)){const e=fi(n.fieldName);s.has(e)||(i++,s.add(e))}else i++;const r=this.getConditionStatePath(e,n),o=[...this.stateService.get(r)||[]];_n(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],s=[...this.stateService.get(i)||[]];_n(s,t),this.stateService.set(i,s)}this.stateService.set([...this.getQueryMetadataStatePath(e,t),"condCount"],i)}),this.querySubscriptionIdToQuery[t]=e}async removeQuery(e){const t=this.querySubscriptionIdToQuery[e];if(t)return this.stateService.runInBatch(()=>{for(const i of t.conditions){const s=this.getConditionStatePath(t,i),n=[...this.stateService.get(s)||[]];qn(n,e),n.length?this.stateService.set(s,n):this.stateService.delete(s)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],s=[...this.stateService.get(i)||[]];qn(s,e),this.stateService.set(i,s)}this.stateService.delete(this.getQueryMetadataStatePath(t,e))}),t}getMapping(e,t){return this.stateService.get(["queryMapping",e,t,"mapping"])}getQueryMetadataStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","queriesMetadata",`${t}`]}getConditionStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","conditional",(i=t,hi(i))];var i}}class An{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)),O(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 i of e)this.locks[i]=new t(!0)}}class Rn{constructor(e,t,i){this.rpcManager=e,this.socketManager=t,this.queueManagers=new Map,this.socketManager.observeNotifications().subscribe(e=>{const t=this.getOrUndefined(e.integrationId,e.topicName);t&&t.onMessages(e.payload)}),i.onPreDestruct(()=>{for(const e of this.queueManagers.values())for(const t of e.values())t.destruct()})}get(e,t){let i=this.queueManagers.get(e);i||(i=new Map,this.queueManagers.set(e,i));let s=i.get(t);return s||(s=new Fn(e,t,this.rpcManager,this.socketManager),i.set(t,s)),s}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const jn="subscriptionMutex";class Fn{constructor(e,t,i,s){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=s,this.messagesSubject=new r,this.subscriberCount=0,this.lockManager=new An}async produce(e){await this.lockManager.lock(jn);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(jn)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),d(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe(f(()=>{this.subscriberCount--,0===this.subscriberCount&&this.performUnsubscribe()}))))}onMessages(e){for(const t of e)this.messagesSubject.next(t)}destruct(){this.messagesSubject.complete()}async performSubscribe(){await this.lockManager.lock(jn);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(jn)}}async performUnsubscribe(){await this.lockManager.lock(jn);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(jn)}}}class Nn{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}}class xn{constructor(e,i,s,n,r,o){this.region=e,this.appId=i,this.authManager=r,this.clientIdService=o,this.staticHeaders={},this.onGoingRpcCounter=new t(0);for(const[e,t]of Object.entries(n))this.setStaticHeader(e,t);this.clientIdService.observeClientId().subscribe(e=>{e?this.setStaticHeader("x-squid-clientid",e):this.deleteStaticHeader("x-squid-clientid")}),s.onDestruct(async()=>{await this.awaitAllSettled()});const a=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new Nn(60*a,5),ai:new Nn(20*a,5),secret:new Nn(20*a,5)}}async getAuthHeaders(){const e=this.authManager.getApiKey();if(e)return{Authorization:`ApiKey ${e}`};const{token:t,integrationId:i}=await this.authManager.getAuthData();if(!t)return{};let s=`Bearer ${t}`;return i&&(s+=`; IntegrationId ${i}`),{Authorization:s}}async awaitAllSettled(){await m(this.onGoingRpcCounter.pipe(g(e=>0===e)))}setStaticHeader(e,t){this.staticHeaders[e]=t}deleteStaticHeader(e){delete this.staticHeaders[e]}getStaticHeaders(){return this.staticHeaders}async post(e,t,i=[],s="files",n={}){return(await this.rawPost(e,t,i,s,!0,n)).body}async rawPost(e,t,i=[],s="files",n=!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};ki.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 xs({url:c,headers:a,message:t,files:i,filesFieldName:s,extractErrorMessage:n})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const s=await this.getAuthHeaders(),n={...this.staticHeaders,...s};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,i])=>{e.append(t,String(i))}),r+=`?${e.toString()}`}return ki.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await Ps({url:r,headers:n,extractErrorMessage:i})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async put(e,t,i=[],s="files"){return(await this.rawPut(e,t,i,s)).body}async rawPut(e,t,i=[],s="files",n=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};ki.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 Bs({url:a,headers:o,message:t,files:i,filesFieldName:s,extractErrorMessage:n})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async patch(e,t,i=[],s="files"){return(await this.rawPatch(e,t,i,s)).body}async rawPatch(e,t,i=[],s="files",n=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};ki.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 Qs({url:a,headers:o,message:t,files:i,filesFieldName:s,extractErrorMessage:n})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const s=await this.getAuthHeaders(),n={...this.staticHeaders,...s};ki.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 Ls({url:r,headers:n,message:t,extractErrorMessage:i})}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")}}function Pn(e){be(!e.isPassiveMode,"This operation is not available in passive mode. Use active mode for real-time features.")}class Bn{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 Qn(){}const Ln="undefined"!=typeof process&&process.versions?.node?x(220):Mi().WebSocket;class Un{constructor(e,i,s,n=js,o,a,c){this.clientIdService=e,this.region=i,this.appId=s,this.messageNotificationWrapper=n,this.destructManager=o,this.authManager=a,this.runtimeOptions=c,this.webSocketObserver=new r,this.allMessagesObserver=new r,this.connectionReady=new t(!1),this.seenMessageIds=new Set,this.destructSubject=new r,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new t(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe(g(Boolean),O(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe(_(1),g(e=>!e),D(()=>k(j(this.clientTooOldThreshold),this.connectionReady.pipe(g(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?ki.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(ki.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?ki.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?ki.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(ki.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),ki.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(){Pn(this.runtimeOptions),await m(this.observeConnectionReady().pipe(g(Boolean)))}notifyWebSocketIsNeeded(){Pn(this.runtimeOptions),this.webSocketNeededSubject.next(!0)}postMessage(e){this.sendMessageImpl(e)}sendMessage(e){return this.sendMessageImpl(e)}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(ki.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded();try{await m(k(this.connectionReady.pipe(g(Boolean)),j(12e4).pipe(R(()=>{throw new Error("WebSocket connection not ready within 2 minutes")}))).pipe(E(this.destructSubject)))}catch(e){if(this.destructManager.isDestructing)return;throw e}const t=await this.authManager.getToken();if(this.connectionReady.value)try{be(this.socket,"Socket is undefined in sendMessageAsync");const i=pi({message:e,authToken:t});ki.debug(this.clientIdService.getClientId(),"Sending message to socket: ",i),this.socket.send(i)}catch(t){this.socket?.connected?console.error("Websocket message is ignored due to a non-recoverable error",t):(this.connectionReady.next(!1),await this.sendMessageImpl(e))}else await this.sendMessageImpl(e)}sendKillMessage(){this.socket?.connected&&this.socket.send(pi({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();ki.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,s=0,n=1;const r={connected:!1,closeCalled:!1,open(){i=new(Ln?.WebSocket??Ln)(e,t.protocols||[]),i.onmessage=t.onmessage?e=>{e.data&&t.onmessage?t.onmessage(e):console.log("No data received from websockets, please contact support@getsquid.ai with this message.")}:Qn,i.onopen=function(e){r.connected=!0,(t.onopen||Qn)(e),s=0},i.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return ki.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Qn)(e),void r.reconnect(e);(t.onclose||Qn)(e)},i.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||Qn)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;n&&s++<i?n=setTimeout(function(){(t.onreconnect||Qn)(e),ki.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||Qn)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(n),n=void 0,i.close(e,t)}catch(e){}}};return r.open(),r}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{ki.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{ki.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):ki.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{ki.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):ki.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 ki.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=gi(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),ki.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new r;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe(R(e=>t.push(e)),u(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await m(j(0)),this.connectionReady.next(!1),await m(j(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function $n(e){var t,i;i="Invalid application ID",be(function(e){return"string"==typeof e}(t=e),()=>we(i,"Not a string",t));const[s,n,r,o]=e.split("-");return be(!o,`Invalid application ID: ${e}`),{appId:s,environmentId:n??"prod",squidDeveloperId:r}}function Hn(e,t){return`${$n(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Gn(e,t,i){return`${Hn(e,t)}${i?`-${i}`:""}`}function Wn(e){const t=$n(e);return Hn(t.appId,t.environmentId)}class Kn{constructor(e="built_in_storage",t){this.integrationId=e,this.rpcManager=t}async uploadFile(e,t,i){const s={integrationId:this.integrationId,dirPathInBucket:e,expirationInSeconds:i};await this.rpcManager.post("storage/uploadFile",s,[t])}async getFileMetadata(e){const t={integrationId:this.integrationId,filePathInBucket:e};return await this.rpcManager.post("storage/getFileMetadata",t)}async getDownloadUrl(e,t){const i={integrationId:this.integrationId,filePathInBucket:e,urlExpirationInSeconds:t};return await this.rpcManager.post("storage/getDownloadUrl",i)}async listDirectoryContents(e){const t={integrationId:this.integrationId,dirPathInBucket:e};return await this.rpcManager.post("storage/listDirectoryContents",t)}async deleteFile(e){await this.deleteFiles([e])}async deleteFiles(e){const t={integrationId:this.integrationId,filePathsInBucket:e};await this.rpcManager.post("storage/deleteFiles",t)}}class Jn{constructor(e,t,i,s,n){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=s,this.consoleRegion=n}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e){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){be(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i=Q(this.region,this.consoleRegion,"openapi/sqd/shorten"),s={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},n=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(s)}),r=await n.text();return be(n.ok,`Failed to create short URL (${n.status}): ${r}`),JSON.parse(r)}async createShortUrls(e){be(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i=Q(this.region,this.consoleRegion,"openapi/sqd/shortenMany"),s={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},n=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(s)}),r=await n.text();return be(n.ok,`Failed to create short URLs (${n.status}): ${r}`),JSON.parse(r)}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"),i={id:e,appId:this.appId},s=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});be(s.ok,`Failed to delete short URL (${s.status}): ${s.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"),i={ids:e,appId:this.appId},s=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});be(s.ok,`Failed to delete short URLs (${s.status}): ${s.statusText}`)}}class zn{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:s={},body:n,files:r=[]}=t,o=await this.rpcManager.getAuthHeaders(),a={...this.rpcManager.getStaticHeaders(),...o,...i};let c=B(this.region,this.appId,`webhooks/${encodeURIComponent(e)}`);if(s&&Object.keys(s).length>0){const e=new URLSearchParams;Object.entries(s).forEach(([t,i])=>{e.append(t,String(i))}),c+=`?${e.toString()}`}const u=new Headers(a);let l;if(u.append(Es,Rs("c_")),u.append(As,Ns),r&&r.length>0){const e=new FormData;for(const t of r)e.append("file",t,t.name);n&&"object"==typeof n&&Object.entries(n).forEach(([t,i])=>{e.append(t,String(i))}),l=e}else u.append("Content-Type","application/json"),l=pi(n||{});const d=await fetch(c,{method:"POST",headers:u,body:l}),h={};if(d.headers.forEach((e,t)=>{h[t]=e}),!d.ok){const e=await d.text();let t;try{t=JSON.parse(e)}catch{t=e}const i="string"==typeof t?t:t?.message||d.statusText;throw new Fs(i,d.status,c,h,t)}const p=await d.text();let g;try{g=JSON.parse(p)}catch{g=p}return g}getWebhookUrl(e){return B(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class Vn{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new ws,be(e.appId,"APP_ID_MUST_BE_PROVIDED"),this.runtimeOptions={isPassiveMode:e.isPassiveMode??!1};for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,i=Gn(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Ti(this.destructManager),ki.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new Yt(e.apiKey,e.authProvider),this.socketManager=new Un(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new xn(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new Ks(this.socketManager,this.rpcManager),this.jobClient=new Ds(this.socketManager,this.rpcManager,this.clientIdService,this.destructManager,this.runtimeOptions),this.backendFunctionManager=new wi(this.rpcManager),this.aiClient=new Jt(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager),this.apiClient=new Vt(this.rpcManager),this.documentStore=new _s,this.lockManager=new An,this.distributedLockManager=new Ss(this.socketManager,this.destructManager),this.documentIdentityService=new ks(this.documentStore,this.destructManager),this.documentReferenceFactory=new Ts(this.documentIdentityService),this.querySender=new on(this.rpcManager,this.destructManager,this.socketManager.observeConnectionReady()),this.observabilityClient=new zs(this.rpcManager),this.schedulerClient=new Bn(this.rpcManager),this._appId=i,this.querySubscriptionManager=new Dn(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager,this.lockManager),this.localQueryManager=new nn(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const s=new Gs(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new Qi(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService,s),this.dataManager=new Is(this.documentStore,s,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new Yi(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.querySubscriptionManager.setDetachedQueryExecutor(e=>this.dataManager.executeDetachedQuery(e)),this.webhookManager=new zn(this.rpcManager,e.region,i),this.nativeQueryManager=new Ws(this.rpcManager),this._connectionDetails=new Zi(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new Rn(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new H(this.rpcManager,this.options.region,Wn(i),this.options.consoleRegion),this.webClient=new Jn(this.rpcManager,this.options.region,Wn(i),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}get isDestructed(){return this.destructManager.isDestructing}static getInstance(e){const t=hi(e);let i=Vn.squidInstancesMap[t];return i||(i=new Vn(e),Vn.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(Vn.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Rt){return this._validateNotDestructed(),this.collectionReferenceFactory.get(e,t)}runInTransaction(e){return this._validateNotDestructed(),this.dataManager.runInTransaction(e)}executeFunction(e,...t){return this._validateNotDestructed(),this.backendFunctionManager.executeFunction(e,...t)}executeFunctionWithHeaders(e,t,...i){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...i)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}getWebhookUrl(e){return this._validateNotDestructed(),this.webhookManager.getWebhookUrl(e)}executeNativeRelationalQuery(e,t,i={}){const s={type:"relational",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}executeNativePureQuery(e,t,i={}){const s={type:"pure",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}executeNativeMongoQuery(e,t,i){const s={type:"mongo",collectionName:t,aggregationPipeline:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(s)}executeNativeElasticQuery(e,t,i,s="_search",n="GET"){const r={type:"elasticsearch",index:t,endpoint:s,method:n,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}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 Kn(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new qs(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new Cs(this.rpcManager)}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t,i){const s=await this.acquireLock(e,i);try{return await t(s)}finally{s.release()}}queue(e,t=jt){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(Vn.squidInstancesMap).find(([,e])=>e===this);e&&delete Vn.squidInstancesMap[e[0]]})}connectionDetails(){return this._validateNotDestructed(),this._connectionDetails}getNotificationClient(){return this._validateNotDestructed(),this.notificationClient}async _unsubscribe(){this.querySubscriptionManager.unsubscribe(),await this.rpcManager.awaitAllSettled()}internal(){const{rpcManager:e}=this;return{getApplicationUrl:(e,t,i)=>B(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>Gn(e,t,i)}}_validateNotDestructed(){be(!this.destructManager.isDestructing,"The client was already destructed.")}}export{Ge as AGENT_STATUS_TITLE_ACCESSING_KB,He as AGENT_STATUS_TITLE_AGENT_RESPONSE,_t as AI_AGENTS_INTEGRATION_ID,ft as AI_AUDIO_CREATE_SPEECH_MODEL_NAMES,gt as AI_AUDIO_TRANSCRIPTION_MODEL_NAMES,We as AI_CHAT_MESSAGE_SOURCE,nt as AI_EMBEDDINGS_MODEL_NAMES,pt as AI_IMAGE_MODEL_NAMES,mt as AI_MODEL_SOURCES,Je as AI_PROVIDER_TYPES,Gt as ALL_OPERATORS,Ze as ANTHROPIC_CHAT_MODEL_NAMES,wt as API_INJECTION_FIELD_TYPES,Ht as ARRAY_OPERATORS,Dt as AUTH_INTEGRATION_TYPES,H as AdminClient,je as AiAgentClient,Ae as AiAgentReference,Ne as AiAudioClient,Jt as AiClient,xe as AiFilesClient,Pe as AiImageClient,Le as AiKnowledgeBaseClient,Qe as AiKnowledgeBaseReference,Ue as AiMatchMakingClient,Vt as ApiClient,$ as ApiKeysSecretClient,Yt as AuthManager,st as BEDROCK_EMBEDDING_MODEL_NAMES,kt as BUILT_IN_AGENT_ID,Rt as BUILT_IN_DB_INTEGRATION_ID,jt as BUILT_IN_QUEUE_INTEGRATION_ID,Ft as BUILT_IN_STORAGE_INTEGRATION_ID,wi as BackendFunctionManager,Li as BaseQueryBuilder,Kt as CLIENT_CONNECTION_STATES,_i as CLIENT_ID_GENERATOR_KEY,qi as CLIENT_REQUEST_ID_GENERATOR_KEY,Hi as Changes,Ti as ClientIdService,zi as CollectionReference,Yi as CollectionReferenceFactory,Zi as ConnectionDetails,Ct as DATA_INTEGRATION_TYPES,Te as DEFAULT_SHORT_ID_LENGTH,$t as DOC_ID_FIELD,Is as DataManager,Wi as DereferencedJoin,ws as DestructManager,Ms as DistributedLockImpl,Ss as DistributedLockManager,Pi as DocumentReference,Ts as DocumentReferenceFactory,_s as DocumentStore,Fe as EMPTY_CHAT_ID,Mt as ENVIRONMENT_IDS,qs as ExternalAuthClient,Cs as ExtractionClient,Cn as FETCH_BEYOND_LIMIT,ht as FLUX_MODEL_NAMES,Ve as GEMINI_CHAT_MODEL_NAMES,Ot as GRAPHQL_INTEGRATION_TYPES,Ye as GROK_CHAT_MODEL_NAMES,Ji as GroupedJoin,Et as HTTP_INTEGRATION_TYPES,Tt as HttpStatus,At as INTEGRATION_SCHEMA_TYPES,qt as INTEGRATION_TYPES,L as IntegrationClient,Ds as JobClient,Gi as JoinQueryBuilder,bi as LastUsedValueExecuteFunctionCache,bs as LimitUnderflowState,nn as LocalQueryManager,Qt as METRIC_DOMAIN,Bt as METRIC_FUNCTIONS,Lt as METRIC_INTERVAL_ALIGNMENT,Ut as METRIC_NO_DATA_BEHAVIOR,Hs as ManagementClient,$e as MatchMaker,Gs as MutationSender,js as NOOP_FN,Ws as NativeQueryManager,Ks as NotificationClient,ut as OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES,lt as OPENAI_AUDIO_MODEL_NAMES,ct as OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES,ze as OPENAI_CHAT_MODEL_NAMES,tt as OPENAI_EMBEDDINGS_MODEL_NAMES,at as OPENAI_IMAGE_MODEL_NAMES,yt as OPEN_AI_CREATE_SPEECH_FORMATS,zs as ObservabilityClient,Bi as Pagination,$i as QueryBuilder,Qi as QueryBuilderFactory,on as QuerySender,Dn as QuerySubscriptionManager,Rn as QueueManagerFactory,Fn as QueueManagerImpl,vt as RAG_TYPES,Ke as RERANK_PROVIDERS,ms as RUN_IN_TRANSACTION_MUTEX,Nn as RateLimiter,xn as RpcManager,Nt as SQUID_BUILT_IN_INTEGRATION_IDS,Pt as SQUID_METRIC_NAMES,Wt as SQUID_REGIONS,dt as STABLE_DIFFUSION_MODEL_NAMES,Bn as SchedulerClient,U as SecretClient,Un as SocketManager,Vn as Squid,Fs as SquidClientError,Kn as StorageClient,It as VECTOR_DB_TYPES,Xe as VENDOR_AI_CHAT_MODEL_NAMES,it as VOYAGE_EMBEDDING_MODEL_NAMES,Jn as WebClient,zn as WebhookManager,Pn as assertNotPassiveMode,yi as compareArgsByReference,mi as compareArgsBySerializedValue,en as deserializeQuery,ke as generateId,qe as generateShortId,Ce as generateShortIds,Se as generateUUID,Me as generateUUIDPolyfill,Q as getConsoleUrl,Si as getCustomizationFlag,rt as isAiEmbeddingsModelName,xt as isBuiltInIntegrationId,ot as isIntegrationEmbeddingModelSpec,bt as isIntegrationModelSpec,St as isPlaceholderParam,et as isVendorAiChatModelName,Xs as loadQueryResultDocIds,Ls as rawSquidHttpDelete,Ps as rawSquidHttpGet,Qs as rawSquidHttpPatch,xs as rawSquidHttpPost,Bs as rawSquidHttpPut,Ii as transformFileArgs,$s as tryDeserializing,Zs as visitQueryResults};
|
|
1
|
+
import*as e from"ws";import{BehaviorSubject as t,NEVER as i,Observable as n,ReplaySubject as s,Subject as r,combineLatest as o,combineLatestWith as a,concatMap as c,debounceTime as u,defaultIfEmpty as l,defer as d,delay as h,distinctUntilChanged as p,filter as g,finalize as f,first as y,firstValueFrom as m,from as b,interval as I,lastValueFrom as v,map as w,of as S,pairwise as M,race as k,share as T,skip as _,startWith as q,switchAll as C,switchMap as D,take as O,takeUntil as E,takeWhile as A,tap as R,timer as j}from"rxjs";var F={273(e,t){Object.defineProperty(t,"__esModule",{value:!0})},150(e,t,i){var n=this&&this.__createBinding||(Object.create?function(e,t,i,n){void 0===n&&(n=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,n,s)}:function(e,t,i,n){void 0===n&&(n=i),e[n]=t[i]}),s=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||n(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0});const r=i(642);t.default=r.PromisePool,s(i(273),t),s(i(642),t),s(i(837),t),s(i(426),t),s(i(858),t),s(i(172),t)},837(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolError=void 0;class i extends Error{constructor(e,t){super(),this.raw=e,this.item=t,this.name=this.constructor.name,this.message=this.messageFrom(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e,t){return new this(e,t)}messageFrom(e){return e instanceof Error||"object"==typeof e?e.message:"string"==typeof e||"number"==typeof e?e.toString():""}}t.PromisePoolError=i},234(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePoolExecutor=void 0;const n=i(642),s=i(172),r=i(837),o=i(858);t.PromisePoolExecutor=class{constructor(){this.meta={tasks:[],items:[],errors:[],results:[],stopped:!1,concurrency:10,shouldResultsCorrespond:!1,processedItems:[],processedItemsCounter:0,taskTimeout:0,shouldStoreProcessedItems:!0},this.handler=e=>e,this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[]}useConcurrency(e){if(!this.isValidConcurrency(e))throw s.ValidationError.createFrom(`"concurrency" must be a number, 1 or up. Received "${e}" (${typeof e})`);return this.meta.concurrency=e,this}storeProcessedItems(e=!0){return this.meta.shouldStoreProcessedItems=e,this}shouldStoreProcessedItems(){return this.meta.shouldStoreProcessedItems}isValidConcurrency(e){return"number"==typeof e&&e>=1}withTaskTimeout(e){return this.meta.taskTimeout=e,this}concurrency(){return this.meta.concurrency}useCorrespondingResults(e){return this.meta.shouldResultsCorrespond=e,this}shouldUseCorrespondingResults(){return this.meta.shouldResultsCorrespond}taskTimeout(){return this.meta.taskTimeout}for(e){return this.meta.items=e,this}items(){return this.meta.items}itemsCount(){const e=this.items();return Array.isArray(e)?e.length:NaN}tasks(){return this.meta.tasks}activeTaskCount(){return this.activeTasksCount()}activeTasksCount(){return this.tasks().length}processedItems(){return this.meta.processedItems}flushProcessedItems(){this.meta.processedItems=[]}incrementProcessedItemsCounter(){this.meta.processedItemsCounter+=1}processedCount(){return this.meta.processedItemsCounter}processedPercentage(){return this.processedCount()/this.itemsCount()*100}results(){return this.meta.results}errors(){return this.meta.errors}withHandler(e){return this.handler=e,this}hasErrorHandler(){return!!this.errorHandler}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers=e,this}onTaskFinished(e){return this.onTaskFinishedHandlers=e,this}hasReachedConcurrencyLimit(){return this.activeTasksCount()>=this.concurrency()}stop(){throw this.markAsStopped(),new o.StopThePromisePoolError}markAsStopped(){return this.meta.stopped=!0,this}isStopped(){return this.meta.stopped}async start(){return await this.validateInputs().prepareResultsArray().process()}validateInputs(){if("function"!=typeof this.handler)throw s.ValidationError.createFrom("The first parameter for the .process(fn) method must be a function");const e=this.taskTimeout();if(!(null==e||"number"==typeof e&&e>=0))throw s.ValidationError.createFrom(`"timeout" must be undefined or a number. A number must be 0 or up. Received "${String(e)}" (${typeof e})`);if(!this.areItemsValid())throw s.ValidationError.createFrom(`"items" must be an array, an iterable or an async iterable. Received "${typeof this.items()}"`);if(this.errorHandler&&"function"!=typeof this.errorHandler)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof this.errorHandler}"`);return this.onTaskStartedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received "${typeof e}"`)}),this.onTaskFinishedHandlers.forEach(e=>{if(e&&"function"!=typeof e)throw s.ValidationError.createFrom(`The error handler must be a function. Received "${typeof e}"`)}),this}areItemsValid(){const e=this.items();return Array.isArray(e)||"function"==typeof e[Symbol.iterator]||"function"==typeof e[Symbol.asyncIterator]}prepareResultsArray(){const e=this.items();return Array.isArray(e)&&this.shouldUseCorrespondingResults()&&(this.meta.results=Array(e.length).fill(n.PromisePool.notRun)),this}async process(){let e=0;for await(const t of this.items()){if(this.isStopped())break;this.shouldUseCorrespondingResults()&&(this.results()[e]=n.PromisePool.notRun),this.startProcessing(t,e),e+=1,await this.waitForProcessingSlot()}return await this.drained()}async waitForProcessingSlot(){for(;this.hasReachedConcurrencyLimit();)await this.waitForActiveTaskToFinish()}async waitForActiveTaskToFinish(){await Promise.race(this.tasks())}startProcessing(e,t){const i=this.createTaskFor(e,t).then(e=>{this.save(e,t).removeActive(i)}).catch(async n=>{await this.handleErrorFor(n,e,t),this.removeActive(i)}).finally(()=>{this.shouldStoreProcessedItems()&&this.processedItems().push(e),this.incrementProcessedItemsCounter(),this.runOnTaskFinishedHandlers(e)});this.tasks().push(i),this.runOnTaskStartedHandlers(e)}async createTaskFor(e,t){if(void 0===this.taskTimeout())return this.handler(e,t,this);const[i,n]=this.createTaskTimeout(e);return Promise.race([this.handler(e,t,this),i()]).finally(n)}createTaskTimeout(e){let t;return[async()=>new Promise((i,n)=>{t=setTimeout(()=>{n(new r.PromisePoolError(`Task in promise pool timed out after ${this.taskTimeout()}ms`,e))},this.taskTimeout())}),()=>clearTimeout(t)]}save(e,t){return this.shouldUseCorrespondingResults()?this.results()[t]=e:this.results().push(e),this}removeActive(e){return this.tasks().splice(this.tasks().indexOf(e),1),this}async handleErrorFor(e,t,i){if(this.shouldUseCorrespondingResults()&&(this.results()[i]=n.PromisePool.failed),!this.isStoppingThePoolError(e)){if(this.isValidationError(e))throw this.markAsStopped(),e;this.hasErrorHandler()?await this.runErrorHandlerFor(e,t):this.saveErrorFor(e,t)}}isStoppingThePoolError(e){return e instanceof o.StopThePromisePoolError}isValidationError(e){return e instanceof s.ValidationError}async runErrorHandlerFor(e,t){try{await(this.errorHandler?.(e,t,this))}catch(e){this.rethrowIfNotStoppingThePool(e)}}runOnTaskStartedHandlers(e){this.onTaskStartedHandlers.forEach(t=>{t(e,this)})}runOnTaskFinishedHandlers(e){this.onTaskFinishedHandlers.forEach(t=>{t(e,this)})}rethrowIfNotStoppingThePool(e){if(!this.isStoppingThePoolError(e))throw e}saveErrorFor(e,t){this.errors().push(r.PromisePoolError.createFrom(e,t))}async drained(){return await this.drainActiveTasks(),{errors:this.errors(),results:this.results()}}async drainActiveTasks(){await Promise.all(this.tasks())}}},642(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.PromisePool=void 0;const n=i(234);class s{constructor(e){this.shouldStoreProcessedItems=!0,this.timeout=void 0,this.concurrency=10,this.items=e??[],this.errorHandler=void 0,this.onTaskStartedHandlers=[],this.onTaskFinishedHandlers=[],this.shouldResultsCorrespond=!1}withConcurrency(e){return this.concurrency=e,this}static withConcurrency(e){return(new this).withConcurrency(e)}withTaskTimeout(e){return this.timeout=e,this}static withTaskTimeout(e){return(new this).withTaskTimeout(e)}for(e){const t=new s(e).withConcurrency(this.concurrency);return"function"==typeof this.errorHandler&&t.handleError(this.errorHandler),"number"==typeof this.timeout?t.withTaskTimeout(this.timeout):t}static for(e){return(new this).for(e)}handleError(e){return this.errorHandler=e,this}onTaskStarted(e){return this.onTaskStartedHandlers.push(e),this}dontStoreProcessedItems(){return this.shouldStoreProcessedItems=!1,this}onTaskFinished(e){return this.onTaskFinishedHandlers.push(e),this}useCorrespondingResults(){return this.shouldResultsCorrespond=!0,this}async process(e){return(new n.PromisePoolExecutor).useConcurrency(this.concurrency).useCorrespondingResults(this.shouldResultsCorrespond).storeProcessedItems(this.shouldStoreProcessedItems).withTaskTimeout(this.timeout).withHandler(e).handleError(this.errorHandler).onTaskStarted(this.onTaskStartedHandlers).onTaskFinished(this.onTaskFinishedHandlers).for(this.items).start()}}t.PromisePool=s,s.notRun=Symbol("notRun"),s.failed=Symbol("failed")},426(e,t){Object.defineProperty(t,"__esModule",{value:!0})},858(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.StopThePromisePoolError=void 0;class i extends Error{}t.StopThePromisePoolError=i},172(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationError=void 0;class i extends Error{constructor(e){super(e),Error.captureStackTrace&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static createFrom(e){return new this(e)}}t.ValidationError=i},220(t){t.exports=e}},N={};function x(e){var t=N[e];if(void 0!==t)return t.exports;var i=N[e]={exports:{}};return F[e].call(i.exports,i,i.exports,x),i.exports}x.d=(e,t)=>{for(var i in t)x.o(t,i)&&!x.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},x.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const P=["api","application","auth","mutation","native-query","query","queue","notification"];function B(e,t,i,n,s,r){let o="https",a=`${n||t}.${s||e}.${new URL("https://squid.cloud").host}`,c="";if(/^local/.test(e)){if(o="http",c=r||function(e){const t=e.replace(/^\/+/,"").split("/"),i=t[0]||"";return"ws"===i?"squidlet"===t[1]:P.includes(i)}(i)?"8001":"8000","undefined"!=typeof process){const e=r?void 0:process.env.SQUID_LOCAL_WS_FORCE_PORT;e&&i.replace(/^\/+/,"").startsWith("ws/general")&&(c=e)}/android$/.test(e)?a="10.0.2.2":function(e){return/ios$/.test(e)}(e)&&(a="localhost")}const u=o+"://"+a+(c?`:${c}`:""),l=i.replace(/^\/+/,"");return l?`${u}/${l}`:u}function Q(e,t,i=""){return B(function(e,t){return t||(e.includes("sandbox")?"squidai.westus3.azure.sandbox":e.includes("local")?"local":e.includes("staging")?"squidai.westus3.azure.staging":"us-east-1.aws")}(e,t),"console",i)}class L{constructor(e,t,i,n){this.rpcManager=e,this.iacBaseUrl=Q(t,n,`openapi/iac/applications/${i}/integrations`)}async list(e){const t=await this.rpcManager.get(this.iacBaseUrl);return e?t.filter(t=>t.type===e):t}async get(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}`)}async getIntegrationSchema(e){return await this.rpcManager.get(`${this.iacBaseUrl}/${e}/schema`)}async setIntegrationSchema(e,t){await this.rpcManager.put(`${this.iacBaseUrl}/${e}/schema`,t)}async delete(e){await this.rpcManager.delete(`${this.iacBaseUrl}/${e}`)}async deleteMany(e){await Promise.all(e.map(e=>this.delete(e)))}async upsertIntegration(e){await this.rpcManager.put(`${this.iacBaseUrl}/${e.id}`,e)}async generateAiDescriptionsForDataSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions`,t)}async generateAiDescriptionsForAssociations(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-associations`,t)}async generateAiDescriptionsForStoredProcedures(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-stored-procedures`,t)}async generateAiDescriptionsForEndpoints(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/schema/generate-ai-descriptions-for-endpoints`,t)}async discoverDataConnectionSchema(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-schema`,{})}async testDataConnection(e){return await this.rpcManager.post(`${this.iacBaseUrl}/test-connection`,e)}async discoverGraphQLConnectionSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-graphql-schema`,t)}async discoverOpenApiSchema(e,t){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema`,t)}async discoverOpenApiSchemaFromFile(e){return await this.rpcManager.post(`${this.iacBaseUrl}/${e}/discover-openapi-schema-from-file`,{})}}class 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 i={keys:[e],force:t};return this.rpcManager.post("secret/delete",i)}async deleteMany(e,t=!1){if(0===e.length)return;const i={keys:e,force:t};return this.rpcManager.post("secret/delete",i)}}class ${constructor(e){this.rpcManager=e}get(e){const t={key:e};return this.rpcManager.post("secret/api-key/get",t)}getAll(){return this.rpcManager.post("secret/api-key/getAll",{})}upsert(e){const t={key:e};return this.rpcManager.post("secret/api-key/upsert",t)}delete(e){const t={key:e};return this.rpcManager.post("secret/api-key/delete",t)}}class H{constructor(e,t,i,n){this.rpcManager=e,this.region=t,this.appId=i,this.consoleRegion=n,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 G(e){return"function"==typeof e}function W(e){return function(t){if(function(e){return G(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 K=function(e,t){return K=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])},K(e,t)};function J(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}K(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}function z(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function V(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,s,r=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(e){s={error:e}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return o}function Y(e,t,i){if(i||2===arguments.length)for(var n,s=0,r=t.length;s<r;s++)!n&&s in t||(n||(n=Array.prototype.slice.call(t,0,s)),n[s]=t[s]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var 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 i=e.indexOf(t);0<=i&&e.splice(i,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,i,n,s;if(!this.closed){this.closed=!0;var r=this._parentage;if(r)if(this._parentage=null,Array.isArray(r))try{for(var o=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(G(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),d=l.next();!d.done;d=l.next()){var h=d.value;try{ie(h)}catch(e){s=null!=s?s:[],e instanceof X?s=Y(Y([],V(s)),V(e.errors)):s.push(e)}}}catch(e){i={error:e}}finally{try{d&&!d.done&&(n=l.return)&&n.call(l)}finally{if(i)throw i.error}}}if(s)throw new X(s)}},e.prototype.add=function(t){var i;if(t&&t!==this)if(this.closed)ie(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&ee(t,e)},e.prototype.remove=function(t){var i=this._finalizers;i&&ee(i,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function ie(e){G(e)?e():e.unsubscribe()}te.EMPTY;var ne={setTimeout:function(e,t){for(var i=[],n=2;n<arguments.length;n++)i[n-2]=arguments[n];var s=ne.delegate;return(null==s?void 0:s.setTimeout)?s.setTimeout.apply(s,Y([e,t],V(i))):setTimeout.apply(void 0,Y([e,t],V(i)))},clearTimeout:function(e){var t=ne.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,i){return{kind:e,value:t,error:i}}var ae=function(e){function t(t){var i,n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,((i=t)instanceof te||i&&"closed"in i&&G(i.remove)&&G(i.add)&&G(i.unsubscribe))&&t.add(n)):n.destination=he,n}return J(t,e),t.create=function(e,t,i){return new ue(e,t,i)},t.prototype.next=function(e){this.isStopped?de(function(e){return oe("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?de(oe("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?de(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,i,n){var s,r=e.call(this)||this;return s=G(t)||!t?{next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=n?n:void 0}:t,r.destination=new ce(s),r}return J(t,e),t}(ae);function le(e){!function(e){ne.setTimeout(function(){throw e})}(e)}function de(e,t){var i=null;i&&ne.setTimeout(function(){return i(e,t)})}var he={closed:!0,next:se,error:function(e){throw e},complete:se};function pe(e,t,i,n,s){return new ge(e,t,i,n,s)}var ge=function(e){function t(t,i,n,s,r,o){var a=e.call(this,t)||this;return a.onFinalize=r,a.shouldUnsubscribe=o,a._next=i?function(e){try{i(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=s?function(e){try{s(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=n?function(){try{n()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return J(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var i=this.closed;e.prototype.unsubscribe.call(this),!i&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(ae);function fe(e,t){return W(function(i,n){var s=0;i.subscribe(pe(n,function(i){n.next(e.call(t,i,s++))}))})}function ye(e){return null!=e}let me=e=>new Error(e);function be(e,t,...i){e||function(e,...t){const i=ve(e);if("object"==typeof i)throw i;throw me(i||"Assertion error",...t)}(t,...i)}function Ie(e,t,...i){return be(e,t,...i),e}function ve(e){return void 0===e?"":"string"==typeof e?e:e()}function we(e,t,i){const n=ve(e);if("object"==typeof n)throw n;return`${n?`${n}: `:""}${t} ${function(e){return void 0===e?"<undefined>":"symbol"==typeof e?e.toString():null===e?"<null>":`<${typeof e}:${e}>`}(i)}`}function 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 _e(){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()))}function qe(e=18,t="",i=""){be(t.length<e,"ID prefix is too long"),be(!t||!i||i.length>t.length,"Invalid 'prefix'/'prefixToAvoid' config");let n="";for(let t=0;t<e;t++)n+=_e();if(t.length>0&&(n=t+n.substring(t.length)),i)for(;n.charAt(t.length)===i[t.length];)n=n.substring(0,t.length)+_e()+n.substring(t.length+1);return n}function Ce({count:e,length:t,prefix:i}){be(e>=0,`Invalid IDs count: ${e}`);const n=new Set;for(;n.size<e;)n.add(qe(t||18,i||""));return[...n]}const De=["groupId","appId","integrationId","profileId","index","text","filePathInBucket"];function Oe(e){if(function(e){return"$and"in e}(e))for(const t of e.$and)Oe(t);else if(function(e){return"$or"in e}(e))for(const t of e.$or)Oe(t);else for(const t in e){if(!/^[a-zA-Z0-9_]+$/.test(t))throw new Error(`Invalid metadata filter key ${t} - can only contain letters, numbers, and underscores`);if(De.includes(t))throw new Error(`Invalid metadata filter key ${t} - cannot be an internal key. Internal keys: ${De.join(", ")}`);const i=e[t];if("object"!=typeof i&&"string"!=typeof i&&"number"!=typeof i&&"boolean"!=typeof i)throw new Error(`Invalid metadata filter value for key ${t} - cannot be of type ${typeof i}`)}}function Ee(e,t,i){const n=atob(e),s=new Uint8Array(n.length);for(let e=0;e<n.length;e++)s[e]=n.charCodeAt(e);return new File([s],t,{type:i||"application/octet-stream"})}class Ae{constructor(e,t,i,n,s,r,o,a=()=>{}){this.agentId=e,this.agentApiKey=t,this.ongoingChatSequences=i,this.rpcManager=n,this.socketManager=s,this.jobClient=r,this.backendFunctionManager=o,this.getMetricAnnotations=a}async get(){const e=await this.post("ai/agent/getAgent",{agentId:this.agentId});return e?.agent}async upsert(e){await this.post("ai/agent/upsertAgent",{...e,id:this.agentId})}async delete(){await this.post("ai/agent/deleteAgent",{agentId:this.agentId})}async updateInstructions(e){await this.setAgentOptionInPath("instructions",e)}async updateModel(e){await this.setAgentOptionInPath("model",e)}async updateConnectedAgents(e){await this.setAgentOptionInPath("connectedAgents",e)}async updateGuardrails(e){const t=await this.get();be(t,"Agent not found");const i={...t.options?.guardrails,...e};await this.setAgentOptionInPath("guardrails",i)}async updateCustomGuardrails(e){await this.post("ai/agent/upsertCustomGuardrails",{agentId:this.agentId,customGuardrail:e})}async deleteCustomGuardrail(){await this.post("ai/agent/deleteCustomGuardrails",{agentId:this.agentId})}async regenerateApiKey(){return await this.post("ai/agent/regenerateApiKey",{agentId:this.agentId})}async getApiKey(){return await this.post("ai/agent/getApiKey",{agentId:this.agentId})}async listRevisions(){return await this.post("ai/agent/listRevisions",{agentId:this.agentId})}async restoreRevision(e){await this.post("ai/agent/restoreRevision",{agentId:this.agentId,revisionNumber:e})}async deleteRevision(e){await this.post("ai/agent/deleteRevision",{agentId:this.agentId,revisionNumber:e})}chat(e,t,i){return this.chatInternal(e,t,i).responseStream}async transcribeAndChat(e,t,i){const n=this.chatInternal(e,t,i),s=await Ie(n.serverResponse,"TRANSCRIPTION_RESPONSE_NOT_FOUND");return{responseStream:n.responseStream,transcribedPrompt:s.transcribedPrompt}}async ask(e,t,i){const n=await this.askInternal(e,!1,t,i);return this.replaceFileTags(n.responseString,n.annotations)}async askWithAnnotations(e,t,i){const n=await this.askInternal(e,!1,t,i);return{responseString:n.responseString,annotations:n.annotations}}async askAsync(e,t,i){const n={agentId:this.agentId,prompt:e,options:this.withMetricAnnotations(i),jobId:t};await this.post("ai/chatbot/askAsync",n)}observeStatusUpdates(e){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"aiStatus"===e.type&&e.agentId===this.agentId),g(t=>!e||t.jobId===e),fe(e=>({agentId:this.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.messageId})))}async getChatHistory(e){const t={agentId:this.agentId,memoryId:e};return(await this.post("ai/chatbot/history",t)).messages}async transcribeAndAsk(e,t,i){return await this.askInternal(e,!1,t,i)}async transcribeAndAskWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,transcribedPrompt:n.transcribedPrompt,voiceResponseFile:Ee(s.base64File,`voice.${s.extension}`,s.mimeType)}}async askWithVoiceResponse(e,t,i){const n=await this.askInternal(e,!0,t,i),s=n.voiceResponse;return{responseString:n.responseString,voiceResponseFile:Ee(s.base64File,`voice.${s.extension}`,s.mimeType)}}async setAgentOptionInPath(e,t){await this.post("ai/agent/setAgentOptionInPath",{agentId:this.agentId,path:e,value:t})}async addConnectedIntegration(e){await this.post("ai/agent/addConnectedIntegration",{agentId:this.agentId,integrationId:e.integrationId,integrationType:e.integrationType,description:e.description??""})}async addConnectedAgent(e){await this.post("ai/agent/addConnectedAgent",{agentId:this.agentId,connectedAgentId:e.agentId,description:e.description})}async addConnectedKnowledgeBase(e){await this.post("ai/agent/addConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e.knowledgeBaseId,description:e.description})}async addFunction(e){await this.post("ai/agent/addFunction",{agentId:this.agentId,functionId:e})}async removeConnectedAgent(e){await this.post("ai/agent/removeConnectedAgent",{agentId:this.agentId,connectedAgentId:e})}async removeConnectedIntegration(e){await this.post("ai/agent/removeConnectedIntegration",{agentId:this.agentId,integrationId:e})}async removeConnectedKnowledgeBase(e){await this.post("ai/agent/removeConnectedKnowledgeBase",{agentId:this.agentId,knowledgeBaseId:e})}async removeFunction(e){await this.post("ai/agent/removeFunction",{agentId:this.agentId,functionId:e})}async setAgentDescription(e){await this.post("ai/agent/setAgentDescription",{agentId:this.agentId,description:e})}async provideFeedback(e){const t={agentId:this.agentId,feedback:e};return await this.backendFunctionManager.executeFunction("provideAgentFeedback",t)}async build(e,t,i){const n={agentId:this.agentId,request:e,memoryId:t,options:i};return await this.backendFunctionManager.executeFunction("buildAgent",n)}replaceFileTags(e,t={}){let i=e;for(const[e,n]of Object.entries(t)){let t="";const s=n.aiFileUrl.fileName?n.aiFileUrl.fileName:n.aiFileUrl.url;switch(n.aiFileUrl.type){case"image":t=``;break;case"document":t=`[${s}](${n.aiFileUrl.url})`}const r=`\${id:${e}}`;i=i.replaceAll("`"+r+"`",t).replaceAll(r,t)}return i}async askInternal(e,t,i,n){if(i?.contextMetadataFilter&&Oe(i.contextMetadataFilter),i?.contextMetadataFilterForKnowledgeBase)for(const e in i.contextMetadataFilterForKnowledgeBase)Oe(i.contextMetadataFilterForKnowledgeBase[e]);n=n||Se(),i=this.withMetricAnnotations({...Re,...i||{}});const s="string"==typeof e;let r="ai/chatbot/";r+=s||t?!s&&t?"transcribeAndAskWithVoiceResponse":s&&t?"askWithVoiceResponse":"ask":"transcribeAndAsk";const o={agentId:this.agentId,prompt:s?e:void 0,options:i,jobId:n},a=s?void 0:[e];return await this.post(r,o,a,"file"),await this.jobClient.awaitJob(n)}chatInternal(e,t,i){if(this.socketManager.notifyWebSocketIsNeeded(),t?.contextMetadataFilter&&Oe(t.contextMetadataFilter),t?.contextMetadataFilterForKnowledgeBase)for(const e in t.contextMetadataFilterForKnowledgeBase)Oe(t.contextMetadataFilterForKnowledgeBase[e]);const n=Se(),s=void 0===(t=this.withMetricAnnotations({...Re,...t||{}})).smoothTyping||t.smoothTyping;let o="";const a=new r,u=new r;this.ongoingChatSequences[n]=u;let l=-1;u.pipe(R(({tokenIndex:e})=>{void 0!==e&&e<l&&console.warn("Received token index out of order",e,l),void 0!==e&&(l=e)}),c(({value:e,complete:t,annotations:i})=>t?S({value:e,complete:t,annotations:i}):S(e).pipe(s?h(0):R(),fe(e=>({value:e,complete:!1,annotations:void 0})))),A(({complete:e})=>!e,!0)).subscribe({next:({value:e,complete:t,annotations:i})=>{o+=e,t&&i&&(o=this.replaceFileTags(o,i)),a.next(o)},error:e=>{console.error(e)},complete:()=>{a.complete()}});const d="string"==typeof e;i=i||Se();const p={agentId:this.agentId,jobId:i,prompt:d?e:void 0,options:t,clientRequestId:n},g={responseStream:a.pipe(f(()=>{delete this.ongoingChatSequences[n]}),T())};let y;return y=d?this.post("ai/chatbot/chat",p).catch(e=>{a.error(e),a.complete()}):this.post("ai/chatbot/transcribeAndChat",p,[e],"file").catch(e=>{throw a.error(e),a.complete(),e}),g.serverResponse=y.then(()=>this.jobClient.awaitJob(i)).catch(e=>{a.error(e),a.complete()}),g}withMetricAnnotations(e){const t=this.getMetricAnnotations();return t?{...e||{},metricAnnotations:{...t,...e?.metricAnnotations}}:e}async post(e,t,i=[],n="files"){const s={};return this.agentApiKey&&(s["x-squid-agent-api-key"]=`Bearer ${this.agentApiKey}`),this.rpcManager.post(e,t,i,n,s)}}const Re={smoothTyping:!0,responseFormat:"text"};class je{constructor(e,t,i,n,s=()=>{}){this.rpcManager=e,this.socketManager=t,this.jobClient=i,this.backendFunctionManager=n,this.getMetricAnnotations=s,this.ongoingChatSequences={},this.socketManager.observeNotifications().pipe(g(e=>"aiChatbot"===e.type),fe(e=>e)).subscribe(e=>{this.handleChatResponse(e)})}agent(e,t=void 0){return new Ae(e,t?.apiKey,this.ongoingChatSequences,this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)}async listAgents(){return(await this.rpcManager.post("ai/agent/listAgents",{})).agents}async handleChatResponse(e){const t=this.ongoingChatSequences[e.clientRequestId];if(!t)return;const{token:i,complete:n,tokenIndex:s,annotations:r}=e.payload;if(n&&!i.length)t.next({value:"",complete:!0,tokenIndex:void 0,annotations:r});else if(i.match(/\[.*?]\((.*?)\)/g))t.next({value:i,complete:n,tokenIndex:void 0===s?void 0:s,annotations:r});else for(let e=0;e<i.length;e++)t.next({value:i[e],complete:n&&e===i.length-1,tokenIndex:void 0===s?void 0:s,annotations:r})}}const Fe="__squid_empty_chat_id";class Ne{constructor(e){this.rpcManager=e}async transcribe(e,t={modelName:"whisper-1"}){return this.rpcManager.post("ai/audio/transcribe",t,[e])}async createSpeech(e,t){const i={input:e,options:t},n=await this.rpcManager.post("ai/audio/createSpeech",i);return Ee(n.base64File,`audio.${n.extension}`,n.mimeType)}}class xe{constructor(e,t){this.provider=e,this.rpcManager=t}async uploadFile(e){const t={provider:this.provider,expirationInSeconds:e.expirationInSeconds};return(await this.rpcManager.post("ai/files/uploadFile",t,[e.file],"file")).fileId}async deleteFile(e){const t={fileId:e,provider:this.provider};return(await this.rpcManager.post("ai/files/deleteFile",t)).deleted}}class Pe{constructor(e){this.rpcManager=e}async generate(e,t){const i={prompt:e,options:t};return await this.rpcManager.post("ai/image/generate",i)}async removeBackground(e){return await this.rpcManager.post("ai/image/removeBackground",{},[e])}}function Be(e){for(const t in e){const i=e[t];be("string"==typeof i||"number"==typeof i||"boolean"==typeof i||void 0===i,`Invalid metadata value for key ${t} - cannot be of type ${typeof i}`),be(/^[a-zA-Z0-9_]+$/.test(t),`Invalid metadata key ${t} - can only contain letters, numbers, and underscores`)}}class Qe{constructor(e,t,i){this.knowledgeBaseId=e,this.rpcManager=t,this.jobClient=i}async getKnowledgeBase(){return(await this.rpcManager.post("ai/knowledge-base/getKnowledgeBase",{knowledgeBaseId:this.knowledgeBaseId})).knowledgeBase}async listKnowledgeBases(){return(await this.rpcManager.post("ai/knowledge-base/listKnowledgeBases",void 0)).knowledgeBases}async upsertKnowledgeBase(e){await this.rpcManager.post("ai/knowledge-base/upsertKnowledgeBase",{knowledgeBase:{id:this.knowledgeBaseId,...e}})}async delete(){await this.rpcManager.post("ai/knowledge-base/deleteKnowledgeBase",{id:this.knowledgeBaseId})}async listContexts(e){return(await this.rpcManager.post("ai/knowledge-base/listContexts",{id:this.knowledgeBaseId,truncateTextAfter:e})).contexts||[]}async listContextIds(){return(await this.rpcManager.post("ai/knowledge-base/listContextIds",{id:this.knowledgeBaseId})).contextIds||[]}async getContext(e){return(await this.rpcManager.post("ai/knowledge-base/getContext",{knowledgeBaseId:this.knowledgeBaseId,contextId:e})).context}async deleteContext(e){await this.deleteContexts([e])}async deleteContexts(e){await this.rpcManager.post("ai/knowledge-base/deleteContexts",{knowledgeBaseId:this.knowledgeBaseId,contextIds:e})}async upsertContext(e,t){const{failures:i}=await this.upsertContexts([e],t?[t]:void 0);return i.length>0?{failure:i[0]}:{}}async upsertContexts(e,t){for(const t of e)t.metadata&&Be(t.metadata);const i=Se();return await this.rpcManager.post("ai/knowledge-base/upsertContexts",{knowledgeBaseId:this.knowledgeBaseId,contextRequests:e,jobId:i},t),await this.jobClient.awaitJob(i)}async search(e){const t={options:e,prompt:e.prompt,knowledgeBaseId:this.knowledgeBaseId};return(await this.rpcManager.post("ai/knowledge-base/search",t)).chunks}async searchContextsWithPrompt(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithPrompt",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async searchContextsWithContextId(e){return(await this.rpcManager.post("ai/knowledge-base/searchContextsWithContextId",{...e,knowledgeBaseId:this.knowledgeBaseId})).results}async downloadContext(e){const t={knowledgeBaseId:this.knowledgeBaseId,contextId:e};return await this.rpcManager.post("ai/knowledge-base/downloadContext",t)}}class Le{constructor(e,t){this.rpcManager=e,this.jobClient=t}knowledgeBase(e){return new 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 He="Agent Response",Ge="Accessing Knowledge Base",We=["user","ai"],Ke=["cohere","none"],Je=["anthropic","bedrock","claude-code","codex","cohere","flux","gemini","openai","grok","stability","voyage","mistral","textract","vertex","external"],ze=["gpt-5.4-mini","gpt-5.4-nano","gpt-5.5","gpt-5.5-pro"],Ve=["gemini-3.1-pro","gemini-3.5-flash","gemini-3.1-flash-lite"],Ye=["grok-4","grok-4-1-fast-reasoning","grok-4-1-fast-non-reasoning"],Ze=["claude-haiku-4-5-20251001","claude-opus-4-8","claude-sonnet-4-6"],Xe=[...ze,...Ze,...Ve,...Ye];function et(e){return Xe.includes(e)}const tt=["text-embedding-3-small"],it=["voyage-3-large"],nt=["titan-embed-text-v2"],st=[...tt,...it,...nt];function rt(e){return st.includes(e)}function ot(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e&&"dimensions"in e}const at=["gpt-image-1","gpt-image-1-mini","gpt-image-1.5","gpt-image-2","gpt-image-2-2026-04-21","chatgpt-image-latest"],ct=["whisper-1","gpt-4o-transcribe","gpt-4o-mini-transcribe"],ut=["tts-1","tts-1-hd","gpt-4o-mini-tts"],lt=[...ct,...ut],dt=["stable-diffusion-core"],ht=["flux-pro-1.1","flux-kontext-pro"],pt=[...at,...dt,...ht],gt=[...ct],ft=[...ut],yt=["mp3","opus","aac","flac","wav","pcm"],mt=["vendor","connector","custom"];function bt(e){return"object"==typeof e&&null!==e&&"integrationId"in e&&"model"in e}const It=["postgres","mongoAtlas"],vt=["contextual","basic"],wt=["secret","regular"];function St(e){return!!e&&"object"==typeof e&&"__squid_placeholder__"in e}const Mt=["dev","prod"],kt="built_in_agent",Tt={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},_t="ai_agents",qt=["active_directory","ai_agents","ai_chatbot","algolia","alloydb","api","auth0","bedrock","azure_blob","azure_cosmosdb","azure_postgresql","azure_sql","bigquery","built_in_azure_blob","built_in_db","built_in_gcs","built_in_queue","built_in_s3","cassandra","clickhouse","cloudsql","cockroach","cognito","connected_knowledgebases","confluence","confluent","datadog","db2","descope","documentdb","azure-entra-external-id","dynamodb","elasticsearch","firebase_auth","firestore","gcs","github","google_calendar","google_docs","google_drive","graphql","hubspot","jira","jira_jsm","jwt_hmac","jwt_rsa","kafka","keycloak","linear","mariadb","monday","mongo","mssql","databricks","mysql","newrelic","okta","onedrive","oracledb","pinecone","postgres","redis","s3","salesforce","sap_hana","sentry","snowflake","spanner","xata","zendesk","servicenow_csm","freshdesk","mail","slack","mcp","a2a","legend","teams","openai_compatible","openai_compatible_embedding","sharepoint","vertex"],Ct=["bigquery","built_in_db","clickhouse","cockroach","dynamodb","mongo","mssql","databricks","mysql","oracledb","postgres","sap_hana","snowflake","elasticsearch","legend"],Dt=["auth0","jwt_rsa","jwt_hmac","cognito","okta","keycloak","descope","firebase_auth","azure-entra-external-id"],Ot=["graphql"],Et=["api"],At=["data","api","graphql"],Rt="built_in_db",jt="built_in_queue",Ft="built_in_storage",Nt=[Rt,jt,Ft];function xt(e){return Nt.includes(e)}const Pt=["squid_functionExecution_count","squid_functionExecution_time"],Bt=["sum","max","min","average","median","p95","p99","count"],Qt=["user","squid"],Lt=["align-by-start-time","align-by-end-time"],Ut=["return-no-result-groups","return-result-group-with-default-values"],$t="__docId__",Ht=["in","not in","array_includes_some","array_includes_all","array_not_includes"],Gt=[...Ht,"==","!=",">=","<=",">","<","like","not like","like_cs","not like_cs"],Wt=["us-east-1.aws","ap-south-1.aws","us-central1.gcp"],Kt=["CONNECTED","DISCONNECTED","REMOVED"];class Jt{constructor(e,t,i,n,s=()=>{}){this.socketManager=e,this.rpcManager=t,this.jobClient=i,this.backendFunctionManager=n,this.getMetricAnnotations=s}agent(e=kt,t=void 0){return this.getAiAgentClient().agent(e,t)}knowledgeBase(e){return this.getAiKnowledgeBaseClient().knowledgeBase(e)}async listAgents(){return this.getAiAgentClient().listAgents()}async listKnowledgeBases(){return this.getAiKnowledgeBaseClient().listKnowledgeBases()}async listFunctions(){const e=await this.rpcManager.post("/application/getBundleMetadata",{});return Object.values(e.aiFunctions||{})}async listChatModels(e){return(await this.rpcManager.post("ai/settings/listChatModels",e??{})).models}image(){return new Pe(this.rpcManager)}audio(){return new Ne(this.rpcManager)}matchMaking(){return new Ue(this.rpcManager)}files(e){return new xe(e,this.rpcManager)}executeAiQuery(e,t,i){const n={integrationId:e,prompt:t,options:i};return this.rpcManager.post("ai/query/executeDataQuery",n)}executeAiApiCall(e,t,i,n){const s={integrationId:e,prompt:t,options:i,sessionContext:n};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 i={providerType:e,secretKey:t};return(await this.rpcManager.post("ai/settings/setAiProviderApiKeySecret",i)).settings}observeStatusUpdates(e){return this.socketManager.notifyWebSocketIsNeeded(),this.socketManager.observeNotifications().pipe(g(e=>"aiStatus"===e.type),g(t=>!e||t.jobId===e),w(e=>({agentId:e.agentId,jobId:e.jobId,chatId:e.chatId,tags:e.payload.tags,title:e.payload.title,body:e.payload.body,parentStatusUpdateId:e.payload.parentStatusUpdateId,messageId:e.messageId})))}getAiAgentClient(){return this.aiAgentClient||(this.aiAgentClient=new je(this.rpcManager,this.socketManager,this.jobClient,this.backendFunctionManager,this.getMetricAnnotations)),this.aiAgentClient}getAiKnowledgeBaseClient(){return this.aiKnowledgeBaseClient||(this.aiKnowledgeBaseClient=new Le(this.rpcManager,this.jobClient)),this.aiKnowledgeBaseClient}}const zt={headers:{},queryParams:{},pathParams:{}};class Vt{constructor(e){this.rpcManager=e}async get(e,t,i){return this.request(e,t,void 0,i,"get")}async post(e,t,i,n){return this.request(e,t,i,n,"post")}async delete(e,t,i,n){return this.request(e,t,i,n,"delete")}async patch(e,t,i,n){return this.request(e,t,i,n,"patch")}async put(e,t,i,n){return this.request(e,t,i,n,"put")}async request(e,t,i,n,s){const r={integrationId:e,endpointId:t,body:i,options:{...zt,...this.convertOptionsToStrings(n||{})},overrideMethod:s};return await this.rpcManager.rawPost("api/callApi",r,void 0,void 0,!1)}convertOptionsToStrings(e){return{headers:this.convertToStrings(e.headers),queryParams:this.convertToStrings(e.queryParams),pathParams:this.convertToStrings(e.pathParams)}}convertToStrings(e){if(!e)return{};const t=Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,String(t)]);return Object.fromEntries(t)}}class Yt{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 Zt=/[.\[\]]/;function Xt(e,t){if(!e)return;const i=t.split(Zt);let n,s=e;for(;s&&i.length;){const e=i.shift();if(e){if("object"!=typeof s||!(e in s))return;n=s[e],s=n}}return n}function ei(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function ti(e,t,i,n="."){const s=t.split(n);let r=e;for(;s.length;){const e=Ie(s.shift());if(s.length){const t=r[e],i=ei(t)?ci(t)??{}:{};r[e]=i,r=i}else r[e]=i}}function ii(e,t,i="."){const n=t.split(i);let s=e;for(;n.length;){const e=Ie(n.shift());if(n.length){const t=ei(s[e])?ci(s[e])??{}:{};s[e]=t,s=t}else delete s[e]}}function ni(e,t,i){if(e.has(t)){const n=e.get(t);e.delete(t),e.set(i,n)}}function si(e){return null==e}function ri(e,t){if(e===t)return!0;if(null===e||null===t)return!1;const i=typeof e;if(i!==typeof t)return!1;if("object"!==i)return e===t;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(const i of n)if(!s.includes(i)||!ri(e[i],t[i]))return!1;return!0}function oi(e,t){const i=new Array(e.length);for(let n=0;n<e.length;n++)i[n]=ai(e[n],t);return i}function ai(e,t){const i=t?t(e):void 0;if(void 0!==i)return i;if("object"!=typeof e||null===e)return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return oi(e,t);if(e instanceof Map)return new Map(oi(Array.from(e),t));if(e instanceof Set)return new Set(oi(Array.from(e),t));if(ArrayBuffer.isView(e))return n=e,"undefined"!=typeof Buffer&&n instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length);var n;const s={};for(const i in e)Object.hasOwnProperty.call(e,i)&&(s[i]=ai(e[i],t));return s}function ci(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 ui(e,t){if(e===t||si(e)&&si(t))return 0;if(si(e))return-1;if(si(t))return 1;const i=typeof e,n=typeof t;return i!==n?i<n?-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 li(e,t){return e.reduce((e,i)=>{const n=t(i);return e[n]?e[n].push(i):e[n]=[i],e},{})}function di(e){if(Array.isArray(e))return e.map(e=>di(e));if("object"!=typeof e||null===e||e instanceof Date)return e;const t=Object.keys(e),i={};return t.sort().forEach(t=>{i[t]=di(e[t])}),i}function hi(e){return pi(di(e))}function pi(e){if(void 0===e)return null;const t=ai(e,e=>function(e){return"[object Date]"===Object.prototype.toString.call(e)}(e)?{$date:e.toISOString()}:void 0);return JSON.stringify(t)}function gi(e){return ai(JSON.parse(e),e=>{if(null===e||"object"!=typeof e)return;const t=e,i=t.$date;return i&&1===Object.keys(t).length?new Date(i):void 0})}function fi(e){if(void 0===e)throw new Error("INVALID_ENCODE_VALUE");const t=pi(e);if("undefined"!=typeof Buffer)return Buffer.from(t,"utf8").toString("base64");{const e=(new TextEncoder).encode(t);let i="";for(let t=0;t<e.length;t++)i+=String.fromCharCode(e[t]);return btoa(i)}}const yi=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0},mi=(e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(pi(e[i])!==pi(t[i]))return!1;return!0};class bi{constructor(e){this.options=e}get(e){const t=this.cachedEntry,i=this.options.argsComparator||yi,n=this.options.valueExpirationMillis||1/0;return t&&Date.now()<t.cacheTimeMillis+n&&i(t.args,e)?{found:!0,value:t.result}:{found:!1}}set(e,t){this.cachedEntry={args:e,result:t,cacheTimeMillis:Date.now()}}}function Ii(e){const t=[],i=[];let n=0;for(const s of e)if("undefined"!=typeof File)if(s instanceof File){i.push(s);const e={type:"file",__squid_placeholder__:!0,fileIndex:n++};t.push(e)}else if(vi(s)){const e={type:"fileArray",__squid_placeholder__:!0,fileIndexes:s.map((e,t)=>(i.push(s[t]),n++))};t.push(e)}else t.push(s);else t.push(s);return{argsArray:t,fileArray:i}}function vi(e){return"undefined"!=typeof File&&Array.isArray(e)&&!!e.length&&e.every(e=>e instanceof File)}class wi{constructor(e){this.rpcManager=e,this.inFlightDedupCalls=[]}executeFunction(e,...t){return this.executeFunctionWithHeaders(e,{},...t)}executeFunctionWithHeaders(e,t,...i){const{argsArray:n,fileArray:s}=Ii(i),r="string"==typeof e?e:e.functionName,o="string"==typeof e?void 0:e.caching,a=o?.cache;if(a){const e=a.get(n);if(e.found)return Promise.resolve(e.value)}const c="string"==typeof e?void 0:e.deduplication;if(c){const e="boolean"==typeof c?yi:c.argsComparator,t=this.inFlightDedupCalls.find(t=>t.functionName===r&&e(t.args,n));if(t)return t.promise}const u=this.createExecuteCallPromise(r,n,s,a,t);return c&&(this.inFlightDedupCalls.push({functionName:r,args:n,promise:u}),u.finally(()=>{this.inFlightDedupCalls=this.inFlightDedupCalls.filter(e=>e.promise!==u)})),u}async createExecuteCallPromise(e,t,i,n,s={}){const r=`backend-function/execute?${encodeURIComponent(e)}`,o={functionName:e,paramsArrayStr:pi(t)},a=gi((await this.rpcManager.post(r,o,i.length>0?i:[],"files",s)).payload);if(a?.__isSquidBase64File__){const e=a;return Ee(e.base64,e.filename,e.mimetype)}return n&&n.set(t,a),a}}function Si(e){if("undefined"!=typeof globalThis)return globalThis[e]}function Mi(){if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;if("undefined"!=typeof self)return self;throw new Error("Unable to locate global object")}void 0===Mi()?.SQUID_LOG_DEBUG_ENABLED&&function(e=!0){Mi().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 ki{static debug(...e){(function(){const e=Mi();return!0===e?.SQUID_LOG_DEBUG_ENABLED})()&&console.debug(`${function(){if(function(){const e=Mi();return!0!==e?.SQUID_LOG_TIMESTAMPS_DISABLED}()){const e=new Date;return`[${e.toLocaleTimeString()}.${e.getMilliseconds()}] squid`}return"squid"}()} DEBUG`,...e)}}class Ti{constructor(e){this.destructManager=e,this.clientTooOldSubject=new t(!1),this.isTenant=!0===Mi().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(_(1),g(e=>!e),w(()=>{}))}getClientId(){return this.clientIdSubject.value}isClientTooOld(){return this.clientTooOldSubject.value}generateClientRequestId(){const e=Mi()[qi];return e?e():Se()}generateClientId(){const e=Mi()[_i];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 _i="SQUID_CLIENT_ID_GENERATOR",qi="SQUID_CLIENT_REQUEST_ID_GENERATOR",Ci="__squidId";function Di(e){return gi(e)}function Oi(...e){const[t,i,n]=e,s="object"==typeof t?t:{docId:t,collectionName:i,integrationId:n};return s.integrationId||(s.integrationId=void 0),hi(s)}function Ei(e,t,i){if(e=e instanceof Date?e.getTime():e??null,t=t instanceof Date?t.getTime():t??null,"=="===i)return ri(e,t);if("!="===i)return!ri(e,t);switch(i){case"<":return!si(e)&&(!!si(t)||t<e);case"<=":return!!si(t)||!si(e)&&t<=e;case">":return!si(t)&&(!!si(e)||t>e);case">=":return!!si(e)||!si(t)&&t>=e;case"like":return"string"==typeof t&&"string"==typeof e&&Ai(t,e,!1);case"not like":return!("string"==typeof t&&"string"==typeof e&&Ai(t,e,!1));case"like_cs":return"string"==typeof t&&"string"==typeof e&&Ai(t,e,!0);case"not like_cs":return!("string"==typeof t&&"string"==typeof e&&Ai(t,e,!0));case"array_includes_some":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.some(e=>Ie(i,"VALUE_CANNOT_BE_NULL").some(t=>ri(t,e)))}case"array_includes_all":{const i=t;return Array.isArray(e)&&Array.isArray(t)&&e.every(e=>Ie(i,"VALUE_CANNOT_BE_NULL").some(t=>ri(t,e)))}case"array_not_includes":{const i=t;return Array.isArray(t)&&Array.isArray(e)&&e.every(e=>!Ie(i,"VALUE_CANNOT_BE_NULL").some(t=>ri(t,e)))}default:throw new Error(`Unsupported operator comparison: ${i}`)}}function Ai(e,t,i){i||(e=e.toLowerCase(),t=t.toLowerCase());const n=function(e){let t="";for(let i=0;i<e.length;++i)"\\"===e[i]?i+1<e.length&&["%","_"].includes(e[i+1])?(t+=e[i+1],i++):i+1<e.length&&"\\"===e[i+1]?(t+="\\\\",i++):t+="\\":"%"===e[i]?t+="[\\s\\S]*":"_"===e[i]?t+="[\\s\\S]":("/-\\^$*+?.()[]{}|".includes(e[i])&&(t+="\\"),t+=e[i]);return t}(t);return new RegExp(`^${n}$`).test(e)}function Ri(e,t){return`${e}_${t}`}function ji(e){return"fieldName"in e}function Fi(e){return"docIds"in e}function Ni(e,t,i){const n=e.docIds.some(e=>Object.entries(e).every(([e,n])=>Ei(n,i(t,e)??null,"==")));switch(e.operator){case"==":case"in":return n;case"!=":case"not in":return!n}}function xi(e,t,i,n){const s=e,r=n(t,$t);if("string"!=typeof r)return Ei(s,r??null,i);let o;try{o=gi(r)}catch{return Ei(s,r,i)}if(!o||"object"!=typeof o||Array.isArray(o))return Ei(s,r,i);const a=Object.keys(o);if(1===a.length&&"__id"===a[0]){const e=o.__id,t=function(e){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const t=Object.keys(e);return 1===t.length&&"__id"===t[0]?e.__id:hi(e)}if("string"==typeof e)try{const t=gi(e);if(t&&"object"==typeof t&&!Array.isArray(t)){const e=Object.keys(t);if(1===e.length&&"__id"===e[0])return t.__id}}catch{}return e}(s);return Ei(t,e,i)}if(1===a.length){const e=function(e,t){if("object"==typeof e&&null!==e&&!Array.isArray(e)){const i=Object.keys(e);if(1===i.length&&i[0]===t)return e[t]}if("string"==typeof e)try{const i=gi(e);if(i&&"object"==typeof i&&!Array.isArray(i)){const e=Object.keys(i);if(1===e.length&&e[0]===t)return i[t]}}catch{}return e}(s,a[0]);return Ei(e,o[a[0]],i)}return"object"!=typeof s||null===s||Array.isArray(s)?Ei(s,r,i):Ei(hi(s),r,i)}class Pi{constructor(e,t,i,n){this._squidDocId=e,this.dataManager=t,this.queryBuilderFactory=i,this.projectFields=n,this.refId=Se()}setInMemoryData(e){this.inMemoryData=e}get squidDocId(){return this._squidDocId}get data(){return ai(this.dataRef)}get dataRef(){if(void 0!==this.inMemoryData)return this.inMemoryData;const e=Ie(this.dataManager.getProperties(this.squidDocId),()=>{const{collectionName:e,integrationId:t,docId:i}=Di(this.squidDocId);return`No data found for document reference: ${JSON.stringify({docId:i,collectionName:e,integrationId:t},null,2)}`});return this.projectFields?this.applyProjection(e):e}get hasData(){return this.dataManager.hasSufficientData(this.squidDocId,this.projectFields)}async snapshot(){if(this.hasSquidPlaceholderId())throw new Error("Cannot invoke snapshot of a document that was created locally without storing it on the server.");if(this.isTracked()&&this.hasData)return this.data;const e=await this.queryBuilderFactory.getForDocument(this.squidDocId).dereference().snapshot();return 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 i={};Object.entries(e).forEach(([e,t])=>{const n=void 0!==t?{type:"update",value:t}:{type:"removeProperty"};i[e]=[n]});const n={type:"update",squidDocIdObj:Di(this.squidDocId),properties:i};return this.dataManager.applyOutgoingMutation(n,t)}async setInPath(e,t,i){return this.update({[e]:ai(t)},i)}async deleteInPath(e,t){return this.update({[e]:void 0},t)}incrementInPath(e,t,i){const n={type:"applyNumericFn",fn:"increment",value:t},s={type:"update",squidDocIdObj:Di(this.squidDocId),properties:{[e]:[n]}};return this.dataManager.applyOutgoingMutation(s,i)}decrementInPath(e,t,i){return this.incrementInPath(e,-t,i)}async upsert(e,t){const i=Di(this.squidDocId),n=i.integrationId;let s=gi(i.docId);if(s[Ci]&&(s={}),n===Rt&&s.__id)try{const e=gi(s.__id);s={...s,...e}}catch{}const r={type:"insert",squidDocIdObj:i,properties:{...e,__docId__:i.docId,...s}};return this.dataManager.applyOutgoingMutation(r,t)}async insert(e,t){return this.upsert(e,t)}async delete(e){const t={type:"delete",squidDocIdObj:Di(this.squidDocId)};return this.dataManager.applyOutgoingMutation(t,e)}migrateDocIds(e){const t=e[this.squidDocId];t&&(this._squidDocId=t)}isTracked(){return this.dataManager.isTracked(this.squidDocId)}applyProjection(e){const t={},i=Ie(this.projectFields,"applyProjection called without projectFields"),{integrationId:n}=Di(this.squidDocId);"__id"in e&&(t.__id=e.__id),"__docId__"in e&&(t.__docId__=e.__docId__);const s=n===Rt?"__id":"__docId__";if(s in e){const i=e[s];if("string"==typeof i&&i.startsWith("{"))try{const e=gi(i);if("object"==typeof e&&null!==e)for(const[i,n]of Object.entries(e))i in t||(t[i]=n)}catch{}}for(const n of i)if(n.includes(".")){const i=Xt(e,n);void 0!==i&&ti(t,n,i)}else n in e&&(t[n]=e[n]);return t}hasSquidPlaceholderId(){const e=gi(this._squidDocId);if("object"==typeof e&&e.docId){const t=gi(e.docId);if("object"==typeof t&&Object.keys(t).includes(Ci))return!0}return!1}}class Bi{constructor(e,i={}){this.internalStateObserver=new t(null),this.firstElement=null,this.isDestroyed=new t(!1),this.snapshotSubject=new r,this.onFirstPage=!0,this.navigatingToLastPage=!1,this.lastElement=null,be(e.getSortOrders().length>0,"Unable to paginate results. Please specify a sort order."),this.snapshotSubject.pipe(C()).subscribe(e=>this.dataReceived(e)),this.templateSnapshotEmitter=e.clone(),this.paginateOptions={pageSize:100,subscribe:!0,...i},this.goToFirstPage()}unsubscribe(){this.isDestroyed.next(!0),this.isDestroyed.complete(),this.internalStateObserver.complete(),this.snapshotSubject.complete()}async prev(){return this.prevInternal(await this.waitForInternalState()),await this.waitForData()}async next(){const{numBefore:e,extractedData:t}=await this.waitForInternalState();return e+this.paginateOptions.pageSize<t.length&&(this.firstElement=t[e+this.paginateOptions.pageSize]),this.internalStateObserver.next(null),this.doNewQuery(t[e],!1),await this.waitForData()}async waitForData(){return this.internalStateToState(await this.waitForInternalState())}observeState(){return this.internalStateObserver.pipe(g(e=>null!==e),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||si(e)&&si(t))return 0;if(si(e))return-1;if(si(t))return 1;const i=this.templateSnapshotEmitter.getSortOrders();for(const{fieldName:n,asc:s}of i){const i=ui(Xt(e,n),Xt(t,n));if(0!==i)return s?i:-i}return 0}async dataReceived(e){const t=e.map(e=>this.templateSnapshotEmitter.extractData(e));if(0===e.length)return void(this.onFirstPage?this.internalStateObserver.next({numBefore:0,numAfter:0,data:e,extractedData:t}):this.goToFirstPage());if(null===this.firstElement)if(null!==this.lastElement){const i=t.filter(e=>1===this.compareObjects(e,this.lastElement)).length;this.firstElement=t[e.length-i-this.paginateOptions.pageSize],this.lastElement=null}else this.navigatingToLastPage&&(this.firstElement=t[e.length-this.paginateOptions.pageSize],this.navigatingToLastPage=!1);const i=t.filter(e=>-1===this.compareObjects(e,this.firstElement)).length,n=Math.max(0,e.length-i-this.paginateOptions.pageSize);i!==e.length?this.internalStateObserver.next({numBefore:i,numAfter:n,data:e,extractedData:t}):this.prevInternal({numBefore:i,numAfter:n,data:e,extractedData:t})}doNewQuery(e,t){if(this.onFirstPage=!1,t){const t=this.templateSnapshotEmitter.clone().limit(3*this.paginateOptions.pageSize).flipSortOrder();e&&t.addCompositeCondition(this.templateSnapshotEmitter.getSortOrders().map(t=>({fieldName:t.fieldName,operator:t.asc?"<=":">=",value:Xt(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:Xt(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),O(1))))}internalStateToState(e){const{data:t,numBefore:i,numAfter:n,extractedData:s}=e;return{data:t.filter((e,t)=>-1!==this.compareObjects(s[t],this.firstElement)).slice(0,this.paginateOptions.pageSize),hasNext:n>0,hasPrev:i>0}}prevInternal(e){const{numBefore:t,numAfter:i,extractedData:n}=e;this.firstElement=null,this.lastElement=n[t-1],this.internalStateObserver.next(null),this.doNewQuery(n[n.length-i-1],!0)}}Error;class Qi{constructor(e,t,i,n,s){this.querySubscriptionManager=e,this.localQueryManager=t,this.documentReferenceFactory=i,this.documentIdentityService=n,this.mutationSender=s}getForDocument(e){const{collectionName:t,integrationId:i,docId:n}=Di(e),s=gi(n),r=this.get(t,i);for(const[e,t]of Object.entries(s))r.where(e,"==",t);return r}get(e,t){return new $i(e,t,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this,this.documentIdentityService,this.mutationSender)}}class Li{constructor(){this.containsEmptyInCondition=!1}eq(e,t){return this.where(e,"==",t)}neq(e,t){return this.where(e,"!=",t)}in(e,t){return this.where(e,"in",t)}nin(e,t){return this.where(e,"not in",t)}docId(e){return this.eq($t,e)}docIds(e){return this.in($t,e)}gt(e,t){return this.where(e,">",t)}gte(e,t){return this.where(e,">=",t)}lt(e,t){return this.where(e,"<",t)}lte(e,t){return this.where(e,"<=",t)}like(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"like_cs":"like",t)}notLike(e,t,i){return this.throwIfInvalidLikePattern(t),this.where(e,i?"not like_cs":"not like",t)}arrayIncludesSome(e,t){return this.where(e,"array_includes_some",t)}arrayIncludesAll(e,t){return this.where(e,"array_includes_all",t)}arrayNotIncludes(e,t){return this.where(e,"array_not_includes",t)}throwIfInvalidLikePattern(e){if(/\\(?![%_\\])/.test(e))throw new Error("Invalid pattern. Cannot have any \\ which are not followed by _, % or \\")}}class Ui{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 Ui(this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}projectFields(e){const t=this.queryBuilder.projectFields(e);return new Ui(t)}extractData(e){return e}serialize(){return{...this.queryBuilder.serialize(),dereference:!0}}paginate(e){return new Bi(this,e)}}class $i extends Li{constructor(e,t,i,n,s,r,o,a){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.localQueryManager=n,this.documentReferenceFactory=s,this.queryBuilderFactory=r,this.documentIdentityService=o,this.mutationSender=a,this.forceFetchFromServer=!1,this.query={integrationId:t,collectionName:e,conditions:[],limit:-1,sortOrder:[]}}get hash(){return fi(this.build())}where(e,t,i){if(be(Gt.includes(t),`Invalid operator: ${t}`),this.query.projectFields&&e!==$t&&!this.query.projectFields.includes(e))throw new Error(`Cannot filter by field '${e}' that is not included in projectFields.`);if("in"===t||"not in"===t){const n=Array.isArray(i)?[...i]:[i];"in"===t&&0===n.length&&(this.containsEmptyInCondition=!0);for(const i of n)this.query.conditions.push({fieldName:e,operator:"in"===t?"==":"!=",value:i});return this}return this.query.conditions.push({fieldName:e,operator:t,value:i}),this}limit(e){return function(e){var t;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 i=this.query.sortOrder.map(e=>e.fieldName);return be(ri(t.sort(),i.slice(0,t.length).sort()),"All fields in limitBy must be appear in the first fields in the sortBy list."),this.query.limitBy={limit:e,fields:t,reverseSort:!1},this}sortBy(e,t=!0){const i={asc:t,fieldName:e};if(function(e){if(!(e instanceof Object))throw new Error("Field sort has to be an object");const t=e;var i,n,s,r;be((i=t,n=["fieldName","asc"],!Array.isArray(i)&&[...Object.keys(i)].every(e=>n.includes(e))),"Field sort should only contain a fieldName and asc"),be((s=t.asc,r="boolean",Array.isArray(s)?s.every(e=>typeof e===r):typeof s===r),"Asc needs to be boolean")}(i),be(!this.query.sortOrder.some(t=>t.fieldName===e),`${e} already in the sort list.`),this.query.projectFields&&e!==$t&&!this.query.projectFields.includes(e))throw new Error(`Cannot sort by field '${e}' that is not included in projectFields.`);return this.query.sortOrder.push(i),this}projectFields(e){if(0===e.length&&"built_in_db"!==this.integrationId)throw new Error(`Empty projectFields is only allowed for built_in_db integration. For '${this.integrationId}', you must specify at least one field to project.`);if(this.query.projectFields)for(const t of e)if(!this.query.projectFields.includes(t))throw new Error(`Cannot project field '${t}' that is not in the existing projection. Subsequent projectFields calls must be subsets of the previous projection.`);const t=e;for(const e of this.query.sortOrder)if(e.fieldName!==$t&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including sort field '${e.fieldName}'.`);for(const e of this.query.conditions)if(ji(e)){if(e.fieldName!==$t&&!t.includes(e.fieldName))throw new Error(`Cannot set projectFields without including filter field '${e.fieldName}'.`)}else if(Fi(e));else for(const i of e.fields)if(i.fieldName!==$t&&!t.includes(i.fieldName))throw new Error(`Cannot set projectFields without including filter field '${i.fieldName}'.`);const i=this.clone();return i.query.projectFields=[...e],i}build(){const e=this.mergeConditions();return{...this.query,conditions:e}}getSortOrder(){return this.query.sortOrder}snapshot(){return m(this.snapshots(!1).pipe(l([])))}setForceFetchFromServer(){return this.forceFetchFromServer=!0,this}peek(){return this.localQueryManager.peek(this.build())}snapshots(e=!0){if(this.containsEmptyInCondition)return new t([]);const i=this.build(),n=i.projectFields;return this.querySubscriptionManager.processQuery(i,this.collectionName,{},{},e,this.forceFetchFromServer).pipe(fe(e=>e.map(e=>{be(1===Object.keys(e).length);const t=e[this.collectionName],i=Oi(Ie(t).__docId__,this.collectionName,this.integrationId),s=this.documentReferenceFactory.create(i,this.queryBuilderFactory,n);return this.querySubscriptionManager.detachedRecords.delete(e)&&s.setInMemoryData(t),s})))}changes(){let e,t=new Set;return this.snapshots().pipe(a(this.documentIdentityService.observeChanges().pipe(D(t=>(Object.entries(t).forEach(([t,i])=>{!function(e,t,i){const n=e[t];void 0!==n&&(e[i]=n,delete e[t])}(e||{},t,i)}),i)),q({}))),fe(([i])=>{let n=[];const s=[],r=[];if(e){for(const r of i){const i=r.squidDocId,o=r.dataRef;if(t.has(o))delete e[i],t.delete(o);else if(e[i]){s.push(r);const n=e[i];delete e[i],t.delete(n)}else n.push(r)}for(const e of t)r.push(e)}else n=i;e={},t=new Set;for(const n of i){const i=n.dataRef;e[n.squidDocId]=i,t.add(i)}return new Hi(n,s,r)}))}async delete(){return this.validateQueryDeleteModifiers(),this.containsEmptyInCondition?{deletedCount:0}:(be(this.mutationSender,"Query delete is not available on this query builder."),this.mutationSender.deleteQuery(this.build()))}dereference(){return new Ui(this)}getSortOrders(){return this.query.sortOrder}clone(){const e=new $i(this.collectionName,this.integrationId,this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.queryBuilderFactory,this.documentIdentityService,this.mutationSender);return e.query=ai(this.query),e.containsEmptyInCondition=this.containsEmptyInCondition,e}addCompositeCondition(e){if(!e.length)return this;if(this.query.projectFields)for(const t of e)if(t.fieldName!==$t&&!this.query.projectFields.includes(t.fieldName))throw new Error(`Cannot filter by field '${t.fieldName}' that is not included in projectFields.`);return this.query.conditions.push({fields:e}),this}flipSortOrder(){return this.query.sortOrder=this.query.sortOrder.map(e=>({...e,asc:!e.asc})),this.query.limitBy&&(this.query.limitBy.reverseSort=!this.query.limitBy.reverseSort),this}serialize(){return{type:"simple",dereference:!1,query:this.build()}}extractData(e){return e.dataRef}paginate(e){return new Bi(this,e)}validateQueryDeleteModifiers(){be(0===this.query.sortOrder.length&&-1===this.query.limit&&!this.query.limitBy,"query.delete() does not currently support sortBy, limit, or limitBy.")}mergeConditions(){const e=[],t=li(this.query.conditions.filter(ji)||[],e=>e.fieldName);for(const i of Object.values(t)){const t=li(i,e=>e.operator);for(const[i,n]of Object.entries(t)){if("=="===i||"!="===i){e.push(...n);continue}const t=[...n];t.sort((e,t)=>ui(e.value,t.value)),">"===i||">="===i?e.push(t[t.length-1]):e.push(t[0])}}return[...this.query.conditions.filter(e=>!ji(e)),...e]}}class Hi{constructor(e,t,i){this.inserts=e,this.updates=t,this.deletes=i}}class Gi extends Li{constructor(e,t,i,n,s,r,o,a,c,u,l){super(),this.collectionName=e,this.integrationId=t,this.querySubscriptionManager=i,this.documentReferenceFactory=n,this.queryBuilderFactory=s,this.rootAlias=r,this.latestAlias=o,this.leftToRight=a,this.joins=c,this.joinConditions=u,this.queryBuilder=l}where(e,t,i){return this.queryBuilder.where(e,t,i),this}limit(e){return this.queryBuilder.limit(e),this}getLimit(){return this.queryBuilder.getLimit()}sortBy(e,t=!0){return this.queryBuilder.sortBy(e,t),this}projectFields(e){throw new Error("projectFields is not yet supported for join queries")}join(e,t,i,n){const s=n?.leftAlias??this.latestAlias,r={...i,leftAlias:s,isInner:n?.isInner??!1},o={...this.leftToRight,[t]:[]};return o[s].push(t),new Gi(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,t,o,{...this.joins,[t]:e.build()},{...this.joinConditions,[t]:r},this.queryBuilder)}snapshot(){return m(this.snapshots(!1))}snapshots(e=!0){return this.queryBuilder.containsEmptyInCondition?new t([]):this.querySubscriptionManager.processQuery(this.build(),this.rootAlias,ai(this.joins),ai(this.joinConditions),e,!1).pipe(fe(e=>e.map(e=>{const t={};for(const[i,n]of Object.entries(e)){const e=i===this.rootAlias?this.collectionName:this.joins[i].collectionName,s=i===this.rootAlias?this.integrationId:this.joins[i].integrationId,r=n?Oi(n.__docId__,e,s):void 0;t[i]=r?this.documentReferenceFactory.create(r,this.queryBuilderFactory):void 0}return t})))}peek(){throw new Error("peek is not currently supported for join queries")}grouped(){return new Ji(this)}dereference(){return new Wi(this)}build(){return this.queryBuilder.build()}getSortOrders(){return this.queryBuilder.getSortOrders()}clone(){return new Gi(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,this.rootAlias,this.latestAlias,ai(this.leftToRight),ai(this.joins),ai(this.joinConditions),this.queryBuilder.clone())}addCompositeCondition(e){return this.queryBuilder.addCompositeCondition(e),this}flipSortOrder(){return this.queryBuilder.flipSortOrder(),this}extractData(e){return e[this.rootAlias].dataRef}serialize(){return{type:"join",grouped:!1,dereference:!1,root:{alias:this.rootAlias,query:this.build()},leftToRight:this.leftToRight,joins:this.joins,joinConditions:this.joinConditions}}paginate(e){if(this.hasIsInner())throw Error("Cannot paginate on joins when isInner is enabled.");return new Bi(this,e)}hasIsInner(){return!!Object.values(this.joinConditions).find(e=>e.isInner)}}class Wi{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 i={},n=Object.keys(e);for(const s of n){const n=e[s];i[s]=t(n)}return i}(e,e=>e?.data))))}peek(){throw new Error("peek is not currently supported for join queries")}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Wi(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 Bi(this,e)}serialize(){return{...this.joinQueryBuilder.serialize(),dereference:!0}}getLimit(){return this.joinQueryBuilder.getLimit()}}class Ki{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 Ki(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 Bi(this,e)}dereference(e,t){const i=this.groupedJoin.joinQueryBuilder.leftToRight[t];if(i.length){const n={[t]:e[t].data};for(const t of i)n[t]=e[t].map(e=>this.dereference(e,t));return n}return e.data}}class Ji{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 Ki(this)}getSortOrders(){return this.joinQueryBuilder.getSortOrders()}clone(){return new Ji(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 Bi(this,e)}groupData(e,t){const i=li(e,e=>e[t]?.squidDocId);return Object.values(i).filter(e=>void 0!==e[0][t]).map(e=>{const i=this.joinQueryBuilder.leftToRight[t],n=e[0][t];if(0===i.length)return n;const s={[t]:n};for(const t of i)s[t]=this.groupData(e,t);return s})}}class zi{constructor(e,t,i,n,s,r){this.collectionName=e,this.integrationId=t,this.documentReferenceFactory=i,this.queryBuilderFactory=n,this.querySubscriptionManager=s,this.dataManager=r,this.refId=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!==Rt)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={[Ci]:Se()};else e=e&&"string"!=typeof e?{__id:hi(e)}:{__id:e||Se()};const t=Oi(hi(e),this.collectionName,this.integrationId);return this.documentReferenceFactory.create(t,this.queryBuilderFactory)}async insertMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)await this.doc(i.id).upsert(i.data,t)},t)}async deleteMany(e,t){0!==e.length&&await this.dataManager.runInTransaction(async t=>{for(const i of e)i instanceof Pi?await i.delete(t):await this.doc(i).delete(t)},t)}query(){return this.queryBuilderFactory.get(this.collectionName,this.integrationId)}joinQuery(e){return new Gi(this.collectionName,this.integrationId,this.querySubscriptionManager,this.documentReferenceFactory,this.queryBuilderFactory,e,e,{[e]:[]},{},{},this.query())}or(...e){return new Vi(...e)}}class Vi{constructor(...e){if(0===e.length)throw new Error("At least one query builder must be provided");this.snapshotEmitters=e.map(e=>e.clone());const t=Math.max(...this.snapshotEmitters.map(e=>{const t=e.getLimit();return-1===t?1e3:t}));this.snapshotEmitters.forEach(e=>e.limit(t));const i=this.snapshotEmitters[0].getSortOrders();for(const e of this.snapshotEmitters){const t=e.getSortOrders();if(t.length!==i.length)throw new Error("All the queries must have the same sort order");for(let e=0;e<i.length;e++)if(t[e].fieldName!==i[e].fieldName||t[e].asc!==i[e].asc)throw new Error("All the queries must have the same sort order")}}snapshot(){return m(this.snapshots(!1))}snapshots(e=!0){const t=this.snapshotEmitters.map(t=>t.snapshots(e));return this.or(this.snapshotEmitters[0].getSortOrders(),...t)}peek(){throw new Error("peek is not currently supported for merged queries")}clone(){return new Vi(...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 Bi(this,e)}or(e,...t){return o([...t]).pipe(w(t=>{const i=new Set,n=t.flat(),s=[];for(const e of n)i.has(this.extractData(e))||(i.add(this.extractData(e)),s.push(e));return s.sort((t,i)=>{for(const{fieldName:n,asc:s}of e){const e=Xt(this.extractData(t),n),r=Xt(this.extractData(i),n);if(!Ei(e,r,"=="))return Ei(r,e,"<")?s?-1:1:s?1:-1}return 0}).slice(0,this.getLimit())}))}}class Yi{constructor(e,t,i,n){this.documentReferenceFactory=e,this.queryBuilderFactory=t,this.querySubscriptionManager=i,this.dataManager=n,this.collections=new Map}get(e,t){let i=this.collections.get(t);i||(i=new Map,this.collections.set(t,i));let n=i.get(e);return n||(n=new zi(e,t,this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),i.set(e,n)),n}}class Zi{constructor(e,t,i){this.clientIdService=e,this.socketManager=t,this.runtimeOptions=i,this.isConnected=!1,this.socketManager.observeConnectionReady().subscribe(e=>{this.isConnected=e})}get connected(){return this.isConnected}get clientId(){return this.clientIdService.getClientId()}observeConnected(){return this.socketManager.observeConnectionReady()}}var Xi=x(150);const en={"in:in":(e,t)=>e.every(e=>t.includes(e)),"in:not in":(e,t)=>e.every(e=>!t.includes(e)),"not in:not in":(e,t)=>t.every(t=>e.includes(t)),">:not in":(e,t)=>t.every(t=>e>=t),">=:not in":(e,t)=>t.every(t=>e>t),"<:not in":(e,t)=>t.every(t=>e<=t),"<=:not in":(e,t)=>t.every(t=>e<t),">:>":(e,t)=>e>=t,">=:>":(e,t)=>e>t,"in:>":(e,t)=>e.every(e=>e>t),">:>=":(e,t)=>e>=t,">=:>=":(e,t)=>e>=t,"in:>=":(e,t)=>e.every(e=>e>=t),"<:<":(e,t)=>e<=t,"<=:<":(e,t)=>e<t,"in:<":(e,t)=>e.every(e=>e<t),"<:<=":(e,t)=>e<=t,"<=:<=":(e,t)=>e<=t,"in:<=":(e,t)=>e.every(e=>e<=t),"like:like":(e,t)=>tn(e.toLowerCase(),t.toLowerCase()),"like_cs:like":(e,t)=>tn(e.toLowerCase(),t.toLowerCase()),"like:like_cs":(e,t)=>tn(e,t)&&sn(t),"like_cs:like_cs":(e,t)=>tn(e,t),"like:not like":(e,t)=>!nn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like":(e,t)=>!nn(e.toLowerCase(),t.toLowerCase()),"like:not like_cs":(e,t)=>!nn(e.toLowerCase(),t.toLowerCase()),"like_cs:not like_cs":(e,t)=>!nn(e,t),"not like:like":(e,t)=>on(e,t),"not like_cs:like":(e,t)=>on(e,t),"not like:like_cs":(e,t)=>on(e,t),"not like_cs:like_cs":(e,t)=>on(e,t),"not like:not like":(e,t)=>tn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like":(e,t)=>tn(t,e)&&sn(e),"not like:not like_cs":(e,t)=>tn(t.toLowerCase(),e.toLowerCase()),"not like_cs:not like_cs":(e,t)=>tn(t,e),"in:like":(e,t)=>e.every(e=>Ei(t,e,"like")),"in:like_cs":(e,t)=>e.every(e=>Ei(t,e,"like_cs")),"in:not like":(e,t)=>e.every(e=>Ei(t,e,"not like")),"in:not like_cs":(e,t)=>e.every(e=>Ei(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&&rn(e)||an(e)&&t.includes(""),"not like_cs:in":(e,t)=>e.length>0&&rn(e)||an(e)&&t.includes(""),"not in:like":(e,t)=>t.length>0&&rn(t)||an(t)&&e.includes(""),"not in:like_cs":(e,t)=>t.length>0&&rn(t)||an(t)&&e.includes(""),"not in:not like":(e,t)=>!t.includes("%")&&!t.includes("_")&&!!e.find(e=>e.toLowerCase()===t.toLowerCase()),"not in:not like_cs":(e,t)=>!t.includes("%")&&!t.includes("_")&&e.includes(t),"like:not in":(e,t)=>t.every(t=>Ei(e,t,"not like")),"like_cs:not in":(e,t)=>t.every(t=>Ei(e,t,"not like_cs")),"not like:not in":(e,t)=>t.every(t=>Ei(e,t,"like")),"not like_cs:not in":(e,t)=>t.every(t=>Ei(e,t,"like_cs")),"array_includes_some:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_all:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_not_includes":(e,t)=>t.every(t=>e.includes(t)),"array_includes_some:array_not_includes":(e,t)=>e.every(e=>!t.includes(e)),"array_not_includes:array_includes_some":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_includes_some":(e,t)=>e.every(e=>t.includes(e)),"array_includes_some:array_includes_all":(e,t)=>e.every(e=>t.includes(e)),"array_not_includes:array_includes_all":(e,t)=>t.every(t=>!e.includes(t)),"array_includes_all:array_not_includes":(e,t)=>e.every(e=>!t.includes(e))};function tn(e,t,i=0,n=0){if(n>=t.length)return i>=e.length;if(i>=e.length)return rn(t.substring(n));const s=e[i],r=t[n];return"%"===s&&"%"===r?tn(e,t,i+1,n+1)||tn(e,t,i+1,n):"%"!==s&&("%"===r?tn(e,t,i,n+1)||tn(e,t,i+1,n):(s===r||"_"===r)&&tn(e,t,i+1,n+1))}function nn(e,t,i=0,n=0){if(i>=e.length&&n>=t.length)return!0;if(i>=e.length)return rn(t.substring(n));if(n>=t.length)return rn(e.substring(i));const s=i<e.length?e[i]:"",r=n<t.length?t[n]:"";return"%"===s&&"%"===r?nn(e,t,i+1,n+1)||nn(e,t,i,n+1)||nn(e,t,i+1,n):"%"===s||"%"===r?nn(e,t,i,n+1)||nn(e,t,i+1,n):(s===r||"_"===s||"_"===r)&&nn(e,t,i+1,n+1)}function sn(e){return!/[a-zA-Z]/.test(e)}function rn(e){return e.split("").every(e=>"%"===e)}function on(e,t){return e.length>0&&rn(e)||t.length>0&&rn(t)||an(e)&&0===t.length}function an(e){let t=!1,i=!1;for(const n of e)switch(n){case"%":t=!0;break;case"_":if(i)return!1;i=!0;break;default:return!1}return t&&i}function cn(e,t){const i=Object.keys(e),n=Object.keys(t);if(i.length!==n.length)return!1;for(const n of i){if(!Object.prototype.hasOwnProperty.call(t,n))return!1;if(!ri(e[n],t[n]))return!1}return!0}function un(e,t){return t.every(t=>{const i=Object.keys(t).sort();if(i.length!==e.length)return!1;for(let t=0;t<e.length;t++)if(i[t]!==e[t])return!1;return!0})}class ln{constructor(e){this.query=e,this.query=e;const t=this.query.conditions.filter(ji),i=this.query.conditions.filter(Fi),n=i.flatMap(e=>function(e){if("=="!==e.operator&&"in"!==e.operator)return[];if(0===e.docIds.length)return[];const t=[],i=e.docIds[0];for(const n of Object.keys(i)){const s=i[n];e.docIds.every(e=>Object.prototype.hasOwnProperty.call(e,n)&&ri(e[n],s))&&t.push({fieldName:n,operator:"==",value:s})}return t}(e));this.exactSimpleConditions=this.parseConditions(t),this.exactDocIdConditions=i,this.subqueryConditions=this.parseConditions([...t,...n])}get integrationId(){return this.query.integrationId}get collectionName(){return this.query.collectionName}get limit(){return this.query.limit}get projectFields(){return this.query.projectFields}sortedBy(e){return!e.find((e,t)=>!ri(this.query.sortOrder[t],{...e,asc:e.asc??!0}))}sortedByExact(e){return e.length===this.query.sortOrder.length&&this.sortedBy(e)}isSubqueryOf(e,t,i){return this.isSubqueryOfCondition({fieldName:e,operator:t,value:i})}isSubqueryOfCondition(e){return!!this.subqueryConditions.filter(t=>t.fieldName===e.fieldName).find(t=>this.evaluateSubset(t,e))}isSubqueryOfConditions(e){return this.parseConditions(e).every(e=>this.isSubqueryOfCondition(e))}isSubqueryOfQuery(e){if(e.collectionName!==this.collectionName||e.integrationId!==this.integrationId)return!1;for(const t of e.conditions.filter(Fi))if(!this.childImpliesParentDocIdCondition(t))return!1;const t=e.conditions.filter(ji),i=this.isSubqueryOfConditions(t),n=this.sortedBy(e.sortOrder),s=-1===e.limit||this.limit>-1&&this.limit<e.limit,r=this.isProjectFieldsSubset(this.query.projectFields,e.projectFields);return i&&n&&s&&r}childImpliesParentDocIdCondition(e){const t=e.docIds;if(0===t.length)return!1;const i="=="===e.operator||"in"===e.operator,n=Object.keys(t[0]).sort(),s=[];for(const e of this.query.conditions)Fi(e)&&s.push(...e.docIds);if(!un(n,t)||!un(n,s))return!1;const r=this.buildChildEffectiveTupleSet();return i?void 0!==r.allowed&&r.allowed.every(e=>t.some(t=>cn(e,t))):void 0!==r.allowed?r.allowed.every(e=>!t.some(t=>cn(e,t))):t.every(e=>r.excluded.some(t=>cn(e,t)))}buildChildEffectiveTupleSet(){let e;const t=[];for(const i of this.query.conditions)if(Fi(i))if("=="===i.operator||"in"===i.operator)e=void 0===e?[...i.docIds]:e.filter(e=>i.docIds.some(t=>cn(e,t)));else for(const e of i.docIds)t.some(t=>cn(t,e))||t.push(e);return void 0!==e&&t.length>0&&(e=e.filter(e=>!t.some(t=>cn(e,t)))),{allowed:e,excluded:t}}isProjectFieldsSubset(e,t){if(!t)return!0;if(!e)return!1;const i=new Set(t);return e.every(e=>i.has(e))}getConditionsFor(...e){return this.subqueryConditions.filter(t=>e.includes(t.fieldName))}getConditionsForField(e){return this.subqueryConditions.filter(t=>t.fieldName===e)}documentMatchesQuery(e){for(const t of this.exactSimpleConditions){const i=t.fieldName,n=t.operator;if(i===$t){const i=t.value;if("in"===n||"not in"===n){const t=(Array.isArray(i)?i:[i]).some(t=>xi(t,e,"==",Xt));if(!("in"===n?t:!t))return!1;continue}if(!xi(i,e,n,Xt))return!1;continue}const s=Xt(e,i);if("in"===n){if(t.value.includes(s))continue;return!1}if("not in"!==n){if(!Ei(t.value,s,n))return!1}else if(t.value.includes(s))return!1}for(const t of this.exactDocIdConditions)if(!Ni(t,e,Xt))return!1;return!0}evaluateSubset(e,t){const{operator:i,value:n}=e,{operator:s,value:r}=this.parseConditions([t])[0],o=en[`${i}:${s}`];return!!o&&o(n,r)}parseConditions(e){const t=[],i=new Map,n=new Map;return e.forEach(e=>{switch(e.operator){case"==":case"in":i.set(e.fieldName,(i.get(e.fieldName)||[]).concat(e.value));break;case"!=":case"not in":n.set(e.fieldName,(n.get(e.fieldName)||[]).concat(e.value));break;default:t.push(e)}}),i.forEach((e,i)=>{t.push({fieldName:i,operator:"in",value:e})}),n.forEach((e,i)=>{t.push({fieldName:i,operator:"not in",value:e})}),t}}function dn(e,t){switch(t.type){case"applyNumericFn":return function(e,t){if("increment"===t.fn)return null==e?t.value:e+t.value;throw new Error("Unknown numeric function: "+JSON.stringify(t))}(e,t);case"applyStringFn":return function(e,t){switch(t.fn){case"trim":return"string"!=typeof e?e:e.trim();case"extendString":return null==e?t.value:e+t.value;default:throw new Error("Unknown string function: "+JSON.stringify(t))}}(e,t);case"update":return"object"==typeof t.value?ai(t.value):t.value;case"removeProperty":return;default:throw new Error("Unknown property mutation type: "+JSON.stringify(t))}}function hn(e){return Object.entries(e.properties).sort(([e],[t])=>e.split(".").length-t.split(".").length)}function pn(e,t){if("insert"===t.type)return t;if("delete"===t.type)return t;if("delete"===e.type)return e;if(be("update"===t.type,"Invalid mutation type"),"update"===e.type)return function(e,t){const i=ai(e);t=ai(t);for(const[e]of hn(i)){const n=e.split(".").length;Object.entries(t.properties).some(([t])=>e.startsWith(t+".")&&n>t.split(".").length)&&delete i.properties[e]}for(const[e,n]of hn(t))i.properties[e]=gn([...i.properties[e]||[],...n]);return i}(e,t);const i=ai(e);for(const[e,n]of hn(t)){const t=n;for(const n of t){const t=dn(Xt(i.properties,e),n);void 0===t?ii(i.properties,e):ti(i.properties,e,t)}}return i}function gn(e){let t=0;for(;t+1<e.length;){const i=fn(e[t],e[t+1]);i?e.splice(t,2,i):++t}return e}function fn(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 yn(e,t){if(!e)return;const i={...e},n=hn(t);for(const[e,t]of n){const n=t;for(const t of n){const n=dn(Xt(i,e),t);void 0===n?ii(i,e):ti(i,e,n)}}return i}function mn(e){const t={};for(const i of e){const e=`${i.squidDocIdObj.integrationId}/${i.squidDocIdObj.collectionName}/${i.squidDocIdObj.docId}`;t[e]||(t[e]=[]),t[e].push(i)}const i=[];for(const e in t){const n=t[e].reduce((e,t)=>Ie(pn(e,t),"Merge result cannot be null"));i.push(n)}return i}const bn="dataManager_runInTransaction";var In;!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(In||(In={}));class vn{constructor(e,i,n,s,o,a,c,u,l){this.documentStore=e,this.mutationSender=i,this.socketManager=n,this.querySubscriptionManager=s,this.queryBuilderFactory=o,this.lockManager=a,this.destructManager=c,this.documentIdentityService=u,this.querySender=l,this.docIdToLocalTimestamp=new Map,this.batchClientRequestIds=new Set,this.docIdToServerTimestamp=new Map,this.pendingIncomingUpdates=new Map,this.pendingOutgoingMutations=new Map,this.pendingOutgoingMutationsChanged=new r,this.outgoingMutationsEmpty=new t(!0),this.knownDirtyDocs=new Set,this.failedDocsToResync=[],this.refreshDocIdToTimestamp=new Map,this.handleIncomingMessagesForTests=!0,this.destructManager.onDestruct(()=>{this.destruct()}),this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this)),this.handleNotifications(),this.startDeleteExpiredTimestampsJob(),this.handleOrphanDocs(),this.outgoingMutationsEmpty.subscribe(e=>{this.querySender.safeToSendQueriesToServer.next(e)})}getProperties(e){return this.documentStore.getDocumentOrUndefined(e)}hasSufficientData(e,t){return this.documentStore.hasSufficientData(e,t)}isDirty(e){if(this.knownDirtyDocs.has(e))return!0;if(this.pendingOutgoingMutations.get(e)?.length)return!0;const t=this.docIdToServerTimestamp.get(e),i=t&&!t.expireTimestamp?t.timestamp:void 0,n=this.docIdToLocalTimestamp.get(e);return!((!n||i)&&!this.isForgotten(e)&&!this.isLocalOnly(e)&&n===i)}async executeDetachedQuery(e){const t=this.currentTransactionId,i={query:e,clientRequestId:Se(),subscribe:!1},n=await this.querySender.sendQueryDirect(i);return this.currentTransactionId!==t?this.reRunQueryThroughNormalPipeline(e):this.applyPendingMutationsToQueryResult(n.docs,e)}async reRunQueryThroughNormalPipeline(e){await m(this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)));const t={query:e,clientRequestId:Se(),subscribe:!1};return(await this.querySender.sendQueryDirect(t)).docs}applyPendingMutationsToQueryResult(e,t){const i=new ln(t),n=new Map;for(const i of e){const e=Oi(i.__docId__,t.collectionName,t.integrationId);n.set(e,i)}for(const[e,s]of this.pendingOutgoingMutations){const r=Di(e);if(r.collectionName===t.collectionName&&r.integrationId===t.integrationId)for(const{mutation:t}of s){const s=n.get(e);if("delete"===t.type)n.delete(e);else if("update"===t.type){if(s){const r=yn(s,t);r&&i.documentMatchesQuery(r)?n.set(e,r):n.delete(e)}}else if("insert"===t.type){const s={...t.properties,__docId__:r.docId};i.documentMatchesQuery(s)&&n.set(e,s)}}}const s=Array.from(n.values()),{sortOrder:r}=t;s.sort((e,t)=>{for(const{fieldName:i,asc:n}of r){const s=ui(Xt(e,i),Xt(t,i));if(0!==s)return n?s:-s}return 0});const o=t.limit<0?2e3:t.limit;return s.slice(0,o)}async runInTransaction(e,t){if(t)return be(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),e(t).then(e=>Promise.resolve(e));this.lockManager.canGetLock(bn)?this.lockManager.lockSync(bn):await this.lockManager.lock(bn);let i=wn;const n=()=>i!==wn;return new Promise(async(t,s)=>{try{let r;this.currentTransactionId=Se();try{r=await e(this.currentTransactionId)}catch(e){i=e}finally{this.finishTransaction(n()?void 0:{resolve:()=>t(r),reject:s})}}catch(e){i=n()?i:e}finally{try{this.lockManager.release(bn)}catch(e){i=n()?i:e}}n()&&s(i)})}async applyOutgoingMutation(e,t){const i=Oi(e.squidDocIdObj);this.knownDirtyDocs.add(i),t||this.lockManager.canGetLock(bn)||(await this.lockManager.lock(bn),this.lockManager.release(bn)),this.knownDirtyDocs.delete(i);const n=this.pendingOutgoingMutations.get(i)?.slice(-1)[0];if(n&&!n.sentToServer)n.mutation=Ie(mn([n.mutation,this.removeInternalProperties(e)])[0],"Failed to reduce mutations"),this.outgoingMutationsEmpty.next(!1);else{const t={mutation:this.removeInternalProperties(e),sentToServer:!1},n=this.pendingOutgoingMutations.get(i)||[];n.push(t),this.pendingOutgoingMutations.set(i,n),this.outgoingMutationsEmpty.next(!1),this.pendingOutgoingMutationsChanged.next()}return this.runInTransaction(async()=>{const t=this.documentStore.getDocumentOrUndefined(i),n="delete"===e.type?void 0:"update"===e.type?yn(t,e):{...e.properties};this.updateDocumentFromSnapshot(i,n)&&("insert"===e.type&&this.docIdToLocalTimestamp.set(i,(new Date).getTime()),this.querySubscriptionManager.setClientRequestIdsForLocalDoc(i,n).forEach(e=>this.batchClientRequestIds.add(e)))},t)}isTracked(e){if(this.pendingIncomingUpdates.get(e))return!0;const t=this.pendingOutgoingMutations.get(e);return!(!t||!t.length)||this.querySubscriptionManager.hasOngoingQueryForDocId(e)}isForgotten(e){return this.documentStore.hasData(e)&&!this.isTracked(e)}isLocalOnly(e){return!this.hasBeenAcknowledged(e)&&this.documentStore.hasData(e)}hasBeenAcknowledged(e){return this.docIdToServerTimestamp.has(e)}async runInTransactionSync(e,t){if(t)return be(t===this.currentTransactionId,()=>`Invalid transaction ID: ${t}`),void e(t);await this.lockManager.lock(bn);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(bn)}}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),O(1)).subscribe(()=>{this.handleIncomingMutations(e.payload)})}),this.querySubscriptionManager.observeQueryResults().subscribe(e=>{this.outgoingMutationsEmpty.pipe(g(Boolean),O(1)).subscribe(()=>{this.handleIncomingQuerySnapshots(e)})})}handleIncomingMutations(e){if(!this.handleIncomingMessagesForTests)return;const t={},i=[];for(const n of e){if(!this.querySubscriptionManager.hasOngoingQuery(n.clientRequestId))continue;const e=this.querySubscriptionManager.getQuery(n.clientRequestId),s=null!==e.projectFields&&void 0!==e.projectFields,r=this.querySubscriptionManager.hasSubscription(n.clientRequestId);s&&r?i.push({squidDocId:n.squidDocId,item:{properties:n.doc,timestamp:n.mutationTimestamp,clientRequestId:n.clientRequestId,projectFields:e.projectFields}}):t[n.squidDocId]={properties:n.doc,timestamp:n.mutationTimestamp}}Object.keys(t).length>0&&this.applyIncomingUpdates(t),i.length>0&&this.runInTransactionSync(()=>{this.applyProjectedUpdates(i)})}handleIncomingQuerySnapshots(e){if(!this.handleIncomingMessagesForTests)return;if(!this.querySubscriptionManager.hasOngoingQuery(e.clientRequestId))return;const t=this.querySubscriptionManager.getQuery(e.clientRequestId);if(null!==t.projectFields&&void 0!==t.projectFields){const i=[];for(const n of e.docs){const s=Oi(n.__docId__,t.collectionName,t.integrationId);i.push({squidDocId:s,item:{properties:n,timestamp:n.__ts__,clientRequestId:e.clientRequestId,projectFields:t.projectFields}})}this.runInTransactionSync(()=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyProjectedUpdates(i)})}else{const i={};for(const n of e.docs){const e=Oi(n.__docId__,t.collectionName,t.integrationId);i[e]={properties:n,timestamp:n.__ts__}}this.runInTransactionSync(t=>{this.querySubscriptionManager.setGotInitialResult(e.clientRequestId),this.batchClientRequestIds.add(e.clientRequestId),this.applyIncomingUpdates(i,t)&&this.querySubscriptionManager.hasSubscription(e.clientRequestId)&&this.batchClientRequestIds.delete(e.clientRequestId)})}}applyIncomingUpdates(e,t){let i=!1;const n=new Set,s=new Set;for(const[t,r]of Object.entries(e)){const e=this.pendingIncomingUpdates.get(t),o=this.docIdToServerTimestamp.get(t);e&&e.timestamp>r.timestamp?i=!0:o&&o.timestamp>r.timestamp?s.add(t):(this.pendingIncomingUpdates.set(t,r),n.add(t))}return this.runInTransactionSync(()=>{for(const e of n)this.maybeApplyIncomingUpdate(e);for(const e of s)this.refreshQueryMapping(e)},t),i}applyProjectedUpdates(e){for(const{squidDocId:t,item:i}of e){const e=Ie(i.clientRequestId,"clientRequestId required for projected updates"),n=this.pendingOutgoingMutations.get(t);if(n&&n.length)continue;const s=this.docIdToServerTimestamp.get(t);s&&s.timestamp>i.timestamp?(this.querySubscriptionManager.addDocToQuery(t,e),this.batchClientRequestIds.add(e)):(this.acknowledgeDocument(t,i.timestamp,!i.properties),this.docIdToLocalTimestamp.set(t,i.timestamp),i.properties?(this.documentStore.saveProjectedDocument(t,i.properties,i.projectFields),this.querySubscriptionManager.addDocToQuery(t,e)):this.querySubscriptionManager.removeDocFromQuery(t,e),this.batchClientRequestIds.add(e))}}maybeApplyIncomingUpdate(e){const t=this.pendingIncomingUpdates.get(e);if(!t)return;const i=this.pendingOutgoingMutations.get(e);i&&i.length||(this.updateDocumentFromSnapshot(e,t.properties),this.acknowledgeDocument(e,t.timestamp,!t.properties),this.docIdToLocalTimestamp.set(e,t.timestamp),this.pendingIncomingUpdates.delete(e),this.refreshQueryMapping(e))}refreshQueryMapping(e){const t=this.documentStore.getDocumentOrUndefined(e);this.querySubscriptionManager.setClientRequestIdsForLocalDoc(e,t).forEach(e=>{this.batchClientRequestIds.add(e)}),t&&(this.querySubscriptionManager.findQueriesForDocument(t,e).length||this.forgetDocument(e,!1))}destruct(){this.stopDeleteExpiredTimestampsJob()}stopDeleteExpiredTimestampsJob(){void 0!==this.deleteExpiredTimestampsInterval&&(clearInterval(this.deleteExpiredTimestampsInterval),this.deleteExpiredTimestampsInterval=void 0)}startDeleteExpiredTimestampsJob(){this.deleteExpiredTimestampsInterval=setInterval(()=>{const e=[...this.docIdToServerTimestamp.entries()].filter(([e,t])=>!(!t.expireTimestamp||t.expireTimestamp>Date.now()||this.isTracked(e)));for(const[t]of e)this.docIdToServerTimestamp.delete(t),this.forgetDocument(t,!0)},1e4)}updateDocumentFromSnapshot(e,t){const i=this.documentStore.getDocumentOrUndefined(e);return!(!i&&!t||i===t)&&((!i||!t||hi({...t,__ts__:void 0})!==hi(i))&&(this.documentStore.saveDocument(e,t),!0))}finishTransaction(e){this.currentTransactionId=void 0;const t=[...this.batchClientRequestIds.values()];this.batchClientRequestIds.clear(),this.querySubscriptionManager.notifyAllSubscriptions(t),this.sendAllUnsentOutgoingMutations(e)}async sendAllUnsentOutgoingMutations(e){const t=this.groupOutgoingMutationsByIntegrationId();try{await Xi.PromisePool.for(t).withConcurrency(t.length||1).useCorrespondingResults().handleError(e=>{throw e}).process(async([e,t])=>{await this.sendMutationsForIntegration([...t],e)}),this.pendingOutgoingMutations.size||this.outgoingMutationsEmpty.next(!0),await this.refreshUpdatedDocuments(),e?.resolve()}catch(t){this.pendingOutgoingMutations.size||(this.outgoingMutationsEmpty.next(!0),await this.resyncFailedUpdates()),e?.reject(t)}}async sendMutationsForIntegration(e,t){try{const{timestamp:i,idResolutionMap:n={},refreshList:s=[]}=await this.mutationSender.sendMutations(e.map(e=>e.mutation),t);this.documentIdentityService.migrate(n),s.forEach(e=>{this.refreshDocIdToTimestamp.set(n[e]||e,i)});for(const t of e){let e=this.removeOutgoingMutation(t);n[e]&&(e=n[e]),this.acknowledgeDocument(e,i),this.isTracked(e)||(this.setExpiration(e,!0),this.forgetDocument(e,!1))}}catch(t){for(const t of e){const e=this.removeOutgoingMutation(t);this.forgetDocument(e,!1),(this.hasBeenAcknowledged(e)||"insert"===t.mutation.type)&&this.failedDocsToResync.push(e)}throw t}}removeOutgoingMutation(e){const t=Oi(e.mutation.squidDocIdObj),i=Ie(this.pendingOutgoingMutations.get(t));return i.splice(i.indexOf(e),1),i.length||this.pendingOutgoingMutations.delete(t),this.pendingOutgoingMutationsChanged.next(),t}async resyncFailedUpdates(){const e=[...this.failedDocsToResync];this.failedDocsToResync.splice(0);for(const t of e){const{docId:e}=Di(t);this.setExpiration(t,!0);try{const i=e.includes(Ci)?[]:await this.queryBuilderFactory.getForDocument(t).setForceFetchFromServer().snapshot();if(Ie(i.length<=1,"Got more than one doc for the same id:"+t),!i.length){this.forgetDocument(t,!1);const e=this.querySubscriptionManager.setClientRequestIdsForLocalDoc(t,void 0);this.querySubscriptionManager.notifyAllSubscriptions(e)}}catch(e){this.querySubscriptionManager.errorOutAllQueries(t,e)}}}async refreshUpdatedDocuments(){const e=[];for(const[t,i]of this.refreshDocIdToTimestamp.entries()){const n=this.docIdToServerTimestamp.get(t)?.timestamp;n&&n>i||e.push(t)}this.refreshDocIdToTimestamp.clear(),await Promise.allSettled(e.map(e=>this.queryBuilderFactory.getForDocument(e).snapshot()))}groupOutgoingMutationsByIntegrationId(){const e={};for(const[,t]of[...this.pendingOutgoingMutations.entries()]){const i=t[t.length-1];if(i&&!i.sentToServer){const t=i.mutation.squidDocIdObj.integrationId;(e[t]||=[]).push(i),i.sentToServer=!0}}return Object.entries(e)}handleOrphanDocs(){this.querySubscriptionManager.onOrphanDocuments.subscribe(e=>{for(const t of e)this.isTracked(t)||this.forgetDocument(t,!1)})}acknowledgeDocument(e,t,i=!1){this.docIdToServerTimestamp.set(e,{timestamp:t}),this.setExpiration(e,i)}setExpiration(e,t){const i=this.docIdToServerTimestamp.get(e);i&&(i.expireTimestamp=t?Date.now()+2e4:void 0)}forgetDocument(e,t){this.docIdToLocalTimestamp.delete(e),this.pendingIncomingUpdates.delete(e),t&&this.documentStore.saveDocument(e,void 0),this.setExpiration(e,!0)}migrateDocIds(e){this.pendingOutgoingMutations.forEach(t=>{t.forEach(t=>{const i=Oi(t.mutation.squidDocIdObj),n=e[i];n&&(t.mutation.squidDocIdObj=Di(n))})}),Object.entries(e).forEach(([e,t])=>{ni(this.pendingOutgoingMutations,e,t),ni(this.docIdToLocalTimestamp,e,t),ni(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 wn=Symbol("undefined");class Sn{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 Mn{constructor(e,t){this.socketManager=e,this.destructManager=t,this.ongoingLocks={},this.acquireLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockAcquired"===e.type)),this.releaseLockMessagesFromServer=this.socketManager.observeNotifications().pipe(g(e=>"lockReleased"===e.type)),this.lockWaitForConnectionThreshold=2e3,t.onPreDestruct(()=>{this.releaseAllLocks()}),this.socketManager.observeConnectionReady().subscribe(e=>{if(e)return;const t=Object.keys(this.ongoingLocks);t.length>0&&console.warn(`DistributedLockManager: WebSocket disconnected, releasing ${t.length} lock(s): [${t.join(", ")}]`),this.releaseAllLocks()}),this.releaseLockMessagesFromServer.subscribe(e=>{const t=this.ongoingLocks[e.payload.lockId];t?.release()})}async lock(e,t){"number"==typeof t&&(t={acquisitionTimeoutMillis:t});const i=t?.acquisitionTimeoutMillis??2e3,n=t?.maxHoldTimeMillis;this.socketManager.notifyWebSocketIsNeeded(),be(await m(k(j(this.lockWaitForConnectionThreshold).pipe(fe(()=>!1)),this.socketManager.observeConnectionReady().pipe(g(Boolean)),this.destructManager.observeIsDestructing())),"CLIENT_NOT_CONNECTED");const s=Se(),r={type:"acquireLock",payload:{mutex:e,acquisitionTimeoutMillis:i,maxHoldTimeMillis:n,clientRequestId:s}};this.socketManager.postMessage(r);const o=await m(k(j(i+4e3).pipe(O(1),fe(()=>({payload:{error:`TIMEOUT_GETTING_LOCK: ${e}`,lockId:void 0,clientRequestId:s}}))),this.acquireLockMessagesFromServer.pipe(g(e=>e.payload.clientRequestId===s)))),a=o.payload.lockId;be(!this.destructManager.isDestructing,"Squid client is in destructuring phase"),be(a,()=>`Failed to acquire lock: ${o.payload.error}`);const c=new kn(a,e,s,this.ongoingLocks,this.socketManager);return this.ongoingLocks[a]=c,c}releaseAllLocks(){for(const[e,t]of Object.entries(this.ongoingLocks))t.release(),delete this.ongoingLocks[e]}}class kn{constructor(e,t,i,n,s){this.lockId=e,this.resourceId=t,this.clientRequestId=i,this.ongoingLocks=n,this.socketManager=s,this.released=!1,this.onReleaseSubject=new 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 Tn{constructor(e,i){this.documentStore=e,this.destructManager=i,this.changeNotifier=new t({}),this.destructManager.onDestruct(()=>{this.changeNotifier.complete()})}migrate(e){Object.entries(e).forEach(([e,t])=>{this.documentStore.migrateDocId(e,t)}),this.changeNotifier.next(e)}observeChanges(){return this.changeNotifier.asObservable()}}class _n{constructor(e){this.documentIdentityService=e,this.documents=new Map,this.documentsForCollection=new Map,this.documentIdentityService.observeChanges().subscribe(this.migrateDocIds.bind(this))}create(e,t,i){if(i)return new Pi(e,Ie(this.dataManager,"dataManager not found"),t,i);let n=this.documents.get(e);if(n)return n;n=new Pi(e,Ie(this.dataManager,"dataManager not found"),t);const{integrationId:s,collectionName:r}=Di(e);this.documents.set(e,n);const o=this.getCollectionKey(s,r),a=this.documentsForCollection.get(o)||[];return this.documentsForCollection.set(o,a.concat(n)),n}setDataManager(e){this.dataManager=e}getDocumentsForCollection(e,t){const i=this.getCollectionKey(e,t);return(this.documentsForCollection.get(i)||[]).filter(e=>e.hasData)}migrateDocIds(e){for(const[,t]of this.documents)t.migrateDocIds(e);Object.entries(e).forEach(([e,t])=>{const i=Di(e),n=Di(t);ni(this.documents,i.docId,n.docId)})}getCollectionKey(e,t){return`${e}_${t}`}}class qn{constructor(){this.squidDocIdToDoc=new Map,this.squidDocIdToProjectedFields=new Map}saveProjectedDocument(e,t,i){const n=this.squidDocIdToDoc.get(e);if(n){const i=this.mergeDocuments(n,t),s=this.removeInternalProperties(i);this.squidDocIdToDoc.set(e,s)}else{const i=this.removeInternalProperties(t);this.squidDocIdToDoc.set(e,i)}if(i?.length){const t=this.squidDocIdToProjectedFields.get(e);if(void 0!==t)for(const e of i)t.add(e);else n||this.squidDocIdToProjectedFields.set(e,new Set(i))}return this.squidDocIdToDoc.get(e)}mergeDocuments(e,t){const i=ai(e);for(const e of Object.keys(t)){const n=t[e],s=i[e];null===n||"object"!=typeof n||Array.isArray(n)||null===s||"object"!=typeof s||Array.isArray(s)?i[e]=n:i[e]=this.mergeDocuments(s,n)}return i}deleteDocument(e){this.squidDocIdToDoc.delete(e),this.squidDocIdToProjectedFields.delete(e)}saveDocument(e,t){const i=this.squidDocIdToDoc.get(e);if(void 0===i&&!t)return;if(void 0!==i){if(t){const i=ai(t),n=this.removeInternalProperties(i);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}return this.squidDocIdToDoc.delete(e),void this.squidDocIdToProjectedFields.delete(e)}const n=this.removeInternalProperties(t);return this.squidDocIdToDoc.set(e,n),this.squidDocIdToProjectedFields.delete(e),n}hasData(e){return void 0!==this.squidDocIdToDoc.get(e)}getDocumentOrUndefined(e){return this.squidDocIdToDoc.get(e)}hasSufficientData(e,t){if(!this.squidDocIdToDoc.has(e))return!1;const i=this.squidDocIdToProjectedFields.get(e);return void 0===i||!!t?.length&&t.every(e=>i.has(e))}group(e,t){return Object.values(li(e,e=>hi(t.map(t=>Xt(e,t)))))}sortAndLimitDocs(e,t){if(0===e.size)return[];const i=Array.from(e).map(e=>this.squidDocIdToDoc.get(e)).filter(ye),{sortOrder:n,limitBy:s}=t,r=i.sort((e,t)=>this.compareSquidDocs(e,t,n)),o=t.limit<0?2e3:t.limit;let a;if(s){const{limit:e,fields:t,reverseSort:i}=s,n=this.group(r,t);let c;c=i?n.map(t=>t.slice(-e)):n.map(t=>t.slice(0,e)),a=c.flat().slice(0,o)}else a=r.slice(0,o);return null!==t.projectFields&&void 0!==t.projectFields&&(a=a.map(e=>this.projectDocument(e,t.projectFields))),a}projectDocument(e,t){const i={};"__id"in e&&(i.__id=e.__id),"__docId__"in e&&(i.__docId__=e.__docId__);for(const n of t)if(n.includes(".")){const t=Xt(e,n);void 0!==t&&ti(i,n,t)}else n in e&&(i[n]=e[n]);return i}migrateDocId(e,t){const i=this.getDocumentOrUndefined(e);if(!i)return;ni(this.squidDocIdToDoc,e,t),ni(this.squidDocIdToProjectedFields,e,t);const n=Di(t),s=gi(n.docId);this.saveDocument(t,{...i,...s,__docId__:n.docId})}compareSquidDocs(e,t,i){for(const{fieldName:n,asc:s}of i){const i=ui(Xt(e,n),Xt(t,n));if(0!==i)return s?i:-i}return 0}removeInternalProperties(e){if(!e)return;const t={...e};return delete t.__ts__,t}}class Cn{constructor(e){this.rpcManager=e}async emit(e){const t={event:e};await this.rpcManager.post("events/emit",t)}}class Dn{constructor(e,t){this.integrationId=e,this.rpcManager=t}async saveAuthCode(e,t){const i={authCode:e,externalAuthConfig:{identifier:t,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/saveAuthCode",i)}async getAccessToken(e){const t={externalAuthConfig:{identifier:e,integrationId:this.integrationId}};return await this.rpcManager.post("externalAuth/getAccessToken",t)}}class On{constructor(e){this.rpcManager=e}async extractDataFromDocumentFile(e,t){t||(t={});const i={options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentFile",i,[e],"file")}async extractDataFromDocumentUrl(e,t){t||(t={});const i={url:e,options:t};return await this.rpcManager.post("extraction/extractDataFromDocumentUrl",i)}async createPdf(e){return await this.rpcManager.post("extraction/createPdf",e)}}class En{constructor(e,t,i,n,s){this.socketManager=e,this.rpcManager=t,this.clientIdService=i,this.isListening=!1,this.listeners={},this.ownedJobs=new Set,n.onDestruct(async()=>{this.stopKeepAlive();const e=[...this.ownedJobs];this.ownedJobs.clear(),await Promise.all(e.map(e=>this.resolveJob(e,"failed",void 0,"Client shut down").catch(()=>{})))}),s.isPassiveMode||this.clientIdService.observeClientId().pipe(p(),_(1)).subscribe(()=>{for(const e of Object.keys(this.listeners))ki.debug("Got new client ID, resubscribing to job:",e),this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(t=>{const i=this.listeners[e];i&&(i.error(t),delete this.listeners[e])})})}async startJob(e){await this.rpcManager.post("job/startJob",{jobId:e}),this.ownedJobs.add(e),this.ensureKeepAlive()}async completeJob(e,t){await this.resolveJob(e,"completed",t)}async failJob(e,t){await this.resolveJob(e,"failed",void 0,t)}async getJob(e){return(await this.rpcManager.post("job/getJob",{jobId:e})).job}async awaitJob(e){this.maybeListenToJobs(),await this.socketManager.awaitConnectionReady();const t=this.listeners[e]||new s(1);return this.listeners[e]=t,this.rpcManager.post("job/subscribeToJob",{jobId:e}).catch(i=>{t.error(i),delete this.listeners[e]}),m(t)}maybeListenToJobs(){this.isListening||(this.socketManager.notifyWebSocketIsNeeded(),this.isListening=!0,this.socketManager.observeNotifications().pipe(g(e=>"jobStatus"===e.type)).subscribe(e=>{const t=e.payload,i=t.id,n=this.listeners[i];n&&("completed"===t.status?n.next(t.result):"failed"===t.status?n.error(new Error(t.error||"Job failed")):console.error("Unexpected job status:",t.status,"for jobId:",i),delete this.listeners[i])}))}async resolveJob(e,t,i,n){try{await this.rpcManager.post("job/resolveJob",{jobId:e,status:t,result:i,error:n})}finally{this.ownedJobs.delete(e),this.ownedJobs.size||this.stopKeepAlive()}}ensureKeepAlive(){void 0===this.keepAliveHandle&&(this.keepAliveHandle=setInterval(()=>{if(!this.ownedJobs.size)return void this.stopKeepAlive();const e={jobIds:[...this.ownedJobs]};this.rpcManager.post("job/keepAlive",e).catch(e=>ki.debug("Job keep-alive failed:",e))},15e3))}stopKeepAlive(){void 0!==this.keepAliveHandle&&(clearInterval(this.keepAliveHandle),this.keepAliveHandle=void 0)}}const An="squid_mgmt_",Rn="x-squid-traceid",jn="x-squid-client-version";function Fn(e="n_"){return`${e}${qe(10).toLowerCase()}`}const Nn=e=>e();class xn extends Error{constructor(e,t,i,n,s){super(e),this.statusCode=t,this.url=i,this.headers=n,this.body=s}}const Pn="1.0.472";async function Bn(e){const t=await Hn({url:e.url,headers:e.headers,method:"POST",message:e.message,files:e.files,filesFieldName:e.filesFieldName,extractErrorMessage:e.extractErrorMessage});return t.body=Gn(t.body),t}async function Qn(e){const t=await Hn({...e,method:"GET",files:[],filesFieldName:""});return t.body=Gn(t.body),t}async function Ln(e){const t=await Hn({...e,method:"PUT"});return t.body=Gn(t.body),t}async function Un(e){const t=await Hn({...e,method:"PATCH"});return t.body=Gn(t.body),t}async function $n(e){const t=await Hn({...e,method:"DELETE",files:[],filesFieldName:""});return t.body=Gn(t.body),t}async function Hn({headers:e,files:t,filesFieldName:i,message:n,url:s,extractErrorMessage:r,method:o}){const a=new Headers(e);a.append(Rn,Fn("c_")),a.append(jn,Pn);const c={method:o,headers:a,body:void 0};if("GET"!==o&&"DELETE"!==o)if(t&&t.length){const e=new FormData;for(const n of t)e.append(i||"files",n,n.name);e.append("body",pi(n)),c.body=e}else void 0!==n&&(a.append("Content-Type","application/json"),c.body=pi(n));else"DELETE"===o&&void 0!==n&&(a.append("Content-Type","application/json"),c.body=pi(n));try{const e=await fetch(s,c),t={};if(e.headers.forEach((e,i)=>{t[i]=e}),!e.ok){const i=await e.text(),n=Gn(i);if(!r)throw new xn(i,e.status,s,t,n);let o;try{o="string"==typeof n?n:n?.message||i}catch{}throw o||(o=e.statusText),new xn(o,e.status,s,t,n)}const i=await e.text();return ki.debug(`received response from url ${s}: ${JSON.stringify(i)}`),{body:i,headers:t,status:e.status,statusText:e.statusText}}catch(e){throw ki.debug(`Unable to perform fetch request to url: ${s}`,e),e}}function Gn(e){if(e){try{return gi(e)}catch{}return e}}class Wn{constructor(e){be(e.apiKey.startsWith(An),`Invalid management API key format. Key must start with '${An}'`),this.apiKey=e.apiKey,this.consoleRegion=e.consoleRegion}async createOrganization(e){return this.callApi("POST","organizations",e)}async createApplication(e){return this.callApi("POST","applications",e)}async deleteApplication(e){await this.callApi("DELETE",`applications/${e}`)}async renameOrganization(e){await this.callApi("PATCH",`organizations/${e.organizationId}`,{name:e.name})}async renameApplication(e){await this.callApi("PATCH",`applications/${e.appId}`,{name:e.name})}async callApi(e,t,i){const n=B(this.consoleRegion,"console",`openapi/iac/management/${t}`),s={Authorization:`ManagementKey ${this.apiKey}`};return"POST"===e?(await Bn({url:n,headers:s,message:i,files:[],filesFieldName:"",extractErrorMessage:!0})).body:"PATCH"===e?(await Un({url:n,headers:s,message:i,extractErrorMessage:!0})).body:(await $n({url:n,headers:s,message:i,extractErrorMessage:!0})).body}}class Kn{constructor(e,t,i){this.rpcManager=e,this.lockManager=t,this.querySender=i}async sendMutations(e,t){const i=mn(e),n=i.map(e=>`sendMutation_${Oi(e.squidDocIdObj)}`);await this.lockManager.lock(...n),await this.querySender.waitForAllQueriesToFinish();try{const e={mutations:i,integrationId:t};return await this.rpcManager.post("mutation/mutate",e)}catch(e){throw ki.debug("Error while sending mutations",{error:e,mutations:JSON.stringify(i,null,2)}),e}finally{this.lockManager.release(...n)}}async deleteQuery(e){const t=`deleteQuery_${e.integrationId}_${e.collectionName}`;await this.lockManager.lock(t),await this.querySender.waitForAllQueriesToFinish();try{const t={query:e};return await this.rpcManager.post("mutation/deleteQuery",t)}catch(t){throw ki.debug("Error while deleting query results",{error:t,query:JSON.stringify(e,null,2)}),t}finally{this.lockManager.release(t)}}}class Jn{constructor(e){this.rpcManager=e}async executeNativeQuery(e){return this.rpcManager.post("native-query/execute",e)}}class zn{constructor(e,t){this.socketManager=e,this.rpcManager=t}observeNotifications(){return this.socketManager.notifyWebSocketIsNeeded(),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 Vn={groupByTags:[],orderByTags:[],pointIntervalAlignment:"align-by-start-time",tagFilter:{},tagDomains:{},noDataBehavior:"return-no-result-groups",fillValue:null,pointIntervalSeconds:0};class Yn{constructor(e){this.rpcManager=e,this.pendingPromises=[],this.isReporting=!1}reportMetric(e){const t=e.tags||{},i=Object.keys(t).filter(e=>!Zn.test(e)||e.length>=Xn);be(0===i.length,()=>`Tag name is not allowed: ${i.join(",")}`),this.isReporting=!0;const n={...e,tags:t,timestamp:void 0===e.timestamp?Date.now():e.timestamp},s=this.rpcManager.post("/observability/metrics",{metrics:[n]}).finally(()=>{this.pendingPromises=this.pendingPromises.filter(e=>e!==s),this.isReporting=this.pendingPromises.length>0});this.pendingPromises.push(s)}async flush(){this.isReporting&&await Promise.all(this.pendingPromises)}async queryMetrics(e){const t={...Vn,...e,fn:Array.isArray(e.fn)?e.fn:[e.fn]};t.pointIntervalSeconds||(t.pointIntervalSeconds=t.periodEndSeconds-t.periodStartSeconds);const i=await this.rpcManager.post("/observability/metrics/query",t);return function(e,t){const{pointIntervalSeconds:i,noDataBehavior:n}=e,s=void 0===e.fillValue?null:e.fillValue,r=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-start-time"===n)return e;const s=t-e;let r=t-Math.floor(s/i)*i;return r>e&&(r-=i),r}(e),o=function({periodStartSeconds:e,periodEndSeconds:t,pointIntervalSeconds:i,pointIntervalAlignment:n}){if("align-by-end-time"===n)return t-i;const s=t-e;let r=e+Math.floor(s/i)*i;return r>=t&&(r-=i),r}(e),a=e.tagDomains||{},c=Object.entries(a);if(0===t.length)if(c.length>0){const i=[];for(let t=0;t<e.groupByTags.length;t++){const n=e.groupByTags[t],s=a[n]?.[0]||"";i.push(s)}t.push({tagValues:i,points:[]})}else"return-result-group-with-default-values"===n&&t.push({tagValues:e.groupByTags.map(()=>""),points:[]});for(const[i,n]of Object.entries(a)){const s=e.groupByTags.indexOf(i);if(!(s<0))for(let e=0;e<t.length;e++){const i=t[e],r=new Set(n);for(let e=0;e<t.length;e++){const n=t[e];i.tagValues.every((e,t)=>t===s||e===n.tagValues[t])&&r.delete(n.tagValues[s])}if(0!==r.size)for(const e of r){const n={tagValues:[...i.tagValues],points:[]};n.tagValues[s]=e,t.push(n)}}}for(const n of t){if(0!==n.points.length){const e=n.points[0][0],t=n.points[n.points.length-1][0];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+=i){const i=n.points[a];i?i[0]===e?(t.push(i),a++):(be(i[0]>e,()=>`Result point has invalid time: ${i[0]}`),t.push([e,...u])):t.push([e,...u])}n.points=t}}(t,i.resultGroups),i}}const Zn=/^[a-zA-Z0-9_-]+$/,Xn=1e3;async function es(e,t,i=500){const n=Date.now(),s=e.paginate({pageSize:i,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()-n}}async function ts(e,t=500){const i=[],n=e.paginate({pageSize:t,subscribe:!1});let s=await n.waitForData();for(;;){for(const e of s.data){const t=Di(e.squidDocId),n=gi(t.docId),s=t.integrationId===Rt?n.__id:n;i.push(s)}if(!s.hasNext)break;s=await n.next()}return i}function is(e,t){switch(t.type){case"simple":return function(e,t){const{query:i,dereference:n}=t,{collectionName:s,integrationId:r}=i;let o=e.collection(s,r).query();return o=ns(o,i),n?o.dereference():o}(e,t);case"join":return function(e,t){const{root:i,joins:n,joinConditions:s,dereference:r,grouped:o}=t,{collectionName:a,integrationId:c}=i.query;let u=e.collection(a,c).joinQuery(i.alias);return u=ns(u,i.query),Object.entries(n).map(([t,i])=>{const{collectionName:n,integrationId:r}=i,{left:o,right:a,leftAlias:c}=s[t];let l=e.collection(n,r).query();l=ns(l,i),u=u.join(l,t,{left:o,right:a},{leftAlias:c})}),r&&o?u.grouped().dereference():r?u.dereference():o?u.grouped():u}(e,t);case"merged":return function(e,t){const{queries:i}=t,{collectionName:n,integrationId:s}=ss(i[0]),r=i.map(t=>is(e,t));return e.collection(n,s).or(...r)}(e,t)}}function ns(e,t){const{conditions:i,limit:n,sortOrder:s}=t;for(const t of i){if(!("operator"in t))throw new Error("Composite conditions are not support in query serialization.");if("docIds"in t)throw new Error("DocId conditions are not supported in query serialization.");const{fieldName:i,operator:n,value:s}=t;e.where(i,n,s)}e.limit(n);for(const{fieldName:t,asc:i}of s)e.sortBy(t,i);return e}function ss(e){switch(e.type){case"simple":{const{collectionName:t,integrationId:i}=e.query;return{collectionName:t,integrationId:i}}case"join":{const{collectionName:t,integrationId:i}=e.root.query;return{collectionName:t,integrationId:i}}case"merged":return ss(e.queries[0])}}class rs{constructor(e,t,i){this.documentStore=e,this.documentReferenceFactory=t,this.querySubscriptionManager=i}peek(e){if(!this.querySubscriptionManager.findValidParentOfQuery(e))return[];const{integrationId:t,collectionName:i}=e,n=new ln(e),s=this.documentReferenceFactory.getDocumentsForCollection(t,i).filter(e=>n.documentMatchesQuery(e.data)),r={};return s.forEach(e=>{r[e.squidDocId]=e}),this.documentStore.sortAndLimitDocs(new Set(Object.keys(r)),e).map(e=>r[Oi(e.__docId__,i,t)])}}function os(e,t){return W(function(i,n){var s=0;i.subscribe(pe(n,function(i){return e.call(t,i,s++)&&n.next(i)}))})}class as{constructor(e,i,n){this.rpcManager=e,this.destructManager=i,this.webSocketConnectionReady$=n,this.safeToSendQueriesToServer=new t(!0),this.pendingQueryRequests=[],this.inflightQueriesCount=new t(0),this.destructManager.onPreDestruct(()=>{this.preDestruct()})}async sendQuery(e){const t=new r,i=m(t);return this.pendingQueryRequests.push({queryRequest:e,responseSubject:t}),this.pendingQueryBatchTimeout&&(clearTimeout(this.pendingQueryBatchTimeout),this.pendingQueryBatchTimeout=void 0),this.pendingQueryRequests.length>=10?(this.processQueryBatch(),i):(this.pendingQueryBatchTimeout=setTimeout(()=>{this.gateForCurrentBatch().subscribe(()=>{this.processQueryBatch()})},0),i)}gateForCurrentBatch(){return this.pendingQueryRequests.some(({queryRequest:e})=>e.subscribe)&&this.webSocketConnectionReady$?o([this.safeToSendQueriesToServer,this.webSocketConnectionReady$]).pipe(os(([e,t])=>e&&t),O(1),fe(()=>!0)):this.safeToSendQueriesToServer.pipe(os(Boolean),O(1))}async sendQueryDirect(e){const t=await this.rpcManager.post("query/batchQueries",[e]),i=t.errors[e.clientRequestId];if(i)throw i;return t.results[e.clientRequestId]}async waitForAllQueriesToFinish(){return m(this.inflightQueriesCount.pipe(os(e=>0===e))).then(()=>{})}async processQueryBatch(){const e=this.pendingQueryRequests.splice(0);if(!e.length)return;const t=Array.from(e.map(({queryRequest:e})=>e).reduce((e,t)=>(e.set(t.clientRequestId,t),e),new Map).values()),i=e.map(({responseSubject:e})=>e);this.inflightQueriesCount.next(this.inflightQueriesCount.value+t.length);try{const i=await this.rpcManager.post("query/batchQueries",t);for(const{queryRequest:t,responseSubject:n}of e){const e=t.clientRequestId,s=i.errors[e],r=i.results[e];s?n.error(s):n.next(r)}}catch(e){i.forEach(t=>t.error(e))}finally{this.inflightQueriesCount.next(this.inflightQueriesCount.value-t.length)}}preDestruct(){this.safeToSendQueriesToServer.next(!1),this.safeToSendQueriesToServer.complete()}}var cs={d:(e,t)=>{for(var i in t)cs.o(t,i)&&!cs.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};function us(e,t,...i){e||function(e,...t){const i=function(e){return void 0===e?"":"string"==typeof e?e:e()}(e);if("object"==typeof i)throw i;throw(e=>new Error(e))(i||"Assertion error",...t)}(t,...i)}function ls(e,t){switch(t.type){case"set":return function(e,t,i){if(void 0===i)return ds(e,t);if(0===t.length)return us("object"==typeof i&&null!==i&&!Array.isArray(i),()=>`Root state must be a record. Trying to set '${i}', type: ${typeof i}`),i;function n(e){const t=Number(e);return!isNaN(t)&&t>=0&&t!==1/0}let s=e;for(let e=0;e<t.length-1&&void 0!==s;e++){const i=t[e];us(!Array.isArray(s)||n(i),()=>`Invalid array index. Path: '${t.slice(0,e+1)}', index: '${i}'`),s=s[i],us(void 0===s||"object"==typeof s&&null!==s,()=>`Cannot set a property to a non-record parent. Path: '${t.slice(0,e+1)}', type: '${null===s?"<null>":typeof s}'`)}const r=t[t.length-1];return us(!Array.isArray(s)||n(r),()=>`Invalid array index Path: '${t}`),(null==s?void 0:s[r])===i?e:hs(e,t,i)}(e,t.path,t.value);case"delete":return ds(e,t.path);case"batch":return t.actions.reduce((e,t)=>ls(e,t),e)}}function ds(e,t){us(0!==t.length,"Can't delete an empty path");let i=e;for(let n=0;n<t.length-1;n++){const s=t[n];if(i=i[s],void 0===i)return e;us("object"==typeof i&&null!==i,()=>`Cannot delete a property from a non-record parent. Path: '${t.slice(0,n+1)}', type: ${null===i?"<null>":typeof i}`)}const n=t[t.length-1];return void 0===i[n]?e:hs(e,t,void 0)}function hs(e,t,i){function n(e,i){us(!Array.isArray(e),()=>`Can't delete element of array. Path: '${t}'`),delete e[i]}const s=Object.assign({},e);let r=s;for(let e=0;e<t.length-1;e++){const s=t[e],o=r[s];us(void 0===o||"object"==typeof o&&null!==o,()=>`Internal error: sub-path has an invalid type and can't be patched: '${t.slice(0,e+1)}', type: '${null===o?null:typeof o}'`);const a=void 0===o?void 0===i?void 0:{}:Array.isArray(o)?[...o]:Object.assign({},o);if(void 0===a)return n(r,s),r;r[s]=a,r=a}const o=t[t.length-1];return void 0===i?n(r,o):r[o]=i,s}function ps(e,t){const i=[];if("set"===e.type||"delete"===e.type)i.push(e.path);else if("batch"===e.type)for(const t of e.actions)i.push(...ps(t,"as-is"));return"unique-and-sorted"===t?ys(i):i}function gs(e,t){if(e.length<t.length)return!1;for(let i=0;i<t.length;i++)if(e[i]!==t[i])return!1;return!0}function fs(e){const t=[...e];return t.sort((e,t)=>{for(let i=0;i<e.length;i++){if(i===t.length)return 1;const n=e[i].localeCompare(t[i]);if(0!==n)return n}return e.length-t.length}),t}function ys(e){const t=fs(e),i=t;for(let e=0;e<t.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++){const r=t[s];n.length===r.length&&gs(n,r)&&(i[s]=void 0,e++)}}return i.filter(e=>void 0!==e)}const ms=(bs={Observable:()=>n,Subject:()=>r},Is={},cs.d(Is,bs),Is);var bs,Is;const vs=(ws={filter:()=>os,map:()=>fe},Ss={},cs.d(Ss,ws),Ss);var ws,Ss;class Ms{constructor(){this.root={children:new Map,childrenWithValue:0}}get(e){var t;return null===(t=this.getNode(e))||void 0===t?void 0:t.value}getOrSet(e,t){const i=this._buildPath(e);if(void 0!==i.value)return i.value;const n=t(e);return this._setNodeValue(i,n,void 0===n),n}set(e,t){const i=void 0===t?this._findNode(e):this._buildPath(e);i&&this._setNodeValue(i,t,!0)}delete(e){const t=this._findNode(e);if(void 0===t)return;if(void 0===t.parent){if(t!==this.root)throw new Error("Only root node can have no parent.");return this.root.value=void 0,this.root.children.clear(),void(this.root.childrenWithValue=0)}const i=(void 0===t.value?0:1)+t.childrenWithValue;i>0&&this._updateChildrenWithValue(t,-i),t.parent.children.delete(e[e.length-1]),this._runGc(t.parent)}clear(){this.delete([])}count(e=[],t="node-and-children"){const i=this.getNode(e);return void 0===i?0:i.childrenWithValue+("node-and-children"===t&&void 0!==i.value?1:0)}get isEmpty(){return 0===this.count()}fillPath(e,t){const i=[];let n=this.root,s=t(n.value,i);if(s!==Ms.StopFillToken){this._setNodeValue(n,s,!1);for(let r=0;r<e.length;r++){const o=e[r];i.push(o);let a=n.children.get(o);if(s=t(null==a?void 0:a.value,i),s===Ms.StopFillToken)break;a||(a={children:new Map,parent:n,childrenWithValue:0},n.children.set(o,a)),this._setNodeValue(a,s,!1),n=a}this._runGc(n)}}visitDfs(e,t,i=[]){const n=this.getNode(i);void 0!==n&&this._visitDfs(e,n,t,[...i])}_visitDfs(e,t,i,n){if("pre-order"===e&&!1===i(t.value,n))return!1;for(const[s,r]of t.children){if(n.push(s),!this._visitDfs(e,r,i,n))return!1;n.pop()}return"in-order"!==e||!1!==i(t.value,n)}getNode(e){return this._getNode(e)}_getNode(e){let t=this.root;for(const i of e)if(t=t.children.get(i),!t)return;return t}_findNode(e){let t=this.root;for(let i=0;i<e.length&&t;i++)t=t.children.get(e[i]);return t}_buildPath(e){let t=this.root;for(let i=0;i<e.length;i++){const n=e[i];let s=t.children.get(n);s||(s={children:new Map,parent:t,childrenWithValue:0},t.children.set(n,s)),t=s}return t}_setNodeValue(e,t,i){if(e.value!==t){const i=void 0===t?-1:void 0===e.value?1:0;e.value=t,this._updateChildrenWithValue(e,i)}i&&this._runGc(e)}_updateChildrenWithValue(e,t){if(0!==t)for(let i=e.parent;i;i=i.parent)if(i.childrenWithValue+=t,i.childrenWithValue<0)throw new Error("Internal error: negative counter value!")}_runGc(e){void 0===e.value&&(0===e.childrenWithValue&&e.children.clear(),e.parent&&this._runGc(e.parent))}}Ms.StopFillToken=Symbol("Trie.StopFillToken");class ks extends ms.Subject{constructor(){super(...arguments),this.isAllDetailsMode=!1}}class Ts{constructor(e){this.rootState=e,this.observersTrie=new Ms,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,vs.map)(e=>e.value))}observeChanges(e,t=[]){return this._observeChanges(e,t,"all-details")}set(e,t,i){(null==i?void 0:i(this.get(e),t,e))||this._apply({type:"set",path:e,value:t})}delete(e){this._apply({type:"delete",path:e})}reset(e){this.observersTrie.visitDfs("pre-order",e=>null==e?void 0:e.complete()),this.observersTrie.delete([]),this.rootState=e}runInBatch(e){this.batchDepth++;try{e()}finally{if(this.batchDepth--,0===this.batchDepth&&this.appliedBatchActions.length>0){const e={type:"batch",actions:this.appliedBatchActions};this.appliedBatchActions=[],this._notify(e)}}}_apply(e){0===this.batchDepth&&(this.rootStateBeforeBatchStart=this.rootState),this.rootState=ls(this.rootState,e),this.rootState===this.rootStateBeforeBatchStart||this.observersTrie.isEmpty||(this.batchDepth>0?this.appliedBatchActions.push(e):this._notify(e))}_notify(e){const t=ps(e,"unique-and-sorted"),i=this.selectChildPathsWithObservers(t),n=ys([...t,...i]),s=new Ms;for(const e of n)s.fillPath(e,()=>!0);s.visitDfs("pre-order",(t,i)=>{const n=this.observersTrie.get(i);if(n){const t=this.get(i),s=n.isAllDetailsMode?this._get(this.rootStateBeforeBatchStart,i):void 0;n.next({action:e,value:t,oldValue:s})}})}_observeChanges(e,t=[],i){const n=0===t.length?void 0:new Ms;for(const e of t)null==n||n.set(e,!0);return new ms.Observable(t=>{const s=this.observersTrie.getOrSet(e,()=>new ks);s.isAllDetailsMode=s.isAllDetailsMode||"all-details"===i;const r={oldValue:void 0,value:this.get(e),paths:[[]]};t.next(r);const o=s.pipe((0,vs.filter)(({action:e})=>void 0===n||ps(e,"as-is").some(e=>!n.get(e))),(0,vs.map)(({action:t,value:i,oldValue:n})=>{let r=this.stubForUnusedPaths;if(s.isAllDetailsMode){const i=ps(t,"as-is");r=function(e){if(1===e.length)return[...e];if(e.some(e=>0===e.length))return[[]];const t=fs(e),i=t;for(let e=0;e<i.length-1;e++){const n=t[e];for(let s=e+1;s<t.length;s++)gs(t[s],n)&&(i[s]=void 0,e++)}return i.filter(e=>void 0!==e)}(e.length>0?i.filter(t=>gs(t,e)).map(t=>t.slice(e.length)):i)}return{value:i,oldValue:n,paths:r}})).subscribe(t);return()=>{o.unsubscribe(),s.observed||this.observersTrie.delete(e)}})}_get(e,t){let i=e;for(let e=0;e<t.length&&void 0!==i;e++){const n=t[e];i=null==i?void 0:i[n]}return i}selectChildPathsWithObservers(e){const t=[];for(const i of e)this.observersTrie.count(i,"children-only")>0&&this.observersTrie.visitDfs("pre-order",(e,i)=>{e&&t.push([...i])},i);return t}}function _s(e,t,i=(e,t)=>e>t?1:e<t?-1:0,n=0,s=e.length-1){if(s<n)return-1;const r=Math.trunc((n+s)/2);return 0===i(t,e[r])?r:i(t,e[r])>0?_s(e,t,i,r+1,s):_s(e,t,i,n,r-1)}function qs(e,t,i=(e,t)=>e>t?1:e<t?-1:0){if(-1!==_s(e,t,i))return;let n;for(n=e.length-1;n>=0&&i(e[n],t)>0;n--)e[n+1]=e[n];e[n+1]=t}function Cs(e,t,i=(e,t)=>e>t?1:e<t?-1:0){const n=_s(e,t,i);n>-1&&e.splice(n,1)}const Ds=100;class Os{setDetachedQueryExecutor(e){this.detachedQueryExecutor=e}constructor(e,t,i,n,s,o,a,c){this.rpcManager=e,this.clientIdService=t,this.documentStore=i,this.destructManager=n,this.documentIdentityService=s,this.querySender=o,this.socketManager=a,this.lockManager=c,this.onOrphanDocuments=new r,this.ongoingQueries=new Map,this.clientRequestIdToLocalDocuments=new Map,this.localDocumentToClientRequestIds=new Map,this.queryMappingManager=new As,this.queryResultsSubject=new r,this.detachedRecords=new Set,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:i,integrationId:n}=Di(t),s=this.queryMappingManager.getMapping(i,n);return s?function(e,t){const i=[...e.unconditional||[]],n=new Map;for(const[i,s]of Object.entries(e.conditional||{})){const e=gi(i);let r;if(ji(e))if(e.fieldName===$t)r=xi(e.value,t,e.operator,Xt);else{const i=Xt(t,e.fieldName)??null;r=Ei(e.value,i,e.operator)}else r=Fi(e)?Ni(e,t,Xt):Es(e,t);if(r)for(const e of s)n.set(e,(n.get(e)||0)+1)}for(const[t,s]of n.entries())s>=e.queriesMetadata[t].condCount&&i.push(t);return i}(s,e):[]}setClientRequestIdsForLocalDoc(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set,n=new Set(t?this.findQueriesForDocument(t,e).map(e=>function(e){const t=e.split("_");return{clientId:t[0],clientRequestId:t[1]}}(e).clientRequestId):[]),s=new Set([...i,...n]);for(const t of[...i]){if(n.has(t))continue;i.delete(t);const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),i.size||this.localDocumentToClientRequestIds.delete(e)}for(const t of n){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}return[...s]}addDocToQuery(e,t){let i=this.localDocumentToClientRequestIds.get(e);i||(i=new Set,this.localDocumentToClientRequestIds.set(e,i)),i.add(t);let n=this.clientRequestIdToLocalDocuments.get(t);n||(n=new Set,this.clientRequestIdToLocalDocuments.set(t,n)),n.add(e)}removeDocFromQuery(e,t){const i=this.localDocumentToClientRequestIds.get(e);let n=!i;i&&(i.delete(t),i.size||(this.localDocumentToClientRequestIds.delete(e),n=!0));const s=this.clientRequestIdToLocalDocuments.get(t);s&&(s.delete(e),s.size||this.clientRequestIdToLocalDocuments.delete(t)),n&&this.documentStore.deleteDocument(e)}errorOutAllQueries(e,t){const i=this.localDocumentToClientRequestIds.get(e)||new Set;for(const e of i){const i=this.ongoingQueries.get(e);i&&(this.destructManager.isDestructing?i.dataSubject.complete():i.dataSubject.error(t),i.done=!0)}}notifyAllSubscriptions(e){const t=new Set;for(const i of e){const e=this.ongoingQueries.get(i);if(!e)continue;if(!e.gotInitialResponse||!e.activated||e.isInFlight)continue;const n=this.clientRequestIdToLocalDocuments.get(i)||new Set,s=this.documentStore.sortAndLimitDocs(n,e.query),r=e.supportedQueries.map(e=>this.updateOngoingQueryWithNewDataFromSupportingQuery(s,e)).some(Boolean);let o=e;for(;!o.allObservables;)o=Ie(o?.supportingOngoingQuery);if(r&&t.add(o),e.query.limit>0)switch(e.limitUnderflowState){case In.UNKNOWN:e.limitUnderflowState=n.size===e.query.limit+100?In.ENABLED:In.DISABLED;break;case In.DISABLED:break;case In.ENABLED:if(n.size<e.query.limit+20){e.limitUnderflowState=In.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 ln(e);for(const e of this.ongoingQueries.values())if(this.isValidParent(e)&&t.isSubqueryOfQuery(e.query))return e}processQuery(e,t,i,n,r,a,c){r&&this.socketManager.notifyWebSocketIsNeeded();const u=Object.keys(i).length>0;return r||u||!this.detachedQueryExecutor||this.lockManager.canGetLock(bn)?d(()=>{const u=this.createOngoingQueryGraph(e,t,i,n,r,!0,{},c);a&&(u.forceFetchFromServer=!0),this.sendQueryToServerOrUseParentQuery(u),u.allObservables=new s(1);const l=u.allObservables.pipe(D(e=>o(e).pipe(fe(e=>this.joinResults(e,n,u)))),os(()=>this.allOngoingQueriesGotInitialResult(u)),q(void 0),M(),os(([e,t])=>!ri(e,t)),fe(([,e])=>e),r?R():O(1),f(()=>{u.dataSubject.complete(),u.done=!0,this.completeAllSupportedQueries(u),u.allObservables?.complete()})),d=this.collectAllObservables(u);return u.allObservables.next(d),l}).pipe(T()):b(this.detachedQueryExecutor(e)).pipe(fe(e=>e.map(e=>{const i={[t]:e};return this.detachedRecords.add(i),i})))}hasOngoingQueryForDocId(e){const t=this.localDocumentToClientRequestIds.get(e);return!!t&&!!t.size}unsubscribe(){const e=[...this.ongoingQueries.values()];for(const t of e)t.dataSubject.complete(),t.allObservables?.complete()}hasSubscription(e){return!!this.ongoingQueries.get(e)?.subscribe}isValidParent(e){if(!e.activated||e.isInFlight||e.isEmptyForJoin||e.done||!e.subscribe||!e.gotInitialResponse||!e.dataSubject.value)return!1;const t=-1===e.query.limit?1e3:e.query.limit;return e.dataSubject.value.length<t}findValidParentOfOngoingQuery(e){if(e.forceFetchFromServer)return;const t=new ln(e.query);for(const i of this.ongoingQueries.values()){if(e===i)return;if(this.isValidParent(i)&&t.isSubqueryOfQuery(i.query))return i}}removeClientRequestIdMapping(e){const t=this.clientRequestIdToLocalDocuments.get(e);if(!t)return;this.clientRequestIdToLocalDocuments.delete(e);const i=[];for(const n of t){const t=Ie(this.localDocumentToClientRequestIds.get(n));t.delete(e),t.size||(this.localDocumentToClientRequestIds.delete(n),i.push(n))}i.length&&this.onOrphanDocuments.next(i)}registerQueryFinalizer(e){const t=e.clientRequestId,i=Ri(this.clientIdService.getClientId(),t);e.dataSubject.pipe(f(async()=>{if(e.unsubscribeBlockerCount.value>0&&await m(k(this.destructManager.observeIsDestructing(),e.unsubscribeBlockerCount.pipe(os(e=>0===e)))),this.queryMappingManager.removeQuery(i),this.ongoingQueries.delete(t),e.subscribe&&!e.isEmptyForJoin&&e.activated){const i={clientRequestId:t};this.rpcManager.post("query/unsubscribe",i).catch(t=>{this.destructManager.isDestructing||console.error("Got error while unsubscribing from query",e.query,t)})}this.removeClientRequestIdMapping(t)}),os(Boolean)).subscribe({error:()=>{}})}createOngoingQueryGraph(e,i,n,s,r,o,a={},c){if(a[i])return a[i];const u=o&&c?c:this.clientIdService.generateClientRequestId(),l=[],d={clientRequestId:u,activated:o,alias:i,query:e,subscribe:r,dataSubject:new t(null),supportedQueries:l,supportingOngoingQuery:void 0,joinCondition:void 0,gotInitialResponse:!1,isEmptyForJoin:!1,canExpandForJoin:!0,unsubscribeBlockerCount:new t(0),queryRegistered:new t(!1),done:!1,isInFlight:!1,forceFetchFromServer:!1,limitUnderflowState:r?In.UNKNOWN:In.DISABLED};this.registerQueryFinalizer(d),this.ongoingQueries.set(u,d),a[i]=d;for(const[e,t]of Object.entries(s)){const o=t.leftAlias;if(o!==i&&e!==i)continue;const c=o===i?e:o;if(o===i){const e=this.createOngoingQueryGraph(n[c],c,n,s,r,!1,a);e.joinCondition=t,l.push(e)}else d.supportingOngoingQuery=this.createOngoingQueryGraph(n[c],c,n,s,r,!1,a)}return d}collectAllObservables(e,t=[]){if(e.isEmptyForJoin)return t;const i=e.alias;t.push(e.dataSubject.pipe(os(Boolean),fe(e=>({docs:e,alias:i}))));for(const i of e.supportedQueries)this.collectAllObservables(i,t);return t}joinResults(e,t,i){const n=e.reduce((e,t)=>(e[t.alias]?e[t.alias].push(...t.docs):e[t.alias]=[...t.docs],e),{});let s=n[i.alias].map(e=>({[i.alias]:e}));const r=this.getOngoingQueriesBfs(i),o=new Set;for(let e=1;e<r.length;e++){const i=r[e].alias;o.has(i)||(o.add(i),s=this.join(s,i,n[i],t[i]))}return s}join(e,t,i,n){if(!e.length)return e;const s=Object.keys(e[0]);if(!n||!s.includes(n.leftAlias))throw new Error("No join condition found for alias "+t);const r=new Map;return(i||[]).forEach(e=>{const t=this.transformKey(e[n.right]);r.has(t)||r.set(t,[]),Ie(r.get(t)).push(e)}),e.flatMap(e=>{const i=r.get(this.transformKey(e[n.leftAlias]?.[n.left]))||[];return i.length?i.map(i=>({...e,[t]:i})):n.isInner?[]:[{...e,[t]:void 0}]})}getOngoingQueriesBfs(e){const t=[],i=[e];for(;i.length;){const e=Ie(i.shift());e.isEmptyForJoin||(t.push(e),i.push(...e.supportedQueries))}return t}updateOngoingQueryWithNewDataFromSupportingQuery(e,i){const n=Ie(i.joinCondition),s=i.query;if(i.activated){if(!i.canExpandForJoin)return!1;const r=Ie(i.supportingOngoingQuery?.supportedQueries).filter(e=>e.alias===i.alias),o=new Set(e.map(e=>e[n.left]??null));for(const e of r)e.query.conditions.filter(ji).filter(e=>e.fieldName===n.right).forEach(e=>{o.delete(e.value)});if(0===o.size)return!1;const a=ai(s);a.conditions=a.conditions.filter(e=>!ji(e)||e.fieldName!==n.right),[...o].forEach(e=>{a.conditions.push({fieldName:n.right,operator:"==",value:e})});const c={...i,query:a,activated:!0,gotInitialResponse:!1,dataSubject:new t(null),clientRequestId:this.clientIdService.generateClientRequestId(),isEmptyForJoin:!1};return this.registerQueryFinalizer(c),this.ongoingQueries.set(c.clientRequestId,c),Ie(i.supportingOngoingQuery).supportedQueries.push(c),this.sendQueryToServerOrUseParentQuery(c),!0}{if(i.activated=!0,s.conditions.filter(ji).filter(e=>e.fieldName===n.right&&"=="===e.operator).map(e=>e.value).length)return this.sendQueryToServerOrUseParentQuery(i),i.canExpandForJoin=!1,!0;const t=e.map(e=>e[n.left]??null).map(e=>({fieldName:n.right,operator:"==",value:e}));return t.length?(s.conditions.push(...t),this.sendQueryToServerOrUseParentQuery(i)):i.isEmptyForJoin=!0,!0}}allOngoingQueriesGotInitialResult(e){return!!e.isEmptyForJoin||!!e.gotInitialResponse&&(!e.supportedQueries.length||e.supportedQueries.every(e=>this.allOngoingQueriesGotInitialResult(e)))}async completeAllSupportedQueries(e){const t=[...e.supportedQueries||[]];for(;t.length;){const e=Ie(t.shift());t.push(...e.supportedQueries||[]),await m(e.unsubscribeBlockerCount.pipe(os(e=>0===e))),e.dataSubject.complete()}}transformKey(e){return e instanceof Date?`DATE AS string KEY: ${e.toISOString()}`:e}preDestruct(){this.unsubscribe()}sendQueryToServerOrUseParentQuery(e,t=!1){if(this.destructManager.isDestructing)return;const i=e.query,n=e.clientRequestId,s=Ri(this.clientIdService.getClientId(),n);this.queryMappingManager.addQuery(i,s),this.ongoingQueries.set(n,e);const r=t?void 0:this.findValidParentOfOngoingQuery(e);r?this.useParentOngoingQuery(e,r):this.sendQueryToServer(e)}async useParentOngoingQuery(e,t){const i={clientRequestId:e.clientRequestId,query:e.query,parentClientRequestId:t.clientRequestId},n=new ln(e.query);t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value+1);try{await m(t.queryRegistered.pipe(os(Boolean)))}catch(t){return this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(e.dataSubject.error(t),e.queryRegistered.error(t)),void(e.done=!0)}if(this.destructManager.isDestructing)return;if(e.done)return;this.rpcManager.post("query/register",i).then(()=>{e.isInFlight=!1,e.queryRegistered.next(!0)}).catch(i=>{e.isInFlight=!1,this.destructManager.isDestructing?e.dataSubject.complete():(console.error("Query error",e.query,t.query,i),e.dataSubject.error(i)),e.done=!0}).finally(()=>{t.unsubscribeBlockerCount.next(t.unsubscribeBlockerCount.value-1)});const s=k(e.queryRegistered.pipe(os(Boolean),h(2e3),O(1)),this.destructManager.observeIsDestructing().pipe(O(1)));t.dataSubject.pipe(A(()=>!e.done),E(s),os(Boolean),R(()=>{e.gotInitialResponse||this.setGotInitialResult(e.clientRequestId)}),fe(e=>e.filter(e=>n.documentMatchesQuery(e)))).subscribe({next:t=>{for(const i of t)this.setClientRequestIdsForLocalDoc(Oi(i.__docId__,e.query.collectionName,e.query.integrationId),i);this.notifyAllSubscriptions([e.clientRequestId])},error:t=>{this.destructManager.isDestructing?e.dataSubject.complete():e.dataSubject.error(t)}})}sendQueryToServer(e){const t=e.query.limit,i=t>0&&e.subscribe?t+100:t,n={query:{...e.query,limit:i},clientRequestId:e.clientRequestId,subscribe:e.subscribe};e.isInFlight=!0,this.querySender.sendQuery(n).then(t=>{e.isInFlight=!1,e.queryRegistered.next(!0),this.queryResultsSubject.next(t)}).catch(t=>{e.isInFlight=!1,this.destructManager.isDestructing?(e.dataSubject.complete(),e.queryRegistered.complete()):(ki.debug("Query error",e.query,t),e.dataSubject.error(t),e.queryRegistered.error("query failed")),e.done=!0})}refreshOngoingQueries(){for(const e of this.ongoingQueries.values())this.sendQueryToServerOrUseParentQuery(e,!0)}migrateDocIds(e){const t=Object.keys(e);for(const i of this.clientRequestIdToLocalDocuments.values())t.forEach(t=>{i.has(t)&&(i.delete(t),i.add(e[t]))});t.forEach(t=>{ni(this.localDocumentToClientRequestIds,t,e[t])})}}function Es(e,t){for(const i of e.fields){const e=Xt(t,i.fieldName)??null;if(Ei(i.value,e,i.operator))return!0;if(Ei(i.value,e,"!="))return!1}return!1}class As{constructor(){this.stateService=new Ts({}),this.querySubscriptionIdToQuery={}}addQuery(e,t){this.stateService.runInBatch(()=>{let i=0;const n=new Set;for(const s of e.conditions){if(ji(s)&&["=="].includes(s.operator)){const e=fi(s.fieldName);n.has(e)||(i++,n.add(e))}else i++;const r=this.getConditionStatePath(e,s),o=[...this.stateService.get(r)||[]];qs(o,t),this.stateService.set(r,o)}if(!e.conditions.length){const i=["queryMapping",e.collectionName,e.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];qs(n,t),this.stateService.set(i,n)}this.stateService.set([...this.getQueryMetadataStatePath(e,t),"condCount"],i)}),this.querySubscriptionIdToQuery[t]=e}async removeQuery(e){const t=this.querySubscriptionIdToQuery[e];if(t)return this.stateService.runInBatch(()=>{for(const i of t.conditions){const n=this.getConditionStatePath(t,i),s=[...this.stateService.get(n)||[]];Cs(s,e),s.length?this.stateService.set(n,s):this.stateService.delete(n)}if(!t.conditions.length){const i=["queryMapping",t.collectionName,t.integrationId,"mapping","unconditional"],n=[...this.stateService.get(i)||[]];Cs(n,e),this.stateService.set(i,n)}this.stateService.delete(this.getQueryMetadataStatePath(t,e))}),t}getMapping(e,t){return this.stateService.get(["queryMapping",e,t,"mapping"])}getQueryMetadataStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","queriesMetadata",`${t}`]}getConditionStatePath(e,t){return["queryMapping",e.collectionName,e.integrationId,"mapping","conditional",(i=t,hi(i))];var i}}class Rs{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)),O(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 i of e)this.locks[i]=new t(!0)}}class js{constructor(e,t,i){this.rpcManager=e,this.socketManager=t,this.queueManagers=new Map,this.socketManager.observeNotifications().subscribe(e=>{const t=this.getOrUndefined(e.integrationId,e.topicName);t&&t.onMessages(e.payload)}),i.onPreDestruct(()=>{for(const e of this.queueManagers.values())for(const t of e.values())t.destruct()})}get(e,t){let i=this.queueManagers.get(e);i||(i=new Map,this.queueManagers.set(e,i));let n=i.get(t);return n||(n=new Ns(e,t,this.rpcManager,this.socketManager),i.set(t,n)),n}getOrUndefined(e,t){return this.queueManagers.get(e)?.get(t)}}const Fs="subscriptionMutex";class Ns{constructor(e,t,i,n){this.integrationId=e,this.topicName=t,this.rpcManager=i,this.socketManager=n,this.messagesSubject=new r,this.subscriberCount=0,this.lockManager=new Rs}async produce(e){await this.lockManager.lock(Fs);try{await this.rpcManager.post("queue/produceMessages",{integrationId:this.integrationId,topicName:this.topicName,messages:e})}finally{this.lockManager.release(Fs)}}consume(){return this.socketManager.notifyWebSocketIsNeeded(),d(()=>(this.subscriberCount++,1===this.subscriberCount&&this.performSubscribe(),this.messagesSubject.asObservable().pipe(f(()=>{this.subscriberCount--,0===this.subscriberCount&&this.performUnsubscribe()}))))}onMessages(e){for(const t of e)this.messagesSubject.next(t)}destruct(){this.messagesSubject.complete()}async performSubscribe(){await this.lockManager.lock(Fs);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(Fs)}}async performUnsubscribe(){await this.lockManager.lock(Fs);try{await this.rpcManager.post("queue/unsubscribe",{integrationId:this.integrationId,topicName:this.topicName})}finally{this.lockManager.release(Fs)}}}class xs{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}}class Ps{constructor(e,i,n,s,r,o){this.region=e,this.appId=i,this.authManager=r,this.clientIdService=o,this.staticHeaders={},this.onGoingRpcCounter=new t(0);for(const[e,t]of Object.entries(s))this.setStaticHeader(e,t);this.clientIdService.observeClientId().subscribe(e=>{e?this.setStaticHeader("x-squid-clientid",e):this.deleteStaticHeader("x-squid-clientid")}),n.onDestruct(async()=>{await this.awaitAllSettled()});const a=this.authManager.getApiKey()?5:1;this.rateLimiters={default:new xs(60*a,5),ai:new xs(20*a,5),secret:new xs(20*a,5)}}async getAuthHeaders(){const e=this.authManager.getApiKey();if(e)return{Authorization:`ApiKey ${e}`};const{token:t,integrationId:i}=await this.authManager.getAuthData();if(!t)return{};let n=`Bearer ${t}`;return i&&(n+=`; IntegrationId ${i}`),{Authorization:n}}async awaitAllSettled(){await m(this.onGoingRpcCounter.pipe(g(e=>0===e)))}setStaticHeader(e,t){this.staticHeaders[e]=t}deleteStaticHeader(e){delete this.staticHeaders[e]}getStaticHeaders(){return this.staticHeaders}async post(e,t,i=[],n="files",s={}){return(await this.rawPost(e,t,i,n,!0,s)).body}async rawPost(e,t,i=[],n="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};ki.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 Bn({url:c,headers:a,message:t,files:i,filesFieldName:n,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async get(e,t,i=!0){return(await this.rawGet(e,t,i)).body}async rawGet(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),s={...this.staticHeaders,...n};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,i])=>{e.append(t,String(i))}),r+=`?${e.toString()}`}return ki.debug(`sending GET request: path: ${e}, queryParams: ${JSON.stringify(t)}`),await Qn({url:r,headers:s,extractErrorMessage:i})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async put(e,t,i=[],n="files"){return(await this.rawPut(e,t,i,n)).body}async rawPut(e,t,i=[],n="files",s=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};ki.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 Ln({url:a,headers:o,message:t,files:i,filesFieldName:n,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async patch(e,t,i=[],n="files"){return(await this.rawPatch(e,t,i,n)).body}async rawPatch(e,t,i=[],n="files",s=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const r=await this.getAuthHeaders(),o={...this.staticHeaders,...r};ki.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 Un({url:a,headers:o,message:t,files:i,filesFieldName:n,extractErrorMessage:s})}finally{this.onGoingRpcCounter.next(this.onGoingRpcCounter.value-1)}}async delete(e,t,i=!0){return(await this.rawDelete(e,t,i)).body}async rawDelete(e,t,i=!0){this.onGoingRpcCounter.next(this.onGoingRpcCounter.value+1);try{await this.getRateLimiterBucket(e).consume();const n=await this.getAuthHeaders(),s={...this.staticHeaders,...n};ki.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 $n({url:r,headers:s,message:t,extractErrorMessage:i})}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")}}function Bs(e){be(!e.isPassiveMode,"This operation is not available in passive mode. Use active mode for real-time features.")}class Qs{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 Ls(){}const Us="undefined"!=typeof process&&process.versions?.node?x(220):Mi().WebSocket;class $s{constructor(e,i,n,s=Nn,o,a,c){this.clientIdService=e,this.region=i,this.appId=n,this.messageNotificationWrapper=s,this.destructManager=o,this.authManager=a,this.runtimeOptions=c,this.webSocketObserver=new r,this.allMessagesObserver=new r,this.connectionReady=new t(!1),this.seenMessageIds=new Set,this.destructSubject=new r,this.connectedAtLeastOnce=!1,this.webSocketNeededSubject=new t(!1),this.clientTooOldThreshold=3e4,this.destructManager.onDestruct(()=>this.destruct()),this.setupMessageAcknowledgments(),this.webSocketNeededSubject.pipe(g(Boolean),O(1)).subscribe(()=>{this.connect(),this.lastTick=new Date,this.tickInterval=setInterval(()=>this.keepAlive(),5e3)}),this.observeConnectionReady().pipe(_(1),g(e=>!e),D(()=>k(j(this.clientTooOldThreshold),this.connectionReady.pipe(g(Boolean)),this.destructManager.observeIsDestructing()))).subscribe(()=>{this.connectionReady.value?ki.debug(this.clientIdService.getClientId(),"Client reconnected before becoming too old. Ignoring..."):this.destructManager.isDestructing||(ki.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?ki.debug(this.clientIdService.getClientId(),"Client too old but is destructed. Ignoring..."):this.clientIdService.isClientTooOld()?ki.debug(this.clientIdService.getClientId(),"Client is already marked as too old. Ignoring..."):(ki.debug(this.clientIdService.getClientId(),"Notifying client too old"),this.clientIdService.notifyClientTooOld(),ki.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(){Bs(this.runtimeOptions),await m(this.observeConnectionReady().pipe(g(Boolean)))}notifyWebSocketIsNeeded(){Bs(this.runtimeOptions),this.webSocketNeededSubject.next(!0)}postMessage(e){this.sendMessageImpl(e)}sendMessage(e){return this.sendMessageImpl(e)}disconnectForTest(){this.connectionReady.next(!1),this.socket?.close(4998)}keepAlive(){this.lastTick&&(Math.abs(Date.now()-this.lastTick.getTime())>this.clientTooOldThreshold&&(ki.debug(this.clientIdService.getClientId(),"Tick: Client not responding for a long time. Refreshing..."),this.refreshClient()),this.lastTick=new Date)}async sendMessageImpl(e){this.notifyWebSocketIsNeeded();try{await m(k(this.connectionReady.pipe(g(Boolean)),j(12e4).pipe(R(()=>{throw new Error("WebSocket connection not ready within 2 minutes")}))).pipe(E(this.destructSubject)))}catch(e){if(this.destructManager.isDestructing)return;throw e}const t=await this.authManager.getToken();if(this.connectionReady.value)try{be(this.socket,"Socket is undefined in sendMessageAsync");const i=pi({message:e,authToken:t});ki.debug(this.clientIdService.getClientId(),"Sending message to socket: ",i),this.socket.send(i)}catch(t){this.socket?.connected?console.error("Websocket message is ignored due to a non-recoverable error",t):(this.connectionReady.next(!1),await this.sendMessageImpl(e))}else await this.sendMessageImpl(e)}sendKillMessage(){this.socket?.connected&&this.socket.send(pi({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();ki.debug(this.clientIdService.getClientId(),"Connecting to socket at:",e);const i=`${e}?clientId=${t}`;this.socket=function(e,t={}){let i,n=0,s=1;const r={connected:!1,closeCalled:!1,open(){i=new(Us?.WebSocket??Us)(e,t.protocols||[]),i.onmessage=t.onmessage?e=>{e.data&&t.onmessage?t.onmessage(e):console.log("No data received from websockets, please contact support@getsquid.ai with this message.")}:Ls,i.onopen=function(e){r.connected=!0,(t.onopen||Ls)(e),n=0},i.onclose=function(e){if(r.connected=!1,4999!==e.code&&4001!==e.code)return ki.debug("WebSocket closed. Reconnecting. Close code: ",e.code),(t.onclose||Ls)(e),void r.reconnect(e);(t.onclose||Ls)(e)},i.onerror=function(e){r.connected=!1,e&&"ECONNREFUSED"===e.code?r.reconnect(e):r.closeCalled||(t.onerror||Ls)(e)}},reconnect(e){const i=void 0!==t.maxAttempts?t.maxAttempts:1/0;s&&n++<i?s=setTimeout(function(){(t.onreconnect||Ls)(e),ki.debug("WebSocket trying to reconnect..."),r.open()},t.timeoutMillis||1e3):(t.onmaximum||Ls)(e)},json(e){i.send(JSON.stringify(e))},send(e){i.send(e)},close(e=4999,t){r.closeCalled=!0;try{r.connected=!1,clearTimeout(s),s=void 0,i.close(e,t)}catch(e){}}};return r.open(),r}(i,{timeoutMillis:1e4,onmessage:e=>this.onMessage(e.data),onopen:()=>{ki.debug(this.clientIdService.getClientId(),`Connection to socket established. Endpoint: ${e}`)},onreconnect:()=>{ki.debug(t,"WebSocket reconnect event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):ki.debug(t,`WebSocket reconnect event triggered - ignored because the client id changed. Old: ${this.clientIdService.getClientId()}`)},onclose:()=>{ki.debug(t,"WebSocket onclose event triggered"),this.clientIdService.getClientId()===t?this.connectionReady.value&&this.connectionReady.next(!1):ki.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 ki.debug(this.clientIdService.getClientId(),"Got socket message: connectionReady"),void this.onConnectionReady();const t=gi(e);for(const e of t)this.allMessagesObserver.next(e),this.seenMessageIds.has(e.messageId)||(this.seenMessageIds.add(e.messageId),ki.debug(this.clientIdService.getClientId(),new Date,"Got socket message",JSON.stringify(e,null,2)),this.messageNotificationWrapper(()=>{this.webSocketObserver.next(e)}))}setupMessageAcknowledgments(){const e=new r;this.allMessagesObserver.subscribe(t=>{t?.messageId&&e.next(t.messageId)});const t=[];e.pipe(R(e=>t.push(e)),u(100)).subscribe(async()=>{const e=[...t.splice(0)];this.postMessage({type:"acknowledge",payload:e})})}async destruct(){this.sendKillMessage(),await m(j(0)),this.connectionReady.next(!1),await m(j(0)),clearInterval(this.tickInterval),this.closeCurrentSocketSilently(),this.webSocketObserver.complete(),this.allMessagesObserver.complete(),this.destructSubject.next()}}function Hs(e){var t,i;i="Invalid application ID",be(function(e){return"string"==typeof e}(t=e),()=>we(i,"Not a string",t));const[n,s,r,o]=e.split("-");return be(!o,`Invalid application ID: ${e}`),{appId:n,environmentId:s??"prod",squidDeveloperId:r}}function Gs(e,t){return`${Hs(e).appId}${t&&"prod"!==t?`-${t}`:""}`}function Ws(e,t,i){return`${Gs(e,t)}${i?`-${i}`:""}`}function Ks(e){const t=Hs(e);return Gs(t.appId,t.environmentId)}class Js{constructor(e="built_in_storage",t){this.integrationId=e,this.rpcManager=t}async uploadFile(e,t,i){const n={integrationId:this.integrationId,dirPathInBucket:e,expirationInSeconds:i};await this.rpcManager.post("storage/uploadFile",n,[t])}async getFileMetadata(e){const t={integrationId:this.integrationId,filePathInBucket:e};return await this.rpcManager.post("storage/getFileMetadata",t)}async getDownloadUrl(e,t){const i={integrationId:this.integrationId,filePathInBucket:e,urlExpirationInSeconds:t};return await this.rpcManager.post("storage/getDownloadUrl",i)}async listDirectoryContents(e){const t={integrationId:this.integrationId,dirPathInBucket:e};return await this.rpcManager.post("storage/listDirectoryContents",t)}async deleteFile(e){await this.deleteFiles([e])}async deleteFiles(e){const t={integrationId:this.integrationId,filePathsInBucket:e};await this.rpcManager.post("storage/deleteFiles",t)}}class zs{constructor(e,t,i,n,s){this.rpcManager=e,this.region=t,this.appId=i,this.apiKey=n,this.consoleRegion=s}get shortUrlHeaders(){return{"Content-Type":"application/json","x-app-api-key":this.apiKey}}async aiSearch(e){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){be(this.apiKey,"API key is required to create a short URL");const t="string"==typeof e?{url:e}:e,i=Q(this.region,this.consoleRegion,"openapi/sqd/shorten"),n={url:t.url,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},s=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(n)}),r=await s.text();return be(s.ok,`Failed to create short URL (${s.status}): ${r}`),JSON.parse(r)}async createShortUrls(e){be(this.apiKey,"API key is required to create a short URL");const t=Array.isArray(e)?{urls:e}:e,i=Q(this.region,this.consoleRegion,"openapi/sqd/shortenMany"),n={urls:t.urls,appId:this.appId,secondsToLive:t.secondsToLive,fileExtension:t.fileExtension},s=await fetch(i,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(n)}),r=await s.text();return be(s.ok,`Failed to create short URLs (${s.status}): ${r}`),JSON.parse(r)}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"),i={id:e,appId:this.appId},n=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});be(n.ok,`Failed to delete short URL (${n.status}): ${n.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"),i={ids:e,appId:this.appId},n=await fetch(t,{method:"POST",headers:this.shortUrlHeaders,body:JSON.stringify(i)});be(n.ok,`Failed to delete short URLs (${n.status}): ${n.statusText}`)}}class Vs{constructor(e,t,i){this.rpcManager=e,this.region=t,this.appId=i}async executeWebhook(e,t={}){const{headers:i={},queryParams:n={},body:s,files:r=[]}=t,o=await this.rpcManager.getAuthHeaders(),a={...this.rpcManager.getStaticHeaders(),...o,...i};let c=B(this.region,this.appId,`webhooks/${encodeURIComponent(e)}`);if(n&&Object.keys(n).length>0){const e=new URLSearchParams;Object.entries(n).forEach(([t,i])=>{e.append(t,String(i))}),c+=`?${e.toString()}`}const u=new Headers(a);let l;if(u.append(Rn,Fn("c_")),u.append(jn,Pn),r&&r.length>0){const e=new FormData;for(const t of r)e.append("file",t,t.name);s&&"object"==typeof s&&Object.entries(s).forEach(([t,i])=>{e.append(t,String(i))}),l=e}else u.append("Content-Type","application/json"),l=pi(s||{});const d=await fetch(c,{method:"POST",headers:u,body:l}),h={};if(d.headers.forEach((e,t)=>{h[t]=e}),!d.ok){const e=await d.text();let t;try{t=JSON.parse(e)}catch{t=e}const i="string"==typeof t?t:t?.message||d.statusText;throw new xn(i,d.status,c,h,t)}const p=await d.text();let g;try{g=JSON.parse(p)}catch{g=p}return g}getWebhookUrl(e){return B(this.region,this.appId,e?`webhooks/${encodeURIComponent(e)}`:"webhooks")}}class Ys{static{this.squidInstancesMap={}}constructor(e){this.options=e,this.destructManager=new Sn,be(e.appId,"APP_ID_MUST_BE_PROVIDED"),this.runtimeOptions={isPassiveMode:e.isPassiveMode??!1};for(const e of Object.getOwnPropertyNames(Object.getPrototypeOf(this))){const t=this[e];"function"!=typeof t||"constructor"===e||e.startsWith("_")||(this[e]=t.bind(this))}const t="prod"!==e.environmentId&&e.squidDeveloperId,i=Ws(e.appId,e.environmentId,t?e.squidDeveloperId:void 0);this.clientIdService=new Ti(this.destructManager),ki.debug(this.clientIdService.getClientId(),"New Squid instance created"),this.authManager=new Yt(e.apiKey,e.authProvider),this.socketManager=new $s(this.clientIdService,e.region,i,e.messageNotificationWrapper,this.destructManager,this.authManager,this.runtimeOptions),this.rpcManager=new Ps(e.region,i,this.destructManager,{},this.authManager,this.clientIdService),this.notificationClient=new zn(this.socketManager,this.rpcManager),this.jobClient=new En(this.socketManager,this.rpcManager,this.clientIdService,this.destructManager,this.runtimeOptions),this.backendFunctionManager=new wi(this.rpcManager),this.aiClient=new Jt(this.socketManager,this.rpcManager,this.jobClient,this.backendFunctionManager,()=>this.metricAnnotations),this.apiClient=new Vt(this.rpcManager),this.eventsClient=new Cn(this.rpcManager),this.documentStore=new qn,this.lockManager=new Rs,this.distributedLockManager=new Mn(this.socketManager,this.destructManager),this.documentIdentityService=new Tn(this.documentStore,this.destructManager),this.documentReferenceFactory=new _n(this.documentIdentityService),this.querySender=new as(this.rpcManager,this.destructManager,this.socketManager.observeConnectionReady()),this.observabilityClient=new Yn(this.rpcManager),this.schedulerClient=new Qs(this.rpcManager),this._appId=i,this.querySubscriptionManager=new Os(this.rpcManager,this.clientIdService,this.documentStore,this.destructManager,this.documentIdentityService,this.querySender,this.socketManager,this.lockManager),this.localQueryManager=new rs(this.documentStore,this.documentReferenceFactory,this.querySubscriptionManager);const n=new Kn(this.rpcManager,this.lockManager,this.querySender);this.queryBuilderFactory=new Qi(this.querySubscriptionManager,this.localQueryManager,this.documentReferenceFactory,this.documentIdentityService,n),this.dataManager=new vn(this.documentStore,n,this.socketManager,this.querySubscriptionManager,this.queryBuilderFactory,this.lockManager,this.destructManager,this.documentIdentityService,this.querySender),this.collectionReferenceFactory=new Yi(this.documentReferenceFactory,this.queryBuilderFactory,this.querySubscriptionManager,this.dataManager),this.documentReferenceFactory.setDataManager(this.dataManager),this.querySubscriptionManager.setDetachedQueryExecutor(e=>this.dataManager.executeDetachedQuery(e)),this.webhookManager=new Vs(this.rpcManager,e.region,i),this.nativeQueryManager=new Jn(this.rpcManager),this._connectionDetails=new Zi(this.clientIdService,this.socketManager,this.runtimeOptions),this.queueManagerFactory=new js(this.rpcManager,this.socketManager,this.destructManager),this.adminClient=new H(this.rpcManager,this.options.region,Ks(i),this.options.consoleRegion),this.webClient=new zs(this.rpcManager,this.options.region,Ks(i),this.options.apiKey,this.options.consoleRegion)}get observability(){return this.observabilityClient}get schedulers(){return this.schedulerClient}get appId(){return this._appId}get isDestructed(){return this.destructManager.isDestructing}static getInstance(e){const t=hi(e);let i=Ys.squidInstancesMap[t];return i||(i=new Ys(e),Ys.squidInstancesMap[t]=i,i)}static getInstances(){return Object.values(Ys.squidInstancesMap)}setAuthProvider(e){this.authManager.setAuthProvider(e)}collection(e,t=Rt){return this._validateNotDestructed(),this.collectionReferenceFactory.get(e,t)}runInTransaction(e){return this._validateNotDestructed(),this.dataManager.runInTransaction(e)}executeFunction(e,...t){return this._validateNotDestructed(),this.backendFunctionManager.executeFunction(e,...t)}executeFunctionWithHeaders(e,t,...i){return this._validateNotDestructed(),this.backendFunctionManager.executeFunctionWithHeaders(e,t,...i)}executeWebhook(e,t){return this._validateNotDestructed(),this.webhookManager.executeWebhook(e,t)}getWebhookUrl(e){return this._validateNotDestructed(),this.webhookManager.getWebhookUrl(e)}executeNativeRelationalQuery(e,t,i={}){const n={type:"relational",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativePureQuery(e,t,i={}){const n={type:"pure",query:t,params:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeMongoQuery(e,t,i){const n={type:"mongo",collectionName:t,aggregationPipeline:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(n)}executeNativeElasticQuery(e,t,i,n="_search",s="GET"){const r={type:"elasticsearch",index:t,endpoint:n,method:s,body:i,integrationId:e};return this.nativeQueryManager.executeNativeQuery(r)}ai(){return this._validateNotDestructed(),this.aiClient}setMetricAnnotations(e){this.metricAnnotations=e?{...e}:void 0}job(){return this._validateNotDestructed(),this.jobClient}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 Js(e,this.rpcManager)}externalAuth(e){return this._validateNotDestructed(),new Dn(e,this.rpcManager)}extraction(){return this._validateNotDestructed(),new On(this.rpcManager)}events(){return this._validateNotDestructed(),this.eventsClient}acquireLock(e,t){return this._validateNotDestructed(),this.distributedLockManager.lock(e,t)}async withLock(e,t,i){const n=await this.acquireLock(e,i);try{return await t(n)}finally{n.release()}}queue(e,t=jt){return this._validateNotDestructed(),this.queueManagerFactory.get(t,e)}async destruct(){return this.destructManager.destruct().finally(()=>{const e=Object.entries(Ys.squidInstancesMap).find(([,e])=>e===this);e&&delete Ys.squidInstancesMap[e[0]]})}connectionDetails(){return this._validateNotDestructed(),this._connectionDetails}getNotificationClient(){return this._validateNotDestructed(),this.notificationClient}async _unsubscribe(){this.querySubscriptionManager.unsubscribe(),await this.rpcManager.awaitAllSettled()}internal(){const{rpcManager:e}=this;return{getApplicationUrl:(e,t,i)=>B(e,t,i),getStaticHeaders:()=>e.getStaticHeaders(),getAuthHeaders:()=>e.getAuthHeaders(),appIdWithEnvironmentIdAndDevId:(e,t,i)=>Ws(e,t,i)}}_validateNotDestructed(){be(!this.destructManager.isDestructing,"The client was already destructed.")}}export{Ge as AGENT_STATUS_TITLE_ACCESSING_KB,He as AGENT_STATUS_TITLE_AGENT_RESPONSE,_t as AI_AGENTS_INTEGRATION_ID,ft as AI_AUDIO_CREATE_SPEECH_MODEL_NAMES,gt as AI_AUDIO_TRANSCRIPTION_MODEL_NAMES,We as AI_CHAT_MESSAGE_SOURCE,st as AI_EMBEDDINGS_MODEL_NAMES,pt as AI_IMAGE_MODEL_NAMES,mt as AI_MODEL_SOURCES,Je as AI_PROVIDER_TYPES,Gt as ALL_OPERATORS,Ze as ANTHROPIC_CHAT_MODEL_NAMES,wt as API_INJECTION_FIELD_TYPES,Ht as ARRAY_OPERATORS,Dt as AUTH_INTEGRATION_TYPES,H as AdminClient,je as AiAgentClient,Ae as AiAgentReference,Ne as AiAudioClient,Jt as AiClient,xe as AiFilesClient,Pe as AiImageClient,Le as AiKnowledgeBaseClient,Qe as AiKnowledgeBaseReference,Ue as AiMatchMakingClient,Vt as ApiClient,$ as ApiKeysSecretClient,Yt as AuthManager,nt as BEDROCK_EMBEDDING_MODEL_NAMES,kt as BUILT_IN_AGENT_ID,Rt as BUILT_IN_DB_INTEGRATION_ID,jt as BUILT_IN_QUEUE_INTEGRATION_ID,Ft as BUILT_IN_STORAGE_INTEGRATION_ID,wi as BackendFunctionManager,Li as BaseQueryBuilder,Kt as CLIENT_CONNECTION_STATES,_i as CLIENT_ID_GENERATOR_KEY,qi as CLIENT_REQUEST_ID_GENERATOR_KEY,Hi as Changes,Ti as ClientIdService,zi as CollectionReference,Yi as CollectionReferenceFactory,Zi as ConnectionDetails,Ct as DATA_INTEGRATION_TYPES,Te as DEFAULT_SHORT_ID_LENGTH,$t as DOC_ID_FIELD,vn as DataManager,Wi as DereferencedJoin,Sn as DestructManager,kn as DistributedLockImpl,Mn as DistributedLockManager,Pi as DocumentReference,_n as DocumentReferenceFactory,qn as DocumentStore,Fe as EMPTY_CHAT_ID,Mt as ENVIRONMENT_IDS,Cn as EventsClient,Dn as ExternalAuthClient,On as ExtractionClient,Ds as FETCH_BEYOND_LIMIT,ht as FLUX_MODEL_NAMES,Ve as GEMINI_CHAT_MODEL_NAMES,Ot as GRAPHQL_INTEGRATION_TYPES,Ye as GROK_CHAT_MODEL_NAMES,Ji as GroupedJoin,Et as HTTP_INTEGRATION_TYPES,Tt as HttpStatus,At as INTEGRATION_SCHEMA_TYPES,qt as INTEGRATION_TYPES,L as IntegrationClient,En as JobClient,Gi as JoinQueryBuilder,bi as LastUsedValueExecuteFunctionCache,In as LimitUnderflowState,rs as LocalQueryManager,Qt as METRIC_DOMAIN,Bt as METRIC_FUNCTIONS,Lt as METRIC_INTERVAL_ALIGNMENT,Ut as METRIC_NO_DATA_BEHAVIOR,Wn as ManagementClient,$e as MatchMaker,Kn as MutationSender,Nn as NOOP_FN,Jn as NativeQueryManager,zn as NotificationClient,ut as OPENAI_AUDIO_CREATE_SPEECH_MODEL_NAMES,lt as OPENAI_AUDIO_MODEL_NAMES,ct as OPENAI_AUDIO_TRANSCRIPTION_MODEL_NAMES,ze as OPENAI_CHAT_MODEL_NAMES,tt as OPENAI_EMBEDDINGS_MODEL_NAMES,at as OPENAI_IMAGE_MODEL_NAMES,yt as OPEN_AI_CREATE_SPEECH_FORMATS,Yn as ObservabilityClient,Bi as Pagination,$i as QueryBuilder,Qi as QueryBuilderFactory,as as QuerySender,Os as QuerySubscriptionManager,js as QueueManagerFactory,Ns as QueueManagerImpl,vt as RAG_TYPES,Ke as RERANK_PROVIDERS,bn as RUN_IN_TRANSACTION_MUTEX,xs as RateLimiter,Ps as RpcManager,Nt as SQUID_BUILT_IN_INTEGRATION_IDS,Pt as SQUID_METRIC_NAMES,Wt as SQUID_REGIONS,dt as STABLE_DIFFUSION_MODEL_NAMES,Qs as SchedulerClient,U as SecretClient,$s as SocketManager,Ys as Squid,xn as SquidClientError,Js as StorageClient,It as VECTOR_DB_TYPES,Xe as VENDOR_AI_CHAT_MODEL_NAMES,it as VOYAGE_EMBEDDING_MODEL_NAMES,zs as WebClient,Vs as WebhookManager,Bs as assertNotPassiveMode,yi as compareArgsByReference,mi as compareArgsBySerializedValue,is as deserializeQuery,ke as generateId,qe as generateShortId,Ce as generateShortIds,Se as generateUUID,Me as generateUUIDPolyfill,Q as getConsoleUrl,Si as getCustomizationFlag,rt as isAiEmbeddingsModelName,xt as isBuiltInIntegrationId,ot as isIntegrationEmbeddingModelSpec,bt as isIntegrationModelSpec,St as isPlaceholderParam,et as isVendorAiChatModelName,ts as loadQueryResultDocIds,$n as rawSquidHttpDelete,Qn as rawSquidHttpGet,Un as rawSquidHttpPatch,Bn as rawSquidHttpPost,Ln as rawSquidHttpPut,Ii as transformFileArgs,Gn as tryDeserializing,es as visitQueryResults};
|